From jython-checkins at python.org Mon Feb 1 16:25:44 2016 From: jython-checkins at python.org (darjus.loktevic) Date: Mon, 01 Feb 2016 21:25:44 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Add_circle=2Eyml_for_Circle?= =?utf-8?q?CI_integration?= Message-ID: <20160201212544.45911.32718@psf.io> https://hg.python.org/jython/rev/4a3a85669e10 changeset: 7884:4a3a85669e10 user: Darjus Loktevic date: Tue Feb 02 08:25:37 2016 +1100 summary: Add circle.yml for CircleCI integration files: circle.yml | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/circle.yml b/circle.yml new file mode 100644 --- /dev/null +++ b/circle.yml @@ -0,0 +1,15 @@ +machine: + java: + version: openjdk7 + +# refactor into a script some time +test: + override: + - case $CIRCLE_NODE_INDEX in 0) sudo update-alternatives --set java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java; java -version ;; 1) sudo update-alternatives --set java /usr/lib/jvm/jdk1.7.0/bin/java; java -version ;; esac: + parallel: true + - if [ $CIRCLE_NODE_INDEX -lt 2 ]; then ant developer-build regrtest-travis; elif [ $CIRCLE_NODE_INDEX -eq 2 ]; then ant developer-build; sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java; ant regrtest-travis; fi: + parallel: true + + post: + - mkdir -p $CIRCLE_TEST_REPORTS/junit/; cp -a dist/testreports/* $CIRCLE_TEST_REPORTS/junit/: + parallel: true -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Mon Feb 1 22:13:47 2016 From: jython-checkins at python.org (jim.baker) Date: Tue, 02 Feb 2016 03:13:47 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Add_zlib_flush_options_when?= =?utf-8?q?_using_zlib=2Ecompressobj=2E_Fixes_=232434?= Message-ID: <20160202031347.2635.75376@psf.io> https://hg.python.org/jython/rev/767d5206e120 changeset: 7885:767d5206e120 user: Jim Baker date: Mon Feb 01 20:13:13 2016 -0700 summary: Add zlib flush options when using zlib.compressobj. Fixes #2434 Supports zlib flush options: Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, which became possible as of Java 7. In addition, supports gzip header (fixed) and trailer (based on CRC32, size) when flushed. Also supports incremental read of gzip header when decompressing. Now fully passes all tests in urllib3 (see #2434 for those bugs) with the exception of those tests using coverage (requires fix for #1638) and fcntl (requires fix for #1943). In addition, the gzip module, with one minor patch to support Jython's io implementation, is updated to latest in CPython 2.x. test_gzip and test_zlib also use stock tests. files: Lib/gzip.py | 130 ++- Lib/test/test_support.py | 2 + Lib/test/test_zlib.py | 636 ------------------- Lib/zlib.py | 141 +++- lib-python/2.7/gzip.py | 111 +- lib-python/2.7/test/test_gzip.py | 68 +- lib-python/2.7/test/test_zlib.py | 155 ++-- 7 files changed, 372 insertions(+), 871 deletions(-) diff --git a/Lib/gzip.py b/Lib/gzip.py --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -21,6 +21,9 @@ # or unsigned. output.write(struct.pack(" 0: - self.size = self.size + len(data) + self.fileobj.write(self.compress.compress(data)) + 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) @@ -250,16 +256,20 @@ readsize = 1024 if size < 0: # get the whole thing - while self._read(readsize): - readsize = min(self.max_read_chunk, readsize * 2) - size = self.extrasize + try: + while True: + self._read(readsize) + readsize = min(self.max_read_chunk, readsize * 2) + except EOFError: + size = self.extrasize else: # just get some more of it - while size > self.extrasize: - if not self._read(readsize): - if size > self.extrasize: - size = self.extrasize - break - readsize = min(self.max_read_chunk, readsize * 2) + try: + while size > self.extrasize: + self._read(readsize) + readsize = min(self.max_read_chunk, readsize * 2) + except EOFError: + if size > self.extrasize: + size = self.extrasize offset = self.offset - self.extrastart chunk = self.extrabuf[offset: offset + size] @@ -274,7 +284,7 @@ def _read(self, size=1024): if self.fileobj is None: - return False + raise EOFError, "Reached EOF" if self._new_member: # If the _new_member flag is set, we have to @@ -285,7 +295,7 @@ pos = self.fileobj.tell() # Save current position self.fileobj.seek(0, 2) # Seek to end of file if pos == self.fileobj.tell(): - return False + raise EOFError, "Reached EOF" else: self.fileobj.seek( pos ) # Return to original position @@ -302,10 +312,9 @@ if buf == "": uncompress = self.decompress.flush() - self.fileobj.seek(-len(self.decompress.unused_data), 1) self._read_eof() self._add_read_data( uncompress ) - return False + raise EOFError, 'Reached EOF' uncompress = self.decompress.decompress(buf) self._add_read_data( uncompress ) @@ -315,14 +324,13 @@ # so seek back to the start of the unused data, finish up # this member, and read a new gzip header. # (The number of bytes to seek back is the length of the unused - # data) - self.fileobj.seek(-len(self.decompress.unused_data), 1) + # data, minus 8 because _read_eof() will rewind a further 8 bytes) + self.fileobj.seek( -len(self.decompress.unused_data)+8, 1) # Check the CRC and file size, and set the flag so we read # a new member on the next call self._read_eof() self._new_member = True - return True def _add_read_data(self, data): self.crc = zlib.crc32(data, self.crc) & 0xffffffffL @@ -333,11 +341,14 @@ self.size = self.size + len(data) def _read_eof(self): - # We've read to the end of the file. + # We've read to the end of the file, so we have to rewind in order + # to reread the 8 bytes containing the CRC and the file size. # We check the that the computed CRC and size of the # uncompressed data matches the stored values. Note that the size # stored is the true file size mod 2**32. - crc32, isize = struct.unpack(" dcx, - 'chunk too big (%d>%d)' % (len(chunk), dcx)) - bufs.append(chunk) - cb = dco.unconsumed_tail - bufs.append(dco.flush()) - self.assertEqual(data, ''.join(bufs), 'Wrong data retrieved') - - def test_decompressmaxlen(self, flush=False): - # Check a decompression object with max_length specified - data = HAMLET_SCENE * 128 - co = zlib.compressobj() - bufs = [] - for i in range(0, len(data), 256): - bufs.append(co.compress(data[i:i+256])) - bufs.append(co.flush()) - combuf = ''.join(bufs) - self.assertEqual(data, zlib.decompress(combuf), - 'compressed data failure') - - dco = zlib.decompressobj() - bufs = [] - cb = combuf - while cb: - max_length = 1 + len(cb)//10 - chunk = dco.decompress(cb, max_length) - self.assertFalse(len(chunk) > max_length, - 'chunk too big (%d>%d)' % (len(chunk),max_length)) - bufs.append(chunk) - cb = dco.unconsumed_tail - if flush: - bufs.append(dco.flush()) - else: - while chunk: - chunk = dco.decompress('', max_length) - self.assertFalse(len(chunk) > max_length, - 'chunk too big (%d>%d)' % (len(chunk),max_length)) - bufs.append(chunk) - self.assertEqual(data, ''.join(bufs), 'Wrong data retrieved') - - def test_decompressmaxlenflush(self): - self.test_decompressmaxlen(flush=True) - - def test_maxlenmisc(self): - # Misc tests of max_length - dco = zlib.decompressobj() - self.assertRaises(ValueError, dco.decompress, "", -1) - self.assertEqual('', dco.unconsumed_tail) - - def test_clear_unconsumed_tail(self): - # Issue #12050: calling decompress() without providing max_length - # should clear the unconsumed_tail attribute. - cdata = "x\x9cKLJ\x06\x00\x02M\x01" # "abc" - dco = zlib.decompressobj() - ddata = dco.decompress(cdata, 1) - ddata += dco.decompress(dco.unconsumed_tail) - self.assertEqual(dco.unconsumed_tail, "") - - def test_flushes(self): - # Test flush() with the various options, using all the - # different levels in order to provide more variations. - sync_opt = ['Z_NO_FLUSH', 'Z_SYNC_FLUSH', 'Z_FULL_FLUSH'] - sync_opt = [getattr(zlib, opt) for opt in sync_opt - if hasattr(zlib, opt)] - data = HAMLET_SCENE * 8 - - for sync in sync_opt: - for level in range(10): - obj = zlib.compressobj( level ) - a = obj.compress( data[:3000] ) - b = obj.flush( sync ) - c = obj.compress( data[3000:] ) - d = obj.flush() - self.assertEqual(zlib.decompress(''.join([a,b,c,d])), - data, ("Decompress failed: flush " - "mode=%i, level=%i") % (sync, level)) - del obj - - def test_odd_flush(self): - # Test for odd flushing bugs noted in 2.0, and hopefully fixed in 2.1 - import random - - if hasattr(zlib, 'Z_SYNC_FLUSH'): - # Testing on 17K of "random" data - - # Create compressor and decompressor objects - co = zlib.compressobj(zlib.Z_BEST_COMPRESSION) - dco = zlib.decompressobj() - - # Try 17K of data - # generate random data stream - try: - # In 2.3 and later, WichmannHill is the RNG of the bug report - gen = random.WichmannHill() - except AttributeError: - try: - # 2.2 called it Random - gen = random.Random() - except AttributeError: - # others might simply have a single RNG - gen = random - gen.seed(1) - data = genblock(1, 17 * 1024, generator=gen) - - # compress, sync-flush, and decompress - first = co.compress(data) - second = co.flush(zlib.Z_SYNC_FLUSH) - expanded = dco.decompress(first + second) - - # if decompressed data is different from the input data, choke. - self.assertEqual(expanded, data, "17K random source doesn't match") - - def test_empty_flush(self): - # Test that calling .flush() on unused objects works. - # (Bug #1083110 -- calling .flush() on decompress objects - # caused a core dump.) - - co = zlib.compressobj(zlib.Z_BEST_COMPRESSION) - self.assertTrue(co.flush()) # Returns a zlib header - dco = zlib.decompressobj() - self.assertEqual(dco.flush(), "") # Returns nothing - - def test_decompress_incomplete_stream(self): - # This is 'foo', deflated - x = 'x\x9cK\xcb\xcf\x07\x00\x02\x82\x01E' - # For the record - self.assertEqual(zlib.decompress(x), 'foo') - if not is_jython: - # There is inconsistency between cpython zlib.decompress (which does not accept - # incomplete streams) and zlib.decompressobj().decompress (which does accept - # incomplete streams, the whole point of this test) - # On jython, both zlib.decompress and zlib.decompressobject().decompress behave - # the same way: they both accept incomplete streams. - # Therefore, imposing this precondition is cpython specific - # and not appropriate on jython, which has consistent behaviour. - # http://bugs.python.org/issue8672 - # http://bugs.jython.org/issue1859 - self.assertRaises(zlib.error, zlib.decompress, x[:-5]) - # Omitting the stream end works with decompressor objects - # (see issue #8672). - dco = zlib.decompressobj() - y = dco.decompress(x[:-5]) - y += dco.flush() - self.assertEqual(y, 'foo') - - if hasattr(zlib.compressobj(), "copy"): - def test_compresscopy(self): - # Test copying a compression object - data0 = HAMLET_SCENE - data1 = HAMLET_SCENE.swapcase() - c0 = zlib.compressobj(zlib.Z_BEST_COMPRESSION) - bufs0 = [] - bufs0.append(c0.compress(data0)) - - c1 = c0.copy() - bufs1 = bufs0[:] - - bufs0.append(c0.compress(data0)) - bufs0.append(c0.flush()) - s0 = ''.join(bufs0) - - bufs1.append(c1.compress(data1)) - bufs1.append(c1.flush()) - s1 = ''.join(bufs1) - - self.assertEqual(zlib.decompress(s0),data0+data0) - self.assertEqual(zlib.decompress(s1),data0+data1) - - def test_badcompresscopy(self): - # Test copying a compression object in an inconsistent state - c = zlib.compressobj() - c.compress(HAMLET_SCENE) - c.flush() - self.assertRaises(ValueError, c.copy) - - if hasattr(zlib.decompressobj(), "copy"): - def test_decompresscopy(self): - # Test copying a decompression object - data = HAMLET_SCENE - comp = zlib.compress(data) - - d0 = zlib.decompressobj() - bufs0 = [] - bufs0.append(d0.decompress(comp[:32])) - - d1 = d0.copy() - bufs1 = bufs0[:] - - bufs0.append(d0.decompress(comp[32:])) - s0 = ''.join(bufs0) - - bufs1.append(d1.decompress(comp[32:])) - s1 = ''.join(bufs1) - - self.assertEqual(s0,s1) - self.assertEqual(s0,data) - - def test_baddecompresscopy(self): - # Test copying a compression object in an inconsistent state - data = zlib.compress(HAMLET_SCENE) - d = zlib.decompressobj() - d.decompress(data) - d.flush() - self.assertRaises(ValueError, d.copy) - - # Memory use of the following functions takes into account overallocation - - @precisionbigmemtest(size=_1G + 1024 * 1024, memuse=3) - def test_big_compress_buffer(self, size): - c = zlib.compressobj(1) - compress = lambda s: c.compress(s) + c.flush() - self.check_big_compress_buffer(size, compress) - - @precisionbigmemtest(size=_1G + 1024 * 1024, memuse=2) - def test_big_decompress_buffer(self, size): - """ - This is NOT testing for a 'size=_1G + 1024 * 1024', because of the definition of - the precisionbigmemtest decorator, which resets the value to 5147, based on - the definition of test_support.real_max_memuse == 0 - This is the case on my windows installation of python 2.7.3. - Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32 - And on my build of jython 2.7 - Jython 2.7b1+ (default:d5a22e9b622a, Feb 9 2013, 20:36:27) - [Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_29 - """ - d = zlib.decompressobj() - decompress = lambda s: d.decompress(s) + d.flush() - self.check_big_decompress_buffer(size, decompress) - - -def genblock(seed, length, step=1024, generator=random): - """length-byte stream of random data from a seed (in step-byte blocks).""" - if seed is not None: - generator.seed(seed) - randint = generator.randint - if length < step or step < 2: - step = length - blocks = [] - for i in range(0, length, step): - blocks.append(''.join([chr(randint(0,255)) - for x in range(step)])) - return ''.join(blocks)[:length] - - - -def choose_lines(source, number, seed=None, generator=random): - """Return a list of number lines randomly chosen from the source""" - if seed is not None: - generator.seed(seed) - sources = source.split('\n') - return [generator.choice(sources) for n in range(number)] - - - -HAMLET_SCENE = """ -LAERTES - - O, fear me not. - I stay too long: but here my father comes. - - Enter POLONIUS - - A double blessing is a double grace, - Occasion smiles upon a second leave. - -LORD POLONIUS - - Yet here, Laertes! aboard, aboard, for shame! - The wind sits in the shoulder of your sail, - And you are stay'd for. There; my blessing with thee! - And these few precepts in thy memory - See thou character. Give thy thoughts no tongue, - Nor any unproportioned thought his act. - Be thou familiar, but by no means vulgar. - Those friends thou hast, and their adoption tried, - Grapple them to thy soul with hoops of steel; - But do not dull thy palm with entertainment - Of each new-hatch'd, unfledged comrade. Beware - Of entrance to a quarrel, but being in, - Bear't that the opposed may beware of thee. - Give every man thy ear, but few thy voice; - Take each man's censure, but reserve thy judgment. - Costly thy habit as thy purse can buy, - But not express'd in fancy; rich, not gaudy; - For the apparel oft proclaims the man, - And they in France of the best rank and station - Are of a most select and generous chief in that. - Neither a borrower nor a lender be; - For loan oft loses both itself and friend, - And borrowing dulls the edge of husbandry. - This above all: to thine ownself be true, - And it must follow, as the night the day, - Thou canst not then be false to any man. - Farewell: my blessing season this in thee! - -LAERTES - - Most humbly do I take my leave, my lord. - -LORD POLONIUS - - The time invites you; go; your servants tend. - -LAERTES - - Farewell, Ophelia; and remember well - What I have said to you. - -OPHELIA - - 'Tis in my memory lock'd, - And you yourself shall keep the key of it. - -LAERTES - - Farewell. -""" - - -def test_main(): - run_unittest( - ChecksumTestCase, - ExceptionTestCase, - CompressTestCase, - CompressObjectTestCase - ) - -if __name__ == "__main__": - test_main() diff --git a/Lib/zlib.py b/Lib/zlib.py --- a/Lib/zlib.py +++ b/Lib/zlib.py @@ -16,10 +16,12 @@ import array import binascii import jarray +import struct +import sys from cStringIO import StringIO from java.lang import Long, String, System -from java.util.zip import Adler32, Deflater, Inflater, DataFormatException +from java.util.zip import Adler32, CRC32, Deflater, Inflater, DataFormatException class error(Exception): @@ -39,19 +41,37 @@ Z_DEFAULT_COMPRESSION = -1 Z_DEFAULT_STRATEGY = 0 -# Most options are removed because java does not support them -# Z_NO_FLUSH = 0 -# Z_SYNC_FLUSH = 2 -# Z_FULL_FLUSH = 3 +Z_NO_FLUSH = 0 +Z_SYNC_FLUSH = 2 +Z_FULL_FLUSH = 3 Z_FINISH = 4 -_valid_flush_modes = (Z_FINISH,) +_valid_flush_modes = (Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH) + +_zlib_to_deflater = { + Z_NO_FLUSH: Deflater.NO_FLUSH, + Z_SYNC_FLUSH: Deflater.SYNC_FLUSH, + Z_FULL_FLUSH: Deflater.FULL_FLUSH +} + + +_ADLER_BASE = 65521 # largest prime smaller than 65536 def adler32(s, value=1): - if value != 1: - raise ValueError, "adler32 only support start value of 1" - checksum = Adler32() - checksum.update(String.getBytes(s, 'iso-8859-1')) - return Long(checksum.getValue()).intValue() + # Although Java has an implmentation in java.util.zip.Adler32, + # this class does not allow for updating the value directly, as + # required by this C-style API. + # + # ported from https://tools.ietf.org/html/rfc2960#page-132 + s1 = value & 0xffff + s2 = (value >> 16) & 0xffff + for c in s: + s1 = (s1 + ord(c)) % _ADLER_BASE + s2 = (s2 + s1) % _ADLER_BASE + # Support two's complement, to comply with the range specified for 2.6+; + # for 3.x, simply return (s2 << 16) + s1 + high_bit = -2147483648 if (s2 & 0x8000) else 0 + remaining_high_word = s2 & 0x7fff + return high_bit + (remaining_high_word << 16) + s1 def crc32(string, value=0): return binascii.crc32(string, value) @@ -72,38 +92,80 @@ inflater = Inflater(wbits < 0) try: inflater.setInput(_to_input(string)) - return _get_inflate_data(inflater) + data = _get_inflate_data(inflater) + if not inflater.finished(): + raise error, "Error -5 while decompressing data: incomplete or truncated stream" + return data finally: inflater.end() +# per zlib manual (http://www.zlib.net/manual.html): + +# > windowBits can also be greater than 15 for optional gzip +# > encoding. Add 16 to windowBits to write a simple gzip header and +# > trailer around the compressed data instead of a zlib wrapper. The +# > gzip header will have no file name, no extra data, no comment, no +# > modification time (set to zero), no header crc, and the operating +# > system will be set to 255 (unknown). If a gzip stream is being +# > written, strm->adler is a crc32 instead of an adler32. + class compressobj(object): - # all jython uses wbits for is deciding whether to skip the header if it's negative + # All jython uses wbits for is in deciding whether to skip the + # header if it's negative or to set gzip. But we still raise + # ValueError to get full test compliance. + + GZIP_HEADER = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x04\x03" + + # NB: this format is little-endian, not big-endian as we might + # expect for network oriented protocols, as specified by RFCs; + # CRC32.getValue() returns an unsigned int as a long, so cope + # accordingly + GZIP_TRAILER_FORMAT = struct.Struct(" 0: + wbits -= 16 + else: + wbits += 16 + self._gzip = True + else: + self._gzip = False if abs(wbits) > MAX_WBITS or abs(wbits) < 8: - raise ValueError, "Invalid initialization option" - self.deflater = Deflater(level, wbits < 0) + raise ValueError, "Invalid initialization option: %s" % (wbits,) + self.deflater = Deflater(level, wbits < 0 or self._gzip) self.deflater.setStrategy(strategy) - if wbits < 0: - _get_deflate_data(self.deflater) self._ended = False + self._size = 0 + self._crc32 = CRC32() def compress(self, string): if self._ended: raise error("compressobj may not be used after flush(Z_FINISH)") string = _to_input(string) self.deflater.setInput(string, 0, len(string)) - return _get_deflate_data(self.deflater) + deflated = _get_deflate_data(self.deflater) + self._size += len(string) + self._crc32.update(string) + if self._gzip: + return self.GZIP_HEADER + deflated + else: + return deflated def flush(self, mode=Z_FINISH): if self._ended: raise error("compressobj may not be used after flush(Z_FINISH)") if mode not in _valid_flush_modes: raise ValueError, "Invalid flush option" - self.deflater.finish() - last = _get_deflate_data(self.deflater) if mode == Z_FINISH: + self.deflater.finish() + last = _get_deflate_data(self.deflater, mode) + if mode == Z_FINISH: + if self._gzip: + last += self.GZIP_TRAILER_FORMAT.pack( + self._crc32.getValue(), self._size % sys.maxint) self.deflater.end() self._ended = True return last @@ -138,15 +200,24 @@ # unconsumed_tail is whatever input was not used because max_length # was exceeded before inflation finished. # Thus, at most one of {unused_data, unconsumed_tail} may be non-empty. - self.unused_data = "" + self.unconsumed_tail = "" + if not self.inflater.finished() and not (self.gzip and not self.gzip_header_skipped): + self.unused_data = "" if max_length < 0: raise ValueError("max_length must be a positive integer") # Suppress gzip header if present and wbits < 0 if self.gzip and not self.gzip_header_skipped: - string = _skip_gzip_header(string) + string = self.unused_data + string + self.unused_data = "" + try: + string = _skip_gzip_header(string) + except IndexError: + # need more input! + self.unused_data = string + return "" self.gzip_header_skipped = True string = _to_input(string) @@ -156,15 +227,14 @@ r = self.inflater.getRemaining() if r: - if max_length: + if max_length and not self.inflater.finished(): self.unconsumed_tail = string[-r:] else: - self.unused_data = string[-r:] + self.unused_data += string[-r:] return inflated def flush(self, length=None): - # FIXME close input streams if gzip if self._ended: raise error("decompressobj may not be used after flush()") if length is None: @@ -175,15 +245,22 @@ self.inflater.end() return last -def _to_input(string): - return string.tostring() if isinstance(string, array.array) else string +def _to_input(s): + if isinstance(s, unicode): + return s.encode('ascii') + if isinstance(s, array.array): + return s.tostring() + if isinstance(s, basestring) or isinstance(s, buffer) or isinstance(s, memoryview): + return s + else: + raise TypeError('must be string or read-only buffer, not %s' % type(s)) -def _get_deflate_data(deflater): - buf = jarray.zeros(1024, 'b') +def _get_deflate_data(deflater, mode=Z_NO_FLUSH): + buflen = 1024 + buf = jarray.zeros(buflen, 'b') s = StringIO() while not deflater.finished(): - l = deflater.deflate(buf) - + l = deflater.deflate(buf, 0, buflen, _zlib_to_deflater.get(mode, Deflater.NO_FLUSH)) if l == 0: break s.write(String(buf, 0, 0, l)) @@ -222,7 +299,7 @@ FCOMMENT = 16 def _skip_gzip_header(string): - # per format specified in http://tools.ietf.org/html/rfc1952 + # per format specified in https://tools.ietf.org/html/rfc1952 # could we use bytearray instead? s = array.array("B", string) diff --git a/lib-python/2.7/gzip.py b/lib-python/2.7/gzip.py --- a/lib-python/2.7/gzip.py +++ b/lib-python/2.7/gzip.py @@ -21,6 +21,9 @@ # or unsigned. output.write(struct.pack(" 0: - self.size = self.size + len(data) + self.fileobj.write(self.compress.compress(data)) + 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) @@ -250,16 +256,20 @@ readsize = 1024 if size < 0: # get the whole thing - while self._read(readsize): - readsize = min(self.max_read_chunk, readsize * 2) - size = self.extrasize + try: + while True: + self._read(readsize) + readsize = min(self.max_read_chunk, readsize * 2) + except EOFError: + size = self.extrasize else: # just get some more of it - while size > self.extrasize: - if not self._read(readsize): - if size > self.extrasize: - size = self.extrasize - break - readsize = min(self.max_read_chunk, readsize * 2) + try: + while size > self.extrasize: + self._read(readsize) + readsize = min(self.max_read_chunk, readsize * 2) + except EOFError: + if size > self.extrasize: + size = self.extrasize offset = self.offset - self.extrastart chunk = self.extrabuf[offset: offset + size] @@ -274,7 +284,7 @@ def _read(self, size=1024): if self.fileobj is None: - return False + raise EOFError, "Reached EOF" if self._new_member: # If the _new_member flag is set, we have to @@ -285,7 +295,7 @@ pos = self.fileobj.tell() # Save current position self.fileobj.seek(0, 2) # Seek to end of file if pos == self.fileobj.tell(): - return False + raise EOFError, "Reached EOF" else: self.fileobj.seek( pos ) # Return to original position @@ -302,10 +312,9 @@ if buf == "": uncompress = self.decompress.flush() - self.fileobj.seek(-len(self.decompress.unused_data), 1) self._read_eof() self._add_read_data( uncompress ) - return False + raise EOFError, 'Reached EOF' uncompress = self.decompress.decompress(buf) self._add_read_data( uncompress ) @@ -315,14 +324,13 @@ # so seek back to the start of the unused data, finish up # this member, and read a new gzip header. # (The number of bytes to seek back is the length of the unused - # data) - self.fileobj.seek(-len(self.decompress.unused_data), 1) + # data, minus 8 because _read_eof() will rewind a further 8 bytes) + self.fileobj.seek( -len(self.decompress.unused_data)+8, 1) # Check the CRC and file size, and set the flag so we read # a new member on the next call self._read_eof() self._new_member = True - return True def _add_read_data(self, data): self.crc = zlib.crc32(data, self.crc) & 0xffffffffL @@ -333,11 +341,14 @@ self.size = self.size + len(data) def _read_eof(self): - # We've read to the end of the file. + # We've read to the end of the file, so we have to rewind in order + # to reread the 8 bytes containing the CRC and the file size. # We check the that the computed CRC and size of the # uncompressed data matches the stored values. Note that the size # stored is the true file size mod 2**32. - crc32, isize = struct.unpack(" https://hg.python.org/jython/rev/b6735606c13d changeset: 7886:b6735606c13d user: Jim Baker date: Mon Feb 01 20:34:32 2016 -0700 summary: Use relative path for jython -m ensurepip in installer. Fixes #2350 files: installer/src/java/org/python/util/install/JarInstaller.java | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/installer/src/java/org/python/util/install/JarInstaller.java b/installer/src/java/org/python/util/install/JarInstaller.java --- a/installer/src/java/org/python/util/install/JarInstaller.java +++ b/installer/src/java/org/python/util/install/JarInstaller.java @@ -6,6 +6,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -179,9 +180,9 @@ private int ensurepip(Path bindir) { int errorCode = 0; try { - String launcher = bindir.resolve("jython").toString(); String command[] = new String[]{ - launcher, "-m", "ensurepip"}; + Paths.get(".", "jython").toString(), + "-m", "ensurepip"}; ChildProcess childProcess = new ChildProcess(command); childProcess.setCWD(bindir); errorCode = childProcess.run(); -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Mon Feb 1 22:37:15 2016 From: jython-checkins at python.org (jim.baker) Date: Tue, 02 Feb 2016 03:37:15 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Do_not_deserialize_PyFuncti?= =?utf-8?q?on_objects=2E_Fixes_=232454?= Message-ID: <20160202033714.15925.47918@psf.io> https://hg.python.org/jython/rev/d06e29d100c0 changeset: 7887:d06e29d100c0 user: Jim Baker date: Mon Feb 01 20:37:01 2016 -0700 summary: Do not deserialize PyFunction objects. Fixes #2454 Instead use standard Python pickling; or subclass PyFunction. files: Lib/test/test_java_integration.py | 26 ++++++++++++-- Lib/test/test_new.py | 31 ++++++++-------- src/org/python/core/PyBytecode.java | 6 +++ src/org/python/core/PyFunction.java | 3 + 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/Lib/test/test_java_integration.py b/Lib/test/test_java_integration.py --- a/Lib/test/test_java_integration.py +++ b/Lib/test/test_java_integration.py @@ -14,8 +14,9 @@ from collections import deque from test import test_support -from java.lang import (ClassCastException, ExceptionInInitializerError, String, Runnable, System, - Runtime, Math, Byte) +from java.lang import ( + ClassCastException, ExceptionInInitializerError, UnsupportedOperationException, + String, Runnable, System, Runtime, Math, Byte) from java.math import BigDecimal, BigInteger from java.net import URI from java.io import (ByteArrayInputStream, ByteArrayOutputStream, File, FileInputStream, @@ -656,13 +657,30 @@ self.assertEqual(date_list, roundtrip_serialization(date_list)) def test_java_serialization_pycode(self): - def universal_answer(): return 42 serialized_code = roundtrip_serialization(universal_answer.func_code) self.assertEqual(eval(serialized_code), universal_answer()) + def test_java_serialization_pyfunction(self): + # Not directly supported due to lack of general utility + # (globals will usually be in the function object in + # func_globals), and problems with unserialization + # vulnerabilities. Users can always subclass from PyFunction + # for specific cases, as seen in PyCascading + import new + def f(): + return 6 * 7 + max(0, 1, 2) + # However, using the new module, it's possible to create a + # function with no globals, which means the globals will come + # from the current context + g = new.function(f.func_code, {}, "g") + # But still forbid Java deserialization of this function + # object. Use pickling or other support instead. + with self.assertRaises(UnsupportedOperationException): + roundtrip_serialization(g) + def test_builtin_names(self): import __builtin__ names = [x for x in dir(__builtin__)] @@ -872,7 +890,7 @@ future.get() self.assertEqual(x, [42]) - @unittest.skip("FIXME: not working") + @unittest.skip("FIXME: not working; see http://bugs.jython.org/issue2115") def test_callable_object(self): callable_obj = CallableObject() future = self.executor.submit(callable_obj) diff --git a/Lib/test/test_new.py b/Lib/test/test_new.py --- a/Lib/test/test_new.py +++ b/Lib/test/test_new.py @@ -24,18 +24,10 @@ c = new.instance(C, {'yolks': 3}) o = new.instance(C) - - # __dict__ is a non dict mapping in Jython - if test_support.is_jython: - self.assertEqual(len(o.__dict__), 0, "new __dict__ should be empty") - else: - self.assertEqual(o.__dict__, {}, "new __dict__ should be empty") + self.assertEqual(o.__dict__, {}, "new __dict__ should be empty") del o o = new.instance(C, None) - if test_support.is_jython: - self.assertEqual(len(o.__dict__), 0, "new __dict__ should be empty") - else: - self.assertEqual(o.__dict__, {}, "new __dict__ should be empty") + self.assertEqual(o.__dict__, {}, "new __dict__ should be empty") del o def break_yolks(self): @@ -109,7 +101,14 @@ test_closure(g, (1, 1), ValueError) # closure is wrong size test_closure(f, g.func_closure, ValueError) # no closure needed - if hasattr(new, 'code') and not test_support.is_jython: + # [Obsolete] Note: Jython will never have new.code() + # + # Who said that?!!! guess what, we do! :) + # + # Unfortunately we still need a way to compile to Python bytecode, + # so support is still incomplete, as seen in the fact that we need + # to get values from CPython 2.7. + if hasattr(new, 'code'): def test_code(self): # bogus test of new.code() def f(a): pass @@ -117,16 +116,16 @@ c = f.func_code argcount = c.co_argcount nlocals = c.co_nlocals - stacksize = c.co_stacksize + stacksize = 1 # TODO c.co_stacksize flags = c.co_flags - codestring = c.co_code - constants = c.co_consts - names = c.co_names + codestring = 'd\x00\x00S' # TODO c.co_code + constants = (None,) # TODO c.co_consts + names = () # TODO c.co_names varnames = c.co_varnames filename = c.co_filename name = c.co_name firstlineno = c.co_firstlineno - lnotab = c.co_lnotab + lnotab = '' # TODO c.co_lnotab, but also see http://bugs.jython.org/issue1638 freevars = c.co_freevars cellvars = c.co_cellvars diff --git a/src/org/python/core/PyBytecode.java b/src/org/python/core/PyBytecode.java --- a/src/org/python/core/PyBytecode.java +++ b/src/org/python/core/PyBytecode.java @@ -66,6 +66,12 @@ debug = defaultDebug; + if (argcount < 0) { + throw Py.ValueError("code: argcount must not be negative"); + } else if (nlocals < 0) { + throw Py.ValueError("code: nlocals must not be negative"); + } + co_argcount = nargs = argcount; co_varnames = varnames; co_nlocals = nlocals; // maybe assert = varnames.length; diff --git a/src/org/python/core/PyFunction.java b/src/org/python/core/PyFunction.java --- a/src/org/python/core/PyFunction.java +++ b/src/org/python/core/PyFunction.java @@ -545,6 +545,9 @@ @Override public boolean isSequenceType() { return false; } + private Object readResolve() { + throw new UnsupportedOperationException(); + } /* Traverseproc implementation */ @Override -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Mon Feb 1 23:22:47 2016 From: jython-checkins at python.org (jim.baker) Date: Tue, 02 Feb 2016 04:22:47 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Windows_does_not_support_re?= =?utf-8?q?lative_paths_for_installer?= Message-ID: <20160202042246.2663.44352@psf.io> https://hg.python.org/jython/rev/8e264837ef27 changeset: 7888:8e264837ef27 user: Jim Baker date: Mon Feb 01 21:22:43 2016 -0700 summary: Windows does not support relative paths for installer files: installer/src/java/org/python/util/install/JarInstaller.java | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/installer/src/java/org/python/util/install/JarInstaller.java b/installer/src/java/org/python/util/install/JarInstaller.java --- a/installer/src/java/org/python/util/install/JarInstaller.java +++ b/installer/src/java/org/python/util/install/JarInstaller.java @@ -180,9 +180,12 @@ private int ensurepip(Path bindir) { int errorCode = 0; try { - String command[] = new String[]{ - Paths.get(".", "jython").toString(), - "-m", "ensurepip"}; + String command[]; + if (Installation.isWindows()) { + command = new String[]{ bindir.resolve("jython.exe").toString(), "-m", "ensurepip" }; + } else { + command = new String[]{ Paths.get(".", "jython").toString(), "-m", "ensurepip"}; + } ChildProcess childProcess = new ChildProcess(command); childProcess.setCWD(bindir); errorCode = childProcess.run(); -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 2 18:06:36 2016 From: jython-checkins at python.org (stefan.richthofer) Date: Tue, 02 Feb 2016 23:06:36 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Fixed_issue_2457=2E?= Message-ID: <20160202230635.11233.89095@psf.io> https://hg.python.org/jython/rev/cddadb6808c0 changeset: 7889:cddadb6808c0 user: Stefan Richthofer date: Wed Feb 03 00:06:27 2016 +0100 summary: Fixed issue 2457. files: src/org/python/modules/_io/Closer.java | 16 +++++++------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/org/python/modules/_io/Closer.java b/src/org/python/modules/_io/Closer.java --- a/src/org/python/modules/_io/Closer.java +++ b/src/org/python/modules/_io/Closer.java @@ -3,6 +3,7 @@ import java.lang.ref.WeakReference; import java.util.concurrent.Callable; +import java.util.concurrent.atomic.AtomicBoolean; import org.python.core.PyObject; import org.python.core.PySystemState; @@ -31,6 +32,7 @@ /** Interpreter state that will call {@link #call()} on shutdown. */ protected PySystemState sys; + private AtomicBoolean dismissed = new AtomicBoolean(); //Defaults to false public Closer(C toClose, PySystemState sys) { this.client = new WeakReference(toClose); @@ -42,10 +44,9 @@ * Tell the Closer that its services are no longer required. This unhooks it from the shutdown * list. Repeated calls are allowed but only the first has any effect. */ - public synchronized void dismiss() { - if (sys != null) { + public void dismiss() { + if (dismissed.compareAndSet(false, true)) { sys.unregisterCloser(this); - sys = null; } } @@ -54,10 +55,9 @@ * "close" method. */ @Override - public synchronized Void call() { - if (sys != null) { - // This will prevent repeated work and dismiss() manipulating the list of closers - sys = null; + public Void call() { + // This will prevent repeated work and dismiss() manipulating the list of closers + if (dismissed.compareAndSet(false, true)) { // Call close on the client (if it still exists) C toClose = client.get(); if (toClose != null) { @@ -66,4 +66,4 @@ } return null; } -} \ No newline at end of file +} -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 2 18:19:09 2016 From: jython-checkins at python.org (jim.baker) Date: Tue, 02 Feb 2016 23:19:09 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Support_calling_overloaded_?= =?utf-8?q?method_j=2Eu=2EList=23remove=28index=29=2E_Fixes_=232456?= Message-ID: <20160202231909.89790.22150@psf.io> https://hg.python.org/jython/rev/01ef8d1c6d0e changeset: 7890:01ef8d1c6d0e user: Jim Baker date: Tue Feb 02 16:19:02 2016 -0700 summary: Support calling overloaded method j.u.List#remove(index). Fixes #2456 Such indices support Python convention with respect to negative indexes, so x.remove(i) is equivalent to del x[i]. This fix restores support for using remove in this fashion against java.util.List, as was available in 2.5.x. files: Lib/test/test_list_jy.py | 25 ++++++++++++- src/org/python/core/JavaProxyList.java | 6 +++ src/org/python/core/PyInteger.java | 2 +- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_list_jy.py b/Lib/test/test_list_jy.py --- a/Lib/test/test_list_jy.py +++ b/Lib/test/test_list_jy.py @@ -7,7 +7,7 @@ if test_support.is_jython: from java.util import ArrayList - from java.lang import String + from java.lang import Integer, String class ListTestCase(unittest.TestCase): @@ -227,13 +227,34 @@ self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) - def test_extend_java_ArrayList(self): jl = ArrayList([]) jl.extend([1,2]) self.assertEqual(jl, ArrayList([1,2])) jl.extend(ArrayList([3,4])) self.assertEqual(jl, [1,2,3,4]) + + def test_remove(self): + # Verifies that overloaded java.util.List#remove(int) method can still be used, but with Python index semantics + # http://bugs.jython.org/issue2456 + jl = ArrayList(xrange(10, -1, -1)) # 10 .. 0, inclusive + jl.remove(0) # removes jl[-1] (=0) + self.assertEqual(jl, range(10, 0, -1)) # 10 .. 1 + self.assertRaises(ValueError, jl.remove, Integer(0)) # j.l.Integer does not support __index__ - maybe it should! + jl.remove(0) # removes jl[0] (=10) + self.assertEqual(jl, range(9, 0, -1)) # 9 .. 1 + jl.remove(-1) # removes jl[-1] (=1) - support same index calculations as Python (= del jl[-1]) + self.assertEqual(jl, range(9, 1, -1)) # 9 .. 2 + jl.remove(3) + jl.remove(5) + self.assertEqual(jl, [9, 8, 7, 6, 4, 2]) + + a_to_z = list(chr(i) for i in xrange(ord('a'), ord('z') + 1)) + b_to_z_by_2 = list(chr(i) for i in xrange(ord('b'), ord('z') + 1, 2)) + jl = ArrayList(a_to_z) + for i in xrange(13): + jl.remove(i) + self.assertEqual(jl, b_to_z_by_2) class ListSubclassTestCase(unittest.TestCase): diff --git a/src/org/python/core/JavaProxyList.java b/src/org/python/core/JavaProxyList.java --- a/src/org/python/core/JavaProxyList.java +++ b/src/org/python/core/JavaProxyList.java @@ -492,6 +492,12 @@ return Py.None; } } + if (object.isIndex()) { + // this op is still O(n), but with also the extra O(n) above + ListIndexDelegate ldel = new ListIndexDelegate(jlist); + ldel.checkIdxAndDelItem(object); + return Py.None; + } throw Py.ValueError(object.toString() + " is not in list"); } }; diff --git a/src/org/python/core/PyInteger.java b/src/org/python/core/PyInteger.java --- a/src/org/python/core/PyInteger.java +++ b/src/org/python/core/PyInteger.java @@ -1056,7 +1056,7 @@ } /** - * Common code for PyInteger and PyLong to prepare an IntegerFormatter. This object has an + * Common code for PyInteger and PyLong to prepare an IntegerFormatter. This object has an * overloaded format method {@link IntegerFormatter#format(int)} and * {@link IntegerFormatter#format(BigInteger)} to support the two types. * -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 2 22:21:24 2016 From: jython-checkins at python.org (frank.wierzbicki) Date: Wed, 03 Feb 2016 03:21:24 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Prepare_for_release=2E?= Message-ID: <20160203032123.89764.52402@psf.io> https://hg.python.org/jython/rev/c3289f2a2754 changeset: 7891:c3289f2a2754 user: Frank Wierzbicki date: Wed Feb 03 03:21:50 2016 +0000 summary: Prepare for release. files: README.txt | 4 ++-- build.xml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.txt b/README.txt --- a/README.txt +++ b/README.txt @@ -1,8 +1,8 @@ Jython: Python for the Java Platform -Welcome to Jython 2.7.1 beta 2! +Welcome to Jython 2.7.1 beta 3! -This is the second beta release of the 2.7.1 version of Jython. Along with +This is the third beta release of the 2.7.1 version of Jython. Along with language and runtime compatibility with CPython 2.7.1, Jython 2.7 provides substantial support of the Python ecosystem. This includes built-in support of pip/setuptools (you can use with bin/pip) and a native launcher for Windows diff --git a/build.xml b/build.xml --- a/build.xml +++ b/build.xml @@ -84,11 +84,11 @@ - - + + - + @@ -396,7 +396,7 @@ - ======================= -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 2 22:21:39 2016 From: jython-checkins at python.org (frank.wierzbicki) Date: Wed, 03 Feb 2016 03:21:39 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Added_tag_v2=2E7=2E1b3_for_?= =?utf-8?q?changeset_c3289f2a2754?= Message-ID: <20160203032139.66999.32790@psf.io> https://hg.python.org/jython/rev/df42d5d6be04 changeset: 7892:df42d5d6be04 user: Frank Wierzbicki date: Wed Feb 03 03:22:04 2016 +0000 summary: Added tag v2.7.1b3 for changeset c3289f2a2754 files: .hgtags | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -100,3 +100,4 @@ 2f0b46abbe31275edc3257f54f8222fd37752d65 v2.7.1b1 44403bccae2163186f8ab46b4a544a48e137bba6 v2.7.1b1 6c0da6893570f3ae3cd37a33189cae954e2afebb v2.7.1b2 +c3289f2a275446451605e586e5bef70092224184 v2.7.1b3 -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 3 14:58:57 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 03 Feb 2016 19:58:57 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Updated_XML_stdlib_support_?= =?utf-8?q?to_latest_from_CPython_2=2E7=2E_Fixes_=232124?= Message-ID: <20160203195856.66993.43261@psf.io> https://hg.python.org/jython/rev/ec1b1e701776 changeset: 7893:ec1b1e701776 user: Jim Baker date: Wed Feb 03 12:58:49 2016 -0700 summary: Updated XML stdlib support to latest from CPython 2.7. Fixes #2124 In addition, Jython does not use the Xerxes API (xml-apis-2.11.0.jar) in its build, so removed. We will revisit shading with the change to Gradle in 2.7.2 (#2182). files: CPythonLib.includes | 1 + Lib/xml/dom/MessageSource.py | 54 - Lib/xml/dom/NodeFilter.py | 27 - Lib/xml/dom/__init__.py | 232 ----- Lib/xml/dom/domreg.py | 99 -- Lib/xml/dom/minicompat.py | 184 ---- Lib/xml/dom/minidom.py | 192 ++-- Lib/xml/dom/xmlbuilder.py | 388 ---------- Lib/xml/sax/drivers2/drv_javasax.py | 20 + extlibs/xml-apis-2.11.0.jar | Bin lib-python/2.7/test/test_minidom.py | 131 +-- lib-python/2.7/test/test_xml_etree.py | 27 +- lib-python/2.7/test/test_xml_etree_c.py | 32 + lib-python/2.7/test/test_xmlrpc.py | 123 ++- lib-python/2.7/xml/dom/minicompat.py | 6 +- lib-python/2.7/xml/dom/minidom.py | 3 - lib-python/2.7/xml/etree/ElementInclude.py | 15 +- lib-python/2.7/xml/etree/ElementTree.py | 89 +- lib-python/2.7/xml/sax/expatreader.py | 25 +- lib-python/2.7/xml/sax/saxutils.py | 21 +- 20 files changed, 407 insertions(+), 1262 deletions(-) diff --git a/CPythonLib.includes b/CPythonLib.includes --- a/CPythonLib.includes +++ b/CPythonLib.includes @@ -14,6 +14,7 @@ pydoc_data/** test/** unittest/** +xml/dom/** xml/etree/** # Lib files, in alphabetical order: diff --git a/Lib/xml/dom/MessageSource.py b/Lib/xml/dom/MessageSource.py deleted file mode 100644 --- a/Lib/xml/dom/MessageSource.py +++ /dev/null @@ -1,54 +0,0 @@ -# DOMException -from xml.dom import INDEX_SIZE_ERR, DOMSTRING_SIZE_ERR , HIERARCHY_REQUEST_ERR -from xml.dom import WRONG_DOCUMENT_ERR, INVALID_CHARACTER_ERR, NO_DATA_ALLOWED_ERR -from xml.dom import NO_MODIFICATION_ALLOWED_ERR, NOT_FOUND_ERR, NOT_SUPPORTED_ERR -from xml.dom import INUSE_ATTRIBUTE_ERR, INVALID_STATE_ERR, SYNTAX_ERR -from xml.dom import INVALID_MODIFICATION_ERR, NAMESPACE_ERR, INVALID_ACCESS_ERR -from xml.dom import VALIDATION_ERR - -# EventException -from xml.dom import UNSPECIFIED_EVENT_TYPE_ERR - -#Range Exceptions -from xml.dom import BAD_BOUNDARYPOINTS_ERR -from xml.dom import INVALID_NODE_TYPE_ERR - -# Fourthought Exceptions -from xml.dom import XML_PARSE_ERR - -from xml.FtCore import get_translator - -_ = get_translator("dom") - - -DOMExceptionStrings = { - INDEX_SIZE_ERR: _("Index error accessing NodeList or NamedNodeMap"), - DOMSTRING_SIZE_ERR: _("DOMString exceeds maximum size"), - HIERARCHY_REQUEST_ERR: _("Node manipulation results in invalid parent/child relationship."), - WRONG_DOCUMENT_ERR: _("Node is from a different document"), - INVALID_CHARACTER_ERR: _("Invalid or illegal character"), - NO_DATA_ALLOWED_ERR: _("Node does not support data"), - NO_MODIFICATION_ALLOWED_ERR: _("Attempt to modify a read-only object"), - NOT_FOUND_ERR: _("Node does not exist in this context"), - NOT_SUPPORTED_ERR: _("Object or operation not supported"), - INUSE_ATTRIBUTE_ERR: _("Attribute already in use by an element"), - INVALID_STATE_ERR: _("Object is not, or is no longer, usable"), - SYNTAX_ERR: _("Specified string is invalid or illegal"), - INVALID_MODIFICATION_ERR: _("Attempt to modify the type of a node"), - NAMESPACE_ERR: _("Invalid or illegal namespace operation"), - INVALID_ACCESS_ERR: _("Object does not support this operation or parameter"), - VALIDATION_ERR: _("Operation would invalidate partial validity constraint"), - } - -EventExceptionStrings = { - UNSPECIFIED_EVENT_TYPE_ERR : _("Uninitialized type in Event object"), - } - -FtExceptionStrings = { - XML_PARSE_ERR : _("XML parse error at line %d, column %d: %s"), - } - -RangeExceptionStrings = { - BAD_BOUNDARYPOINTS_ERR : _("Invalid Boundary Points specified for Range"), - INVALID_NODE_TYPE_ERR : _("Invalid Container Node") - } diff --git a/Lib/xml/dom/NodeFilter.py b/Lib/xml/dom/NodeFilter.py deleted file mode 100644 --- a/Lib/xml/dom/NodeFilter.py +++ /dev/null @@ -1,27 +0,0 @@ -# This is the Python mapping for interface NodeFilter from -# DOM2-Traversal-Range. It contains only constants. - -class NodeFilter: - """ - This is the DOM2 NodeFilter interface. It contains only constants. - """ - FILTER_ACCEPT = 1 - FILTER_REJECT = 2 - FILTER_SKIP = 3 - - SHOW_ALL = 0xFFFFFFFFL - SHOW_ELEMENT = 0x00000001 - SHOW_ATTRIBUTE = 0x00000002 - SHOW_TEXT = 0x00000004 - SHOW_CDATA_SECTION = 0x00000008 - SHOW_ENTITY_REFERENCE = 0x00000010 - SHOW_ENTITY = 0x00000020 - SHOW_PROCESSING_INSTRUCTION = 0x00000040 - SHOW_COMMENT = 0x00000080 - SHOW_DOCUMENT = 0x00000100 - SHOW_DOCUMENT_TYPE = 0x00000200 - SHOW_DOCUMENT_FRAGMENT = 0x00000400 - SHOW_NOTATION = 0x00000800 - - def acceptNode(self, node): - raise NotImplementedError diff --git a/Lib/xml/dom/__init__.py b/Lib/xml/dom/__init__.py deleted file mode 100644 --- a/Lib/xml/dom/__init__.py +++ /dev/null @@ -1,232 +0,0 @@ -######################################################################## -# -# File Name: __init__.py -# -# -""" -WWW: http://4suite.org/4DOM e-mail: support at 4suite.org - -Copyright (c) 2000 Fourthought Inc, USA. All Rights Reserved. -See http://4suite.org/COPYRIGHT for license and copyright information -""" - - -class Node: - """Class giving the nodeType and tree-position constants.""" - - # DOM implementations may use this as a base class for their own - # Node implementations. If they don't, the constants defined here - # should still be used as the canonical definitions as they match - # the values given in the W3C recommendation. Client code can - # safely refer to these values in all tests of Node.nodeType - # values. - - ELEMENT_NODE = 1 - ATTRIBUTE_NODE = 2 - TEXT_NODE = 3 - CDATA_SECTION_NODE = 4 - ENTITY_REFERENCE_NODE = 5 - ENTITY_NODE = 6 - PROCESSING_INSTRUCTION_NODE = 7 - COMMENT_NODE = 8 - DOCUMENT_NODE = 9 - DOCUMENT_TYPE_NODE = 10 - DOCUMENT_FRAGMENT_NODE = 11 - NOTATION_NODE = 12 - - # Based on DOM Level 3 (WD 9 April 2002) - - TREE_POSITION_PRECEDING = 0x01 - TREE_POSITION_FOLLOWING = 0x02 - TREE_POSITION_ANCESTOR = 0x04 - TREE_POSITION_DESCENDENT = 0x08 - TREE_POSITION_EQUIVALENT = 0x10 - TREE_POSITION_SAME_NODE = 0x20 - TREE_POSITION_DISCONNECTED = 0x00 - -class UserDataHandler: - """Class giving the operation constants for UserDataHandler.handle().""" - - # Based on DOM Level 3 (WD 9 April 2002) - - NODE_CLONED = 1 - NODE_IMPORTED = 2 - NODE_DELETED = 3 - NODE_RENAMED = 4 - -class DOMError: - """Class giving constants for error severity.""" - - # Based on DOM Level 3 (WD 9 April 2002) - - SEVERITY_WARNING = 0 - SEVERITY_ERROR = 1 - SEVERITY_FATAL_ERROR = 2 - - -# DOMException codes -INDEX_SIZE_ERR = 1 -DOMSTRING_SIZE_ERR = 2 -HIERARCHY_REQUEST_ERR = 3 -WRONG_DOCUMENT_ERR = 4 -INVALID_CHARACTER_ERR = 5 -NO_DATA_ALLOWED_ERR = 6 -NO_MODIFICATION_ALLOWED_ERR = 7 -NOT_FOUND_ERR = 8 -NOT_SUPPORTED_ERR = 9 -INUSE_ATTRIBUTE_ERR = 10 -# DOM Level 2 -INVALID_STATE_ERR = 11 -SYNTAX_ERR = 12 -INVALID_MODIFICATION_ERR = 13 -NAMESPACE_ERR = 14 -INVALID_ACCESS_ERR = 15 -# DOM Level 3 -VALIDATION_ERR = 16 - -# EventException codes -UNSPECIFIED_EVENT_TYPE_ERR = 0 - -# Fourthought specific codes -FT_EXCEPTION_BASE = 1000 -XML_PARSE_ERR = FT_EXCEPTION_BASE + 1 - -#RangeException codes -BAD_BOUNDARYPOINTS_ERR = 1 -INVALID_NODE_TYPE_ERR = 2 - - -class DOMException(Exception): - def __init__(self, code, msg=''): - self.code = code - self.msg = msg or DOMExceptionStrings[code] - - def __str__(self): - return self.msg - -class EventException(Exception): - def __init__(self, code, msg=''): - self.code = code - self.msg = msg or EventExceptionStrings[code] - return - - def __str__(self): - return self.msg - -class RangeException(Exception): - def __init__(self, code, msg): - self.code = code - self.msg = msg or RangeExceptionStrings[code] - Exception.__init__(self, self.msg) - -class FtException(Exception): - def __init__(self, code, *args): - self.code = code - self.msg = FtExceptionStrings[code] % args - return - - def __str__(self): - return self.msg - -class IndexSizeErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, INDEX_SIZE_ERR, msg) - -class DomstringSizeErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, DOMSTRING_SIZE_ERR, msg) - -# DOMStringSizeErr was accidentally introduced in rev 1.14 of this -# file, and was released as part of PyXML 0.6.4, 0.6.5, 0.6.6, 0.7, -# and 0.7.1. It has never been part of the Python DOM API, although -# it better matches the W3C recommendation. It should remain for -# compatibility, unfortunately. -# -DOMStringSizeErr = DomstringSizeErr - -class HierarchyRequestErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, HIERARCHY_REQUEST_ERR, msg) - -class WrongDocumentErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, WRONG_DOCUMENT_ERR, msg) - -class InvalidCharacterErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, INVALID_CHARACTER_ERR, msg) - -class NoDataAllowedErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, NO_DATA_ALLOWED_ERR, msg) - -class NoModificationAllowedErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, NO_MODIFICATION_ALLOWED_ERR, msg) - -class NotFoundErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, NOT_FOUND_ERR, msg) - -class NotSupportedErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, NOT_SUPPORTED_ERR, msg) - -class InuseAttributeErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, INUSE_ATTRIBUTE_ERR, msg) - -class InvalidStateErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, INVALID_STATE_ERR, msg) - -class SyntaxErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, SYNTAX_ERR, msg) - -class InvalidModificationErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, INVALID_MODIFICATION_ERR, msg) - -class NamespaceErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, NAMESPACE_ERR, msg) - -class InvalidAccessErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, INVALID_ACCESS_ERR, msg) - -class ValidationErr(DOMException): - def __init__(self, msg=''): - DOMException.__init__(self, VALIDATION_ERR, msg) - -class UnspecifiedEventTypeErr(EventException): - def __init__(self, msg=''): - EventException.__init__(self, UNSPECIFIED_EVENT_TYPE_ERR, msg) - -class XmlParseErr(FtException): - def __init__(self, msg=''): - FtException.__init__(self, XML_PARSE_ERR, msg) - -#Specific Range Exceptions -class BadBoundaryPointsErr(RangeException): - def __init__(self, msg=''): - RangeException.__init__(self, BAD_BOUNDARYPOINTS_ERR, msg) - -class InvalidNodeTypeErr(RangeException): - def __init__(self, msg=''): - RangeException.__init__(self, INVALID_NODE_TYPE_ERR, msg) - -XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" -XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/" -XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml" -EMPTY_NAMESPACE = None -EMPTY_PREFIX = None - -import MessageSource -DOMExceptionStrings = MessageSource.__dict__['DOMExceptionStrings'] -EventExceptionStrings = MessageSource.__dict__['EventExceptionStrings'] -FtExceptionStrings = MessageSource.__dict__['FtExceptionStrings'] -RangeExceptionStrings = MessageSource.__dict__['RangeExceptionStrings'] - -from domreg import getDOMImplementation,registerDOMImplementation diff --git a/Lib/xml/dom/domreg.py b/Lib/xml/dom/domreg.py deleted file mode 100644 --- a/Lib/xml/dom/domreg.py +++ /dev/null @@ -1,99 +0,0 @@ -"""Registration facilities for DOM. This module should not be used -directly. Instead, the functions getDOMImplementation and -registerDOMImplementation should be imported from xml.dom.""" - -from xml.dom.minicompat import * # isinstance, StringTypes - -# This is a list of well-known implementations. Well-known names -# should be published by posting to xml-sig at python.org, and are -# subsequently recorded in this file. - -well_known_implementations = { - 'minidom':'xml.dom.minidom', - '4DOM': 'xml.dom.DOMImplementation', - } - -# DOM implementations not officially registered should register -# themselves with their - -registered = {} - -def registerDOMImplementation(name, factory): - """registerDOMImplementation(name, factory) - - Register the factory function with the name. The factory function - should return an object which implements the DOMImplementation - interface. The factory function can either return the same object, - or a new one (e.g. if that implementation supports some - customization).""" - - registered[name] = factory - -def _good_enough(dom, features): - "_good_enough(dom, features) -> Return 1 if the dom offers the features" - for f,v in features: - if not dom.hasFeature(f,v): - return 0 - return 1 - -def getDOMImplementation(name = None, features = ()): - """getDOMImplementation(name = None, features = ()) -> DOM implementation. - - Return a suitable DOM implementation. The name is either - well-known, the module name of a DOM implementation, or None. If - it is not None, imports the corresponding module and returns - DOMImplementation object if the import succeeds. - - If name is not given, consider the available implementations to - find one with the required feature set. If no implementation can - be found, raise an ImportError. The features list must be a sequence - of (feature, version) pairs which are passed to hasFeature.""" - - import os - creator = None - mod = well_known_implementations.get(name) - if mod: - mod = __import__(mod, {}, {}, ['getDOMImplementation']) - return mod.getDOMImplementation() - elif name: - return registered[name]() - elif os.environ.has_key("PYTHON_DOM"): - return getDOMImplementation(name = os.environ["PYTHON_DOM"]) - - # User did not specify a name, try implementations in arbitrary - # order, returning the one that has the required features - if isinstance(features, StringTypes): - features = _parse_feature_string(features) - for creator in registered.values(): - dom = creator() - if _good_enough(dom, features): - return dom - - for creator in well_known_implementations.keys(): - try: - dom = getDOMImplementation(name = creator) - except StandardError: # typically ImportError, or AttributeError - continue - if _good_enough(dom, features): - return dom - - raise ImportError,"no suitable DOM implementation found" - -def _parse_feature_string(s): - features = [] - parts = s.split() - i = 0 - length = len(parts) - while i < length: - feature = parts[i] - if feature[0] in "0123456789": - raise ValueError, "bad feature name: " + `feature` - i = i + 1 - version = None - if i < length: - v = parts[i] - if v[0] in "0123456789": - i = i + 1 - version = v - features.append((feature, version)) - return tuple(features) diff --git a/Lib/xml/dom/minicompat.py b/Lib/xml/dom/minicompat.py deleted file mode 100644 --- a/Lib/xml/dom/minicompat.py +++ /dev/null @@ -1,184 +0,0 @@ -"""Python version compatibility support for minidom.""" - -# This module should only be imported using "import *". -# -# The following names are defined: -# -# isinstance -- version of the isinstance() function that accepts -# tuples as the second parameter regardless of the -# Python version -# -# NodeList -- lightest possible NodeList implementation -# -# EmptyNodeList -- lightest possible NodeList that is guarateed to -# remain empty (immutable) -# -# StringTypes -- tuple of defined string types -# -# GetattrMagic -- base class used to make _get_ be magically -# invoked when available -# defproperty -- function used in conjunction with GetattrMagic; -# using these together is needed to make them work -# as efficiently as possible in both Python 2.2+ -# and older versions. For example: -# -# class MyClass(GetattrMagic): -# def _get_myattr(self): -# return something -# -# defproperty(MyClass, "myattr", -# "return some value") -# -# For Python 2.2 and newer, this will construct a -# property object on the class, which avoids -# needing to override __getattr__(). It will only -# work for read-only attributes. -# -# For older versions of Python, inheriting from -# GetattrMagic will use the traditional -# __getattr__() hackery to achieve the same effect, -# but less efficiently. -# -# defproperty() should be used for each version of -# the relevant _get_() function. -# -# NewStyle -- base class to cause __slots__ to be honored in -# the new world -# -# True, False -- only for Python 2.2 and earlier - -__all__ = ["NodeList", "EmptyNodeList", "NewStyle", - "StringTypes", "defproperty", "GetattrMagic"] - -import xml.dom - -try: - unicode -except NameError: - StringTypes = type(''), -else: - StringTypes = type(''), type(unicode('')) - - -# define True and False only if not defined as built-ins -try: - True -except NameError: - True = 1 - False = 0 - __all__.extend(["True", "False"]) - - -try: - isinstance('', StringTypes) -except TypeError: - # - # Wrap isinstance() to make it compatible with the version in - # Python 2.2 and newer. - # - _isinstance = isinstance - def isinstance(obj, type_or_seq): - try: - return _isinstance(obj, type_or_seq) - except TypeError: - for t in type_or_seq: - if _isinstance(obj, t): - return 1 - return 0 - __all__.append("isinstance") - - -if list is type([]): - class NodeList(list): - __slots__ = () - - def item(self, index): - if 0 <= index < len(self): - return self[index] - - def _get_length(self): - return len(self) - - def _set_length(self, value): - raise xml.dom.NoModificationAllowedErr( - "attempt to modify read-only attribute 'length'") - - length = property(_get_length, _set_length, - doc="The number of nodes in the NodeList.") - - def __getstate__(self): - return list(self) - - def __setstate__(self, state): - self[:] = state - - class EmptyNodeList(tuple): - __slots__ = () - - def __add__(self, other): - NL = NodeList() - NL.extend(other) - return NL - - def __radd__(self, other): - NL = NodeList() - NL.extend(other) - return NL - - def item(self, index): - return None - - def _get_length(self): - return 0 - - def _set_length(self, value): - raise xml.dom.NoModificationAllowedErr( - "attempt to modify read-only attribute 'length'") - - length = property(_get_length, _set_length, - doc="The number of nodes in the NodeList.") - -else: - def NodeList(): - return [] - - def EmptyNodeList(): - return [] - - -try: - property -except NameError: - def defproperty(klass, name, doc): - # taken care of by the base __getattr__() - pass - - class GetattrMagic: - def __getattr__(self, key): - if key.startswith("_"): - raise AttributeError, key - - try: - get = getattr(self, "_get_" + key) - except AttributeError: - raise AttributeError, key - return get() - - class NewStyle: - pass - -else: - def defproperty(klass, name, doc): - get = getattr(klass, ("_get_" + name)).im_func - def set(self, value, name=name): - raise xml.dom.NoModificationAllowedErr( - "attempt to modify read-only attribute " + repr(name)) - assert not hasattr(klass, "_set_" + name), \ - "expected not to find _set_" + name - prop = property(get, set, doc=doc) - setattr(klass, name, prop) - - class GetattrMagic: - pass - - NewStyle = object diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py --- a/Lib/xml/dom/minidom.py +++ b/Lib/xml/dom/minidom.py @@ -1,5 +1,6 @@ -"""\ -minidom.py -- a lightweight DOM implementation. +"""Simple implementation of the Level 1 DOM. + +Namespaces and other minor Level 2 features are also supported. parse("foo.xml") @@ -14,14 +15,13 @@ * SAX 2 namespaces """ +import sys import xml.dom from xml.dom import EMPTY_NAMESPACE, EMPTY_PREFIX, XMLNS_NAMESPACE, domreg from xml.dom.minicompat import * from xml.dom.xmlbuilder import DOMImplementationLS, DocumentLS -_TupleType = type(()) - # This is used by the ID-cache invalidation checks; the list isn't # actually complete, since the nodes being checked will never be the # DOCUMENT_NODE or DOCUMENT_FRAGMENT_NODE. (The node being checked is @@ -31,7 +31,7 @@ xml.dom.Node.ENTITY_REFERENCE_NODE) -class Node(xml.dom.Node, GetattrMagic): +class Node(xml.dom.Node): namespaceURI = None # this is non-null only for elements and attributes parentNode = None ownerDocument = None @@ -61,9 +61,6 @@ self.writexml(writer, "", indent, newl) return writer.getvalue() - def hasAttributes(self): - return False - def hasChildNodes(self): if self.childNodes: return True @@ -138,20 +135,20 @@ if newChild.nodeType not in self._child_node_types: raise xml.dom.HierarchyRequestErr( "%s cannot be child of %s" % (repr(newChild), repr(self))) + if newChild is oldChild: + return if newChild.parentNode is not None: newChild.parentNode.removeChild(newChild) - if newChild is oldChild: - return try: index = self.childNodes.index(oldChild) except ValueError: raise xml.dom.NotFoundErr() + self.childNodes[index] = newChild + newChild.parentNode = self + oldChild.parentNode = None if (newChild.nodeType in _nodeTypes_with_children or oldChild.nodeType in _nodeTypes_with_children): _clear_id_cache(self) - self.childNodes[index] = newChild - newChild.parentNode = self - oldChild.parentNode = None newChild.nextSibling = oldChild.nextSibling newChild.previousSibling = oldChild.previousSibling oldChild.nextSibling = None @@ -182,35 +179,28 @@ L = [] for child in self.childNodes: if child.nodeType == Node.TEXT_NODE: - data = child.data - if data and L and L[-1].nodeType == child.nodeType: + if not child.data: + # empty text node; discard + if L: + L[-1].nextSibling = child.nextSibling + if child.nextSibling: + child.nextSibling.previousSibling = child.previousSibling + child.unlink() + elif L and L[-1].nodeType == child.nodeType: # collapse text node node = L[-1] node.data = node.data + child.data node.nextSibling = child.nextSibling + if child.nextSibling: + child.nextSibling.previousSibling = node child.unlink() - elif data: - if L: - L[-1].nextSibling = child - child.previousSibling = L[-1] - else: - child.previousSibling = None + else: L.append(child) - else: - # empty text node; discard - child.unlink() else: - if L: - L[-1].nextSibling = child - child.previousSibling = L[-1] - else: - child.previousSibling = None L.append(child) if child.nodeType == Node.ELEMENT_NODE: child.normalize() - if self.childNodes: - self.childNodes[:] = L - return + self.childNodes[:] = L def cloneNode(self, deep): return _clone_node(self, deep, self.ownerDocument or self) @@ -250,7 +240,7 @@ except AttributeError: d = {} self._user_data = d - if d.has_key(key): + if key in d: old = d[key][0] if data is None: # ignore handlers passed for None @@ -303,9 +293,10 @@ def _write_data(writer, data): "Writes datachars to writer." - data = data.replace("&", "&").replace("<", "<") - data = data.replace("\"", """).replace(">", ">") - writer.write(data) + if data: + data = data.replace("&", "&").replace("<", "<"). \ + replace("\"", """).replace(">", ">") + writer.write(data) def _get_elements_by_tagName_helper(parent, name, rc): for node in parent.childNodes: @@ -368,9 +359,6 @@ def _get_localName(self): return self.nodeName.split(":", 1)[-1] - def _get_name(self): - return self.name - def _get_specified(self): return self.specified @@ -464,7 +452,7 @@ defproperty(Attr, "schemaType", doc="Schema type for this attribute.") -class NamedNodeMap(NewStyle, GetattrMagic): +class NamedNodeMap(object): """The attribute list is a transient interface to the underlying dictionaries. Mutations here will change the underlying element's dictionary. @@ -503,9 +491,9 @@ def has_key(self, key): if isinstance(key, StringTypes): - return self._attrs.has_key(key) + return key in self._attrs else: - return self._attrsNS.has_key(key) + return key in self._attrsNS def keys(self): return self._attrs.keys() @@ -521,6 +509,7 @@ __len__ = _get_length + __hash__ = None # Mutable type can't be correctly hashed def __cmp__(self, other): if self._attrs is getattr(other, "_attrs", None): return 0 @@ -528,7 +517,7 @@ return cmp(id(self), id(other)) def __getitem__(self, attname_or_tuple): - if isinstance(attname_or_tuple, _TupleType): + if isinstance(attname_or_tuple, tuple): return self._attrsNS[attname_or_tuple] else: return self._attrs[attname_or_tuple] @@ -567,7 +556,7 @@ _clear_id_cache(self._ownerElement) del self._attrs[n.nodeName] del self._attrsNS[(n.namespaceURI, n.localName)] - if n.__dict__.has_key('ownerElement'): + if 'ownerElement' in n.__dict__: n.__dict__['ownerElement'] = None return n else: @@ -579,7 +568,7 @@ _clear_id_cache(self._ownerElement) del self._attrsNS[(n.namespaceURI, n.localName)] del self._attrs[n.nodeName] - if n.__dict__.has_key('ownerElement'): + if 'ownerElement' in n.__dict__: n.__dict__['ownerElement'] = None return n else: @@ -592,7 +581,6 @@ old = self._attrs.get(node.name) if old: old.unlink() - old.ownerDocument = self._ownerElement.ownerDocument self._attrs[node.name] = node self._attrsNS[(node.namespaceURI, node.localName)] = node node.ownerElement = self._ownerElement @@ -619,7 +607,7 @@ AttributeList = NamedNodeMap -class TypeInfo(NewStyle): +class TypeInfo(object): __slots__ = 'namespace', 'name' def __init__(self, namespace, name): @@ -628,9 +616,9 @@ def __repr__(self): if self.namespace: - return "" % (`self.name`, `self.namespace`) + return "" % (self.name, self.namespace) else: - return "" % `self.name` + return "" % self.name def _get_name(self): return self.name @@ -783,15 +771,14 @@ # Restore this since the node is still useful and otherwise # unlinked node.ownerDocument = self.ownerDocument - return node removeAttributeNodeNS = removeAttributeNode def hasAttribute(self, name): - return self._attrs.has_key(name) + return name in self._attrs def hasAttributeNS(self, namespaceURI, localName): - return self._attrsNS.has_key((namespaceURI, localName)) + return (namespaceURI, localName) in self._attrsNS def getElementsByTagName(self, name): return _get_elements_by_tagName_helper(self, name, NodeList()) @@ -818,10 +805,16 @@ _write_data(writer, attrs[a_name].value) writer.write("\"") if self.childNodes: - writer.write(">%s"%(newl)) - for node in self.childNodes: - node.writexml(writer,indent+addindent,addindent,newl) - writer.write("%s%s" % (indent,self.tagName,newl)) + writer.write(">") + if (len(self.childNodes) == 1 and + self.childNodes[0].nodeType == Node.TEXT_NODE): + self.childNodes[0].writexml(writer, '', '', '') + else: + writer.write(newl) + for node in self.childNodes: + node.writexml(writer, indent+addindent, addindent, newl) + writer.write(indent) + writer.write("%s" % (self.tagName, newl)) else: writer.write("/>%s"%(newl)) @@ -903,6 +896,10 @@ raise xml.dom.NotFoundErr( self.nodeName + " nodes do not have children") + def normalize(self): + # For childless nodes, normalize() has nothing to do. + pass + def replaceChild(self, newChild, oldChild): raise xml.dom.HierarchyRequestErr( self.nodeName + " nodes do not have children") @@ -965,13 +962,13 @@ dotdotdot = "..." else: dotdotdot = "" - return "" % ( + return '' % ( self.__class__.__name__, data[0:10], dotdotdot) def substringData(self, offset, count): if offset < 0: raise xml.dom.IndexSizeErr("offset cannot be negative") - if offset > len(self.data): + if offset >= len(self.data): raise xml.dom.IndexSizeErr("offset cannot be beyond end of data") if count < 0: raise xml.dom.IndexSizeErr("count cannot be negative") @@ -983,7 +980,7 @@ def insertData(self, offset, arg): if offset < 0: raise xml.dom.IndexSizeErr("offset cannot be negative") - if offset > len(self.data): + if offset >= len(self.data): raise xml.dom.IndexSizeErr("offset cannot be beyond end of data") if arg: self.data = "%s%s%s" % ( @@ -992,7 +989,7 @@ def deleteData(self, offset, count): if offset < 0: raise xml.dom.IndexSizeErr("offset cannot be negative") - if offset > len(self.data): + if offset >= len(self.data): raise xml.dom.IndexSizeErr("offset cannot be beyond end of data") if count < 0: raise xml.dom.IndexSizeErr("count cannot be negative") @@ -1002,7 +999,7 @@ def replaceData(self, offset, count, arg): if offset < 0: raise xml.dom.IndexSizeErr("offset cannot be negative") - if offset > len(self.data): + if offset >= len(self.data): raise xml.dom.IndexSizeErr("offset cannot be beyond end of data") if count < 0: raise xml.dom.IndexSizeErr("count cannot be negative") @@ -1014,12 +1011,10 @@ class Text(CharacterData): - - # This class doesn't have an __init__() by design; the intent is - # to speed construction of new instances. Once an instance is - # created, the .data and .ownerDocument attributes will need to be - # initialized. Subclasses may add an __init__() and initialize - # those members there or require them to be initialized later. + # Make sure we don't add an instance __dict__ if we don't already + # have one, at least when that's possible: + # XXX this does not work, CharacterData is an old-style class + # __slots__ = () nodeType = Node.TEXT_NODE nodeName = "#text" @@ -1041,7 +1036,7 @@ return newText def writexml(self, writer, indent="", addindent="", newl=""): - _write_data(writer, "%s%s%s"%(indent, self.data, newl)) + _write_data(writer, "%s%s%s" % (indent, self.data, newl)) # DOM Level 3 (WD 9 April 2002) @@ -1137,10 +1132,17 @@ self.data = self.nodeValue = data def writexml(self, writer, indent="", addindent="", newl=""): + if "--" in self.data: + raise ValueError("'--' is not allowed in a comment node") writer.write("%s%s" % (indent, self.data, newl)) class CDATASection(Text): + # Make sure we don't add an instance __dict__ if we don't already + # have one, at least when that's possible: + # XXX this does not work, Text is an old-style class + # __slots__ = () + nodeType = Node.CDATA_SECTION_NODE nodeName = "#cdata-section" @@ -1150,7 +1152,7 @@ writer.write("" % self.data) -class ReadOnlySequentialNamedNodeMap(NewStyle, GetattrMagic): +class ReadOnlySequentialNamedNodeMap(object): __slots__ = '_seq', def __init__(self, seq=()): @@ -1174,7 +1176,7 @@ return n def __getitem__(self, name_or_tuple): - if isinstance(name_or_tuple, _TupleType): + if isinstance(name_or_tuple, tuple): node = self.getNamedItemNS(*name_or_tuple) else: node = self.getNamedItem(name_or_tuple) @@ -1210,7 +1212,6 @@ return [self._seq] def __setstate__(self, state): - assert len(state) == 1 self._seq = state[0] defproperty(ReadOnlySequentialNamedNodeMap, "length", @@ -1220,6 +1221,9 @@ class Identified: """Mix-in class that supports the publicId and systemId attributes.""" + # XXX this does not work, this is an old-style class + # __slots__ = 'publicId', 'systemId' + def _identified_mixin_init(self, publicId, systemId): self.publicId = publicId self.systemId = systemId @@ -1280,15 +1284,15 @@ writer.write("\n") + writer.write(">"+newl) class Entity(Identified, Node): attributes = None @@ -1342,11 +1346,9 @@ class DOMImplementation(DOMImplementationLS): _features = [("core", "1.0"), ("core", "2.0"), - ("core", "3.0"), ("core", None), ("xml", "1.0"), ("xml", "2.0"), - ("xml", "3.0"), ("xml", None), ("ls-load", "3.0"), ("ls-load", None), @@ -1420,7 +1422,7 @@ def _create_document(self): return Document() -class ElementInfo(NewStyle): +class ElementInfo(object): """Object that represents content-model information for an element. This implementation is not expected to be used in practice; DOM @@ -1449,7 +1451,7 @@ return False def isId(self, aname): - """Returns true iff the named attribte is a DTD-style ID.""" + """Returns true iff the named attribute is a DTD-style ID.""" return False def isIdNS(self, namespaceURI, localName): @@ -1664,7 +1666,7 @@ return n def getElementById(self, id): - if self._id_cache.has_key(id): + if id in self._id_cache: return self._id_cache[id] if not (self._elem_info or self._magic_id_count): return None @@ -1741,9 +1743,9 @@ def writexml(self, writer, indent="", addindent="", newl="", encoding = None): if encoding is None: - writer.write('\n') + writer.write(''+newl) else: - writer.write('\n' % encoding) + writer.write('%s' % (encoding, newl)) for node in self.childNodes: node.writexml(writer, indent, addindent, newl) @@ -1878,7 +1880,7 @@ e._call_user_data_handler(operation, n, entity) else: # Note the cloning of Document and DocumentType nodes is - # implemenetation specific. minidom handles those cases + # implementation specific. minidom handles those cases # directly in the cloneNode() methods. raise xml.dom.NotSupportedErr("Cannot clone node %s" % repr(node)) @@ -1904,34 +1906,30 @@ return StringIO() def _do_pulldom_parse(func, args, kwargs): - events = apply(func, args, kwargs) + events = func(*args, **kwargs) toktype, rootNode = events.getEvent() events.expandNode(rootNode) events.clear() - rootNode.normalize() return rootNode def parse(file, parser=None, bufsize=None): """Parse a file into a DOM by filename or file object.""" - import sys - if parser is None and bufsize is None and sys.platform[:4] != "java": - try: - from xml.dom import expatbuilder - return expatbuilder.parse(file) - except ImportError: - pass - from xml.dom import pulldom - return _do_pulldom_parse(pulldom.parse, (file,), + if parser is None and not bufsize and sys.platform[:4] != "java": + from xml.dom import expatbuilder + return expatbuilder.parse(file) + else: + from xml.dom import pulldom + return _do_pulldom_parse(pulldom.parse, (file,), {'parser': parser, 'bufsize': bufsize}) def parseString(string, parser=None): """Parse a file into a DOM from a string.""" - import sys if parser is None and sys.platform[:4] != "java": from xml.dom import expatbuilder return expatbuilder.parseString(string) - from xml.dom import pulldom - return _do_pulldom_parse(pulldom.parseString, (string,), + else: + from xml.dom import pulldom + return _do_pulldom_parse(pulldom.parseString, (string,), {'parser': parser}) def getDOMImplementation(features=None): diff --git a/Lib/xml/dom/xmlbuilder.py b/Lib/xml/dom/xmlbuilder.py deleted file mode 100644 --- a/Lib/xml/dom/xmlbuilder.py +++ /dev/null @@ -1,388 +0,0 @@ -"""Implementation of the DOM Level 3 'LS-Load' feature.""" - -import copy -import xml.dom - -from xml.dom.minicompat import * - -from xml.dom.NodeFilter import NodeFilter - - -__all__ = ["DOMBuilder", "DOMEntityResolver", "DOMInputSource"] - - -class Options: - """Features object that has variables set for each DOMBuilder feature. - - The DOMBuilder class uses an instance of this class to pass settings to - the ExpatBuilder class. - """ - - # Note that the DOMBuilder class in LoadSave constrains which of these - # values can be set using the DOM Level 3 LoadSave feature. - - namespaces = 1 - namespace_declarations = True - validation = False - external_parameter_entities = True - external_general_entities = True - external_dtd_subset = True - validate_if_schema = False - validate = False - datatype_normalization = False - create_entity_ref_nodes = True - entities = True - whitespace_in_element_content = True - cdata_sections = True - comments = True - charset_overrides_xml_encoding = True - infoset = False - supported_mediatypes_only = False - - errorHandler = None - filter = None - - -class DOMBuilder: - entityResolver = None - errorHandler = None - filter = None - - ACTION_REPLACE = 1 - ACTION_APPEND_AS_CHILDREN = 2 - ACTION_INSERT_AFTER = 3 - ACTION_INSERT_BEFORE = 4 - - _legal_actions = (ACTION_REPLACE, ACTION_APPEND_AS_CHILDREN, - ACTION_INSERT_AFTER, ACTION_INSERT_BEFORE) - - def __init__(self): - self._options = Options() - - def _get_entityResolver(self): - return self.entityResolver - def _set_entityResolver(self, entityResolver): - self.entityResolver = entityResolver - - def _get_errorHandler(self): - return self.errorHandler - def _set_errorHandler(self, errorHandler): - self.errorHandler = errorHandler - - def _get_filter(self): - return self.filter - def _set_filter(self, filter): - self.filter = filter - - def setFeature(self, name, state): - if self.supportsFeature(name): - state = state and 1 or 0 - try: - settings = self._settings[(_name_xform(name), state)] - except KeyError: - raise xml.dom.NotSupportedErr( - "unsupported feature: " + `name`) - else: - for name, value in settings: - setattr(self._options, name, value) - else: - raise xml.dom.NotFoundErr("unknown feature: " + repr(name)) - - def supportsFeature(self, name): - return hasattr(self._options, _name_xform(name)) - - def canSetFeature(self, name, state): - key = (_name_xform(name), state and 1 or 0) - return self._settings.has_key(key) - - # This dictionary maps from (feature,value) to a list of - # (option,value) pairs that should be set on the Options object. - # If a (feature,value) setting is not in this dictionary, it is - # not supported by the DOMBuilder. - # - _settings = { - ("namespace_declarations", 0): [ - ("namespace_declarations", 0)], - ("namespace_declarations", 1): [ - ("namespace_declarations", 1)], - ("validation", 0): [ - ("validation", 0)], - ("external_general_entities", 0): [ - ("external_general_entities", 0)], - ("external_general_entities", 1): [ - ("external_general_entities", 1)], - ("external_parameter_entities", 0): [ - ("external_parameter_entities", 0)], - ("external_parameter_entities", 1): [ - ("external_parameter_entities", 1)], - ("validate_if_schema", 0): [ - ("validate_if_schema", 0)], - ("create_entity_ref_nodes", 0): [ - ("create_entity_ref_nodes", 0)], - ("create_entity_ref_nodes", 1): [ - ("create_entity_ref_nodes", 1)], - ("entities", 0): [ - ("create_entity_ref_nodes", 0), - ("entities", 0)], - ("entities", 1): [ - ("entities", 1)], - ("whitespace_in_element_content", 0): [ - ("whitespace_in_element_content", 0)], - ("whitespace_in_element_content", 1): [ - ("whitespace_in_element_content", 1)], - ("cdata_sections", 0): [ - ("cdata_sections", 0)], - ("cdata_sections", 1): [ - ("cdata_sections", 1)], - ("comments", 0): [ - ("comments", 0)], - ("comments", 1): [ - ("comments", 1)], - ("charset_overrides_xml_encoding", 0): [ - ("charset_overrides_xml_encoding", 0)], - ("charset_overrides_xml_encoding", 1): [ - ("charset_overrides_xml_encoding", 1)], - ("infoset", 0): [], - ("infoset", 1): [ - ("namespace_declarations", 0), - ("validate_if_schema", 0), - ("create_entity_ref_nodes", 0), - ("entities", 0), - ("cdata_sections", 0), - ("datatype_normalization", 1), - ("whitespace_in_element_content", 1), - ("comments", 1), - ("charset_overrides_xml_encoding", 1)], - ("supported_mediatypes_only", 0): [ - ("supported_mediatypes_only", 0)], - ("namespaces", 0): [ - ("namespaces", 0)], - ("namespaces", 1): [ - ("namespaces", 1)], - } - - def getFeature(self, name): - xname = _name_xform(name) - try: - return getattr(self._options, xname) - except AttributeError: - if name == "infoset": - options = self._options - return (options.datatype_normalization - and options.whitespace_in_element_content - and options.comments - and options.charset_overrides_xml_encoding - and not (options.namespace_declarations - or options.validate_if_schema - or options.create_entity_ref_nodes - or options.entities - or options.cdata_sections)) - raise xml.dom.NotFoundErr("feature %s not known" % repr(name)) - - def parseURI(self, uri): - if self.entityResolver: - input = self.entityResolver.resolveEntity(None, uri) - else: - input = DOMEntityResolver().resolveEntity(None, uri) - return self.parse(input) - - def parse(self, input): - options = copy.copy(self._options) - options.filter = self.filter - options.errorHandler = self.errorHandler - fp = input.byteStream - if fp is None and options.systemId: - import urllib2 - fp = urllib2.urlopen(input.systemId) - return self._parse_bytestream(fp, options) - - def parseWithContext(self, input, cnode, action): - if action not in self._legal_actions: - raise ValueError("not a legal action") - raise NotImplementedError("Haven't written this yet...") - - def _parse_bytestream(self, stream, options): - import xml.dom.expatbuilder - builder = xml.dom.expatbuilder.makeBuilder(options) - return builder.parseFile(stream) - - -def _name_xform(name): - return name.lower().replace('-', '_') - - -class DOMEntityResolver(NewStyle): - __slots__ = '_opener', - - def resolveEntity(self, publicId, systemId): - assert systemId is not None - source = DOMInputSource() - source.publicId = publicId - source.systemId = systemId - source.byteStream = self._get_opener().open(systemId) - - # determine the encoding if the transport provided it - source.encoding = self._guess_media_encoding(source) - - # determine the base URI is we can - import posixpath, urlparse - parts = urlparse.urlparse(systemId) - scheme, netloc, path, params, query, fragment = parts - # XXX should we check the scheme here as well? - if path and not path.endswith("/"): - path = posixpath.dirname(path) + "/" - parts = scheme, netloc, path, params, query, fragment - source.baseURI = urlparse.urlunparse(parts) - - return source - - def _get_opener(self): - try: - return self._opener - except AttributeError: - self._opener = self._create_opener() - return self._opener - - def _create_opener(self): - import urllib2 - return urllib2.build_opener() - - def _guess_media_encoding(self, source): - info = source.byteStream.info() - if info.has_key("Content-Type"): - for param in info.getplist(): - if param.startswith("charset="): - return param.split("=", 1)[1].lower() - - -class DOMInputSource(NewStyle): - __slots__ = ('byteStream', 'characterStream', 'stringData', - 'encoding', 'publicId', 'systemId', 'baseURI') - - def __init__(self): - self.byteStream = None - self.characterStream = None - self.stringData = None - self.encoding = None - self.publicId = None - self.systemId = None - self.baseURI = None - - def _get_byteStream(self): - return self.byteStream - def _set_byteStream(self, byteStream): - self.byteStream = byteStream - - def _get_characterStream(self): - return self.characterStream - def _set_characterStream(self, characterStream): - self.characterStream = characterStream - - def _get_stringData(self): - return self.stringData - def _set_stringData(self, data): - self.stringData = data - - def _get_encoding(self): - return self.encoding - def _set_encoding(self, encoding): - self.encoding = encoding - - def _get_publicId(self): - return self.publicId - def _set_publicId(self, publicId): - self.publicId = publicId - - def _get_systemId(self): - return self.systemId - def _set_systemId(self, systemId): - self.systemId = systemId - - def _get_baseURI(self): - return self.baseURI - def _set_baseURI(self, uri): - self.baseURI = uri - - -class DOMBuilderFilter: - """Element filter which can be used to tailor construction of - a DOM instance. - """ - - # There's really no need for this class; concrete implementations - # should just implement the endElement() and startElement() - # methods as appropriate. Using this makes it easy to only - # implement one of them. - - FILTER_ACCEPT = 1 - FILTER_REJECT = 2 - FILTER_SKIP = 3 - FILTER_INTERRUPT = 4 - - whatToShow = NodeFilter.SHOW_ALL - - def _get_whatToShow(self): - return self.whatToShow - - def acceptNode(self, element): - return self.FILTER_ACCEPT - - def startContainer(self, element): - return self.FILTER_ACCEPT - -del NodeFilter - - -class DocumentLS: - """Mixin to create documents that conform to the load/save spec.""" - - async = False - - def _get_async(self): - return False - def _set_async(self, async): - if async: - raise xml.dom.NotSupportedErr( - "asynchronous document loading is not supported") - - def abort(self): - # What does it mean to "clear" a document? Does the - # documentElement disappear? - raise NotImplementedError( - "haven't figured out what this means yet") - - def load(self, uri): - raise NotImplementedError("haven't written this yet") - - def loadXML(self, source): - raise NotImplementedError("haven't written this yet") - - def saveXML(self, snode): - if snode is None: - snode = self - elif snode.ownerDocument is not self: - raise xml.dom.WrongDocumentErr() - return snode.toxml() - - -class DOMImplementationLS: - MODE_SYNCHRONOUS = 1 - MODE_ASYNCHRONOUS = 2 - - def createDOMBuilder(self, mode, schemaType): - if schemaType is not None: - raise xml.dom.NotSupportedErr( - "schemaType not yet supported") - if mode == self.MODE_SYNCHRONOUS: - return DOMBuilder() - if mode == self.MODE_ASYNCHRONOUS: - raise xml.dom.NotSupportedErr( - "asynchronous builders are not supported") - raise ValueError("unknown value for mode") - - def createDOMWriter(self): - raise NotImplementedError( - "the writer interface hasn't been written yet!") - - def createDOMInputSource(self): - return DOMInputSource() diff --git a/Lib/xml/sax/drivers2/drv_javasax.py b/Lib/xml/sax/drivers2/drv_javasax.py --- a/Lib/xml/sax/drivers2/drv_javasax.py +++ b/Lib/xml/sax/drivers2/drv_javasax.py @@ -33,14 +33,34 @@ try: from javax.xml.parsers import SAXParserFactory, ParserConfigurationException factory = SAXParserFactory.newInstance() + # Set this feature false, otherwise will attempt to load DTDs like + # DOCTYPE doc PUBLIC 'http://xml.python.org/public which are + # purposefully very much nonexistent in tests such as + # test_minidom. + # + # NOTE that this factory is by default nonvalidating anyway, as + # needed for Python usage. + factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", False) jaxp = 1 except ImportError: jaxp = 0 from java.lang import String +class SAXUnicodeDecodeError(UnicodeDecodeError): + def __init__(self, message): + self.message = message + def __repr__(self): + return "SAXUnicodeDecodeError: caused by %s" % (self.message,) + __str__ = __repr__ + def _wrap_sax_exception(e): + # work around issues in how we report exception - note this is an + # implementation detail, so it's not guaranteed to always report + # this exception. But in the end, it's from Xerces, so should be OK. + if "org.apache.xerces.impl.io.MalformedByteSequenceException" in str(e.getException().getClass()): + return SAXUnicodeDecodeError(str(e)) return _exceptions.SAXParseException(e.message, e.exception, SimpleLocator(e.columnNumber, diff --git a/extlibs/xml-apis-2.11.0.jar b/extlibs/xml-apis-2.11.0.jar deleted file mode 100644 index 46733464fc746776c331ecc51061f3a05e662fd1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 GIT binary patch [stripped] diff --git a/lib-python/2.7/test/test_minidom.py b/lib-python/2.7/test/test_minidom.py --- a/lib-python/2.7/test/test_minidom.py +++ b/lib-python/2.7/test/test_minidom.py @@ -1,5 +1,6 @@ # test for xml.dom.minidom +import copy import pickle from StringIO import StringIO from test.test_support import verbose, run_unittest, findfile @@ -14,7 +15,13 @@ tstfile = findfile("test.xml", subdir="xmltestdata") - +sample = ("\n" + "\n" + " \n" + "]> text\n" + " ") # The tests of DocumentType importing use these helpers to construct # the documents to work with, since not all DOM builders actually @@ -340,19 +347,6 @@ and el.getAttribute("spam2") == "bam2") dom.unlink() - def testGetAttrList(self): - pass - - def testGetAttrValues(self): pass - - def testGetAttrLength(self): pass - - def testGetAttribute(self): pass - - def testGetAttributeNS(self): pass - - def testGetAttributeNode(self): pass - def testGetElementsByTagNameNS(self): d=""" @@ -423,8 +417,6 @@ self.confirm(str(node) == repr(node)) dom.unlink() - def testTextNodeRepr(self): pass - def testWriteXML(self): str = '' dom = parseString(str) @@ -488,14 +480,6 @@ and pi.localName is None and pi.namespaceURI == xml.dom.EMPTY_NAMESPACE) - def testProcessingInstructionRepr(self): pass - - def testTextRepr(self): pass - - def testWriteText(self): pass - - def testDocumentElement(self): pass - def testTooManyDocumentElements(self): doc = parseString("") elem = doc.createElement("extra") @@ -504,26 +488,6 @@ elem.unlink() doc.unlink() - def testCreateElementNS(self): pass - - def testCreateAttributeNS(self): pass - - def testParse(self): pass - - def testParseString(self): pass - - def testComment(self): pass - - def testAttrListItem(self): pass - - def testAttrListItems(self): pass - - def testAttrListItemNS(self): pass - - def testAttrListKeys(self): pass - - def testAttrListKeysNS(self): pass - def testRemoveNamedItem(self): doc = parseString("") e = doc.documentElement @@ -543,32 +507,6 @@ self.assertRaises(xml.dom.NotFoundErr, attrs.removeNamedItemNS, "http://xml.python.org/", "b") - def testAttrListValues(self): pass - - def testAttrListLength(self): pass - - def testAttrList__getitem__(self): pass - - def testAttrList__setitem__(self): pass - - def testSetAttrValueandNodeValue(self): pass - - def testParseElement(self): pass - - def testParseAttributes(self): pass - - def testParseElementNamespaces(self): pass - - def testParseAttributeNamespaces(self): pass - - def testParseProcessingInstructions(self): pass - - def testChildNodes(self): pass - - def testFirstChild(self): pass - - def testHasChildNodes(self): pass - def _testCloneElementCopiesAttributes(self, e1, e2, test): attrs1 = e1.attributes attrs2 = e2.attributes @@ -1446,52 +1384,55 @@ self.confirm(e.isSameNode(doc.getElementById("w")) and a2.isId) - def testPickledDocument(self): - doc = parseString("\n" - "\n" - " \n" - "]> text\n" - " ") - s = pickle.dumps(doc) - doc2 = pickle.loads(s) + def assert_recursive_equal(self, doc, doc2): stack = [(doc, doc2)] while stack: n1, n2 = stack.pop() - self.confirm(n1.nodeType == n2.nodeType - and len(n1.childNodes) == len(n2.childNodes) - and n1.nodeName == n2.nodeName - and not n1.isSameNode(n2) - and not n2.isSameNode(n1)) + self.assertEqual(n1.nodeType, n2.nodeType) + self.assertEqual(len(n1.childNodes), len(n2.childNodes)) + self.assertEqual(n1.nodeName, n2.nodeName) + self.assertFalse(n1.isSameNode(n2)) + self.assertFalse(n2.isSameNode(n1)) if n1.nodeType == Node.DOCUMENT_TYPE_NODE: len(n1.entities) len(n2.entities) len(n1.notations) len(n2.notations) - self.confirm(len(n1.entities) == len(n2.entities) - and len(n1.notations) == len(n2.notations)) + self.assertEqual(len(n1.entities), len(n2.entities)) + self.assertEqual(len(n1.notations), len(n2.notations)) for i in range(len(n1.notations)): # XXX this loop body doesn't seem to be executed? no1 = n1.notations.item(i) no2 = n1.notations.item(i) - self.confirm(no1.name == no2.name - and no1.publicId == no2.publicId - and no1.systemId == no2.systemId) + self.assertEqual(no1.name, no2.name) + self.assertEqual(no1.publicId, no2.publicId) + self.assertEqual(no1.systemId, no2.systemId) stack.append((no1, no2)) for i in range(len(n1.entities)): e1 = n1.entities.item(i) e2 = n2.entities.item(i) - self.confirm(e1.notationName == e2.notationName - and e1.publicId == e2.publicId - and e1.systemId == e2.systemId) + self.assertEqual(e1.notationName, e2.notationName) + self.assertEqual(e1.publicId, e2.publicId) + self.assertEqual(e1.systemId, e2.systemId) stack.append((e1, e2)) if n1.nodeType != Node.DOCUMENT_NODE: - self.confirm(n1.ownerDocument.isSameNode(doc) - and n2.ownerDocument.isSameNode(doc2)) + self.assertTrue(n1.ownerDocument.isSameNode(doc)) + self.assertTrue(n2.ownerDocument.isSameNode(doc2)) for i in range(len(n1.childNodes)): stack.append((n1.childNodes[i], n2.childNodes[i])) + def testPickledDocument(self): + doc = parseString(sample) + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + s = pickle.dumps(doc, proto) + doc2 = pickle.loads(s) + self.assert_recursive_equal(doc, doc2) + + def testDeepcopiedDocument(self): + doc = parseString(sample) + doc2 = copy.deepcopy(doc) + self.assert_recursive_equal(doc, doc2) + def testSerializeCommentNodeWithDoubleHyphen(self): doc = create_doc_without_doctype() doc.appendChild(doc.createComment("foo--bar")) diff --git a/lib-python/2.7/test/test_xml_etree.py b/lib-python/2.7/test/test_xml_etree.py --- a/lib-python/2.7/test/test_xml_etree.py +++ b/lib-python/2.7/test/test_xml_etree.py @@ -713,14 +713,21 @@ end {namespace}root end-ns None + >>> import StringIO + + >>> events = ('start-ns', 'end-ns') + >>> context = ET.iterparse(StringIO.StringIO(r""), events) + >>> for action, elem in context: + ... print action, elem + start-ns ('', '') + end-ns None + >>> events = ("start", "end", "bogus") >>> with open(SIMPLE_XMLFILE, "rb") as f: ... iterparse(f, events) Traceback (most recent call last): ValueError: unknown event 'bogus' - >>> import StringIO - >>> source = StringIO.StringIO( ... "\\n" ... ">> check_encoding("iso-8859-15") >>> check_encoding("cp437") >>> check_encoding("mac-roman") + >>> check_encoding("gbk") + Traceback (most recent call last): + ValueError: multi-byte encodings are not supported + >>> check_encoding("cp037") + Traceback (most recent call last): + ParseError: unknown encoding: line 1, column 30 """ ET.XML("" % encoding) @@ -1769,6 +1782,16 @@ """ +def bug_18347(): + """ + + >>> e = ET.XML('text') + >>> serialize(e) + 'text' + >>> serialize(e, method="html") + 'text' + """ + # -------------------------------------------------------------------- # reported on bugs.python.org diff --git a/lib-python/2.7/test/test_xml_etree_c.py b/lib-python/2.7/test/test_xml_etree_c.py --- a/lib-python/2.7/test/test_xml_etree_c.py +++ b/lib-python/2.7/test/test_xml_etree_c.py @@ -30,6 +30,38 @@ finally: data = None + def test_del_attribute(self): + element = cET.Element('tag') + + element.tag = 'TAG' + with self.assertRaises(AttributeError): + del element.tag + self.assertEqual(element.tag, 'TAG') + + with self.assertRaises(AttributeError): + del element.text + self.assertIsNone(element.text) + element.text = 'TEXT' + with self.assertRaises(AttributeError): + del element.text + self.assertEqual(element.text, 'TEXT') + + with self.assertRaises(AttributeError): + del element.tail + self.assertIsNone(element.tail) + element.tail = 'TAIL' + with self.assertRaises(AttributeError): + del element.tail + self.assertEqual(element.tail, 'TAIL') + + with self.assertRaises(AttributeError): + del element.attrib + self.assertEqual(element.attrib, {}) + element.attrib = {'A': 'B', 'C': 'D'} + with self.assertRaises(AttributeError): + del element.attrib + self.assertEqual(element.attrib, {'A': 'B', 'C': 'D'}) + def test_main(): from test import test_xml_etree, test_xml_etree_c diff --git a/lib-python/2.7/test/test_xmlrpc.py b/lib-python/2.7/test/test_xmlrpc.py --- a/lib-python/2.7/test/test_xmlrpc.py +++ b/lib-python/2.7/test/test_xmlrpc.py @@ -19,11 +19,9 @@ threading = None try: - unicode -except NameError: - have_unicode = False -else: - have_unicode = True + import gzip +except ImportError: + gzip = None alist = [{'astring': 'foo at bar.baz.spam', 'afloat': 7283.43, @@ -32,8 +30,6 @@ 'anotherlist': ['.zyx.41'], 'abase64': xmlrpclib.Binary("my dog has fleas"), 'boolean': xmlrpclib.False, - 'unicode': u'\u4000\u6000\u8000', - u'ukey\u4000': 'regular value', 'datetime1': xmlrpclib.DateTime('20050210T11:41:23'), 'datetime2': xmlrpclib.DateTime( (2005, 02, 10, 11, 41, 23, 0, 1, -1)), @@ -41,6 +37,12 @@ datetime.datetime(2005, 02, 10, 11, 41, 23)), }] +if test_support.have_unicode: + alist[0].update({ + 'unicode': test_support.u(r'\u4000\u6000\u8000'), + test_support.u(r'ukey\u4000'): 'regular value', + }) + class XMLRPCTestCase(unittest.TestCase): def test_dump_load(self): @@ -145,6 +147,25 @@ xmlrpclib.loads(strg)[0][0]) self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,)) + @test_support.requires_unicode + def test_dump_encoding(self): + value = {test_support.u(r'key\u20ac\xa4'): + test_support.u(r'value\u20ac\xa4')} + strg = xmlrpclib.dumps((value,), encoding='iso-8859-15') + strg = "" + strg + self.assertEqual(xmlrpclib.loads(strg)[0][0], value) + + strg = xmlrpclib.dumps((value,), encoding='iso-8859-15', + methodresponse=True) + self.assertEqual(xmlrpclib.loads(strg)[0][0], value) + + methodname = test_support.u(r'method\u20ac\xa4') + strg = xmlrpclib.dumps((value,), encoding='iso-8859-15', + methodname=methodname) + self.assertEqual(xmlrpclib.loads(strg)[0][0], value) + self.assertEqual(xmlrpclib.loads(strg)[1], methodname) + + @test_support.requires_unicode def test_default_encoding_issues(self): # SF bug #1115989: wrong decoding in '_stringify' utf8 = """ @@ -177,7 +198,7 @@ temp_sys.setdefaultencoding(old_encoding) items = d.items() - if have_unicode: + if test_support.have_unicode: self.assertEqual(s, u"abc \x95") self.assertIsInstance(s, unicode) self.assertEqual(items, [(u"def \x96", u"ghi \x97")]) @@ -277,7 +298,7 @@ # The evt is set twice. First when the server is ready to serve. # Second when the server has been shutdown. The user must clear # the event after it has been set the first time to catch the second set. -def http_server(evt, numrequests, requestHandler=None): +def http_server(evt, numrequests, requestHandler=None, encoding=None): class TestInstanceClass: def div(self, x, y): return x // y @@ -301,6 +322,7 @@ if not requestHandler: requestHandler = SimpleXMLRPCServer.SimpleXMLRPCRequestHandler serv = MyXMLRPCServer(("localhost", 0), requestHandler, + encoding=encoding, logRequests=False, bind_and_activate=False) try: serv.socket.settimeout(3) @@ -317,6 +339,7 @@ serv.register_multicall_functions() serv.register_function(pow) serv.register_function(lambda x,y: x+y, 'add') + serv.register_function(lambda x: x, test_support.u(r't\xea\u0161t')) serv.register_function(my_function) serv.register_instance(TestInstanceClass()) evt.set() @@ -458,9 +481,10 @@ # protocol error; provide additional information in test output self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + @test_support.requires_unicode def test_nonascii(self): - start_string = 'P\N{LATIN SMALL LETTER Y WITH CIRCUMFLEX}t' - end_string = 'h\N{LATIN SMALL LETTER O WITH HORN}n' + start_string = test_support.u(r'P\N{LATIN SMALL LETTER Y WITH CIRCUMFLEX}t') + end_string = test_support.u(r'h\N{LATIN SMALL LETTER O WITH HORN}n') try: p = xmlrpclib.ServerProxy(URL) @@ -472,10 +496,38 @@ # protocol error; provide additional information in test output self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + @test_support.requires_unicode def test_unicode_host(self): server = xmlrpclib.ServerProxy(u"http://%s:%d/RPC2"%(ADDR, PORT)) self.assertEqual(server.add("a", u"\xe9"), u"a\xe9") + @test_support.requires_unicode + def test_client_encoding(self): + start_string = unichr(0x20ac) + end_string = unichr(0xa4) + + try: + p = xmlrpclib.ServerProxy(URL, encoding='iso-8859-15') + self.assertEqual(p.add(start_string, end_string), + start_string + end_string) + except (xmlrpclib.ProtocolError, socket.error) as e: + # ignore failures due to non-blocking socket unavailable errors. + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + + @test_support.requires_unicode + def test_nonascii_methodname(self): + try: + p = xmlrpclib.ServerProxy(URL, encoding='iso-8859-15') + m = getattr(p, 't\xea\xa8t') + self.assertEqual(m(42), 42) + except (xmlrpclib.ProtocolError, socket.error) as e: + # ignore failures due to non-blocking socket unavailable errors. + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + # [ch] The test 404 is causing lots of false alarms. def XXXtest_404(self): # send POST with httplib, it should return 404 header and @@ -493,6 +545,7 @@ p = xmlrpclib.ServerProxy(URL) meth = p.system.listMethods() expected_methods = set(['pow', 'div', 'my_function', 'add', + test_support.u(r't\xea\u0161t'), 'system.listMethods', 'system.methodHelp', 'system.methodSignature', 'system.multicall']) self.assertEqual(set(meth), expected_methods) @@ -595,6 +648,27 @@ conn.request('POST', '/RPC2 HTTP/1.0\r\nContent-Length: 100\r\n\r\nbye') conn.close() +class SimpleServerEncodingTestCase(BaseServerTestCase): + @staticmethod + def threadFunc(evt, numrequests, requestHandler=None, encoding=None): + http_server(evt, numrequests, requestHandler, 'iso-8859-15') + + @test_support.requires_unicode + def test_server_encoding(self): + start_string = unichr(0x20ac) + end_string = unichr(0xa4) + + try: + p = xmlrpclib.ServerProxy(URL) + self.assertEqual(p.add(start_string, end_string), + start_string + end_string) + except (xmlrpclib.ProtocolError, socket.error) as e: + # ignore failures due to non-blocking socket unavailable errors. + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + + class MultiPathServerTestCase(BaseServerTestCase): threadFunc = staticmethod(http_multi_server) request_count = 2 @@ -681,6 +755,7 @@ #A test case that verifies that gzip encoding works in both directions #(for a request and the response) + at unittest.skipUnless(gzip, 'gzip not available') class GzipServerTestCase(BaseServerTestCase): #a request handler that supports keep-alive and logs requests into a #class variable @@ -731,7 +806,7 @@ with cm: p.pow(6, 8) - def test_gsip_response(self): + def test_gzip_response(self): t = self.Transport() p = xmlrpclib.ServerProxy(URL, transport=t) old = self.requestHandler.encode_threshold @@ -744,6 +819,23 @@ self.requestHandler.encode_threshold = old self.assertTrue(a>b) + def test_gzip_decode_limit(self): + max_gzip_decode = 20 * 1024 * 1024 + data = '\0' * max_gzip_decode + encoded = xmlrpclib.gzip_encode(data) + decoded = xmlrpclib.gzip_decode(encoded) + self.assertEqual(len(decoded), max_gzip_decode) + + data = '\0' * (max_gzip_decode + 1) + encoded = xmlrpclib.gzip_encode(data) + + with self.assertRaisesRegexp(ValueError, + "max gzipped payload length exceeded"): + xmlrpclib.gzip_decode(encoded) + + xmlrpclib.gzip_decode(encoded, max_decode=-1) + + #Test special attributes of the ServerProxy object class ServerProxyTestCase(unittest.TestCase): def setUp(self): @@ -1009,13 +1101,10 @@ xmlrpc_tests = [XMLRPCTestCase, HelperTestCase, DateTimeTestCase, BinaryTestCase, FaultTestCase, TransportSubclassTestCase] xmlrpc_tests.append(SimpleServerTestCase) + xmlrpc_tests.append(SimpleServerEncodingTestCase) xmlrpc_tests.append(KeepaliveServerTestCase1) xmlrpc_tests.append(KeepaliveServerTestCase2) - try: - import gzip - xmlrpc_tests.append(GzipServerTestCase) - except ImportError: - pass #gzip not supported in this build + xmlrpc_tests.append(GzipServerTestCase) xmlrpc_tests.append(MultiPathServerTestCase) xmlrpc_tests.append(ServerProxyTestCase) xmlrpc_tests.append(FailingServerTestCase) diff --git a/lib-python/2.7/xml/dom/minicompat.py b/lib-python/2.7/xml/dom/minicompat.py --- a/lib-python/2.7/xml/dom/minicompat.py +++ b/lib-python/2.7/xml/dom/minicompat.py @@ -65,10 +65,10 @@ length = property(_get_length, _set_length, doc="The number of nodes in the NodeList.") - def __getstate__(self): - return list(self) - + # For backward compatibility def __setstate__(self, state): + if state is None: + state = [] self[:] = state diff --git a/lib-python/2.7/xml/dom/minidom.py b/lib-python/2.7/xml/dom/minidom.py --- a/lib-python/2.7/xml/dom/minidom.py +++ b/lib-python/2.7/xml/dom/minidom.py @@ -358,9 +358,6 @@ def _get_localName(self): return self.nodeName.split(":", 1)[-1] - def _get_name(self): - return self.name - def _get_specified(self): return self.specified diff --git a/lib-python/2.7/xml/etree/ElementInclude.py b/lib-python/2.7/xml/etree/ElementInclude.py --- a/lib-python/2.7/xml/etree/ElementInclude.py +++ b/lib-python/2.7/xml/etree/ElementInclude.py @@ -75,14 +75,13 @@ # @throws IOError If the loader fails to load the resource. def default_loader(href, parse, encoding=None): - file = open(href) - if parse == "xml": - data = ElementTree.parse(file).getroot() - else: - data = file.read() - if encoding: - data = data.decode(encoding) - file.close() + with open(href) as file: + if parse == "xml": + data = ElementTree.parse(file).getroot() + else: + data = file.read() + if encoding: + data = data.decode(encoding) return data ## diff --git a/lib-python/2.7/xml/etree/ElementTree.py b/lib-python/2.7/xml/etree/ElementTree.py --- a/lib-python/2.7/xml/etree/ElementTree.py +++ b/lib-python/2.7/xml/etree/ElementTree.py @@ -683,8 +683,8 @@ return list(self.iter(tag)) ## - # Finds the first toplevel element with given tag. - # Same as getroot().find(path). + # Same as getroot().find(path), starting at the root of the + # tree. # # @param path What element to look for. # @keyparam namespaces Optional namespace prefix map. @@ -704,10 +704,9 @@ return self._root.find(path, namespaces) ## - # Finds the element text for the first toplevel element with given - # tag. Same as getroot().findtext(path). + # Same as getroot().findtext(path), starting at the root of the tree. # - # @param path What toplevel element to look for. + # @param path What element to look for. # @param default What to return if the element was not found. # @keyparam namespaces Optional namespace prefix map. # @return The text content of the first matching element, or the @@ -729,8 +728,7 @@ return self._root.findtext(path, default, namespaces) ## - # Finds all toplevel elements with the given tag. - # Same as getroot().findall(path). + # Same as getroot().findall(path), starting at the root of the tree. # # @param path What element to look for. # @keyparam namespaces Optional namespace prefix map. @@ -990,15 +988,15 @@ # FIXME: handle boolean attributes write(" %s=\"%s\"" % (qnames[k], v)) write(">") - tag = tag.lower() + ltag = tag.lower() if text: - if tag == "script" or tag == "style": + if ltag == "script" or ltag == "style": write(_encode(text, encoding)) else: write(_escape_cdata(text, encoding)) for e in elem: _serialize_html(write, e, encoding, qnames, None) - if tag not in HTML_EMPTY: + if ltag not in HTML_EMPTY: write("") if elem.tail: write(_escape_cdata(elem.tail, encoding)) @@ -1200,9 +1198,14 @@ if not hasattr(source, "read"): source = open(source, "rb") close_source = True - if not parser: - parser = XMLParser(target=TreeBuilder()) - return _IterParseIterator(source, events, parser, close_source) + try: + if not parser: + parser = XMLParser(target=TreeBuilder()) + return _IterParseIterator(source, events, parser, close_source) + except: + if close_source: + source.close() + raise class _IterParseIterator(object): @@ -1254,34 +1257,40 @@ raise ValueError("unknown event %r" % event) def next(self): - while 1: - try: - item = self._events[self._index] - self._index += 1 - return item - except IndexError: - pass - if self._error: - e = self._error - self._error = None - raise e - if self._parser is None: - self.root = self._root - if self._close_file: - self._file.close() - raise StopIteration - # load event buffer - del self._events[:] - self._index = 0 - data = self._file.read(16384) - if data: + try: + while 1: try: - self._parser.feed(data) - except SyntaxError as exc: - self._error = exc - else: - self._root = self._parser.close() - self._parser = None + item = self._events[self._index] + self._index += 1 + return item + except IndexError: + pass + if self._error: + e = self._error + self._error = None + raise e + if self._parser is None: + self.root = self._root + break + # load event buffer + del self._events[:] + self._index = 0 + data = self._file.read(16384) + if data: + try: + self._parser.feed(data) + except SyntaxError as exc: + self._error = exc + else: + self._root = self._parser.close() + self._parser = None + except: + if self._close_file: + self._file.close() + raise + if self._close_file: + self._file.close() + raise StopIteration def __iter__(self): return self diff --git a/lib-python/2.7/xml/sax/expatreader.py b/lib-python/2.7/xml/sax/expatreader.py --- a/lib-python/2.7/xml/sax/expatreader.py +++ b/lib-python/2.7/xml/sax/expatreader.py @@ -43,6 +43,9 @@ _mkproxy = weakref.proxy del weakref, _weakref +class _ClosedParser: + pass + # --- ExpatLocator class ExpatLocator(xmlreader.Locator): @@ -214,14 +217,24 @@ self._err_handler.fatalError(exc) def close(self): - if self._entity_stack: + if (self._entity_stack or self._parser is None or + isinstance(self._parser, _ClosedParser)): # If we are completing an external entity, do nothing here return - self.feed("", isFinal = 1) - self._cont_handler.endDocument() - self._parsing = 0 - # break cycle created by expat handlers pointing to our methods - self._parser = None + try: + self.feed("", isFinal = 1) + self._cont_handler.endDocument() + self._parsing = 0 + # break cycle created by expat handlers pointing to our methods + self._parser = None + finally: + self._parsing = 0 + if self._parser is not None: + # Keep ErrorColumnNumber and ErrorLineNumber after closing. + parser = _ClosedParser() + parser.ErrorColumnNumber = self._parser.ErrorColumnNumber + parser.ErrorLineNumber = self._parser.ErrorLineNumber + self._parser = parser def _reset_cont_handler(self): self._parser.ProcessingInstructionHandler = \ diff --git a/lib-python/2.7/xml/sax/saxutils.py b/lib-python/2.7/xml/sax/saxutils.py --- a/lib-python/2.7/xml/sax/saxutils.py +++ b/lib-python/2.7/xml/sax/saxutils.py @@ -98,14 +98,17 @@ except AttributeError: pass # wrap a binary writer with TextIOWrapper - class UnbufferedTextIOWrapper(io.TextIOWrapper): - def write(self, s): - super(UnbufferedTextIOWrapper, self).write(s) - self.flush() - return UnbufferedTextIOWrapper(buffer, encoding=encoding, + return _UnbufferedTextIOWrapper(buffer, encoding=encoding, errors='xmlcharrefreplace', newline='\n') + +class _UnbufferedTextIOWrapper(io.TextIOWrapper): + def write(self, s): + super(_UnbufferedTextIOWrapper, self).write(s) + self.flush() + + class XMLGenerator(handler.ContentHandler): def __init__(self, out=None, encoding="iso-8859-1"): @@ -180,10 +183,14 @@ self._write(u'' % self._qname(name)) def characters(self, content): - self._write(escape(unicode(content))) + if not isinstance(content, unicode): + content = unicode(content, self._encoding) + self._write(escape(content)) def ignorableWhitespace(self, content): - self._write(unicode(content)) + if not isinstance(content, unicode): + content = unicode(content, self._encoding) + self._write(content) def processingInstruction(self, target, data): self._write(u'' % (target, data)) -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 3 19:25:44 2016 From: jython-checkins at python.org (jim.baker) Date: Thu, 04 Feb 2016 00:25:44 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Handle_diff_in_exceptions_i?= =?utf-8?q?f_using_built-in_Xerces=2E_Also_unbreak_installer?= Message-ID: <20160204002544.11239.65590@psf.io> https://hg.python.org/jython/rev/ad6ac3cc574d changeset: 7894:ad6ac3cc574d user: Jim Baker date: Wed Feb 03 17:25:35 2016 -0700 summary: Handle diff in exceptions if using built-in Xerces. Also unbreak installer build. files: Lib/xml/sax/drivers2/drv_javasax.py | 29 +++++++++++----- build.xml | 1 - 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Lib/xml/sax/drivers2/drv_javasax.py b/Lib/xml/sax/drivers2/drv_javasax.py --- a/Lib/xml/sax/drivers2/drv_javasax.py +++ b/Lib/xml/sax/drivers2/drv_javasax.py @@ -45,7 +45,7 @@ except ImportError: jaxp = 0 -from java.lang import String +from java.lang import String, Exception as JException class SAXUnicodeDecodeError(UnicodeDecodeError): def __init__(self, message): @@ -56,17 +56,21 @@ def _wrap_sax_exception(e): - # work around issues in how we report exception - note this is an - # implementation detail, so it's not guaranteed to always report - # this exception. But in the end, it's from Xerces, so should be OK. - if "org.apache.xerces.impl.io.MalformedByteSequenceException" in str(e.getException().getClass()): + # Work around issues in how we report exceptions to using + # code. Note this is an implementation detail, so some assumptions + # are required. But if this identification fails, a reasonable exception + # will still be thrown. + # + # Because of some differences in how Oracle packages Xerces, also catch + # on the parse method itself. + if "MalformedByteSequenceException" in str(e.getException()): return SAXUnicodeDecodeError(str(e)) return _exceptions.SAXParseException(e.message, e.exception, SimpleLocator(e.columnNumber, - e.lineNumber, - e.publicId, - e.systemId)) + e.lineNumber, + e.publicId, + e.systemId)) class JyErrorHandlerWrapper(javasax.ErrorHandler): def __init__(self, err_handler): @@ -163,7 +167,14 @@ def parse(self, source): "Parse an XML document from a URL or an InputSource." - self._parser.parse(JyInputSourceWrapper(source)) + try: + self._parser.parse(JyInputSourceWrapper(source)) + except JException as e: + # Handle the difference in how Oracle packages Xerces... + if "MalformedByteSequenceException" in str(e): + raise SAXUnicodeDecodeError(str(e)) + else: + raise def getFeature(self, name): return self._parser.getFeature(name) diff --git a/build.xml b/build.xml --- a/build.xml +++ b/build.xml @@ -611,7 +611,6 @@ - -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 3 20:26:58 2016 From: jython-checkins at python.org (jim.baker) Date: Thu, 04 Feb 2016 01:26:58 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Avoid_deadlock_in_running_c?= =?utf-8?q?losers=2E_Fixes_=232457?= Message-ID: <20160204012658.42608.78678@psf.io> https://hg.python.org/jython/rev/94b447b00840 changeset: 7895:94b447b00840 user: Jim Baker date: Wed Feb 03 18:26:52 2016 -0700 summary: Avoid deadlock in running closers. Fixes #2457 This is a further elaboration of the work done in #2280, and should be completely compatible (and has been tested) with the recent change in r7889:cddadb6808c0. Jim's theory (and Jim is the committer of this change on Nick's behalf): synchronizing on the class, vs an object, is a bad idea because of class unloading that's happening at shutdown. At the very least this is now tied to the closer itself. files: src/org/python/core/PySystemState.java | 99 ++++----- src/org/python/core/finalization/FinalizeTrigger.java | 32 +- 2 files changed, 64 insertions(+), 67 deletions(-) diff --git a/src/org/python/core/PySystemState.java b/src/org/python/core/PySystemState.java --- a/src/org/python/core/PySystemState.java +++ b/src/org/python/core/PySystemState.java @@ -17,6 +17,7 @@ import java.nio.charset.Charset; import java.nio.charset.UnsupportedCharsetException; import java.security.AccessControlException; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; @@ -1507,7 +1508,7 @@ public static class PySystemStateCloser { - private final Set> resourceClosers = new LinkedHashSet>(); + private final Set> resourceClosers = Collections.synchronizedSet(new LinkedHashSet>()); private volatile boolean isCleanup = false; private final Thread shutdownHook; @@ -1528,63 +1529,55 @@ } private void registerCloser(Callable closer) { - synchronized (PySystemStateCloser.class) { - if (!isCleanup) { - resourceClosers.add(closer); - } + if (!isCleanup) { + resourceClosers.add(closer); } } private boolean unregisterCloser(Callable closer) { - synchronized (PySystemStateCloser.class) { - return resourceClosers.remove(closer); - } + return resourceClosers.remove(closer); } private synchronized void cleanup() { - synchronized (PySystemStateCloser.class) { - if (isCleanup) { - return; + if (isCleanup) { + return; + } + isCleanup = true; + + // close this thread so we can unload any associated classloaders in cycle + // with this instance + if (shutdownHook != null) { + try { + Runtime.getRuntime().removeShutdownHook(shutdownHook); + } catch (IllegalStateException e) { + // JVM is already shutting down, so we cannot remove this shutdown hook anyway } - isCleanup = true; + } - // close this thread so we can unload any associated classloaders in cycle - // with this instance - if (shutdownHook != null) { + // Close the listed resources (and clear the list) + runClosers(); + resourceClosers.clear(); + + // XXX Not sure this is ok, but it makes repeat testing possible. + // Re-enable the management of resource closers + isCleanup = false; + } + private synchronized void runClosers() { + // resourceClosers can be null in some strange cases + if (resourceClosers != null) { + /* + * Although a Set, the container iterates in the order closers were added. Make a Deque + * of it and deal from the top. + */ + LinkedList> rc = new LinkedList>(resourceClosers); + Iterator> iter = rc.descendingIterator(); + + while (iter.hasNext()) { + Callable callable = iter.next(); try { - Runtime.getRuntime().removeShutdownHook(shutdownHook); - } catch (IllegalStateException e) { - // JVM is already shutting down, so we cannot remove this shutdown hook anyway - } - } - - // Close the listed resources (and clear the list) - runClosers(); - resourceClosers.clear(); - - // XXX Not sure this is ok, but it makes repeat testing possible. - // Re-enable the management of resource closers - isCleanup = false; - } - } - private void runClosers() { - synchronized (PySystemStateCloser.class) { - // resourceClosers can be null in some strange cases - if (resourceClosers != null) { - /* - * Although a Set, the container iterates in the order closers were added. Make a Deque - * of it and deal from the top. - */ - LinkedList> rc = new LinkedList>(resourceClosers); - Iterator> iter = rc.descendingIterator(); - - while (iter.hasNext()) { - Callable callable = iter.next(); - try { - callable.call(); - } catch (Exception e) { - // just continue, nothing we can do - } + callable.call(); + } catch (Exception e) { + // just continue, nothing we can do } } } @@ -1593,7 +1586,7 @@ // Python scripts expect that files are closed upon an orderly cleanup of the VM. private Thread initShutdownCloser() { try { - Thread shutdownHook = new Thread(new ShutdownCloser(), "Jython Shutdown Closer"); + Thread shutdownHook = new Thread(new ShutdownCloser(this), "Jython Shutdown Closer"); Runtime.getRuntime().addShutdownHook(shutdownHook); return shutdownHook; } catch (SecurityException se) { @@ -1603,10 +1596,16 @@ } private class ShutdownCloser implements Runnable { + PySystemStateCloser closer = null; + + public ShutdownCloser(PySystemStateCloser closer) { + super(); + this.closer = closer; + } @Override public void run() { - synchronized (PySystemStateCloser.class) { + synchronized (this.closer) { runClosers(); resourceClosers.clear(); } diff --git a/src/org/python/core/finalization/FinalizeTrigger.java b/src/org/python/core/finalization/FinalizeTrigger.java --- a/src/org/python/core/finalization/FinalizeTrigger.java +++ b/src/org/python/core/finalization/FinalizeTrigger.java @@ -76,25 +76,23 @@ } public static void runFinalizer(PyObject toFinalize, boolean runBuiltinOnly) { - synchronized (PySystemState.PySystemStateCloser.class) { - if (!runBuiltinOnly) { - if (toFinalize instanceof FinalizablePyObjectDerived) { - try { - ((FinalizablePyObjectDerived) toFinalize).__del_derived__(); - } catch (Exception e) { - } - } else if (toFinalize instanceof FinalizablePyObject) { - try { - ((FinalizablePyObject) toFinalize).__del__(); - } catch (Exception e) { - } + if (!runBuiltinOnly) { + if (toFinalize instanceof FinalizablePyObjectDerived) { + try { + ((FinalizablePyObjectDerived) toFinalize).__del_derived__(); + } catch (Exception e) { + } + } else if (toFinalize instanceof FinalizablePyObject) { + try { + ((FinalizablePyObject) toFinalize).__del__(); + } catch (Exception e) { } } - if (toFinalize instanceof FinalizableBuiltin) { - try { - ((FinalizableBuiltin) toFinalize).__del_builtin__(); - } catch (Exception e) { - } + } + if (toFinalize instanceof FinalizableBuiltin) { + try { + ((FinalizableBuiltin) toFinalize).__del_builtin__(); + } catch (Exception e) { } } } -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 3 21:09:27 2016 From: jython-checkins at python.org (darjus.loktevic) Date: Thu, 04 Feb 2016 02:09:27 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Increase_the_count_of_gc=2E?= =?utf-8?q?collect=28=29_in_test=5Fweakset_to_hopefully_reduce_the?= Message-ID: <20160204020926.66991.22883@psf.io> https://hg.python.org/jython/rev/1c6afdc3132e changeset: 7896:1c6afdc3132e user: Darjus Loktevic date: Thu Feb 04 13:09:18 2016 +1100 summary: Increase the count of gc.collect() in test_weakset to hopefully reduce the flakiness of the tests files: Lib/test/test_weakset.py | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_weakset.py b/Lib/test/test_weakset.py --- a/Lib/test/test_weakset.py +++ b/Lib/test/test_weakset.py @@ -415,7 +415,9 @@ finally: it = None # should commit all removals - gc.collect(); gc.collect() # final before asserts + for _ in xrange(10): + gc.collect() + with testcontext() as u: self.assertNotIn(u, s) with testcontext() as u: @@ -446,8 +448,10 @@ gc.collect() n1 = len(s) del it - gc.collect() - gc.collect() + # do some gc + for _ in xrange(10): + gc.collect() + n2 = len(s) # one item may be kept alive inside the iterator self.assertIn(n1, (0, 1)) -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 3 21:36:56 2016 From: jython-checkins at python.org (darjus.loktevic) Date: Thu, 04 Feb 2016 02:36:56 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Increase_the_count_of_gc=2E?= =?utf-8?q?collect=28=29_in_test=5Fweakset_some_more_=3A=28?= Message-ID: <20160204023656.89778.79651@psf.io> https://hg.python.org/jython/rev/fb5573288c99 changeset: 7897:fb5573288c99 user: Darjus Loktevic date: Thu Feb 04 13:36:47 2016 +1100 summary: Increase the count of gc.collect() in test_weakset some more :( files: Lib/test/test_weakset.py | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_weakset.py b/Lib/test/test_weakset.py --- a/Lib/test/test_weakset.py +++ b/Lib/test/test_weakset.py @@ -439,13 +439,19 @@ items = [RefCycle() for i in range(N)] s = WeakSet(items) del items - gc.collect() + # do some gc + for _ in xrange(10): + gc.collect() it = iter(s) try: next(it) except StopIteration: pass - gc.collect() + + # do some gc + for _ in xrange(10): + gc.collect() + n1 = len(s) del it # do some gc -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Fri Feb 12 22:32:04 2016 From: jython-checkins at python.org (jim.baker) Date: Sat, 13 Feb 2016 03:32:04 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Refactored_list_and_tuple_i?= =?utf-8?q?teration_to_not_call_special_methods=2E_Fixes_=232442?= Message-ID: <20160213033204.25279.32683@psf.io> https://hg.python.org/jython/rev/85d99f6152b1 changeset: 7899:85d99f6152b1 user: Jim Baker date: Fri Feb 12 20:22:22 2016 -0700 summary: Refactored list and tuple iteration to not call special methods. Fixes #2442 files: CoreExposed.includes | 2 ++ Lib/test/test_list_jy.py | 20 ++++++++++++++++++++ Lib/test/test_tuple_jy.py | 20 ++++++++++++++++++++ src/org/python/core/PyList.java | 4 ++-- src/org/python/core/PyTuple.java | 2 +- 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CoreExposed.includes b/CoreExposed.includes --- a/CoreExposed.includes +++ b/CoreExposed.includes @@ -30,6 +30,7 @@ org/python/core/PyInstance.class org/python/core/PyInteger.class org/python/core/PyList.class +org/python/core/PyListIterator.class org/python/core/PyLong.class org/python/core/PyMemoryView.class org/python/core/PyMethod.class @@ -47,6 +48,7 @@ org/python/core/PySuper.class org/python/core/PyTraceback.class org/python/core/PyTuple.class +org/python/core/PyTupleIterator.class org/python/core/PyType.class org/python/core/PyUnicode.class org/python/core/PyVersionInfo.class diff --git a/Lib/test/test_list_jy.py b/Lib/test/test_list_jy.py --- a/Lib/test/test_list_jy.py +++ b/Lib/test/test_list_jy.py @@ -276,6 +276,26 @@ lst = MyList(['a', 'b', 'c']) self.assertEqual(list(lst), ['a', 'b', 'c', 3]) + def test_subclass_iter_does_not_call_other_special_methods(self): + # Verify fix for http://bugs.jython.org/issue2442 + + class C(list): + def __init__(self, *args): + self.called = False + return super(C, type(self)).__init__(self, *args) + + def __len__(self): + self.called = True + return super(C, type(self)).__len__(self) + + def __getitem__(self, index): + self.called = True + return super(C, type(self)).__getitem__(self, index) + + c = C(range(10)) + self.assertEqual(list(iter(c)), range(10)) + self.assertFalse(c.called) + def test_main(): test_support.run_unittest(ListSubclassTestCase, diff --git a/Lib/test/test_tuple_jy.py b/Lib/test/test_tuple_jy.py --- a/Lib/test/test_tuple_jy.py +++ b/Lib/test/test_tuple_jy.py @@ -10,6 +10,26 @@ self.assertEqual(len(s), 64000) self.assertEqual(sum(s), 2047968000) + def test_subclass_iter_does_not_call_other_special_methods(self): + # Verify fix for http://bugs.jython.org/issue2442 + + class C(tuple): + def __init__(self, *args): + self.called = False + return super(C, type(self)).__init__(self, *args) + + def __len__(self): + self.called = True + return super(C, type(self)).__len__(self) + + def __getitem__(self, index): + self.called = True + return super(C, type(self)).__getitem__(self, index) + + c = C(range(10)) + self.assertEqual(list(iter(c)), range(10)) + self.assertFalse(c.called) + def test_main(): test_support.run_unittest(TupleTestCase) diff --git a/src/org/python/core/PyList.java b/src/org/python/core/PyList.java --- a/src/org/python/core/PyList.java +++ b/src/org/python/core/PyList.java @@ -453,8 +453,8 @@ } @ExposedMethod(doc = BuiltinDocs.list___iter___doc) - public synchronized PyObject list___iter__() { - return new PyFastSequenceIter(this); + final PyObject list___iter__() { + return new PyListIterator(this); } //@Override diff --git a/src/org/python/core/PyTuple.java b/src/org/python/core/PyTuple.java --- a/src/org/python/core/PyTuple.java +++ b/src/org/python/core/PyTuple.java @@ -246,7 +246,7 @@ @ExposedMethod(doc = BuiltinDocs.tuple___iter___doc) public PyObject tuple___iter__() { - return new PyFastSequenceIter(this); + return new PyTupleIterator(this); } @ExposedMethod(defaults = "null", doc = BuiltinDocs.tuple___getslice___doc) -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Fri Feb 12 22:32:06 2016 From: jython-checkins at python.org (jim.baker) Date: Sat, 13 Feb 2016 03:32:06 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Reapply_minidom_normalizati?= =?utf-8?q?on_patch_for_=231614_which_was_lost_in_XML_update_in?= Message-ID: <20160213033204.124200.74841@psf.io> https://hg.python.org/jython/rev/83a9d86a5d62 changeset: 7898:83a9d86a5d62 user: Jim Baker date: Fri Feb 12 19:56:42 2016 -0700 summary: Reapply minidom normalization patch for #1614 which was lost in XML update in r7893 Also updated test_minidom to latest from CPython stdlib, then reapplied corresponding test for this patch. files: Lib/test/test_minidom.py | 2134 +++++++++++++++++-------- Lib/xml/dom/minidom.py | 1 + 2 files changed, 1470 insertions(+), 665 deletions(-) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -1,671 +1,1475 @@ # test for xml.dom.minidom +import copy +import pickle +from StringIO import StringIO +from test.test_support import verbose, run_unittest, findfile +import unittest + +import xml.dom +import xml.dom.minidom +import xml.parsers.expat + from xml.dom.minidom import parse, Node, Document, parseString -from xml.dom import HierarchyRequestErr +from xml.dom.minidom import getDOMImplementation -import os -import sys -import traceback -from test_support import verbose + +tstfile = findfile("test.xml", subdir="xmltestdata") +sample = ("\n" + "\n" + " \n" + "]> text\n" + " ") + +# The tests of DocumentType importing use these helpers to construct +# the documents to work with, since not all DOM builders actually +# create the DocumentType nodes. +def create_doc_without_doctype(doctype=None): + return getDOMImplementation().createDocument(None, "doc", doctype) + +def create_nonempty_doctype(): + doctype = getDOMImplementation().createDocumentType("doc", None, None) + doctype.entities._seq = [] + doctype.notations._seq = [] + notation = xml.dom.minidom.Notation("my-notation", None, + "http://xml.python.org/notations/my") + doctype.notations._seq.append(notation) + entity = xml.dom.minidom.Entity("my-entity", None, + "http://xml.python.org/entities/my", + "my-notation") + entity.version = "1.0" + entity.encoding = "utf-8" + entity.actualEncoding = "us-ascii" + doctype.entities._seq.append(entity) + return doctype + +def create_doc_with_doctype(): + doctype = create_nonempty_doctype() + doc = create_doc_without_doctype(doctype) + doctype.entities.item(0).ownerDocument = doc + doctype.notations.item(0).ownerDocument = doc + return doc + +class MinidomTest(unittest.TestCase): + def confirm(self, test, testname = "Test"): + self.assertTrue(test, testname) + + def checkWholeText(self, node, s): + t = node.wholeText + self.confirm(t == s, "looking for %s, found %s" % (repr(s), repr(t))) + + def testParseFromFile(self): + dom = parse(StringIO(open(tstfile).read())) + dom.unlink() + self.confirm(isinstance(dom,Document)) + + def testGetElementsByTagName(self): + dom = parse(tstfile) + self.confirm(dom.getElementsByTagName("LI") == \ + dom.documentElement.getElementsByTagName("LI")) + dom.unlink() + + def testInsertBefore(self): + dom = parseString("") + root = dom.documentElement + elem = root.childNodes[0] + nelem = dom.createElement("element") + root.insertBefore(nelem, elem) + self.confirm(len(root.childNodes) == 2 + and root.childNodes.length == 2 + and root.childNodes[0] is nelem + and root.childNodes.item(0) is nelem + and root.childNodes[1] is elem + and root.childNodes.item(1) is elem + and root.firstChild is nelem + and root.lastChild is elem + and root.toxml() == "" + , "testInsertBefore -- node properly placed in tree") + nelem = dom.createElement("element") + root.insertBefore(nelem, None) + self.confirm(len(root.childNodes) == 3 + and root.childNodes.length == 3 + and root.childNodes[1] is elem + and root.childNodes.item(1) is elem + and root.childNodes[2] is nelem + and root.childNodes.item(2) is nelem + and root.lastChild is nelem + and nelem.previousSibling is elem + and root.toxml() == "" + , "testInsertBefore -- node properly placed in tree") + nelem2 = dom.createElement("bar") + root.insertBefore(nelem2, nelem) + self.confirm(len(root.childNodes) == 4 + and root.childNodes.length == 4 + and root.childNodes[2] is nelem2 + and root.childNodes.item(2) is nelem2 + and root.childNodes[3] is nelem + and root.childNodes.item(3) is nelem + and nelem2.nextSibling is nelem + and nelem.previousSibling is nelem2 + and root.toxml() == + "" + , "testInsertBefore -- node properly placed in tree") + dom.unlink() + + def _create_fragment_test_nodes(self): + dom = parseString("") + orig = dom.createTextNode("original") + c1 = dom.createTextNode("foo") + c2 = dom.createTextNode("bar") + c3 = dom.createTextNode("bat") + dom.documentElement.appendChild(orig) + frag = dom.createDocumentFragment() + frag.appendChild(c1) + frag.appendChild(c2) + frag.appendChild(c3) + return dom, orig, c1, c2, c3, frag + + def testInsertBeforeFragment(self): + dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes() + dom.documentElement.insertBefore(frag, None) + self.confirm(tuple(dom.documentElement.childNodes) == + (orig, c1, c2, c3), + "insertBefore(, None)") + frag.unlink() + dom.unlink() + + dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes() + dom.documentElement.insertBefore(frag, orig) + self.confirm(tuple(dom.documentElement.childNodes) == + (c1, c2, c3, orig), + "insertBefore(, orig)") + frag.unlink() + dom.unlink() + + def testAppendChild(self): + dom = parse(tstfile) + dom.documentElement.appendChild(dom.createComment(u"Hello")) + self.confirm(dom.documentElement.childNodes[-1].nodeName == "#comment") + self.confirm(dom.documentElement.childNodes[-1].data == "Hello") + dom.unlink() + + def testAppendChildFragment(self): + dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes() + dom.documentElement.appendChild(frag) + self.confirm(tuple(dom.documentElement.childNodes) == + (orig, c1, c2, c3), + "appendChild()") + frag.unlink() + dom.unlink() + + def testReplaceChildFragment(self): + dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes() + dom.documentElement.replaceChild(frag, orig) + orig.unlink() + self.confirm(tuple(dom.documentElement.childNodes) == (c1, c2, c3), + "replaceChild()") + frag.unlink() + dom.unlink() + + def testLegalChildren(self): + dom = Document() + elem = dom.createElement('element') + text = dom.createTextNode('text') + self.assertRaises(xml.dom.HierarchyRequestErr, dom.appendChild, text) + + dom.appendChild(elem) + self.assertRaises(xml.dom.HierarchyRequestErr, dom.insertBefore, text, + elem) + self.assertRaises(xml.dom.HierarchyRequestErr, dom.replaceChild, text, + elem) + + nodemap = elem.attributes + self.assertRaises(xml.dom.HierarchyRequestErr, nodemap.setNamedItem, + text) + self.assertRaises(xml.dom.HierarchyRequestErr, nodemap.setNamedItemNS, + text) + + elem.appendChild(text) + dom.unlink() + + def testNamedNodeMapSetItem(self): + dom = Document() + elem = dom.createElement('element') + attrs = elem.attributes + attrs["foo"] = "bar" + a = attrs.item(0) + self.confirm(a.ownerDocument is dom, + "NamedNodeMap.__setitem__() sets ownerDocument") + self.confirm(a.ownerElement is elem, + "NamedNodeMap.__setitem__() sets ownerElement") + self.confirm(a.value == "bar", + "NamedNodeMap.__setitem__() sets value") + self.confirm(a.nodeValue == "bar", + "NamedNodeMap.__setitem__() sets nodeValue") + elem.unlink() + dom.unlink() + + def testNonZero(self): + dom = parse(tstfile) + self.confirm(dom)# should not be zero + dom.appendChild(dom.createComment("foo")) + self.confirm(not dom.childNodes[-1].childNodes) + dom.unlink() + + def testUnlink(self): + dom = parse(tstfile) + dom.unlink() + + def testElement(self): + dom = Document() + dom.appendChild(dom.createElement("abc")) + self.confirm(dom.documentElement) + dom.unlink() + + def testAAA(self): + dom = parseString("") + el = dom.documentElement + el.setAttribute("spam", "jam2") + self.confirm(el.toxml() == '', "testAAA") + a = el.getAttributeNode("spam") + self.confirm(a.ownerDocument is dom, + "setAttribute() sets ownerDocument") + self.confirm(a.ownerElement is dom.documentElement, + "setAttribute() sets ownerElement") + dom.unlink() + + def testAAB(self): + dom = parseString("") + el = dom.documentElement + el.setAttribute("spam", "jam") + el.setAttribute("spam", "jam2") + self.confirm(el.toxml() == '', "testAAB") + dom.unlink() + + def testAddAttr(self): + dom = Document() + child = dom.appendChild(dom.createElement("abc")) + + child.setAttribute("def", "ghi") + self.confirm(child.getAttribute("def") == "ghi") + self.confirm(child.attributes["def"].value == "ghi") + + child.setAttribute("jkl", "mno") + self.confirm(child.getAttribute("jkl") == "mno") + self.confirm(child.attributes["jkl"].value == "mno") + + self.confirm(len(child.attributes) == 2) + + child.setAttribute("def", "newval") + self.confirm(child.getAttribute("def") == "newval") + self.confirm(child.attributes["def"].value == "newval") + + self.confirm(len(child.attributes) == 2) + dom.unlink() + + def testDeleteAttr(self): + dom = Document() + child = dom.appendChild(dom.createElement("abc")) + + self.confirm(len(child.attributes) == 0) + child.setAttribute("def", "ghi") + self.confirm(len(child.attributes) == 1) + del child.attributes["def"] + self.confirm(len(child.attributes) == 0) + dom.unlink() + + def testRemoveAttr(self): + dom = Document() + child = dom.appendChild(dom.createElement("abc")) + + child.setAttribute("def", "ghi") + self.confirm(len(child.attributes) == 1) + child.removeAttribute("def") + self.confirm(len(child.attributes) == 0) + dom.unlink() + + def testRemoveAttrNS(self): + dom = Document() + child = dom.appendChild( + dom.createElementNS("http://www.python.org", "python:abc")) + child.setAttributeNS("http://www.w3.org", "xmlns:python", + "http://www.python.org") + child.setAttributeNS("http://www.python.org", "python:abcattr", "foo") + self.confirm(len(child.attributes) == 2) + child.removeAttributeNS("http://www.python.org", "abcattr") + self.confirm(len(child.attributes) == 1) + dom.unlink() + + def testRemoveAttributeNode(self): + dom = Document() + child = dom.appendChild(dom.createElement("foo")) + child.setAttribute("spam", "jam") + self.confirm(len(child.attributes) == 1) + node = child.getAttributeNode("spam") + child.removeAttributeNode(node) + self.confirm(len(child.attributes) == 0 + and child.getAttributeNode("spam") is None) + dom.unlink() + + def testChangeAttr(self): + dom = parseString("") + el = dom.documentElement + el.setAttribute("spam", "jam") + self.confirm(len(el.attributes) == 1) + el.setAttribute("spam", "bam") + # Set this attribute to be an ID and make sure that doesn't change + # when changing the value: + el.setIdAttribute("spam") + self.confirm(len(el.attributes) == 1 + and el.attributes["spam"].value == "bam" + and el.attributes["spam"].nodeValue == "bam" + and el.getAttribute("spam") == "bam" + and el.getAttributeNode("spam").isId) + el.attributes["spam"] = "ham" + self.confirm(len(el.attributes) == 1 + and el.attributes["spam"].value == "ham" + and el.attributes["spam"].nodeValue == "ham" + and el.getAttribute("spam") == "ham" + and el.attributes["spam"].isId) + el.setAttribute("spam2", "bam") + self.confirm(len(el.attributes) == 2 + and el.attributes["spam"].value == "ham" + and el.attributes["spam"].nodeValue == "ham" + and el.getAttribute("spam") == "ham" + and el.attributes["spam2"].value == "bam" + and el.attributes["spam2"].nodeValue == "bam" + and el.getAttribute("spam2") == "bam") + el.attributes["spam2"] = "bam2" + self.confirm(len(el.attributes) == 2 + and el.attributes["spam"].value == "ham" + and el.attributes["spam"].nodeValue == "ham" + and el.getAttribute("spam") == "ham" + and el.attributes["spam2"].value == "bam2" + and el.attributes["spam2"].nodeValue == "bam2" + and el.getAttribute("spam2") == "bam2") + dom.unlink() + + def testGetElementsByTagNameNS(self): + d=""" + + """ + dom = parseString(d) + elems = dom.getElementsByTagNameNS("http://pyxml.sf.net/minidom", + "myelem") + self.confirm(len(elems) == 1 + and elems[0].namespaceURI == "http://pyxml.sf.net/minidom" + and elems[0].localName == "myelem" + and elems[0].prefix == "minidom" + and elems[0].tagName == "minidom:myelem" + and elems[0].nodeName == "minidom:myelem") + dom.unlink() + + def get_empty_nodelist_from_elements_by_tagName_ns_helper(self, doc, nsuri, + lname): + nodelist = doc.getElementsByTagNameNS(nsuri, lname) + self.confirm(len(nodelist) == 0) + + def testGetEmptyNodeListFromElementsByTagNameNS(self): + doc = parseString('') + self.get_empty_nodelist_from_elements_by_tagName_ns_helper( + doc, 'http://xml.python.org/namespaces/a', 'localname') + self.get_empty_nodelist_from_elements_by_tagName_ns_helper( + doc, '*', 'splat') + self.get_empty_nodelist_from_elements_by_tagName_ns_helper( + doc, 'http://xml.python.org/namespaces/a', '*') + + doc = parseString('') + self.get_empty_nodelist_from_elements_by_tagName_ns_helper( + doc, "http://xml.python.org/splat", "not-there") + self.get_empty_nodelist_from_elements_by_tagName_ns_helper( + doc, "*", "not-there") + self.get_empty_nodelist_from_elements_by_tagName_ns_helper( + doc, "http://somewhere.else.net/not-there", "e") + + def testElementReprAndStr(self): + dom = Document() + el = dom.appendChild(dom.createElement("abc")) + string1 = repr(el) + string2 = str(el) + self.confirm(string1 == string2) + dom.unlink() + + def testElementReprAndStrUnicode(self): + dom = Document() + el = dom.appendChild(dom.createElement(u"abc")) + string1 = repr(el) + string2 = str(el) + self.confirm(string1 == string2) + dom.unlink() + + def testElementReprAndStrUnicodeNS(self): + dom = Document() + el = dom.appendChild( + dom.createElementNS(u"http://www.slashdot.org", u"slash:abc")) + string1 = repr(el) + string2 = str(el) + self.confirm(string1 == string2) + self.confirm("slash:abc" in string1) + dom.unlink() + + def testAttributeRepr(self): + dom = Document() + el = dom.appendChild(dom.createElement(u"abc")) + node = el.setAttribute("abc", "def") + self.confirm(str(node) == repr(node)) + dom.unlink() + + def testWriteXML(self): + str = '' + dom = parseString(str) + domstr = dom.toxml() + dom.unlink() + self.confirm(str == domstr) + + def testAltNewline(self): + str = '\n\n' + dom = parseString(str) + domstr = dom.toprettyxml(newl="\r\n") + dom.unlink() + self.confirm(domstr == str.replace("\n", "\r\n")) + + def test_toprettyxml_with_text_nodes(self): + # see issue #4147, text nodes are not indented + decl = '\n' + self.assertEqual(parseString('A').toprettyxml(), + decl + 'A\n') + self.assertEqual(parseString('AA').toprettyxml(), + decl + '\n\tA\n\tA\n\n') + self.assertEqual(parseString('AA').toprettyxml(), + decl + '\n\tA\n\tA\n\n') + self.assertEqual(parseString('AA').toprettyxml(), + decl + '\n\tA\n\tA\n\n') + self.assertEqual(parseString('AAA').toprettyxml(), + decl + '\n\tA\n\tA\n\tA\n\n') + + def test_toprettyxml_with_adjacent_text_nodes(self): + # see issue #4147, adjacent text nodes are indented normally + dom = Document() + elem = dom.createElement(u'elem') + elem.appendChild(dom.createTextNode(u'TEXT')) + elem.appendChild(dom.createTextNode(u'TEXT')) + dom.appendChild(elem) + decl = '\n' + self.assertEqual(dom.toprettyxml(), + decl + '\n\tTEXT\n\tTEXT\n\n') + + def test_toprettyxml_preserves_content_of_text_node(self): + # see issue #4147 + for str in ('A', 'C'): + dom = parseString(str) + dom2 = parseString(dom.toprettyxml()) + self.assertEqual( + dom.getElementsByTagName('B')[0].childNodes[0].toxml(), + dom2.getElementsByTagName('B')[0].childNodes[0].toxml()) + + def testProcessingInstruction(self): + dom = parseString('') + pi = dom.documentElement.firstChild + self.confirm(pi.target == "mypi" + and pi.data == "data \t\n " + and pi.nodeName == "mypi" + and pi.nodeType == Node.PROCESSING_INSTRUCTION_NODE + and pi.attributes is None + and not pi.hasChildNodes() + and len(pi.childNodes) == 0 + and pi.firstChild is None + and pi.lastChild is None + and pi.localName is None + and pi.namespaceURI == xml.dom.EMPTY_NAMESPACE) + + def testTooManyDocumentElements(self): + doc = parseString("") + elem = doc.createElement("extra") + # Should raise an exception when adding an extra document element. + self.assertRaises(xml.dom.HierarchyRequestErr, doc.appendChild, elem) + elem.unlink() + doc.unlink() + + def testRemoveNamedItem(self): + doc = parseString("") + e = doc.documentElement + attrs = e.attributes + a1 = e.getAttributeNode("a") + a2 = attrs.removeNamedItem("a") + self.confirm(a1.isSameNode(a2)) + self.assertRaises(xml.dom.NotFoundErr, attrs.removeNamedItem, "a") + + def testRemoveNamedItemNS(self): + doc = parseString("") + e = doc.documentElement + attrs = e.attributes + a1 = e.getAttributeNodeNS("http://xml.python.org/", "b") + a2 = attrs.removeNamedItemNS("http://xml.python.org/", "b") + self.confirm(a1.isSameNode(a2)) + self.assertRaises(xml.dom.NotFoundErr, attrs.removeNamedItemNS, + "http://xml.python.org/", "b") + + def _testCloneElementCopiesAttributes(self, e1, e2, test): + attrs1 = e1.attributes + attrs2 = e2.attributes + keys1 = attrs1.keys() + keys2 = attrs2.keys() + keys1.sort() + keys2.sort() + self.confirm(keys1 == keys2, "clone of element has same attribute keys") + for i in range(len(keys1)): + a1 = attrs1.item(i) + a2 = attrs2.item(i) + self.confirm(a1 is not a2 + and a1.value == a2.value + and a1.nodeValue == a2.nodeValue + and a1.namespaceURI == a2.namespaceURI + and a1.localName == a2.localName + , "clone of attribute node has proper attribute values") + self.confirm(a2.ownerElement is e2, + "clone of attribute node correctly owned") + + def _setupCloneElement(self, deep): + dom = parseString("") + root = dom.documentElement + clone = root.cloneNode(deep) + self._testCloneElementCopiesAttributes( + root, clone, "testCloneElement" + (deep and "Deep" or "Shallow")) + # mutilate the original so shared data is detected + root.tagName = root.nodeName = "MODIFIED" + root.setAttribute("attr", "NEW VALUE") + root.setAttribute("added", "VALUE") + return dom, clone + + def testCloneElementShallow(self): + dom, clone = self._setupCloneElement(0) + self.confirm(len(clone.childNodes) == 0 + and clone.childNodes.length == 0 + and clone.parentNode is None + and clone.toxml() == '' + , "testCloneElementShallow") + dom.unlink() + + def testCloneElementDeep(self): + dom, clone = self._setupCloneElement(1) + self.confirm(len(clone.childNodes) == 1 + and clone.childNodes.length == 1 + and clone.parentNode is None + and clone.toxml() == '' + , "testCloneElementDeep") + dom.unlink() + + def testCloneDocumentShallow(self): + doc = parseString("\n" + "" + "\n" + "]>\n" + "") + doc2 = doc.cloneNode(0) + self.confirm(doc2 is None, + "testCloneDocumentShallow:" + " shallow cloning of documents makes no sense!") + + def testCloneDocumentDeep(self): + doc = parseString("\n" + "" + "\n" + "]>\n" + "") + doc2 = doc.cloneNode(1) + self.confirm(not (doc.isSameNode(doc2) or doc2.isSameNode(doc)), + "testCloneDocumentDeep: document objects not distinct") + self.confirm(len(doc.childNodes) == len(doc2.childNodes), + "testCloneDocumentDeep: wrong number of Document children") + self.confirm(doc2.documentElement.nodeType == Node.ELEMENT_NODE, + "testCloneDocumentDeep: documentElement not an ELEMENT_NODE") + self.confirm(doc2.documentElement.ownerDocument.isSameNode(doc2), + "testCloneDocumentDeep: documentElement owner is not new document") + self.confirm(not doc.documentElement.isSameNode(doc2.documentElement), + "testCloneDocumentDeep: documentElement should not be shared") + if doc.doctype is not None: + # check the doctype iff the original DOM maintained it + self.confirm(doc2.doctype.nodeType == Node.DOCUMENT_TYPE_NODE, + "testCloneDocumentDeep: doctype not a DOCUMENT_TYPE_NODE") + self.confirm(doc2.doctype.ownerDocument.isSameNode(doc2)) + self.confirm(not doc.doctype.isSameNode(doc2.doctype)) + + def testCloneDocumentTypeDeepOk(self): + doctype = create_nonempty_doctype() + clone = doctype.cloneNode(1) + self.confirm(clone is not None + and clone.nodeName == doctype.nodeName + and clone.name == doctype.name + and clone.publicId == doctype.publicId + and clone.systemId == doctype.systemId + and len(clone.entities) == len(doctype.entities) + and clone.entities.item(len(clone.entities)) is None + and len(clone.notations) == len(doctype.notations) + and clone.notations.item(len(clone.notations)) is None + and len(clone.childNodes) == 0) + for i in range(len(doctype.entities)): + se = doctype.entities.item(i) + ce = clone.entities.item(i) + self.confirm((not se.isSameNode(ce)) + and (not ce.isSameNode(se)) + and ce.nodeName == se.nodeName + and ce.notationName == se.notationName + and ce.publicId == se.publicId + and ce.systemId == se.systemId + and ce.encoding == se.encoding + and ce.actualEncoding == se.actualEncoding + and ce.version == se.version) + for i in range(len(doctype.notations)): + sn = doctype.notations.item(i) + cn = clone.notations.item(i) + self.confirm((not sn.isSameNode(cn)) + and (not cn.isSameNode(sn)) + and cn.nodeName == sn.nodeName + and cn.publicId == sn.publicId + and cn.systemId == sn.systemId) + + def testCloneDocumentTypeDeepNotOk(self): + doc = create_doc_with_doctype() + clone = doc.doctype.cloneNode(1) + self.confirm(clone is None, "testCloneDocumentTypeDeepNotOk") + + def testCloneDocumentTypeShallowOk(self): + doctype = create_nonempty_doctype() + clone = doctype.cloneNode(0) + self.confirm(clone is not None + and clone.nodeName == doctype.nodeName + and clone.name == doctype.name + and clone.publicId == doctype.publicId + and clone.systemId == doctype.systemId + and len(clone.entities) == 0 + and clone.entities.item(0) is None + and len(clone.notations) == 0 + and clone.notations.item(0) is None + and len(clone.childNodes) == 0) + + def testCloneDocumentTypeShallowNotOk(self): + doc = create_doc_with_doctype() + clone = doc.doctype.cloneNode(0) + self.confirm(clone is None, "testCloneDocumentTypeShallowNotOk") + + def check_import_document(self, deep, testName): + doc1 = parseString("") + doc2 = parseString("") + self.assertRaises(xml.dom.NotSupportedErr, doc1.importNode, doc2, deep) + + def testImportDocumentShallow(self): + self.check_import_document(0, "testImportDocumentShallow") + + def testImportDocumentDeep(self): + self.check_import_document(1, "testImportDocumentDeep") + + def testImportDocumentTypeShallow(self): + src = create_doc_with_doctype() + target = create_doc_without_doctype() + self.assertRaises(xml.dom.NotSupportedErr, target.importNode, + src.doctype, 0) + + def testImportDocumentTypeDeep(self): + src = create_doc_with_doctype() + target = create_doc_without_doctype() + self.assertRaises(xml.dom.NotSupportedErr, target.importNode, + src.doctype, 1) + + # Testing attribute clones uses a helper, and should always be deep, + # even if the argument to cloneNode is false. + def check_clone_attribute(self, deep, testName): + doc = parseString("") + attr = doc.documentElement.getAttributeNode("attr") + self.assertNotEqual(attr, None) + clone = attr.cloneNode(deep) + self.confirm(not clone.isSameNode(attr)) + self.confirm(not attr.isSameNode(clone)) + self.confirm(clone.ownerElement is None, + testName + ": ownerElement should be None") + self.confirm(clone.ownerDocument.isSameNode(attr.ownerDocument), + testName + ": ownerDocument does not match") + self.confirm(clone.specified, + testName + ": cloned attribute must have specified == True") + + def testCloneAttributeShallow(self): + self.check_clone_attribute(0, "testCloneAttributeShallow") + + def testCloneAttributeDeep(self): + self.check_clone_attribute(1, "testCloneAttributeDeep") + + def check_clone_pi(self, deep, testName): + doc = parseString("") + pi = doc.firstChild + self.assertEqual(pi.nodeType, Node.PROCESSING_INSTRUCTION_NODE) + clone = pi.cloneNode(deep) + self.confirm(clone.target == pi.target + and clone.data == pi.data) + + def testClonePIShallow(self): + self.check_clone_pi(0, "testClonePIShallow") + + def testClonePIDeep(self): + self.check_clone_pi(1, "testClonePIDeep") + + def testNormalize(self): + doc = parseString("") + root = doc.documentElement + root.appendChild(doc.createTextNode("first")) + root.appendChild(doc.createTextNode("second")) + self.confirm(len(root.childNodes) == 2 + and root.childNodes.length == 2, + "testNormalize -- preparation") + doc.normalize() + self.confirm(len(root.childNodes) == 1 + and root.childNodes.length == 1 + and root.firstChild is root.lastChild + and root.firstChild.data == "firstsecond" + , "testNormalize -- result") + doc.unlink() + + doc = parseString("") + root = doc.documentElement + root.appendChild(doc.createTextNode("")) + doc.normalize() + self.confirm(len(root.childNodes) == 0 + and root.childNodes.length == 0, + "testNormalize -- single empty node removed") + doc.unlink() + + def testNormalizedAfterLoad(self): + """ + Introduced this test on jython because + 1. Cpython guarantees, by the use of xml.dom.expatbuilder, + that all text nodes are normalized after loading. + 2. Jython has no expat, and thus uses xml.dom.pulldom.parse + (which uses any java SAX2 compliant parser), and which makes + no guarantees about text node normalization. + Thus we have to check if text nodes are normalized after a parse. + See this bug for further information + minidom chunks the character input on multi-line values + http://bugs.jython.org/issue1614 + """ + num_lines = 2 + # Up to 16K lines should be enough to guarantee failure without normalization + while num_lines <= 2**14: + doc_content = "\n".join( ("Line %d" % i for i in xrange(num_lines)) ) + doc_text = "%s" % doc_content + dom = parseString(doc_text) + node_content = dom.getElementsByTagName("document")[0].childNodes[0].nodeValue + self.confirm(node_content == doc_content, "testNormalizedAfterLoad") + num_lines *= 2 + + def testNormalizeCombineAndNextSibling(self): + doc = parseString("") + root = doc.documentElement + root.appendChild(doc.createTextNode("first")) + root.appendChild(doc.createTextNode("second")) + root.appendChild(doc.createElement("i")) + self.confirm(len(root.childNodes) == 3 + and root.childNodes.length == 3, + "testNormalizeCombineAndNextSibling -- preparation") + doc.normalize() + self.confirm(len(root.childNodes) == 2 + and root.childNodes.length == 2 + and root.firstChild.data == "firstsecond" + and root.firstChild is not root.lastChild + and root.firstChild.nextSibling is root.lastChild + and root.firstChild.previousSibling is None + and root.lastChild.previousSibling is root.firstChild + and root.lastChild.nextSibling is None + , "testNormalizeCombinedAndNextSibling -- result") + doc.unlink() + + def testNormalizeDeleteWithPrevSibling(self): + doc = parseString("") + root = doc.documentElement + root.appendChild(doc.createTextNode("first")) + root.appendChild(doc.createTextNode("")) + self.confirm(len(root.childNodes) == 2 + and root.childNodes.length == 2, + "testNormalizeDeleteWithPrevSibling -- preparation") + doc.normalize() + self.confirm(len(root.childNodes) == 1 + and root.childNodes.length == 1 + and root.firstChild.data == "first" + and root.firstChild is root.lastChild + and root.firstChild.nextSibling is None + and root.firstChild.previousSibling is None + , "testNormalizeDeleteWithPrevSibling -- result") + doc.unlink() + + def testNormalizeDeleteWithNextSibling(self): + doc = parseString("") + root = doc.documentElement + root.appendChild(doc.createTextNode("")) + root.appendChild(doc.createTextNode("second")) + self.confirm(len(root.childNodes) == 2 + and root.childNodes.length == 2, + "testNormalizeDeleteWithNextSibling -- preparation") + doc.normalize() + self.confirm(len(root.childNodes) == 1 + and root.childNodes.length == 1 + and root.firstChild.data == "second" + and root.firstChild is root.lastChild + and root.firstChild.nextSibling is None + and root.firstChild.previousSibling is None + , "testNormalizeDeleteWithNextSibling -- result") + doc.unlink() + + def testNormalizeDeleteWithTwoNonTextSiblings(self): + doc = parseString("") + root = doc.documentElement + root.appendChild(doc.createElement("i")) + root.appendChild(doc.createTextNode("")) + root.appendChild(doc.createElement("i")) + self.confirm(len(root.childNodes) == 3 + and root.childNodes.length == 3, + "testNormalizeDeleteWithTwoSiblings -- preparation") + doc.normalize() + self.confirm(len(root.childNodes) == 2 + and root.childNodes.length == 2 + and root.firstChild is not root.lastChild + and root.firstChild.nextSibling is root.lastChild + and root.firstChild.previousSibling is None + and root.lastChild.previousSibling is root.firstChild + and root.lastChild.nextSibling is None + , "testNormalizeDeleteWithTwoSiblings -- result") + doc.unlink() + + def testNormalizeDeleteAndCombine(self): + doc = parseString("") + root = doc.documentElement + root.appendChild(doc.createTextNode("")) + root.appendChild(doc.createTextNode("second")) + root.appendChild(doc.createTextNode("")) + root.appendChild(doc.createTextNode("fourth")) + root.appendChild(doc.createTextNode("")) + self.confirm(len(root.childNodes) == 5 + and root.childNodes.length == 5, + "testNormalizeDeleteAndCombine -- preparation") + doc.normalize() + self.confirm(len(root.childNodes) == 1 + and root.childNodes.length == 1 + and root.firstChild is root.lastChild + and root.firstChild.data == "secondfourth" + and root.firstChild.previousSibling is None + and root.firstChild.nextSibling is None + , "testNormalizeDeleteAndCombine -- result") + doc.unlink() + + def testNormalizeRecursion(self): + doc = parseString("" + "" + "" + "t" + # + #x + "" + "" + "" + "t2" + #x2 + "" + "t3" + #x3 + "" + # + "") + root = doc.documentElement + root.childNodes[0].appendChild(doc.createTextNode("")) + root.childNodes[0].appendChild(doc.createTextNode("x")) + root.childNodes[1].childNodes[0].appendChild(doc.createTextNode("x2")) + root.childNodes[1].appendChild(doc.createTextNode("x3")) + root.appendChild(doc.createTextNode("")) + self.confirm(len(root.childNodes) == 3 + and root.childNodes.length == 3 + and len(root.childNodes[0].childNodes) == 4 + and root.childNodes[0].childNodes.length == 4 + and len(root.childNodes[1].childNodes) == 3 + and root.childNodes[1].childNodes.length == 3 + and len(root.childNodes[1].childNodes[0].childNodes) == 2 + and root.childNodes[1].childNodes[0].childNodes.length == 2 + , "testNormalize2 -- preparation") + doc.normalize() + self.confirm(len(root.childNodes) == 2 + and root.childNodes.length == 2 + and len(root.childNodes[0].childNodes) == 2 + and root.childNodes[0].childNodes.length == 2 + and len(root.childNodes[1].childNodes) == 2 + and root.childNodes[1].childNodes.length == 2 + and len(root.childNodes[1].childNodes[0].childNodes) == 1 + and root.childNodes[1].childNodes[0].childNodes.length == 1 + , "testNormalize2 -- childNodes lengths") + self.confirm(root.childNodes[0].childNodes[1].data == "tx" + and root.childNodes[1].childNodes[0].childNodes[0].data == "t2x2" + and root.childNodes[1].childNodes[1].data == "t3x3" + , "testNormalize2 -- joined text fields") + self.confirm(root.childNodes[0].childNodes[1].nextSibling is None + and root.childNodes[0].childNodes[1].previousSibling + is root.childNodes[0].childNodes[0] + and root.childNodes[0].childNodes[0].previousSibling is None + and root.childNodes[0].childNodes[0].nextSibling + is root.childNodes[0].childNodes[1] + and root.childNodes[1].childNodes[1].nextSibling is None + and root.childNodes[1].childNodes[1].previousSibling + is root.childNodes[1].childNodes[0] + and root.childNodes[1].childNodes[0].previousSibling is None + and root.childNodes[1].childNodes[0].nextSibling + is root.childNodes[1].childNodes[1] + , "testNormalize2 -- sibling pointers") + doc.unlink() + + + def testBug0777884(self): + doc = parseString("text") + text = doc.documentElement.childNodes[0] + self.assertEqual(text.nodeType, Node.TEXT_NODE) + # Should run quietly, doing nothing. + text.normalize() + doc.unlink() + + def testBug1433694(self): + doc = parseString("t") + node = doc.documentElement + node.childNodes[1].nodeValue = "" + node.normalize() + self.confirm(node.childNodes[-1].nextSibling is None, + "Final child's .nextSibling should be None") + + def testSiblings(self): + doc = parseString("text?") + root = doc.documentElement + (pi, text, elm) = root.childNodes + + self.confirm(pi.nextSibling is text and + pi.previousSibling is None and + text.nextSibling is elm and + text.previousSibling is pi and + elm.nextSibling is None and + elm.previousSibling is text, "testSiblings") + + doc.unlink() + + def testParents(self): + doc = parseString( + "") + root = doc.documentElement + elm1 = root.childNodes[0] + (elm2a, elm2b) = elm1.childNodes + elm3 = elm2b.childNodes[0] + + self.confirm(root.parentNode is doc and + elm1.parentNode is root and + elm2a.parentNode is elm1 and + elm2b.parentNode is elm1 and + elm3.parentNode is elm2b, "testParents") + doc.unlink() + + def testNodeListItem(self): + doc = parseString("") + children = doc.childNodes + docelem = children[0] + self.confirm(children[0] is children.item(0) + and children.item(1) is None + and docelem.childNodes.item(0) is docelem.childNodes[0] + and docelem.childNodes.item(1) is docelem.childNodes[1] + and docelem.childNodes.item(0).childNodes.item(0) is None, + "test NodeList.item()") + doc.unlink() + + def testSAX2DOM(self): + from xml.dom import pulldom + + sax2dom = pulldom.SAX2DOM() + sax2dom.startDocument() + sax2dom.startElement("doc", {}) + sax2dom.characters("text") + sax2dom.startElement("subelm", {}) + sax2dom.characters("text") + sax2dom.endElement("subelm") + sax2dom.characters("text") + sax2dom.endElement("doc") + sax2dom.endDocument() + + doc = sax2dom.document + root = doc.documentElement + (text1, elm1, text2) = root.childNodes + text3 = elm1.childNodes[0] + + self.confirm(text1.previousSibling is None and + text1.nextSibling is elm1 and + elm1.previousSibling is text1 and + elm1.nextSibling is text2 and + text2.previousSibling is elm1 and + text2.nextSibling is None and + text3.previousSibling is None and + text3.nextSibling is None, "testSAX2DOM - siblings") + + self.confirm(root.parentNode is doc and + text1.parentNode is root and + elm1.parentNode is root and + text2.parentNode is root and + text3.parentNode is elm1, "testSAX2DOM - parents") + doc.unlink() + + def testEncodings(self): + doc = parseString('') + self.confirm(doc.toxml() == u'\u20ac' + and doc.toxml('utf-8') == + '\xe2\x82\xac' + and doc.toxml('iso-8859-15') == + '\xa4', + "testEncodings - encoding EURO SIGN") + + # Verify that character decoding errors raise exceptions instead + # of crashing + self.assertRaises(UnicodeDecodeError, parseString, + 'Comment \xe7a va ? Tr\xe8s bien ?') + + doc.unlink() + + class UserDataHandler: + called = 0 + def handle(self, operation, key, data, src, dst): + dst.setUserData(key, data + 1, self) + src.setUserData(key, None, None) + self.called = 1 + + def testUserData(self): + dom = Document() + n = dom.createElement('e') + self.confirm(n.getUserData("foo") is None) + n.setUserData("foo", None, None) + self.confirm(n.getUserData("foo") is None) + n.setUserData("foo", 12, 12) + n.setUserData("bar", 13, 13) + self.confirm(n.getUserData("foo") == 12) + self.confirm(n.getUserData("bar") == 13) + n.setUserData("foo", None, None) + self.confirm(n.getUserData("foo") is None) + self.confirm(n.getUserData("bar") == 13) + + handler = self.UserDataHandler() + n.setUserData("bar", 12, handler) + c = n.cloneNode(1) + self.confirm(handler.called + and n.getUserData("bar") is None + and c.getUserData("bar") == 13) + n.unlink() + c.unlink() + dom.unlink() + + def checkRenameNodeSharedConstraints(self, doc, node): + # Make sure illegal NS usage is detected: + self.assertRaises(xml.dom.NamespaceErr, doc.renameNode, node, + "http://xml.python.org/ns", "xmlns:foo") + doc2 = parseString("") + self.assertRaises(xml.dom.WrongDocumentErr, doc2.renameNode, node, + xml.dom.EMPTY_NAMESPACE, "foo") + + def testRenameAttribute(self): + doc = parseString("") + elem = doc.documentElement + attrmap = elem.attributes + attr = elem.attributes['a'] + + # Simple renaming + attr = doc.renameNode(attr, xml.dom.EMPTY_NAMESPACE, "b") + self.confirm(attr.name == "b" + and attr.nodeName == "b" + and attr.localName is None + and attr.namespaceURI == xml.dom.EMPTY_NAMESPACE + and attr.prefix is None + and attr.value == "v" + and elem.getAttributeNode("a") is None + and elem.getAttributeNode("b").isSameNode(attr) + and attrmap["b"].isSameNode(attr) + and attr.ownerDocument.isSameNode(doc) + and attr.ownerElement.isSameNode(elem)) + + # Rename to have a namespace, no prefix + attr = doc.renameNode(attr, "http://xml.python.org/ns", "c") + self.confirm(attr.name == "c" + and attr.nodeName == "c" + and attr.localName == "c" + and attr.namespaceURI == "http://xml.python.org/ns" + and attr.prefix is None + and attr.value == "v" + and elem.getAttributeNode("a") is None + and elem.getAttributeNode("b") is None + and elem.getAttributeNode("c").isSameNode(attr) + and elem.getAttributeNodeNS( + "http://xml.python.org/ns", "c").isSameNode(attr) + and attrmap["c"].isSameNode(attr) + and attrmap[("http://xml.python.org/ns", "c")].isSameNode(attr)) + + # Rename to have a namespace, with prefix + attr = doc.renameNode(attr, "http://xml.python.org/ns2", "p:d") + self.confirm(attr.name == "p:d" + and attr.nodeName == "p:d" + and attr.localName == "d" + and attr.namespaceURI == "http://xml.python.org/ns2" + and attr.prefix == "p" + and attr.value == "v" + and elem.getAttributeNode("a") is None + and elem.getAttributeNode("b") is None + and elem.getAttributeNode("c") is None + and elem.getAttributeNodeNS( + "http://xml.python.org/ns", "c") is None + and elem.getAttributeNode("p:d").isSameNode(attr) + and elem.getAttributeNodeNS( + "http://xml.python.org/ns2", "d").isSameNode(attr) + and attrmap["p:d"].isSameNode(attr) + and attrmap[("http://xml.python.org/ns2", "d")].isSameNode(attr)) + + # Rename back to a simple non-NS node + attr = doc.renameNode(attr, xml.dom.EMPTY_NAMESPACE, "e") + self.confirm(attr.name == "e" + and attr.nodeName == "e" + and attr.localName is None + and attr.namespaceURI == xml.dom.EMPTY_NAMESPACE + and attr.prefix is None + and attr.value == "v" + and elem.getAttributeNode("a") is None + and elem.getAttributeNode("b") is None + and elem.getAttributeNode("c") is None + and elem.getAttributeNode("p:d") is None + and elem.getAttributeNodeNS( + "http://xml.python.org/ns", "c") is None + and elem.getAttributeNode("e").isSameNode(attr) + and attrmap["e"].isSameNode(attr)) + + self.assertRaises(xml.dom.NamespaceErr, doc.renameNode, attr, + "http://xml.python.org/ns", "xmlns") + self.checkRenameNodeSharedConstraints(doc, attr) + doc.unlink() + + def testRenameElement(self): + doc = parseString("") + elem = doc.documentElement + + # Simple renaming + elem = doc.renameNode(elem, xml.dom.EMPTY_NAMESPACE, "a") + self.confirm(elem.tagName == "a" + and elem.nodeName == "a" + and elem.localName is None + and elem.namespaceURI == xml.dom.EMPTY_NAMESPACE + and elem.prefix is None + and elem.ownerDocument.isSameNode(doc)) + + # Rename to have a namespace, no prefix + elem = doc.renameNode(elem, "http://xml.python.org/ns", "b") + self.confirm(elem.tagName == "b" + and elem.nodeName == "b" + and elem.localName == "b" + and elem.namespaceURI == "http://xml.python.org/ns" + and elem.prefix is None + and elem.ownerDocument.isSameNode(doc)) + + # Rename to have a namespace, with prefix + elem = doc.renameNode(elem, "http://xml.python.org/ns2", "p:c") + self.confirm(elem.tagName == "p:c" + and elem.nodeName == "p:c" + and elem.localName == "c" + and elem.namespaceURI == "http://xml.python.org/ns2" + and elem.prefix == "p" + and elem.ownerDocument.isSameNode(doc)) + + # Rename back to a simple non-NS node + elem = doc.renameNode(elem, xml.dom.EMPTY_NAMESPACE, "d") + self.confirm(elem.tagName == "d" + and elem.nodeName == "d" + and elem.localName is None + and elem.namespaceURI == xml.dom.EMPTY_NAMESPACE + and elem.prefix is None + and elem.ownerDocument.isSameNode(doc)) + + self.checkRenameNodeSharedConstraints(doc, elem) + doc.unlink() + + def testRenameOther(self): + # We have to create a comment node explicitly since not all DOM + # builders used with minidom add comments to the DOM. + doc = xml.dom.minidom.getDOMImplementation().createDocument( + xml.dom.EMPTY_NAMESPACE, "e", None) + node = doc.createComment("comment") + self.assertRaises(xml.dom.NotSupportedErr, doc.renameNode, node, + xml.dom.EMPTY_NAMESPACE, "foo") + doc.unlink() + + def testWholeText(self): + doc = parseString("a") + elem = doc.documentElement + text = elem.childNodes[0] + self.assertEqual(text.nodeType, Node.TEXT_NODE) + + self.checkWholeText(text, "a") + elem.appendChild(doc.createTextNode("b")) + self.checkWholeText(text, "ab") + elem.insertBefore(doc.createCDATASection("c"), text) + self.checkWholeText(text, "cab") + + # make sure we don't cross other nodes + splitter = doc.createComment("comment") + elem.appendChild(splitter) + text2 = doc.createTextNode("d") + elem.appendChild(text2) + self.checkWholeText(text, "cab") + self.checkWholeText(text2, "d") + + x = doc.createElement("x") + elem.replaceChild(x, splitter) + splitter = x + self.checkWholeText(text, "cab") + self.checkWholeText(text2, "d") + + x = doc.createProcessingInstruction("y", "z") + elem.replaceChild(x, splitter) + splitter = x + self.checkWholeText(text, "cab") + self.checkWholeText(text2, "d") + + elem.removeChild(splitter) + self.checkWholeText(text, "cabd") + self.checkWholeText(text2, "cabd") + + def testPatch1094164(self): + doc = parseString("") + elem = doc.documentElement + e = elem.firstChild + self.confirm(e.parentNode is elem, "Before replaceChild()") + # Check that replacing a child with itself leaves the tree unchanged + elem.replaceChild(e, e) + self.confirm(e.parentNode is elem, "After replaceChild()") + + def testReplaceWholeText(self): + def setup(): + doc = parseString("ad") + elem = doc.documentElement + text1 = elem.firstChild + text2 = elem.lastChild + splitter = text1.nextSibling + elem.insertBefore(doc.createTextNode("b"), splitter) + elem.insertBefore(doc.createCDATASection("c"), text1) + return doc, elem, text1, splitter, text2 + + doc, elem, text1, splitter, text2 = setup() + text = text1.replaceWholeText("new content") + self.checkWholeText(text, "new content") + self.checkWholeText(text2, "d") + self.confirm(len(elem.childNodes) == 3) + + doc, elem, text1, splitter, text2 = setup() + text = text2.replaceWholeText("new content") + self.checkWholeText(text, "new content") + self.checkWholeText(text1, "cab") + self.confirm(len(elem.childNodes) == 5) + + doc, elem, text1, splitter, text2 = setup() + text = text1.replaceWholeText("") + self.checkWholeText(text2, "d") + self.confirm(text is None + and len(elem.childNodes) == 2) + + def testSchemaType(self): + doc = parseString( + "\n" + " \n" + " \n" + "]>") + elem = doc.documentElement + # We don't want to rely on any specific loader at this point, so + # just make sure we can get to all the names, and that the + # DTD-based namespace is right. The names can vary by loader + # since each supports a different level of DTD information. + t = elem.schemaType + self.confirm(t.name is None + and t.namespace == xml.dom.EMPTY_NAMESPACE) + names = "id notid text enum ref refs ent ents nm nms".split() + for name in names: + a = elem.getAttributeNode(name) + t = a.schemaType + self.confirm(hasattr(t, "name") + and t.namespace == xml.dom.EMPTY_NAMESPACE) + + def testSetIdAttribute(self): + doc = parseString("") + e = doc.documentElement + a1 = e.getAttributeNode("a1") + a2 = e.getAttributeNode("a2") + self.confirm(doc.getElementById("v") is None + and not a1.isId + and not a2.isId) + e.setIdAttribute("a1") + self.confirm(e.isSameNode(doc.getElementById("v")) + and a1.isId + and not a2.isId) + e.setIdAttribute("a2") + self.confirm(e.isSameNode(doc.getElementById("v")) + and e.isSameNode(doc.getElementById("w")) + and a1.isId + and a2.isId) + # replace the a1 node; the new node should *not* be an ID + a3 = doc.createAttribute("a1") + a3.value = "v" + e.setAttributeNode(a3) + self.confirm(doc.getElementById("v") is None + and e.isSameNode(doc.getElementById("w")) + and not a1.isId + and a2.isId + and not a3.isId) + # renaming an attribute should not affect its ID-ness: + doc.renameNode(a2, xml.dom.EMPTY_NAMESPACE, "an") + self.confirm(e.isSameNode(doc.getElementById("w")) + and a2.isId) + + def testSetIdAttributeNS(self): + NS1 = "http://xml.python.org/ns1" + NS2 = "http://xml.python.org/ns2" + doc = parseString("") + e = doc.documentElement + a1 = e.getAttributeNodeNS(NS1, "a1") + a2 = e.getAttributeNodeNS(NS2, "a2") + self.confirm(doc.getElementById("v") is None + and not a1.isId + and not a2.isId) + e.setIdAttributeNS(NS1, "a1") + self.confirm(e.isSameNode(doc.getElementById("v")) + and a1.isId + and not a2.isId) + e.setIdAttributeNS(NS2, "a2") + self.confirm(e.isSameNode(doc.getElementById("v")) + and e.isSameNode(doc.getElementById("w")) + and a1.isId + and a2.isId) + # replace the a1 node; the new node should *not* be an ID + a3 = doc.createAttributeNS(NS1, "a1") + a3.value = "v" + e.setAttributeNode(a3) + self.confirm(e.isSameNode(doc.getElementById("w"))) + self.confirm(not a1.isId) + self.confirm(a2.isId) + self.confirm(not a3.isId) + self.confirm(doc.getElementById("v") is None) + # renaming an attribute should not affect its ID-ness: + doc.renameNode(a2, xml.dom.EMPTY_NAMESPACE, "an") + self.confirm(e.isSameNode(doc.getElementById("w")) + and a2.isId) + + def testSetIdAttributeNode(self): + NS1 = "http://xml.python.org/ns1" + NS2 = "http://xml.python.org/ns2" + doc = parseString("") + e = doc.documentElement + a1 = e.getAttributeNodeNS(NS1, "a1") + a2 = e.getAttributeNodeNS(NS2, "a2") + self.confirm(doc.getElementById("v") is None + and not a1.isId + and not a2.isId) + e.setIdAttributeNode(a1) + self.confirm(e.isSameNode(doc.getElementById("v")) + and a1.isId + and not a2.isId) + e.setIdAttributeNode(a2) + self.confirm(e.isSameNode(doc.getElementById("v")) + and e.isSameNode(doc.getElementById("w")) + and a1.isId + and a2.isId) + # replace the a1 node; the new node should *not* be an ID + a3 = doc.createAttributeNS(NS1, "a1") + a3.value = "v" + e.setAttributeNode(a3) + self.confirm(e.isSameNode(doc.getElementById("w"))) + self.confirm(not a1.isId) + self.confirm(a2.isId) + self.confirm(not a3.isId) + self.confirm(doc.getElementById("v") is None) + # renaming an attribute should not affect its ID-ness: + doc.renameNode(a2, xml.dom.EMPTY_NAMESPACE, "an") + self.confirm(e.isSameNode(doc.getElementById("w")) + and a2.isId) + + def assert_recursive_equal(self, doc, doc2): + stack = [(doc, doc2)] + while stack: + n1, n2 = stack.pop() + self.assertEqual(n1.nodeType, n2.nodeType) + self.assertEqual(len(n1.childNodes), len(n2.childNodes)) + self.assertEqual(n1.nodeName, n2.nodeName) + self.assertFalse(n1.isSameNode(n2)) + self.assertFalse(n2.isSameNode(n1)) + if n1.nodeType == Node.DOCUMENT_TYPE_NODE: + len(n1.entities) + len(n2.entities) + len(n1.notations) + len(n2.notations) + self.assertEqual(len(n1.entities), len(n2.entities)) + self.assertEqual(len(n1.notations), len(n2.notations)) + for i in range(len(n1.notations)): + # XXX this loop body doesn't seem to be executed? + no1 = n1.notations.item(i) + no2 = n1.notations.item(i) + self.assertEqual(no1.name, no2.name) + self.assertEqual(no1.publicId, no2.publicId) + self.assertEqual(no1.systemId, no2.systemId) + stack.append((no1, no2)) + for i in range(len(n1.entities)): + e1 = n1.entities.item(i) + e2 = n2.entities.item(i) + self.assertEqual(e1.notationName, e2.notationName) + self.assertEqual(e1.publicId, e2.publicId) + self.assertEqual(e1.systemId, e2.systemId) + stack.append((e1, e2)) + if n1.nodeType != Node.DOCUMENT_NODE: + self.assertTrue(n1.ownerDocument.isSameNode(doc)) + self.assertTrue(n2.ownerDocument.isSameNode(doc2)) + for i in range(len(n1.childNodes)): + stack.append((n1.childNodes[i], n2.childNodes[i])) + + def testPickledDocument(self): + doc = parseString(sample) + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + s = pickle.dumps(doc, proto) + doc2 = pickle.loads(s) + self.assert_recursive_equal(doc, doc2) + + def testDeepcopiedDocument(self): + doc = parseString(sample) + doc2 = copy.deepcopy(doc) + self.assert_recursive_equal(doc, doc2) + + def testSerializeCommentNodeWithDoubleHyphen(self): + doc = create_doc_without_doctype() + doc.appendChild(doc.createComment("foo--bar")) + self.assertRaises(ValueError, doc.toxml) + + def testEmptyXMLNSValue(self): + doc = parseString("\n" + "\n") + doc2 = parseString(doc.toxml()) + self.confirm(doc2.namespaceURI == xml.dom.EMPTY_NAMESPACE) + + +def test_main(): + run_unittest(MinidomTest) if __name__ == "__main__": - base = sys.argv[0] -else: - base = __file__ -tstfile = os.path.join(os.path.dirname(base), "test"+os.extsep+"xml") -del base - -def confirm(test, testname = "Test"): - if not test: - print "Failed " + testname - raise Exception - -Node._debug = 1 - -def testParseFromFile(): - from StringIO import StringIO - dom = parse(StringIO(open(tstfile).read())) - dom.unlink() - confirm(isinstance(dom,Document)) - -def testGetElementsByTagName(): - dom = parse(tstfile) - confirm(dom.getElementsByTagName("LI") == \ - dom.documentElement.getElementsByTagName("LI")) - dom.unlink() - -def testInsertBefore(): - dom = parseString("") - root = dom.documentElement - elem = root.childNodes[0] - nelem = dom.createElement("element") - root.insertBefore(nelem, elem) - confirm(len(root.childNodes) == 2 - and root.childNodes.length == 2 - and root.childNodes[0] is nelem - and root.childNodes.item(0) is nelem - and root.childNodes[1] is elem - and root.childNodes.item(1) is elem - and root.firstChild is nelem - and root.lastChild is elem - and root.toxml() == "" - , "testInsertBefore -- node properly placed in tree") - nelem = dom.createElement("element") - root.insertBefore(nelem, None) - confirm(len(root.childNodes) == 3 - and root.childNodes.length == 3 - and root.childNodes[1] is elem - and root.childNodes.item(1) is elem - and root.childNodes[2] is nelem - and root.childNodes.item(2) is nelem - and root.lastChild is nelem - and nelem.previousSibling is elem - and root.toxml() == "" - , "testInsertBefore -- node properly placed in tree") - nelem2 = dom.createElement("bar") - root.insertBefore(nelem2, nelem) - confirm(len(root.childNodes) == 4 - and root.childNodes.length == 4 - and root.childNodes[2] is nelem2 - and root.childNodes.item(2) is nelem2 - and root.childNodes[3] is nelem - and root.childNodes.item(3) is nelem - and nelem2.nextSibling is nelem - and nelem.previousSibling is nelem2 - and root.toxml() == "" - , "testInsertBefore -- node properly placed in tree") - dom.unlink() - -def _create_fragment_test_nodes(): - dom = parseString("") - orig = dom.createTextNode("original") - c1 = dom.createTextNode("foo") - c2 = dom.createTextNode("bar") - c3 = dom.createTextNode("bat") - dom.documentElement.appendChild(orig) - frag = dom.createDocumentFragment() - frag.appendChild(c1) - frag.appendChild(c2) - frag.appendChild(c3) - return dom, orig, c1, c2, c3, frag - -def testInsertBeforeFragment(): - dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() - dom.documentElement.insertBefore(frag, None) - confirm(tuple(dom.documentElement.childNodes) == (orig, c1, c2, c3), - "insertBefore(, None)") - frag.unlink() - dom.unlink() - # - dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() - dom.documentElement.insertBefore(frag, orig) - confirm(tuple(dom.documentElement.childNodes) == (c1, c2, c3, orig), - "insertBefore(, orig)") - frag.unlink() - dom.unlink() - -def testAppendChild(): - dom = parse(tstfile) - dom.documentElement.appendChild(dom.createComment(u"Hello")) - confirm(dom.documentElement.childNodes[-1].nodeName == "#comment") - confirm(dom.documentElement.childNodes[-1].data == "Hello") - dom.unlink() - -def testAppendChildFragment(): - dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() - dom.documentElement.appendChild(frag) - confirm(tuple(dom.documentElement.childNodes) == (orig, c1, c2, c3), - "appendChild()") - frag.unlink() - dom.unlink() - -def testReplaceChildFragment(): - dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() - dom.documentElement.replaceChild(frag, orig) - orig.unlink() - confirm(tuple(dom.documentElement.childNodes) == (c1, c2, c3), - "replaceChild()") - frag.unlink() - dom.unlink() - -def testLegalChildren(): - dom = Document() - elem = dom.createElement('element') - text = dom.createTextNode('text') - - try: dom.appendChild(text) - except HierarchyRequestErr: pass - else: - print "dom.appendChild didn't raise HierarchyRequestErr" - - dom.appendChild(elem) - try: dom.insertBefore(text, elem) - except HierarchyRequestErr: pass - else: - print "dom.appendChild didn't raise HierarchyRequestErr" - - try: dom.replaceChild(text, elem) - except HierarchyRequestErr: pass - else: - print "dom.appendChild didn't raise HierarchyRequestErr" - - nodemap = elem.attributes - try: nodemap.setNamedItem(text) - except HierarchyRequestErr: pass - else: - print "NamedNodeMap.setNamedItem didn't raise HierarchyRequestErr" - - try: nodemap.setNamedItemNS(text) - except HierarchyRequestErr: pass - else: - print "NamedNodeMap.setNamedItemNS didn't raise HierarchyRequestErr" - - elem.appendChild(text) - dom.unlink() - -def testNamedNodeMapSetItem(): - dom = Document() - elem = dom.createElement('element') - attrs = elem.attributes - attrs["foo"] = "bar" - a = attrs.item(0) - confirm(a.ownerDocument is dom, - "NamedNodeMap.__setitem__() sets ownerDocument") - confirm(a.ownerElement is elem, - "NamedNodeMap.__setitem__() sets ownerElement") - confirm(a.value == "bar", - "NamedNodeMap.__setitem__() sets value") - confirm(a.nodeValue == "bar", - "NamedNodeMap.__setitem__() sets nodeValue") - elem.unlink() - dom.unlink() - -def testNonZero(): - dom = parse(tstfile) - confirm(dom)# should not be zero - dom.appendChild(dom.createComment("foo")) - confirm(not dom.childNodes[-1].childNodes) - dom.unlink() - -def testUnlink(): - dom = parse(tstfile) - dom.unlink() - -def testElement(): - dom = Document() - dom.appendChild(dom.createElement("abc")) - confirm(dom.documentElement) - dom.unlink() - -def testAAA(): - dom = parseString("") - el = dom.documentElement - el.setAttribute("spam", "jam2") - confirm(el.toxml() == '', "testAAA") - a = el.getAttributeNode("spam") - confirm(a.ownerDocument is dom, - "setAttribute() sets ownerDocument") - confirm(a.ownerElement is dom.documentElement, - "setAttribute() sets ownerElement") - dom.unlink() - -def testAAB(): - dom = parseString("") - el = dom.documentElement - el.setAttribute("spam", "jam") - el.setAttribute("spam", "jam2") - confirm(el.toxml() == '', "testAAB") - dom.unlink() - -def testAddAttr(): - dom = Document() - child = dom.appendChild(dom.createElement("abc")) - - child.setAttribute("def", "ghi") - confirm(child.getAttribute("def") == "ghi") - confirm(child.attributes["def"].value == "ghi") - - child.setAttribute("jkl", "mno") - confirm(child.getAttribute("jkl") == "mno") - confirm(child.attributes["jkl"].value == "mno") - - confirm(len(child.attributes) == 2) - - child.setAttribute("def", "newval") - confirm(child.getAttribute("def") == "newval") - confirm(child.attributes["def"].value == "newval") - - confirm(len(child.attributes) == 2) - dom.unlink() - -def testDeleteAttr(): - dom = Document() - child = dom.appendChild(dom.createElement("abc")) - - confirm(len(child.attributes) == 0) - child.setAttribute("def", "ghi") - confirm(len(child.attributes) == 1) - del child.attributes["def"] - confirm(len(child.attributes) == 0) - dom.unlink() - -def testRemoveAttr(): - dom = Document() - child = dom.appendChild(dom.createElement("abc")) - - child.setAttribute("def", "ghi") - confirm(len(child.attributes) == 1) - child.removeAttribute("def") - confirm(len(child.attributes) == 0) - - dom.unlink() - -def testRemoveAttrNS(): - dom = Document() - child = dom.appendChild( - dom.createElementNS("http://www.python.org", "python:abc")) - child.setAttributeNS("http://www.w3.org", "xmlns:python", - "http://www.python.org") - child.setAttributeNS("http://www.python.org", "python:abcattr", "foo") - confirm(len(child.attributes) == 2) - child.removeAttributeNS("http://www.python.org", "abcattr") - confirm(len(child.attributes) == 1) - - dom.unlink() - -def testRemoveAttributeNode(): - dom = Document() - child = dom.appendChild(dom.createElement("foo")) - child.setAttribute("spam", "jam") - confirm(len(child.attributes) == 1) - node = child.getAttributeNode("spam") - child.removeAttributeNode(node) - confirm(len(child.attributes) == 0) - - dom.unlink() - -def testChangeAttr(): - dom = parseString("") - el = dom.documentElement - el.setAttribute("spam", "jam") - confirm(len(el.attributes) == 1) - el.setAttribute("spam", "bam") - confirm(len(el.attributes) == 1) - el.attributes["spam"] = "ham" - confirm(len(el.attributes) == 1) - el.setAttribute("spam2", "bam") - confirm(len(el.attributes) == 2) - el.attributes[ "spam2"] = "bam2" - confirm(len(el.attributes) == 2) - dom.unlink() - -def testGetAttrList(): - pass - -def testGetAttrValues(): pass - -def testGetAttrLength(): pass - -def testGetAttribute(): pass - -def testGetAttributeNS(): pass - -def testGetAttributeNode(): pass - -def testGetElementsByTagNameNS(): - d=""" - - """ - dom = parseString(d) - elem = dom.getElementsByTagNameNS("http://pyxml.sf.net/minidom","myelem") - confirm(len(elem) == 1) - dom.unlink() - -def testGetEmptyNodeListFromElementsByTagNameNS(): pass - -def testElementReprAndStr(): - dom = Document() - el = dom.appendChild(dom.createElement("abc")) - string1 = repr(el) - string2 = str(el) - confirm(string1 == string2) - dom.unlink() - -# commented out until Fredrick's fix is checked in -def _testElementReprAndStrUnicode(): - dom = Document() - el = dom.appendChild(dom.createElement(u"abc")) - string1 = repr(el) - string2 = str(el) - confirm(string1 == string2) - dom.unlink() - -# commented out until Fredrick's fix is checked in -def _testElementReprAndStrUnicodeNS(): - dom = Document() - el = dom.appendChild( - dom.createElementNS(u"http://www.slashdot.org", u"slash:abc")) - string1 = repr(el) - string2 = str(el) - confirm(string1 == string2) - confirm(string1.find("slash:abc") != -1) - dom.unlink() - -def testAttributeRepr(): - dom = Document() - el = dom.appendChild(dom.createElement(u"abc")) - node = el.setAttribute("abc", "def") - confirm(str(node) == repr(node)) - dom.unlink() - -def testTextNodeRepr(): pass - -def testWriteXML(): - str = '\n' - dom = parseString(str) - domstr = dom.toxml() - dom.unlink() - confirm(str == domstr) - -def testProcessingInstruction(): pass - -def testProcessingInstructionRepr(): pass - -def testTextRepr(): pass - -def testWriteText(): pass - -def testDocumentElement(): pass - -def testTooManyDocumentElements(): - doc = parseString("") - elem = doc.createElement("extra") - try: - doc.appendChild(elem) - except HierarchyRequestErr: - pass - else: - print "Failed to catch expected exception when" \ - " adding extra document element." - elem.unlink() - doc.unlink() - -def testCreateElementNS(): pass - -def testCreateAttributeNS(): pass - -def testParse(): pass - -def testParseString(): pass - -def testComment(): pass - -def testAttrListItem(): pass - -def testAttrListItems(): pass - -def testAttrListItemNS(): pass - -def testAttrListKeys(): pass - -def testAttrListKeysNS(): pass - -def testAttrListValues(): pass - -def testAttrListLength(): pass - -def testAttrList__getitem__(): pass - -def testAttrList__setitem__(): pass - -def testSetAttrValueandNodeValue(): pass - -def testParseElement(): pass - -def testParseAttributes(): pass - -def testParseElementNamespaces(): pass - -def testParseAttributeNamespaces(): pass - -def testParseProcessingInstructions(): pass - -def testChildNodes(): pass - -def testFirstChild(): pass - -def testHasChildNodes(): pass - -def testCloneElementShallow(): - dom, clone = _setupCloneElement(0) - confirm(len(clone.childNodes) == 0 - and clone.childNodes.length == 0 - and clone.parentNode is None - and clone.toxml() == '' - , "testCloneElementShallow") - dom.unlink() - -def testCloneElementDeep(): - dom, clone = _setupCloneElement(1) - confirm(len(clone.childNodes) == 1 - and clone.childNodes.length == 1 - and clone.parentNode is None - and clone.toxml() == '' - , "testCloneElementDeep") - dom.unlink() - -def _setupCloneElement(deep): - dom = parseString("") - root = dom.documentElement - clone = root.cloneNode(deep) - _testCloneElementCopiesAttributes( - root, clone, "testCloneElement" + (deep and "Deep" or "Shallow")) - # mutilate the original so shared data is detected - root.tagName = root.nodeName = "MODIFIED" - root.setAttribute("attr", "NEW VALUE") - root.setAttribute("added", "VALUE") - return dom, clone - -def _testCloneElementCopiesAttributes(e1, e2, test): - attrs1 = e1.attributes - attrs2 = e2.attributes - keys1 = attrs1.keys() - keys2 = attrs2.keys() - keys1.sort() - keys2.sort() - confirm(keys1 == keys2, "clone of element has same attribute keys") - for i in range(len(keys1)): - a1 = attrs1.item(i) - a2 = attrs2.item(i) - confirm(a1 is not a2 - and a1.value == a2.value - and a1.nodeValue == a2.nodeValue - and a1.namespaceURI == a2.namespaceURI - and a1.localName == a2.localName - , "clone of attribute node has proper attribute values") - confirm(a2.ownerElement is e2, - "clone of attribute node correctly owned") - - -def testCloneDocumentShallow(): pass - -def testCloneDocumentDeep(): pass - -def testCloneAttributeShallow(): pass - -def testCloneAttributeDeep(): pass - -def testClonePIShallow(): pass - -def testClonePIDeep(): pass - -def testNormalize(): - doc = parseString("") - root = doc.documentElement - root.appendChild(doc.createTextNode("first")) - root.appendChild(doc.createTextNode("second")) - confirm(len(root.childNodes) == 2 - and root.childNodes.length == 2, "testNormalize -- preparation") - doc.normalize() - confirm(len(root.childNodes) == 1 - and root.childNodes.length == 1 - and root.firstChild is root.lastChild - and root.firstChild.data == "firstsecond" - , "testNormalize -- result") - doc.unlink() - - doc = parseString("") - root = doc.documentElement - root.appendChild(doc.createTextNode("")) - doc.normalize() - confirm(len(root.childNodes) == 0 - and root.childNodes.length == 0, - "testNormalize -- single empty node removed") - doc.unlink() - -def testNormalizedAfterLoad(): - """ - Introduced this test on jython because - 1. Cpython guarantees, by the use of xml.dom.expatbuilder, - that all text nodes are normalized after loading. - 2. Jython has no expat, and thus uses xml.dom.pulldom.parse - (which uses any java SAX2 compliant parser), and which makes - no guarantees about text node normalization. - Thus we have to check if text nodes are normalized after a parse. - See this bug for further information - minidom chunks the character input on multi-line values - http://bugs.jython.org/issue1614 - """ - num_lines = 2 - # Up to 16K lines should be enough to guarantee failure without normalization - while num_lines <= 2**14: - doc_content = "\n".join( ("Line %d" % i for i in xrange(num_lines)) ) - doc_text = "%s" % doc_content - dom = parseString(doc_text) - node_content = dom.getElementsByTagName("document")[0].childNodes[0].nodeValue - confirm(node_content == doc_content, "testNormalizedAfterLoad") - num_lines *= 2 - -def testSiblings(): - doc = parseString("text?") - root = doc.documentElement - (pi, text, elm) = root.childNodes - - confirm(pi.nextSibling is text and - pi.previousSibling is None and - text.nextSibling is elm and - text.previousSibling is pi and - elm.nextSibling is None and - elm.previousSibling is text, "testSiblings") - - doc.unlink() - -def testParents(): - doc = parseString("") - root = doc.documentElement - elm1 = root.childNodes[0] - (elm2a, elm2b) = elm1.childNodes - elm3 = elm2b.childNodes[0] - - confirm(root.parentNode is doc and - elm1.parentNode is root and - elm2a.parentNode is elm1 and - elm2b.parentNode is elm1 and - elm3.parentNode is elm2b, "testParents") - - doc.unlink() - -def testNodeListItem(): - doc = parseString("") - children = doc.childNodes - docelem = children[0] - confirm(children[0] is children.item(0) - and children.item(1) is None - and docelem.childNodes.item(0) is docelem.childNodes[0] - and docelem.childNodes.item(1) is docelem.childNodes[1] - and docelem.childNodes.item(0).childNodes.item(0) is None, - "test NodeList.item()") - doc.unlink() - -def testSAX2DOM(): - from xml.dom import pulldom - - sax2dom = pulldom.SAX2DOM() - sax2dom.startDocument() - sax2dom.startElement("doc", {}) - sax2dom.characters("text") - sax2dom.startElement("subelm", {}) - sax2dom.characters("text") - sax2dom.endElement("subelm") - sax2dom.characters("text") - sax2dom.endElement("doc") - sax2dom.endDocument() - - doc = sax2dom.document - root = doc.documentElement - (text1, elm1, text2) = root.childNodes - text3 = elm1.childNodes[0] - - confirm(text1.previousSibling is None and - text1.nextSibling is elm1 and - elm1.previousSibling is text1 and - elm1.nextSibling is text2 and - text2.previousSibling is elm1 and - text2.nextSibling is None and - text3.previousSibling is None and - text3.nextSibling is None, "testSAX2DOM - siblings") - - confirm(root.parentNode is doc and - text1.parentNode is root and - elm1.parentNode is root and - text2.parentNode is root and - text3.parentNode is elm1, "testSAX2DOM - parents") - - doc.unlink() - -# --- MAIN PROGRAM - -names = globals().keys() -names.sort() - -failed = [] - -try: - Node.allnodes -except AttributeError: - # We don't actually have the minidom from the standard library, - # but are picking up the PyXML version from site-packages. - def check_allnodes(): - pass -else: - def check_allnodes(): - confirm(len(Node.allnodes) == 0, - "assertion: len(Node.allnodes) == 0") - if len(Node.allnodes): - print "Garbage left over:" - if verbose: - print Node.allnodes.items()[0:10] - else: - # Don't print specific nodes if repeatable results - # are needed - print len(Node.allnodes) - Node.allnodes = {} - -for name in names: - if name.startswith("test"): - func = globals()[name] - try: - func() - check_allnodes() - except: - failed.append(name) - print "Test Failed: ", name - sys.stdout.flush() - traceback.print_exception(*sys.exc_info()) - print `sys.exc_info()[1]` - Node.allnodes = {} - -if failed: - print "\n\n\n**** Check for failures in these tests:" - for name in failed: - print " " + name + test_main() diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py --- a/Lib/xml/dom/minidom.py +++ b/Lib/xml/dom/minidom.py @@ -1910,6 +1910,7 @@ toktype, rootNode = events.getEvent() events.expandNode(rootNode) events.clear() + rootNode.normalize() # fix for http://bugs.jython.org/issue1614 return rootNode def parse(file, parser=None, bufsize=None): -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Sat Feb 13 00:40:31 2016 From: jython-checkins at python.org (jim.baker) Date: Sat, 13 Feb 2016 05:40:31 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Missing_new_files_for_r7899?= Message-ID: <20160213054031.1699.60043@psf.io> https://hg.python.org/jython/rev/78320ba69644 changeset: 7900:78320ba69644 user: Jim Baker date: Fri Feb 12 22:40:12 2016 -0700 summary: Missing new files for r7899 files: src/org/python/core/PyListIterator.java | 49 ++++++++++++ src/org/python/core/PyTupleIterator.java | 23 +++++ 2 files changed, 72 insertions(+), 0 deletions(-) diff --git a/src/org/python/core/PyListIterator.java b/src/org/python/core/PyListIterator.java new file mode 100644 --- /dev/null +++ b/src/org/python/core/PyListIterator.java @@ -0,0 +1,49 @@ +package org.python.core; + +import org.python.expose.ExposedType; + + at ExposedType(name = "listiterator", base = PyIterator.class, isBaseType = false) +public class PyListIterator extends PyIterator { + + public static final PyType TYPE = PyType.fromClass(PyListIterator.class); + private PyList list; + private boolean stopped = false; + private int index = 0; + + public PyListIterator(PyList list) { + this.list = list; + } + + public PyObject __iternext__() { + synchronized (list) { + if (stopped) { + // Need to prevent the iteration from restarting, even after a StopIteration, + // due to the list subsequently growing. + // Keeping track of this flag ensures that next(it) will throw StopIteration + // exceptions on all subsequent invocations. + return null; + } else if (index >= list.size()) { + stopped = true; + return null; + } else { + return list.pyget(index++); + } + } + } + + /* Traverseproc implementation */ + @Override + public int traverse(Visitproc visit, Object arg) { + int retValue = super.traverse(visit, arg); + if (retValue != 0) { + return retValue; + } + return list == null ? 0 : visit.visit(list, arg); + } + + @Override + public boolean refersDirectlyTo(PyObject ob) { + return ob != null && (ob == list || super.refersDirectlyTo(ob)); + } + +} diff --git a/src/org/python/core/PyTupleIterator.java b/src/org/python/core/PyTupleIterator.java new file mode 100644 --- /dev/null +++ b/src/org/python/core/PyTupleIterator.java @@ -0,0 +1,23 @@ +package org.python.core; + +import org.python.expose.ExposedType; +import java.util.Iterator; + + at ExposedType(name = "tupleiterator", base = PyIterator.class, isBaseType = false) +public class PyTupleIterator extends PyIterator { + + public static final PyType TYPE = PyType.fromClass(PyTupleIterator.class); + private Iterator iterator; + + public PyTupleIterator(PyTuple tuple) { + iterator = tuple.getList().iterator(); + } + + public PyObject __iternext__() { + if (!iterator.hasNext()) { + return null; + } else { + return iterator.next(); + } + } +} -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 16 23:47:15 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 17 Feb 2016 04:47:15 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_list=2Esort_now_uses_=5F=5F?= =?utf-8?q?lt=5F=5F=2C_per_PEP_207_=28=22rich_comparisons=22=29=2E_Fixes_?= =?utf-8?q?=231767?= Message-ID: <20160217044715.1688.14895@psf.io> https://hg.python.org/jython/rev/ab3bea089f77 changeset: 7901:ab3bea089f77 user: Jeff Allen date: Tue Feb 16 21:47:09 2016 -0700 summary: list.sort now uses __lt__, per PEP 207 ("rich comparisons"). Fixes #1767 files: Lib/test/test_sort_jy.py | 61 +++++++++++++++++++++ src/org/python/core/PyList.java | 19 +++++- 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_sort_jy.py b/Lib/test/test_sort_jy.py --- a/Lib/test/test_sort_jy.py +++ b/Lib/test/test_sort_jy.py @@ -16,6 +16,67 @@ assert len(a_set - a_sorted_set) == len(a_sorted_set - a_set) == 0 + + def test_bug1767(self): + 'Test bug 1767 sorting when __cmp__ inconsistent with __eq__' + + class Tricky: + + def __init__(self, pair): + self.key0, self.key1 = pair + + def __cmp__(self, other): + # Duplicates standard sort for pairs + if self.key0 != other.key0: + return cmp(self.key0, other.key0) + return cmp(self.key1, other.key1) + + def __eq__(self,other): + # Compare only on second key: inconsistent with __cmp__()==0 + return self.key1 == other.key1 + + def __repr__(self): + return "(%d, %d)" %(self.key0, self.key1) + + def slowSorted(qq) : + 'Reference sort peformed by insertion using only <' + rr = list() + for q in qq : + i = 0 + for i in range(len(rr)) : + if q < rr[i] : + rr.insert(i,q) + break + else : + rr.append(q) + return rr + + def check(trick, answer): + 'Check list of Tricky matches list of pairs in order' + assert len(trick)==len(answer) + for t, a in zip(trick,answer) : + # print q, a + assert t.key0==a[0] and t.key1==a[1] + + # Test material + question = [(2, 5), (1, 3), (3, 0), (2, 3), (1, 1), (2, 3), + (3, 5), (1, 0), (2, 0), (2, 1), (1, 4), (2, 5), + (1, 1), (3, 5), (2, 5), (1, 0), (3, 2), (1, 1), + (2, 2), (2, 2), (1, 0), (2, 3), (2, 1), (3, 2)] + answer = slowSorted(question) + + # Test library function + que = [Tricky(p) for p in question] + que.sort() + check(que, answer) + + # Test library function in reverse + que = [Tricky(p) for p in question] + que.sort(reverse=True) + check(que, list(reversed(answer))) + + + def test_main(): test_support.run_unittest(SortTest) diff --git a/src/org/python/core/PyList.java b/src/org/python/core/PyList.java --- a/src/org/python/core/PyList.java +++ b/src/org/python/core/PyList.java @@ -814,7 +814,15 @@ } public int compare(PyObject o1, PyObject o2) { - int result = o1._cmp(o2); + // PEP 207 specifies that sort should only depend on "less-than" (Issue #1767) + int result; + if (o1._lt(o2).__nonzero__()) { + result = -1; + } else if (o2._lt(o1).__nonzero__()) { + result = 1; + } else { + result = 0; + } if (this.list.gListAllocatedStatus >= 0) { throw Py.ValueError("list modified during sort"); } @@ -905,7 +913,14 @@ if (cmp != null && cmp != Py.None) { result = cmp.__call__(o1.key, o2.key).asInt(); } else { - result = o1.key._cmp(o2.key); + // PEP 207 specifies that sort should only depend on "less-than" (Issue #1767) + if (o1.key._lt(o2.key).__nonzero__()) { + result = -1; + } else if (o2.key._lt(o1.key).__nonzero__()) { + result = 1; + } else { + result = 0; + } } if (this.list.gListAllocatedStatus >= 0) { throw Py.ValueError("list modified during sort"); -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 16 23:48:28 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 17 Feb 2016 04:48:28 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Do_not_need_Jython-specific?= =?utf-8?q?_version_of_test=5Fargparse=2C_as_of_2=2E7?= Message-ID: <20160217044825.56714.75283@psf.io> https://hg.python.org/jython/rev/eefea95f6a5d changeset: 7902:eefea95f6a5d user: Jim Baker date: Tue Feb 16 21:48:11 2016 -0700 summary: Do not need Jython-specific version of test_argparse, as of 2.7 files: Lib/test/test_argparse.py | 4652 ------------------------- 1 files changed, 0 insertions(+), 4652 deletions(-) diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py deleted file mode 100644 --- a/Lib/test/test_argparse.py +++ /dev/null @@ -1,4652 +0,0 @@ -# Author: Steven J. Bethard . - -import codecs -import inspect -import os -import shutil -import stat -import sys -import textwrap -import tempfile -import unittest -import argparse - -from StringIO import StringIO - -class StdIOBuffer(StringIO): - pass - -from test import test_support - -class TestCase(unittest.TestCase): - - def assertEqual(self, obj1, obj2): - if obj1 != obj2: - print('') - print(repr(obj1)) - print(repr(obj2)) - print(obj1) - print(obj2) - super(TestCase, self).assertEqual(obj1, obj2) - - def setUp(self): - # The tests assume that line wrapping occurs at 80 columns, but this - # behaviour can be overridden by setting the COLUMNS environment - # variable. To ensure that this assumption is true, unset COLUMNS. - env = test_support.EnvironmentVarGuard() - env.unset("COLUMNS") - self.addCleanup(env.__exit__) - - -class TempDirMixin(object): - - def setUp(self): - self.temp_dir = tempfile.mkdtemp() - self.old_dir = os.getcwd() - os.chdir(self.temp_dir) - - def tearDown(self): - os.chdir(self.old_dir) - shutil.rmtree(self.temp_dir, True) - - def create_readonly_file(self, filename): - file_path = os.path.join(self.temp_dir, filename) - with open(file_path, 'w') as file: - file.write(filename) - os.chmod(file_path, stat.S_IREAD) - -class Sig(object): - - def __init__(self, *args, **kwargs): - self.args = args - self.kwargs = kwargs - - -class NS(object): - - def __init__(self, **kwargs): - self.__dict__.update(kwargs) - - def __repr__(self): - sorted_items = sorted(self.__dict__.items()) - kwarg_str = ', '.join(['%s=%r' % tup for tup in sorted_items]) - return '%s(%s)' % (type(self).__name__, kwarg_str) - - __hash__ = None - - def __eq__(self, other): - return vars(self) == vars(other) - - def __ne__(self, other): - return not (self == other) - - -class ArgumentParserError(Exception): - - def __init__(self, message, stdout=None, stderr=None, error_code=None): - Exception.__init__(self, message, stdout, stderr) - self.message = message - self.stdout = stdout - self.stderr = stderr - self.error_code = error_code - - -def stderr_to_parser_error(parse_args, *args, **kwargs): - # if this is being called recursively and stderr or stdout is already being - # redirected, simply call the function and let the enclosing function - # catch the exception - if isinstance(sys.stderr, StdIOBuffer) or isinstance(sys.stdout, StdIOBuffer): - return parse_args(*args, **kwargs) - - # if this is not being called recursively, redirect stderr and - # use it as the ArgumentParserError message - old_stdout = sys.stdout - old_stderr = sys.stderr - sys.stdout = StdIOBuffer() - sys.stderr = StdIOBuffer() - try: - try: - result = parse_args(*args, **kwargs) - for key in list(vars(result)): - if getattr(result, key) is sys.stdout: - setattr(result, key, old_stdout) - if getattr(result, key) is sys.stderr: - setattr(result, key, old_stderr) - return result - except SystemExit: - code = sys.exc_info()[1].code - stdout = sys.stdout.getvalue() - stderr = sys.stderr.getvalue() - raise ArgumentParserError("SystemExit", stdout, stderr, code) - finally: - sys.stdout = old_stdout - sys.stderr = old_stderr - - -class ErrorRaisingArgumentParser(argparse.ArgumentParser): - - def parse_args(self, *args, **kwargs): - parse_args = super(ErrorRaisingArgumentParser, self).parse_args - return stderr_to_parser_error(parse_args, *args, **kwargs) - - def exit(self, *args, **kwargs): - exit = super(ErrorRaisingArgumentParser, self).exit - return stderr_to_parser_error(exit, *args, **kwargs) - - def error(self, *args, **kwargs): - error = super(ErrorRaisingArgumentParser, self).error - return stderr_to_parser_error(error, *args, **kwargs) - - -class ParserTesterMetaclass(type): - """Adds parser tests using the class attributes. - - Classes of this type should specify the following attributes: - - argument_signatures -- a list of Sig objects which specify - the signatures of Argument objects to be created - failures -- a list of args lists that should cause the parser - to fail - successes -- a list of (initial_args, options, remaining_args) tuples - where initial_args specifies the string args to be parsed, - options is a dict that should match the vars() of the options - parsed out of initial_args, and remaining_args should be any - remaining unparsed arguments - """ - - def __init__(cls, name, bases, bodydict): - if name == 'ParserTestCase': - return - - # default parser signature is empty - if not hasattr(cls, 'parser_signature'): - cls.parser_signature = Sig() - if not hasattr(cls, 'parser_class'): - cls.parser_class = ErrorRaisingArgumentParser - - # --------------------------------------- - # functions for adding optional arguments - # --------------------------------------- - def no_groups(parser, argument_signatures): - """Add all arguments directly to the parser""" - for sig in argument_signatures: - parser.add_argument(*sig.args, **sig.kwargs) - - def one_group(parser, argument_signatures): - """Add all arguments under a single group in the parser""" - group = parser.add_argument_group('foo') - for sig in argument_signatures: - group.add_argument(*sig.args, **sig.kwargs) - - def many_groups(parser, argument_signatures): - """Add each argument in its own group to the parser""" - for i, sig in enumerate(argument_signatures): - group = parser.add_argument_group('foo:%i' % i) - group.add_argument(*sig.args, **sig.kwargs) - - # -------------------------- - # functions for parsing args - # -------------------------- - def listargs(parser, args): - """Parse the args by passing in a list""" - return parser.parse_args(args) - - def sysargs(parser, args): - """Parse the args by defaulting to sys.argv""" - old_sys_argv = sys.argv - sys.argv = [old_sys_argv[0]] + args - try: - return parser.parse_args() - finally: - sys.argv = old_sys_argv - - # class that holds the combination of one optional argument - # addition method and one arg parsing method - class AddTests(object): - - def __init__(self, tester_cls, add_arguments, parse_args): - self._add_arguments = add_arguments - self._parse_args = parse_args - - add_arguments_name = self._add_arguments.__name__ - parse_args_name = self._parse_args.__name__ - for test_func in [self.test_failures, self.test_successes]: - func_name = test_func.__name__ - names = func_name, add_arguments_name, parse_args_name - test_name = '_'.join(names) - - def wrapper(self, test_func=test_func): - test_func(self) - try: - wrapper.__name__ = test_name - except TypeError: - pass - setattr(tester_cls, test_name, wrapper) - - def _get_parser(self, tester): - args = tester.parser_signature.args - kwargs = tester.parser_signature.kwargs - parser = tester.parser_class(*args, **kwargs) - self._add_arguments(parser, tester.argument_signatures) - return parser - - def test_failures(self, tester): - parser = self._get_parser(tester) - for args_str in tester.failures: - args = args_str.split() - raises = tester.assertRaises - raises(ArgumentParserError, parser.parse_args, args) - - def test_successes(self, tester): - parser = self._get_parser(tester) - for args, expected_ns in tester.successes: - if isinstance(args, str): - args = args.split() - result_ns = self._parse_args(parser, args) - tester.assertEqual(expected_ns, result_ns) - - # add tests for each combination of an optionals adding method - # and an arg parsing method - for add_arguments in [no_groups, one_group, many_groups]: - for parse_args in [listargs, sysargs]: - AddTests(cls, add_arguments, parse_args) - -bases = TestCase, -ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {}) - -# =============== -# Optionals tests -# =============== - -class TestOptionalsSingleDash(ParserTestCase): - """Test an Optional with a single-dash option string""" - - argument_signatures = [Sig('-x')] - failures = ['-x', 'a', '--foo', '-x --foo', '-x -y'] - successes = [ - ('', NS(x=None)), - ('-x a', NS(x='a')), - ('-xa', NS(x='a')), - ('-x -1', NS(x='-1')), - ('-x-1', NS(x='-1')), - ] - - -class TestOptionalsSingleDashCombined(ParserTestCase): - """Test an Optional with a single-dash option string""" - - argument_signatures = [ - Sig('-x', action='store_true'), - Sig('-yyy', action='store_const', const=42), - Sig('-z'), - ] - failures = ['a', '--foo', '-xa', '-x --foo', '-x -z', '-z -x', - '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza'] - successes = [ - ('', NS(x=False, yyy=None, z=None)), - ('-x', NS(x=True, yyy=None, z=None)), - ('-za', NS(x=False, yyy=None, z='a')), - ('-z a', NS(x=False, yyy=None, z='a')), - ('-xza', NS(x=True, yyy=None, z='a')), - ('-xz a', NS(x=True, yyy=None, z='a')), - ('-x -za', NS(x=True, yyy=None, z='a')), - ('-x -z a', NS(x=True, yyy=None, z='a')), - ('-y', NS(x=False, yyy=42, z=None)), - ('-yyy', NS(x=False, yyy=42, z=None)), - ('-x -yyy -za', NS(x=True, yyy=42, z='a')), - ('-x -yyy -z a', NS(x=True, yyy=42, z='a')), - ] - - -class TestOptionalsSingleDashLong(ParserTestCase): - """Test an Optional with a multi-character single-dash option string""" - - argument_signatures = [Sig('-foo')] - failures = ['-foo', 'a', '--foo', '-foo --foo', '-foo -y', '-fooa'] - successes = [ - ('', NS(foo=None)), - ('-foo a', NS(foo='a')), - ('-foo -1', NS(foo='-1')), - ('-fo a', NS(foo='a')), - ('-f a', NS(foo='a')), - ] - - -class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase): - """Test Optionals where option strings are subsets of each other""" - - argument_signatures = [Sig('-f'), Sig('-foobar'), Sig('-foorab')] - failures = ['-f', '-foo', '-fo', '-foo b', '-foob', '-fooba', '-foora'] - successes = [ - ('', NS(f=None, foobar=None, foorab=None)), - ('-f a', NS(f='a', foobar=None, foorab=None)), - ('-fa', NS(f='a', foobar=None, foorab=None)), - ('-foa', NS(f='oa', foobar=None, foorab=None)), - ('-fooa', NS(f='ooa', foobar=None, foorab=None)), - ('-foobar a', NS(f=None, foobar='a', foorab=None)), - ('-foorab a', NS(f=None, foobar=None, foorab='a')), - ] - - -class TestOptionalsSingleDashAmbiguous(ParserTestCase): - """Test Optionals that partially match but are not subsets""" - - argument_signatures = [Sig('-foobar'), Sig('-foorab')] - failures = ['-f', '-f a', '-fa', '-foa', '-foo', '-fo', '-foo b'] - successes = [ - ('', NS(foobar=None, foorab=None)), - ('-foob a', NS(foobar='a', foorab=None)), - ('-foor a', NS(foobar=None, foorab='a')), - ('-fooba a', NS(foobar='a', foorab=None)), - ('-foora a', NS(foobar=None, foorab='a')), - ('-foobar a', NS(foobar='a', foorab=None)), - ('-foorab a', NS(foobar=None, foorab='a')), - ] - - -class TestOptionalsNumeric(ParserTestCase): - """Test an Optional with a short opt string""" - - argument_signatures = [Sig('-1', dest='one')] - failures = ['-1', 'a', '-1 --foo', '-1 -y', '-1 -1', '-1 -2'] - successes = [ - ('', NS(one=None)), - ('-1 a', NS(one='a')), - ('-1a', NS(one='a')), - ('-1-2', NS(one='-2')), - ] - - -class TestOptionalsDoubleDash(ParserTestCase): - """Test an Optional with a double-dash option string""" - - argument_signatures = [Sig('--foo')] - failures = ['--foo', '-f', '-f a', 'a', '--foo -x', '--foo --bar'] - successes = [ - ('', NS(foo=None)), - ('--foo a', NS(foo='a')), - ('--foo=a', NS(foo='a')), - ('--foo -2.5', NS(foo='-2.5')), - ('--foo=-2.5', NS(foo='-2.5')), - ] - - -class TestOptionalsDoubleDashPartialMatch(ParserTestCase): - """Tests partial matching with a double-dash option string""" - - argument_signatures = [ - Sig('--badger', action='store_true'), - Sig('--bat'), - ] - failures = ['--bar', '--b', '--ba', '--b=2', '--ba=4', '--badge 5'] - successes = [ - ('', NS(badger=False, bat=None)), - ('--bat X', NS(badger=False, bat='X')), - ('--bad', NS(badger=True, bat=None)), - ('--badg', NS(badger=True, bat=None)), - ('--badge', NS(badger=True, bat=None)), - ('--badger', NS(badger=True, bat=None)), - ] - - -class TestOptionalsDoubleDashPrefixMatch(ParserTestCase): - """Tests when one double-dash option string is a prefix of another""" - - argument_signatures = [ - Sig('--badger', action='store_true'), - Sig('--ba'), - ] - failures = ['--bar', '--b', '--ba', '--b=2', '--badge 5'] - successes = [ - ('', NS(badger=False, ba=None)), - ('--ba X', NS(badger=False, ba='X')), - ('--ba=X', NS(badger=False, ba='X')), - ('--bad', NS(badger=True, ba=None)), - ('--badg', NS(badger=True, ba=None)), - ('--badge', NS(badger=True, ba=None)), - ('--badger', NS(badger=True, ba=None)), - ] - - -class TestOptionalsSingleDoubleDash(ParserTestCase): - """Test an Optional with single- and double-dash option strings""" - - argument_signatures = [ - Sig('-f', action='store_true'), - Sig('--bar'), - Sig('-baz', action='store_const', const=42), - ] - failures = ['--bar', '-fbar', '-fbaz', '-bazf', '-b B', 'B'] - successes = [ - ('', NS(f=False, bar=None, baz=None)), - ('-f', NS(f=True, bar=None, baz=None)), - ('--ba B', NS(f=False, bar='B', baz=None)), - ('-f --bar B', NS(f=True, bar='B', baz=None)), - ('-f -b', NS(f=True, bar=None, baz=42)), - ('-ba -f', NS(f=True, bar=None, baz=42)), - ] - - -class TestOptionalsAlternatePrefixChars(ParserTestCase): - """Test an Optional with option strings with custom prefixes""" - - parser_signature = Sig(prefix_chars='+:/', add_help=False) - argument_signatures = [ - Sig('+f', action='store_true'), - Sig('::bar'), - Sig('/baz', action='store_const', const=42), - ] - failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz', '-h', '--help', '+h', '::help', '/help'] - successes = [ - ('', NS(f=False, bar=None, baz=None)), - ('+f', NS(f=True, bar=None, baz=None)), - ('::ba B', NS(f=False, bar='B', baz=None)), - ('+f ::bar B', NS(f=True, bar='B', baz=None)), - ('+f /b', NS(f=True, bar=None, baz=42)), - ('/ba +f', NS(f=True, bar=None, baz=42)), - ] - - -class TestOptionalsAlternatePrefixCharsAddedHelp(ParserTestCase): - """When ``-`` not in prefix_chars, default operators created for help - should use the prefix_chars in use rather than - or -- - http://bugs.python.org/issue9444""" - - parser_signature = Sig(prefix_chars='+:/', add_help=True) - argument_signatures = [ - Sig('+f', action='store_true'), - Sig('::bar'), - Sig('/baz', action='store_const', const=42), - ] - failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz'] - successes = [ - ('', NS(f=False, bar=None, baz=None)), - ('+f', NS(f=True, bar=None, baz=None)), - ('::ba B', NS(f=False, bar='B', baz=None)), - ('+f ::bar B', NS(f=True, bar='B', baz=None)), - ('+f /b', NS(f=True, bar=None, baz=42)), - ('/ba +f', NS(f=True, bar=None, baz=42)) - ] - - -class TestOptionalsAlternatePrefixCharsMultipleShortArgs(ParserTestCase): - """Verify that Optionals must be called with their defined prefixes""" - - parser_signature = Sig(prefix_chars='+-', add_help=False) - argument_signatures = [ - Sig('-x', action='store_true'), - Sig('+y', action='store_true'), - Sig('+z', action='store_true'), - ] - failures = ['-w', - '-xyz', - '+x', - '-y', - '+xyz', - ] - successes = [ - ('', NS(x=False, y=False, z=False)), - ('-x', NS(x=True, y=False, z=False)), - ('+y -x', NS(x=True, y=True, z=False)), - ('+yz -x', NS(x=True, y=True, z=True)), - ] - - -class TestOptionalsShortLong(ParserTestCase): - """Test a combination of single- and double-dash option strings""" - - argument_signatures = [ - Sig('-v', '--verbose', '-n', '--noisy', action='store_true'), - ] - failures = ['--x --verbose', '-N', 'a', '-v x'] - successes = [ - ('', NS(verbose=False)), - ('-v', NS(verbose=True)), - ('--verbose', NS(verbose=True)), - ('-n', NS(verbose=True)), - ('--noisy', NS(verbose=True)), - ] - - -class TestOptionalsDest(ParserTestCase): - """Tests various means of setting destination""" - - argument_signatures = [Sig('--foo-bar'), Sig('--baz', dest='zabbaz')] - failures = ['a'] - successes = [ - ('--foo-bar f', NS(foo_bar='f', zabbaz=None)), - ('--baz g', NS(foo_bar=None, zabbaz='g')), - ('--foo-bar h --baz i', NS(foo_bar='h', zabbaz='i')), - ('--baz j --foo-bar k', NS(foo_bar='k', zabbaz='j')), - ] - - -class TestOptionalsDefault(ParserTestCase): - """Tests specifying a default for an Optional""" - - argument_signatures = [Sig('-x'), Sig('-y', default=42)] - failures = ['a'] - successes = [ - ('', NS(x=None, y=42)), - ('-xx', NS(x='x', y=42)), - ('-yy', NS(x=None, y='y')), - ] - - -class TestOptionalsNargsDefault(ParserTestCase): - """Tests not specifying the number of args for an Optional""" - - argument_signatures = [Sig('-x')] - failures = ['a', '-x'] - successes = [ - ('', NS(x=None)), - ('-x a', NS(x='a')), - ] - - -class TestOptionalsNargs1(ParserTestCase): - """Tests specifying the 1 arg for an Optional""" - - argument_signatures = [Sig('-x', nargs=1)] - failures = ['a', '-x'] - successes = [ - ('', NS(x=None)), - ('-x a', NS(x=['a'])), - ] - - -class TestOptionalsNargs3(ParserTestCase): - """Tests specifying the 3 args for an Optional""" - - argument_signatures = [Sig('-x', nargs=3)] - failures = ['a', '-x', '-x a', '-x a b', 'a -x', 'a -x b'] - successes = [ - ('', NS(x=None)), - ('-x a b c', NS(x=['a', 'b', 'c'])), - ] - - -class TestOptionalsNargsOptional(ParserTestCase): - """Tests specifying an Optional arg for an Optional""" - - argument_signatures = [ - Sig('-w', nargs='?'), - Sig('-x', nargs='?', const=42), - Sig('-y', nargs='?', default='spam'), - Sig('-z', nargs='?', type=int, const='42', default='84'), - ] - failures = ['2'] - successes = [ - ('', NS(w=None, x=None, y='spam', z=84)), - ('-w', NS(w=None, x=None, y='spam', z=84)), - ('-w 2', NS(w='2', x=None, y='spam', z=84)), - ('-x', NS(w=None, x=42, y='spam', z=84)), - ('-x 2', NS(w=None, x='2', y='spam', z=84)), - ('-y', NS(w=None, x=None, y=None, z=84)), - ('-y 2', NS(w=None, x=None, y='2', z=84)), - ('-z', NS(w=None, x=None, y='spam', z=42)), - ('-z 2', NS(w=None, x=None, y='spam', z=2)), - ] - - -class TestOptionalsNargsZeroOrMore(ParserTestCase): - """Tests specifying an args for an Optional that accepts zero or more""" - - argument_signatures = [ - Sig('-x', nargs='*'), - Sig('-y', nargs='*', default='spam'), - ] - failures = ['a'] - successes = [ - ('', NS(x=None, y='spam')), - ('-x', NS(x=[], y='spam')), - ('-x a', NS(x=['a'], y='spam')), - ('-x a b', NS(x=['a', 'b'], y='spam')), - ('-y', NS(x=None, y=[])), - ('-y a', NS(x=None, y=['a'])), - ('-y a b', NS(x=None, y=['a', 'b'])), - ] - - -class TestOptionalsNargsOneOrMore(ParserTestCase): - """Tests specifying an args for an Optional that accepts one or more""" - - argument_signatures = [ - Sig('-x', nargs='+'), - Sig('-y', nargs='+', default='spam'), - ] - failures = ['a', '-x', '-y', 'a -x', 'a -y b'] - successes = [ - ('', NS(x=None, y='spam')), - ('-x a', NS(x=['a'], y='spam')), - ('-x a b', NS(x=['a', 'b'], y='spam')), - ('-y a', NS(x=None, y=['a'])), - ('-y a b', NS(x=None, y=['a', 'b'])), - ] - - -class TestOptionalsChoices(ParserTestCase): - """Tests specifying the choices for an Optional""" - - argument_signatures = [ - Sig('-f', choices='abc'), - Sig('-g', type=int, choices=range(5))] - failures = ['a', '-f d', '-fad', '-ga', '-g 6'] - successes = [ - ('', NS(f=None, g=None)), - ('-f a', NS(f='a', g=None)), - ('-f c', NS(f='c', g=None)), - ('-g 0', NS(f=None, g=0)), - ('-g 03', NS(f=None, g=3)), - ('-fb -g4', NS(f='b', g=4)), - ] - - -class TestOptionalsRequired(ParserTestCase): - """Tests the an optional action that is required""" - - argument_signatures = [ - Sig('-x', type=int, required=True), - ] - failures = ['a', ''] - successes = [ - ('-x 1', NS(x=1)), - ('-x42', NS(x=42)), - ] - - -class TestOptionalsActionStore(ParserTestCase): - """Tests the store action for an Optional""" - - argument_signatures = [Sig('-x', action='store')] - failures = ['a', 'a -x'] - successes = [ - ('', NS(x=None)), - ('-xfoo', NS(x='foo')), - ] - - -class TestOptionalsActionStoreConst(ParserTestCase): - """Tests the store_const action for an Optional""" - - argument_signatures = [Sig('-y', action='store_const', const=object)] - failures = ['a'] - successes = [ - ('', NS(y=None)), - ('-y', NS(y=object)), - ] - - -class TestOptionalsActionStoreFalse(ParserTestCase): - """Tests the store_false action for an Optional""" - - argument_signatures = [Sig('-z', action='store_false')] - failures = ['a', '-za', '-z a'] - successes = [ - ('', NS(z=True)), - ('-z', NS(z=False)), - ] - - -class TestOptionalsActionStoreTrue(ParserTestCase): - """Tests the store_true action for an Optional""" - - argument_signatures = [Sig('--apple', action='store_true')] - failures = ['a', '--apple=b', '--apple b'] - successes = [ - ('', NS(apple=False)), - ('--apple', NS(apple=True)), - ] - - -class TestOptionalsActionAppend(ParserTestCase): - """Tests the append action for an Optional""" - - argument_signatures = [Sig('--baz', action='append')] - failures = ['a', '--baz', 'a --baz', '--baz a b'] - successes = [ - ('', NS(baz=None)), - ('--baz a', NS(baz=['a'])), - ('--baz a --baz b', NS(baz=['a', 'b'])), - ] - - -class TestOptionalsActionAppendWithDefault(ParserTestCase): - """Tests the append action for an Optional""" - - argument_signatures = [Sig('--baz', action='append', default=['X'])] - failures = ['a', '--baz', 'a --baz', '--baz a b'] - successes = [ - ('', NS(baz=['X'])), - ('--baz a', NS(baz=['X', 'a'])), - ('--baz a --baz b', NS(baz=['X', 'a', 'b'])), - ] - - -class TestOptionalsActionAppendConst(ParserTestCase): - """Tests the append_const action for an Optional""" - - argument_signatures = [ - Sig('-b', action='append_const', const=Exception), - Sig('-c', action='append', dest='b'), - ] - failures = ['a', '-c', 'a -c', '-bx', '-b x'] - successes = [ - ('', NS(b=None)), - ('-b', NS(b=[Exception])), - ('-b -cx -b -cyz', NS(b=[Exception, 'x', Exception, 'yz'])), - ] - - -class TestOptionalsActionAppendConstWithDefault(ParserTestCase): - """Tests the append_const action for an Optional""" - - argument_signatures = [ - Sig('-b', action='append_const', const=Exception, default=['X']), - Sig('-c', action='append', dest='b'), - ] - failures = ['a', '-c', 'a -c', '-bx', '-b x'] - successes = [ - ('', NS(b=['X'])), - ('-b', NS(b=['X', Exception])), - ('-b -cx -b -cyz', NS(b=['X', Exception, 'x', Exception, 'yz'])), - ] - - -class TestOptionalsActionCount(ParserTestCase): - """Tests the count action for an Optional""" - - argument_signatures = [Sig('-x', action='count')] - failures = ['a', '-x a', '-x b', '-x a -x b'] - successes = [ - ('', NS(x=None)), - ('-x', NS(x=1)), - ] - - -# ================ -# Positional tests -# ================ - -class TestPositionalsNargsNone(ParserTestCase): - """Test a Positional that doesn't specify nargs""" - - argument_signatures = [Sig('foo')] - failures = ['', '-x', 'a b'] - successes = [ - ('a', NS(foo='a')), - ] - - -class TestPositionalsNargs1(ParserTestCase): - """Test a Positional that specifies an nargs of 1""" - - argument_signatures = [Sig('foo', nargs=1)] - failures = ['', '-x', 'a b'] - successes = [ - ('a', NS(foo=['a'])), - ] - - -class TestPositionalsNargs2(ParserTestCase): - """Test a Positional that specifies an nargs of 2""" - - argument_signatures = [Sig('foo', nargs=2)] - failures = ['', 'a', '-x', 'a b c'] - successes = [ - ('a b', NS(foo=['a', 'b'])), - ] - - -class TestPositionalsNargsZeroOrMore(ParserTestCase): - """Test a Positional that specifies unlimited nargs""" - - argument_signatures = [Sig('foo', nargs='*')] - failures = ['-x'] - successes = [ - ('', NS(foo=[])), - ('a', NS(foo=['a'])), - ('a b', NS(foo=['a', 'b'])), - ] - - -class TestPositionalsNargsZeroOrMoreDefault(ParserTestCase): - """Test a Positional that specifies unlimited nargs and a default""" - - argument_signatures = [Sig('foo', nargs='*', default='bar')] - failures = ['-x'] - successes = [ - ('', NS(foo='bar')), - ('a', NS(foo=['a'])), - ('a b', NS(foo=['a', 'b'])), - ] - - -class TestPositionalsNargsOneOrMore(ParserTestCase): - """Test a Positional that specifies one or more nargs""" - - argument_signatures = [Sig('foo', nargs='+')] - failures = ['', '-x'] - successes = [ - ('a', NS(foo=['a'])), - ('a b', NS(foo=['a', 'b'])), - ] - - -class TestPositionalsNargsOptional(ParserTestCase): - """Tests an Optional Positional""" - - argument_signatures = [Sig('foo', nargs='?')] - failures = ['-x', 'a b'] - successes = [ - ('', NS(foo=None)), - ('a', NS(foo='a')), - ] - - -class TestPositionalsNargsOptionalDefault(ParserTestCase): - """Tests an Optional Positional with a default value""" - - argument_signatures = [Sig('foo', nargs='?', default=42)] - failures = ['-x', 'a b'] - successes = [ - ('', NS(foo=42)), - ('a', NS(foo='a')), - ] - - -class TestPositionalsNargsOptionalConvertedDefault(ParserTestCase): - """Tests an Optional Positional with a default value - that needs to be converted to the appropriate type. - """ - - argument_signatures = [ - Sig('foo', nargs='?', type=int, default='42'), - ] - failures = ['-x', 'a b', '1 2'] - successes = [ - ('', NS(foo=42)), - ('1', NS(foo=1)), - ] - - -class TestPositionalsNargsNoneNone(ParserTestCase): - """Test two Positionals that don't specify nargs""" - - argument_signatures = [Sig('foo'), Sig('bar')] - failures = ['', '-x', 'a', 'a b c'] - successes = [ - ('a b', NS(foo='a', bar='b')), - ] - - -class TestPositionalsNargsNone1(ParserTestCase): - """Test a Positional with no nargs followed by one with 1""" - - argument_signatures = [Sig('foo'), Sig('bar', nargs=1)] - failures = ['', '--foo', 'a', 'a b c'] - successes = [ - ('a b', NS(foo='a', bar=['b'])), - ] - - -class TestPositionalsNargs2None(ParserTestCase): - """Test a Positional with 2 nargs followed by one with none""" - - argument_signatures = [Sig('foo', nargs=2), Sig('bar')] - failures = ['', '--foo', 'a', 'a b', 'a b c d'] - successes = [ - ('a b c', NS(foo=['a', 'b'], bar='c')), - ] - - -class TestPositionalsNargsNoneZeroOrMore(ParserTestCase): - """Test a Positional with no nargs followed by one with unlimited""" - - argument_signatures = [Sig('foo'), Sig('bar', nargs='*')] - failures = ['', '--foo'] - successes = [ - ('a', NS(foo='a', bar=[])), - ('a b', NS(foo='a', bar=['b'])), - ('a b c', NS(foo='a', bar=['b', 'c'])), - ] - - -class TestPositionalsNargsNoneOneOrMore(ParserTestCase): - """Test a Positional with no nargs followed by one with one or more""" - - argument_signatures = [Sig('foo'), Sig('bar', nargs='+')] - failures = ['', '--foo', 'a'] - successes = [ - ('a b', NS(foo='a', bar=['b'])), - ('a b c', NS(foo='a', bar=['b', 'c'])), - ] - - -class TestPositionalsNargsNoneOptional(ParserTestCase): - """Test a Positional with no nargs followed by one with an Optional""" - - argument_signatures = [Sig('foo'), Sig('bar', nargs='?')] - failures = ['', '--foo', 'a b c'] - successes = [ - ('a', NS(foo='a', bar=None)), - ('a b', NS(foo='a', bar='b')), - ] - - -class TestPositionalsNargsZeroOrMoreNone(ParserTestCase): - """Test a Positional with unlimited nargs followed by one with none""" - - argument_signatures = [Sig('foo', nargs='*'), Sig('bar')] - failures = ['', '--foo'] - successes = [ - ('a', NS(foo=[], bar='a')), - ('a b', NS(foo=['a'], bar='b')), - ('a b c', NS(foo=['a', 'b'], bar='c')), - ] - - -class TestPositionalsNargsOneOrMoreNone(ParserTestCase): - """Test a Positional with one or more nargs followed by one with none""" - - argument_signatures = [Sig('foo', nargs='+'), Sig('bar')] - failures = ['', '--foo', 'a'] - successes = [ - ('a b', NS(foo=['a'], bar='b')), - ('a b c', NS(foo=['a', 'b'], bar='c')), - ] - - -class TestPositionalsNargsOptionalNone(ParserTestCase): - """Test a Positional with an Optional nargs followed by one with none""" - - argument_signatures = [Sig('foo', nargs='?', default=42), Sig('bar')] - failures = ['', '--foo', 'a b c'] - successes = [ - ('a', NS(foo=42, bar='a')), - ('a b', NS(foo='a', bar='b')), - ] - - -class TestPositionalsNargs2ZeroOrMore(ParserTestCase): - """Test a Positional with 2 nargs followed by one with unlimited""" - - argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='*')] - failures = ['', '--foo', 'a'] - successes = [ - ('a b', NS(foo=['a', 'b'], bar=[])), - ('a b c', NS(foo=['a', 'b'], bar=['c'])), - ] - - -class TestPositionalsNargs2OneOrMore(ParserTestCase): - """Test a Positional with 2 nargs followed by one with one or more""" - - argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='+')] - failures = ['', '--foo', 'a', 'a b'] - successes = [ - ('a b c', NS(foo=['a', 'b'], bar=['c'])), - ] - - -class TestPositionalsNargs2Optional(ParserTestCase): - """Test a Positional with 2 nargs followed by one optional""" - - argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='?')] - failures = ['', '--foo', 'a', 'a b c d'] - successes = [ - ('a b', NS(foo=['a', 'b'], bar=None)), - ('a b c', NS(foo=['a', 'b'], bar='c')), - ] - - -class TestPositionalsNargsZeroOrMore1(ParserTestCase): - """Test a Positional with unlimited nargs followed by one with 1""" - - argument_signatures = [Sig('foo', nargs='*'), Sig('bar', nargs=1)] - failures = ['', '--foo', ] - successes = [ - ('a', NS(foo=[], bar=['a'])), - ('a b', NS(foo=['a'], bar=['b'])), - ('a b c', NS(foo=['a', 'b'], bar=['c'])), - ] - - -class TestPositionalsNargsOneOrMore1(ParserTestCase): - """Test a Positional with one or more nargs followed by one with 1""" - - argument_signatures = [Sig('foo', nargs='+'), Sig('bar', nargs=1)] - failures = ['', '--foo', 'a'] - successes = [ - ('a b', NS(foo=['a'], bar=['b'])), - ('a b c', NS(foo=['a', 'b'], bar=['c'])), - ] - - -class TestPositionalsNargsOptional1(ParserTestCase): - """Test a Positional with an Optional nargs followed by one with 1""" - - argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs=1)] - failures = ['', '--foo', 'a b c'] - successes = [ - ('a', NS(foo=None, bar=['a'])), - ('a b', NS(foo='a', bar=['b'])), - ] - - -class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase): - """Test three Positionals: no nargs, unlimited nargs and 1 nargs""" - - argument_signatures = [ - Sig('foo'), - Sig('bar', nargs='*'), - Sig('baz', nargs=1), - ] - failures = ['', '--foo', 'a'] - successes = [ - ('a b', NS(foo='a', bar=[], baz=['b'])), - ('a b c', NS(foo='a', bar=['b'], baz=['c'])), - ] - - -class TestPositionalsNargsNoneOneOrMore1(ParserTestCase): - """Test three Positionals: no nargs, one or more nargs and 1 nargs""" - - argument_signatures = [ - Sig('foo'), - Sig('bar', nargs='+'), - Sig('baz', nargs=1), - ] - failures = ['', '--foo', 'a', 'b'] - successes = [ - ('a b c', NS(foo='a', bar=['b'], baz=['c'])), - ('a b c d', NS(foo='a', bar=['b', 'c'], baz=['d'])), - ] - - -class TestPositionalsNargsNoneOptional1(ParserTestCase): - """Test three Positionals: no nargs, optional narg and 1 nargs""" - - argument_signatures = [ - Sig('foo'), - Sig('bar', nargs='?', default=0.625), - Sig('baz', nargs=1), - ] - failures = ['', '--foo', 'a'] - successes = [ - ('a b', NS(foo='a', bar=0.625, baz=['b'])), - ('a b c', NS(foo='a', bar='b', baz=['c'])), - ] - - -class TestPositionalsNargsOptionalOptional(ParserTestCase): - """Test two optional nargs""" - - argument_signatures = [ - Sig('foo', nargs='?'), - Sig('bar', nargs='?', default=42), - ] - failures = ['--foo', 'a b c'] - successes = [ - ('', NS(foo=None, bar=42)), - ('a', NS(foo='a', bar=42)), - ('a b', NS(foo='a', bar='b')), - ] - - -class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase): - """Test an Optional narg followed by unlimited nargs""" - - argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='*')] - failures = ['--foo'] - successes = [ - ('', NS(foo=None, bar=[])), - ('a', NS(foo='a', bar=[])), - ('a b', NS(foo='a', bar=['b'])), - ('a b c', NS(foo='a', bar=['b', 'c'])), - ] - - -class TestPositionalsNargsOptionalOneOrMore(ParserTestCase): - """Test an Optional narg followed by one or more nargs""" - - argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='+')] - failures = ['', '--foo'] - successes = [ - ('a', NS(foo=None, bar=['a'])), - ('a b', NS(foo='a', bar=['b'])), - ('a b c', NS(foo='a', bar=['b', 'c'])), - ] - - -class TestPositionalsChoicesString(ParserTestCase): - """Test a set of single-character choices""" - - argument_signatures = [Sig('spam', choices=set('abcdefg'))] - failures = ['', '--foo', 'h', '42', 'ef'] - successes = [ - ('a', NS(spam='a')), - ('g', NS(spam='g')), - ] - - -class TestPositionalsChoicesInt(ParserTestCase): - """Test a set of integer choices""" - - argument_signatures = [Sig('spam', type=int, choices=range(20))] - failures = ['', '--foo', 'h', '42', 'ef'] - successes = [ - ('4', NS(spam=4)), - ('15', NS(spam=15)), - ] - - -class TestPositionalsActionAppend(ParserTestCase): - """Test the 'append' action""" - - argument_signatures = [ - Sig('spam', action='append'), - Sig('spam', action='append', nargs=2), - ] - failures = ['', '--foo', 'a', 'a b', 'a b c d'] - successes = [ - ('a b c', NS(spam=['a', ['b', 'c']])), - ] - -# ======================================== -# Combined optionals and positionals tests -# ======================================== - -class TestOptionalsNumericAndPositionals(ParserTestCase): - """Tests negative number args when numeric options are present""" - - argument_signatures = [ - Sig('x', nargs='?'), - Sig('-4', dest='y', action='store_true'), - ] - failures = ['-2', '-315'] - successes = [ - ('', NS(x=None, y=False)), - ('a', NS(x='a', y=False)), - ('-4', NS(x=None, y=True)), - ('-4 a', NS(x='a', y=True)), - ] - - -class TestOptionalsAlmostNumericAndPositionals(ParserTestCase): - """Tests negative number args when almost numeric options are present""" - - argument_signatures = [ - Sig('x', nargs='?'), - Sig('-k4', dest='y', action='store_true'), - ] - failures = ['-k3'] - successes = [ - ('', NS(x=None, y=False)), - ('-2', NS(x='-2', y=False)), - ('a', NS(x='a', y=False)), - ('-k4', NS(x=None, y=True)), - ('-k4 a', NS(x='a', y=True)), - ] - - -class TestEmptyAndSpaceContainingArguments(ParserTestCase): - - argument_signatures = [ - Sig('x', nargs='?'), - Sig('-y', '--yyy', dest='y'), - ] - failures = ['-y'] - successes = [ - ([''], NS(x='', y=None)), - (['a badger'], NS(x='a badger', y=None)), - (['-a badger'], NS(x='-a badger', y=None)), - (['-y', ''], NS(x=None, y='')), - (['-y', 'a badger'], NS(x=None, y='a badger')), - (['-y', '-a badger'], NS(x=None, y='-a badger')), - (['--yyy=a badger'], NS(x=None, y='a badger')), - (['--yyy=-a badger'], NS(x=None, y='-a badger')), - ] - - -class TestPrefixCharacterOnlyArguments(ParserTestCase): - - parser_signature = Sig(prefix_chars='-+') - argument_signatures = [ - Sig('-', dest='x', nargs='?', const='badger'), - Sig('+', dest='y', type=int, default=42), - Sig('-+-', dest='z', action='store_true'), - ] - failures = ['-y', '+ -'] - successes = [ - ('', NS(x=None, y=42, z=False)), - ('-', NS(x='badger', y=42, z=False)), - ('- X', NS(x='X', y=42, z=False)), - ('+ -3', NS(x=None, y=-3, z=False)), - ('-+-', NS(x=None, y=42, z=True)), - ('- ===', NS(x='===', y=42, z=False)), - ] - - -class TestNargsZeroOrMore(ParserTestCase): - """Tests specifying an args for an Optional that accepts zero or more""" - - argument_signatures = [Sig('-x', nargs='*'), Sig('y', nargs='*')] - failures = [] - successes = [ - ('', NS(x=None, y=[])), - ('-x', NS(x=[], y=[])), - ('-x a', NS(x=['a'], y=[])), - ('-x a -- b', NS(x=['a'], y=['b'])), - ('a', NS(x=None, y=['a'])), - ('a -x', NS(x=[], y=['a'])), - ('a -x b', NS(x=['b'], y=['a'])), - ] - - -class TestNargsRemainder(ParserTestCase): - """Tests specifying a positional with nargs=REMAINDER""" - - argument_signatures = [Sig('x'), Sig('y', nargs='...'), Sig('-z')] - failures = ['', '-z', '-z Z'] - successes = [ - ('X', NS(x='X', y=[], z=None)), - ('-z Z X', NS(x='X', y=[], z='Z')), - ('X A B -z Z', NS(x='X', y=['A', 'B', '-z', 'Z'], z=None)), - ('X Y --foo', NS(x='X', y=['Y', '--foo'], z=None)), - ] - - -class TestOptionLike(ParserTestCase): - """Tests options that may or may not be arguments""" - - argument_signatures = [ - Sig('-x', type=float), - Sig('-3', type=float, dest='y'), - Sig('z', nargs='*'), - ] - failures = ['-x', '-y2.5', '-xa', '-x -a', - '-x -3', '-x -3.5', '-3 -3.5', - '-x -2.5', '-x -2.5 a', '-3 -.5', - 'a x -1', '-x -1 a', '-3 -1 a'] - successes = [ - ('', NS(x=None, y=None, z=[])), - ('-x 2.5', NS(x=2.5, y=None, z=[])), - ('-x 2.5 a', NS(x=2.5, y=None, z=['a'])), - ('-3.5', NS(x=None, y=0.5, z=[])), - ('-3-.5', NS(x=None, y=-0.5, z=[])), - ('-3 .5', NS(x=None, y=0.5, z=[])), - ('a -3.5', NS(x=None, y=0.5, z=['a'])), - ('a', NS(x=None, y=None, z=['a'])), - ('a -x 1', NS(x=1.0, y=None, z=['a'])), - ('-x 1 a', NS(x=1.0, y=None, z=['a'])), - ('-3 1 a', NS(x=None, y=1.0, z=['a'])), - ] - - -class TestDefaultSuppress(ParserTestCase): - """Test actions with suppressed defaults""" - - argument_signatures = [ - Sig('foo', nargs='?', default=argparse.SUPPRESS), - Sig('bar', nargs='*', default=argparse.SUPPRESS), - Sig('--baz', action='store_true', default=argparse.SUPPRESS), - ] - failures = ['-x'] - successes = [ - ('', NS()), - ('a', NS(foo='a')), - ('a b', NS(foo='a', bar=['b'])), - ('--baz', NS(baz=True)), - ('a --baz', NS(foo='a', baz=True)), - ('--baz a b', NS(foo='a', bar=['b'], baz=True)), - ] - - -class TestParserDefaultSuppress(ParserTestCase): - """Test actions with a parser-level default of SUPPRESS""" - - parser_signature = Sig(argument_default=argparse.SUPPRESS) - argument_signatures = [ - Sig('foo', nargs='?'), - Sig('bar', nargs='*'), - Sig('--baz', action='store_true'), - ] - failures = ['-x'] - successes = [ - ('', NS()), - ('a', NS(foo='a')), - ('a b', NS(foo='a', bar=['b'])), - ('--baz', NS(baz=True)), - ('a --baz', NS(foo='a', baz=True)), - ('--baz a b', NS(foo='a', bar=['b'], baz=True)), - ] - - -class TestParserDefault42(ParserTestCase): - """Test actions with a parser-level default of 42""" - - parser_signature = Sig(argument_default=42, version='1.0') - argument_signatures = [ - Sig('foo', nargs='?'), - Sig('bar', nargs='*'), - Sig('--baz', action='store_true'), - ] - failures = ['-x'] - successes = [ - ('', NS(foo=42, bar=42, baz=42)), - ('a', NS(foo='a', bar=42, baz=42)), - ('a b', NS(foo='a', bar=['b'], baz=42)), - ('--baz', NS(foo=42, bar=42, baz=True)), - ('a --baz', NS(foo='a', bar=42, baz=True)), - ('--baz a b', NS(foo='a', bar=['b'], baz=True)), - ] - - -class TestArgumentsFromFile(TempDirMixin, ParserTestCase): - """Test reading arguments from a file""" - - def setUp(self): - super(TestArgumentsFromFile, self).setUp() - file_texts = [ - ('hello', 'hello world!\n'), - ('recursive', '-a\n' - 'A\n' - '@hello'), - ('invalid', '@no-such-path\n'), - ] - for path, text in file_texts: - file = open(path, 'w') - file.write(text) - file.close() - - parser_signature = Sig(fromfile_prefix_chars='@') - argument_signatures = [ - Sig('-a'), - Sig('x'), - Sig('y', nargs='+'), - ] - failures = ['', '-b', 'X', '@invalid', '@missing'] - successes = [ - ('X Y', NS(a=None, x='X', y=['Y'])), - ('X -a A Y Z', NS(a='A', x='X', y=['Y', 'Z'])), - ('@hello X', NS(a=None, x='hello world!', y=['X'])), - ('X @hello', NS(a=None, x='X', y=['hello world!'])), - ('-a B @recursive Y Z', NS(a='A', x='hello world!', y=['Y', 'Z'])), - ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])), - ] - - -class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase): - """Test reading arguments from a file""" - - def setUp(self): - super(TestArgumentsFromFileConverter, self).setUp() - file_texts = [ - ('hello', 'hello world!\n'), - ] - for path, text in file_texts: - file = open(path, 'w') - file.write(text) - file.close() - - class FromFileConverterArgumentParser(ErrorRaisingArgumentParser): - - def convert_arg_line_to_args(self, arg_line): - for arg in arg_line.split(): - if not arg.strip(): - continue - yield arg - parser_class = FromFileConverterArgumentParser - parser_signature = Sig(fromfile_prefix_chars='@') - argument_signatures = [ - Sig('y', nargs='+'), - ] - failures = [] - successes = [ - ('@hello X', NS(y=['hello', 'world!', 'X'])), - ] - - -# ===================== -# Type conversion tests -# ===================== - -class TestFileTypeRepr(TestCase): - - def test_r(self): - type = argparse.FileType('r') - self.assertEqual("FileType('r')", repr(type)) - - def test_wb_1(self): - type = argparse.FileType('wb', 1) - self.assertEqual("FileType('wb', 1)", repr(type)) - - -class RFile(object): - seen = {} - - def __init__(self, name): - self.name = name - - __hash__ = None - - def __eq__(self, other): - if other in self.seen: - text = self.seen[other] - else: - text = self.seen[other] = other.read() - other.close() - if not isinstance(text, str): - text = text.decode('ascii') - return self.name == other.name == text - - -class TestFileTypeR(TempDirMixin, ParserTestCase): - """Test the FileType option/argument type for reading files""" - - def setUp(self): - super(TestFileTypeR, self).setUp() - for file_name in ['foo', 'bar']: - file = open(os.path.join(self.temp_dir, file_name), 'w') - file.write(file_name) - file.close() - self.create_readonly_file('readonly') - - argument_signatures = [ - Sig('-x', type=argparse.FileType()), - Sig('spam', type=argparse.FileType('r')), - ] - failures = ['-x', '-x bar', 'non-existent-file.txt'] - successes = [ - ('foo', NS(x=None, spam=RFile('foo'))), - ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), - ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), - ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), - ('readonly', NS(x=None, spam=RFile('readonly'))), - ] - - -class TestFileTypeRB(TempDirMixin, ParserTestCase): - """Test the FileType option/argument type for reading files""" - - def setUp(self): - super(TestFileTypeRB, self).setUp() - for file_name in ['foo', 'bar']: - file = open(os.path.join(self.temp_dir, file_name), 'w') - file.write(file_name) - file.close() - - argument_signatures = [ - Sig('-x', type=argparse.FileType('rb')), - Sig('spam', type=argparse.FileType('rb')), - ] - failures = ['-x', '-x bar'] - successes = [ - ('foo', NS(x=None, spam=RFile('foo'))), - ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), - ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), - ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), - ] - - -class WFile(object): - seen = set() - - def __init__(self, name): - self.name = name - - __hash__ = None - - def __eq__(self, other): - if other not in self.seen: - text = 'Check that file is writable.' - if 'b' in other.mode: - text = text.encode('ascii') - other.write(text) - other.close() - self.seen.add(other) - return self.name == other.name - - - at unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, - "non-root user required") -class TestFileTypeW(TempDirMixin, ParserTestCase): - """Test the FileType option/argument type for writing files""" - - def setUp(self): - super(TestFileTypeW, self).setUp() - self.create_readonly_file('readonly') - - argument_signatures = [ - Sig('-x', type=argparse.FileType('w')), - Sig('spam', type=argparse.FileType('w')), - ] - failures = ['-x', '-x bar'] - failures = ['-x', '-x bar', 'readonly'] - successes = [ - ('foo', NS(x=None, spam=WFile('foo'))), - ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), - ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), - ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), - ] - - -class TestFileTypeWB(TempDirMixin, ParserTestCase): - - argument_signatures = [ - Sig('-x', type=argparse.FileType('wb')), - Sig('spam', type=argparse.FileType('wb')), - ] - failures = ['-x', '-x bar'] - successes = [ - ('foo', NS(x=None, spam=WFile('foo'))), - ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), - ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), - ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), - ] - - -class TestTypeCallable(ParserTestCase): - """Test some callables as option/argument types""" - - argument_signatures = [ - Sig('--eggs', type=complex), - Sig('spam', type=float), - ] - failures = ['a', '42j', '--eggs a', '--eggs 2i'] - successes = [ - ('--eggs=42 42', NS(eggs=42, spam=42.0)), - ('--eggs 2j -- -1.5', NS(eggs=2j, spam=-1.5)), - ('1024.675', NS(eggs=None, spam=1024.675)), - ] - - -class TestTypeUserDefined(ParserTestCase): - """Test a user-defined option/argument type""" - - class MyType(TestCase): - - def __init__(self, value): - self.value = value - - __hash__ = None - - def __eq__(self, other): - return (type(self), self.value) == (type(other), other.value) - - argument_signatures = [ - Sig('-x', type=MyType), - Sig('spam', type=MyType), - ] - failures = [] - successes = [ - ('a -x b', NS(x=MyType('b'), spam=MyType('a'))), - ('-xf g', NS(x=MyType('f'), spam=MyType('g'))), - ] - - -class TestTypeClassicClass(ParserTestCase): - """Test a classic class type""" - - class C: - - def __init__(self, value): - self.value = value - - __hash__ = None - - def __eq__(self, other): - return (type(self), self.value) == (type(other), other.value) - - argument_signatures = [ - Sig('-x', type=C), - Sig('spam', type=C), - ] - failures = [] - successes = [ - ('a -x b', NS(x=C('b'), spam=C('a'))), - ('-xf g', NS(x=C('f'), spam=C('g'))), - ] - - -class TestTypeRegistration(TestCase): - """Test a user-defined type by registering it""" - - def test(self): - - def get_my_type(string): - return 'my_type{%s}' % string - - parser = argparse.ArgumentParser() - parser.register('type', 'my_type', get_my_type) - parser.add_argument('-x', type='my_type') - parser.add_argument('y', type='my_type') - - self.assertEqual(parser.parse_args('1'.split()), - NS(x=None, y='my_type{1}')) - self.assertEqual(parser.parse_args('-x 1 42'.split()), - NS(x='my_type{1}', y='my_type{42}')) - - -# ============ -# Action tests -# ============ - -class TestActionUserDefined(ParserTestCase): - """Test a user-defined option/argument action""" - - class OptionalAction(argparse.Action): - - def __call__(self, parser, namespace, value, option_string=None): - try: - # check destination and option string - assert self.dest == 'spam', 'dest: %s' % self.dest - assert option_string == '-s', 'flag: %s' % option_string - # when option is before argument, badger=2, and when - # option is after argument, badger= - expected_ns = NS(spam=0.25) - if value in [0.125, 0.625]: - expected_ns.badger = 2 - elif value in [2.0]: - expected_ns.badger = 84 - else: - raise AssertionError('value: %s' % value) - assert expected_ns == namespace, ('expected %s, got %s' % - (expected_ns, namespace)) - except AssertionError: - e = sys.exc_info()[1] - raise ArgumentParserError('opt_action failed: %s' % e) - setattr(namespace, 'spam', value) - - class PositionalAction(argparse.Action): - - def __call__(self, parser, namespace, value, option_string=None): - try: - assert option_string is None, ('option_string: %s' % - option_string) - # check destination - assert self.dest == 'badger', 'dest: %s' % self.dest - # when argument is before option, spam=0.25, and when - # option is after argument, spam= - expected_ns = NS(badger=2) - if value in [42, 84]: - expected_ns.spam = 0.25 - elif value in [1]: - expected_ns.spam = 0.625 - elif value in [2]: - expected_ns.spam = 0.125 - else: - raise AssertionError('value: %s' % value) - assert expected_ns == namespace, ('expected %s, got %s' % - (expected_ns, namespace)) - except AssertionError: - e = sys.exc_info()[1] - raise ArgumentParserError('arg_action failed: %s' % e) - setattr(namespace, 'badger', value) - - argument_signatures = [ - Sig('-s', dest='spam', action=OptionalAction, - type=float, default=0.25), - Sig('badger', action=PositionalAction, - type=int, nargs='?', default=2), - ] - failures = [] - successes = [ - ('-s0.125', NS(spam=0.125, badger=2)), - ('42', NS(spam=0.25, badger=42)), - ('-s 0.625 1', NS(spam=0.625, badger=1)), - ('84 -s2', NS(spam=2.0, badger=84)), - ] - - -class TestActionRegistration(TestCase): - """Test a user-defined action supplied by registering it""" - - class MyAction(argparse.Action): - - def __call__(self, parser, namespace, values, option_string=None): - setattr(namespace, self.dest, 'foo[%s]' % values) - - def test(self): - - parser = argparse.ArgumentParser() - parser.register('action', 'my_action', self.MyAction) - parser.add_argument('badger', action='my_action') - - self.assertEqual(parser.parse_args(['1']), NS(badger='foo[1]')) - self.assertEqual(parser.parse_args(['42']), NS(badger='foo[42]')) - - -# ================ -# Subparsers tests -# ================ - -class TestAddSubparsers(TestCase): - """Test the add_subparsers method""" - - def assertArgumentParserError(self, *args, **kwargs): - self.assertRaises(ArgumentParserError, *args, **kwargs) - - def _get_parser(self, subparser_help=False, prefix_chars=None): - # create a parser with a subparsers argument - if prefix_chars: - parser = ErrorRaisingArgumentParser( - prog='PROG', description='main description', prefix_chars=prefix_chars) - parser.add_argument( - prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help') - else: - parser = ErrorRaisingArgumentParser( - prog='PROG', description='main description') - parser.add_argument( - '--foo', action='store_true', help='foo help') - parser.add_argument( - 'bar', type=float, help='bar help') - - # check that only one subparsers argument can be added - subparsers = parser.add_subparsers(help='command help') - self.assertArgumentParserError(parser.add_subparsers) - - # add first sub-parser - parser1_kwargs = dict(description='1 description') - if subparser_help: - parser1_kwargs['help'] = '1 help' - parser1 = subparsers.add_parser('1', **parser1_kwargs) - parser1.add_argument('-w', type=int, help='w help') - parser1.add_argument('x', choices='abc', help='x help') - - # add second sub-parser - parser2_kwargs = dict(description='2 description') - if subparser_help: - parser2_kwargs['help'] = '2 help' - parser2 = subparsers.add_parser('2', **parser2_kwargs) - parser2.add_argument('-y', choices='123', help='y help') - parser2.add_argument('z', type=complex, nargs='*', help='z help') - - # return the main parser - return parser - - def setUp(self): - super(TestAddSubparsers, self).setUp() - self.parser = self._get_parser() - self.command_help_parser = self._get_parser(subparser_help=True) - - def test_parse_args_failures(self): - # check some failure cases: - for args_str in ['', 'a', 'a a', '0.5 a', '0.5 1', - '0.5 1 -y', '0.5 2 -w']: - args = args_str.split() - self.assertArgumentParserError(self.parser.parse_args, args) - - def test_parse_args(self): - # check some non-failure cases: - self.assertEqual( - self.parser.parse_args('0.5 1 b -w 7'.split()), - NS(foo=False, bar=0.5, w=7, x='b'), - ) - self.assertEqual( - self.parser.parse_args('0.25 --foo 2 -y 2 3j -- -1j'.split()), - NS(foo=True, bar=0.25, y='2', z=[3j, -1j]), - ) - self.assertEqual( - self.parser.parse_args('--foo 0.125 1 c'.split()), - NS(foo=True, bar=0.125, w=None, x='c'), - ) - - def test_parse_known_args(self): - self.assertEqual( - self.parser.parse_known_args('0.5 1 b -w 7'.split()), - (NS(foo=False, bar=0.5, w=7, x='b'), []), - ) - self.assertEqual( - self.parser.parse_known_args('0.5 -p 1 b -w 7'.split()), - (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']), - ) - self.assertEqual( - self.parser.parse_known_args('0.5 1 b -w 7 -p'.split()), - (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']), - ) - self.assertEqual( - self.parser.parse_known_args('0.5 1 b -q -rs -w 7'.split()), - (NS(foo=False, bar=0.5, w=7, x='b'), ['-q', '-rs']), - ) - self.assertEqual( - self.parser.parse_known_args('0.5 -W 1 b -X Y -w 7 Z'.split()), - (NS(foo=False, bar=0.5, w=7, x='b'), ['-W', '-X', 'Y', 'Z']), - ) - - def test_dest(self): - parser = ErrorRaisingArgumentParser() - parser.add_argument('--foo', action='store_true') - subparsers = parser.add_subparsers(dest='bar') - parser1 = subparsers.add_parser('1') - parser1.add_argument('baz') - self.assertEqual(NS(foo=False, bar='1', baz='2'), - parser.parse_args('1 2'.split())) - - def test_help(self): - self.assertEqual(self.parser.format_usage(), - 'usage: PROG [-h] [--foo] bar {1,2} ...\n') - self.assertEqual(self.parser.format_help(), textwrap.dedent('''\ - usage: PROG [-h] [--foo] bar {1,2} ... - - main description - - positional arguments: - bar bar help - {1,2} command help - - optional arguments: - -h, --help show this help message and exit - --foo foo help - ''')) - - def test_help_extra_prefix_chars(self): - # Make sure - is still used for help if it is a non-first prefix char - parser = self._get_parser(prefix_chars='+:-') - self.assertEqual(parser.format_usage(), - 'usage: PROG [-h] [++foo] bar {1,2} ...\n') - self.assertEqual(parser.format_help(), textwrap.dedent('''\ - usage: PROG [-h] [++foo] bar {1,2} ... - - main description - - positional arguments: - bar bar help - {1,2} command help - - optional arguments: - -h, --help show this help message and exit - ++foo foo help - ''')) - - - def test_help_alternate_prefix_chars(self): - parser = self._get_parser(prefix_chars='+:/') - self.assertEqual(parser.format_usage(), - 'usage: PROG [+h] [++foo] bar {1,2} ...\n') - self.assertEqual(parser.format_help(), textwrap.dedent('''\ - usage: PROG [+h] [++foo] bar {1,2} ... - - main description - - positional arguments: - bar bar help - {1,2} command help - - optional arguments: - +h, ++help show this help message and exit - ++foo foo help - ''')) - - def test_parser_command_help(self): - self.assertEqual(self.command_help_parser.format_usage(), - 'usage: PROG [-h] [--foo] bar {1,2} ...\n') - self.assertEqual(self.command_help_parser.format_help(), - textwrap.dedent('''\ - usage: PROG [-h] [--foo] bar {1,2} ... - - main description - - positional arguments: - bar bar help - {1,2} command help - 1 1 help - 2 2 help - - optional arguments: - -h, --help show this help message and exit - --foo foo help - ''')) - - def test_subparser_title_help(self): - parser = ErrorRaisingArgumentParser(prog='PROG', - description='main description') - parser.add_argument('--foo', action='store_true', help='foo help') - parser.add_argument('bar', help='bar help') - subparsers = parser.add_subparsers(title='subcommands', - description='command help', - help='additional text') - parser1 = subparsers.add_parser('1') - parser2 = subparsers.add_parser('2') - self.assertEqual(parser.format_usage(), - 'usage: PROG [-h] [--foo] bar {1,2} ...\n') - self.assertEqual(parser.format_help(), textwrap.dedent('''\ - usage: PROG [-h] [--foo] bar {1,2} ... - - main description - - positional arguments: - bar bar help - - optional arguments: - -h, --help show this help message and exit - --foo foo help - - subcommands: - command help - - {1,2} additional text - ''')) - - def _test_subparser_help(self, args_str, expected_help): - try: - self.parser.parse_args(args_str.split()) - except ArgumentParserError: - err = sys.exc_info()[1] - if err.stdout != expected_help: - print(repr(expected_help)) - print(repr(err.stdout)) - self.assertEqual(err.stdout, expected_help) - - def test_subparser1_help(self): - self._test_subparser_help('5.0 1 -h', textwrap.dedent('''\ - usage: PROG bar 1 [-h] [-w W] {a,b,c} - - 1 description - - positional arguments: - {a,b,c} x help - - optional arguments: - -h, --help show this help message and exit - -w W w help - ''')) - - def test_subparser2_help(self): - self._test_subparser_help('5.0 2 -h', textwrap.dedent('''\ - usage: PROG bar 2 [-h] [-y {1,2,3}] [z [z ...]] - - 2 description - - positional arguments: - z z help - - optional arguments: - -h, --help show this help message and exit - -y {1,2,3} y help - ''')) - -# ============ -# Groups tests -# ============ - -class TestPositionalsGroups(TestCase): - """Tests that order of group positionals matches construction order""" - - def test_nongroup_first(self): - parser = ErrorRaisingArgumentParser() - parser.add_argument('foo') - group = parser.add_argument_group('g') - group.add_argument('bar') - parser.add_argument('baz') - expected = NS(foo='1', bar='2', baz='3') - result = parser.parse_args('1 2 3'.split()) - self.assertEqual(expected, result) - - def test_group_first(self): - parser = ErrorRaisingArgumentParser() - group = parser.add_argument_group('xxx') - group.add_argument('foo') - parser.add_argument('bar') - parser.add_argument('baz') - expected = NS(foo='1', bar='2', baz='3') - result = parser.parse_args('1 2 3'.split()) - self.assertEqual(expected, result) - - def test_interleaved_groups(self): - parser = ErrorRaisingArgumentParser() - group = parser.add_argument_group('xxx') - parser.add_argument('foo') - group.add_argument('bar') - parser.add_argument('baz') - group = parser.add_argument_group('yyy') - group.add_argument('frell') - expected = NS(foo='1', bar='2', baz='3', frell='4') - result = parser.parse_args('1 2 3 4'.split()) - self.assertEqual(expected, result) - -# =================== -# Parent parser tests -# =================== - -class TestParentParsers(TestCase): - """Tests that parsers can be created with parent parsers""" - - def assertArgumentParserError(self, *args, **kwargs): - self.assertRaises(ArgumentParserError, *args, **kwargs) - - def setUp(self): - super(TestParentParsers, self).setUp() - self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False) - self.wxyz_parent.add_argument('--w') - x_group = self.wxyz_parent.add_argument_group('x') - x_group.add_argument('-y') - self.wxyz_parent.add_argument('z') - - self.abcd_parent = ErrorRaisingArgumentParser(add_help=False) - self.abcd_parent.add_argument('a') - self.abcd_parent.add_argument('-b') - c_group = self.abcd_parent.add_argument_group('c') - c_group.add_argument('--d') - - self.w_parent = ErrorRaisingArgumentParser(add_help=False) - self.w_parent.add_argument('--w') - - self.z_parent = ErrorRaisingArgumentParser(add_help=False) - self.z_parent.add_argument('z') - - # parents with mutually exclusive groups - self.ab_mutex_parent = ErrorRaisingArgumentParser(add_help=False) - group = self.ab_mutex_parent.add_mutually_exclusive_group() - group.add_argument('-a', action='store_true') - group.add_argument('-b', action='store_true') - - self.main_program = os.path.basename(sys.argv[0]) - - def test_single_parent(self): - parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent]) - self.assertEqual(parser.parse_args('-y 1 2 --w 3'.split()), - NS(w='3', y='1', z='2')) - - def test_single_parent_mutex(self): - self._test_mutex_ab(self.ab_mutex_parent.parse_args) - parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent]) - self._test_mutex_ab(parser.parse_args) - - def test_single_granparent_mutex(self): - parents = [self.ab_mutex_parent] - parser = ErrorRaisingArgumentParser(add_help=False, parents=parents) - parser = ErrorRaisingArgumentParser(parents=[parser]) - self._test_mutex_ab(parser.parse_args) - - def _test_mutex_ab(self, parse_args): - self.assertEqual(parse_args([]), NS(a=False, b=False)) - self.assertEqual(parse_args(['-a']), NS(a=True, b=False)) - self.assertEqual(parse_args(['-b']), NS(a=False, b=True)) - self.assertArgumentParserError(parse_args, ['-a', '-b']) - self.assertArgumentParserError(parse_args, ['-b', '-a']) - self.assertArgumentParserError(parse_args, ['-c']) - self.assertArgumentParserError(parse_args, ['-a', '-c']) - self.assertArgumentParserError(parse_args, ['-b', '-c']) - - def test_multiple_parents(self): - parents = [self.abcd_parent, self.wxyz_parent] - parser = ErrorRaisingArgumentParser(parents=parents) - self.assertEqual(parser.parse_args('--d 1 --w 2 3 4'.split()), - NS(a='3', b=None, d='1', w='2', y=None, z='4')) - - def test_multiple_parents_mutex(self): - parents = [self.ab_mutex_parent, self.wxyz_parent] - parser = ErrorRaisingArgumentParser(parents=parents) - self.assertEqual(parser.parse_args('-a --w 2 3'.split()), - NS(a=True, b=False, w='2', y=None, z='3')) - self.assertArgumentParserError( - parser.parse_args, '-a --w 2 3 -b'.split()) - self.assertArgumentParserError( - parser.parse_args, '-a -b --w 2 3'.split()) - - def test_conflicting_parents(self): - self.assertRaises( - argparse.ArgumentError, - argparse.ArgumentParser, - parents=[self.w_parent, self.wxyz_parent]) - - def test_conflicting_parents_mutex(self): - self.assertRaises( - argparse.ArgumentError, - argparse.ArgumentParser, - parents=[self.abcd_parent, self.ab_mutex_parent]) - - def test_same_argument_name_parents(self): - parents = [self.wxyz_parent, self.z_parent] - parser = ErrorRaisingArgumentParser(parents=parents) - self.assertEqual(parser.parse_args('1 2'.split()), - NS(w=None, y=None, z='2')) - - def test_subparser_parents(self): - parser = ErrorRaisingArgumentParser() - subparsers = parser.add_subparsers() - abcde_parser = subparsers.add_parser('bar', parents=[self.abcd_parent]) - abcde_parser.add_argument('e') - self.assertEqual(parser.parse_args('bar -b 1 --d 2 3 4'.split()), - NS(a='3', b='1', d='2', e='4')) - - def test_subparser_parents_mutex(self): - parser = ErrorRaisingArgumentParser() - subparsers = parser.add_subparsers() - parents = [self.ab_mutex_parent] - abc_parser = subparsers.add_parser('foo', parents=parents) - c_group = abc_parser.add_argument_group('c_group') - c_group.add_argument('c') - parents = [self.wxyz_parent, self.ab_mutex_parent] - wxyzabe_parser = subparsers.add_parser('bar', parents=parents) - wxyzabe_parser.add_argument('e') - self.assertEqual(parser.parse_args('foo -a 4'.split()), - NS(a=True, b=False, c='4')) - self.assertEqual(parser.parse_args('bar -b --w 2 3 4'.split()), - NS(a=False, b=True, w='2', y=None, z='3', e='4')) - self.assertArgumentParserError( - parser.parse_args, 'foo -a -b 4'.split()) - self.assertArgumentParserError( - parser.parse_args, 'bar -b -a 4'.split()) - - def test_parent_help(self): - parents = [self.abcd_parent, self.wxyz_parent] - parser = ErrorRaisingArgumentParser(parents=parents) - parser_help = parser.format_help() - progname = self.main_program - self.assertEqual(parser_help, textwrap.dedent('''\ - usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z - - positional arguments: - a - z - - optional arguments: - -h, --help show this help message and exit - -b B - --w W - - c: - --d D - - x: - -y Y - '''.format(progname, ' ' if progname else '' ))) - - def test_groups_parents(self): - parent = ErrorRaisingArgumentParser(add_help=False) - g = parent.add_argument_group(title='g', description='gd') - g.add_argument('-w') - g.add_argument('-x') - m = parent.add_mutually_exclusive_group() - m.add_argument('-y') - m.add_argument('-z') - parser = ErrorRaisingArgumentParser(parents=[parent]) - - self.assertRaises(ArgumentParserError, parser.parse_args, - ['-y', 'Y', '-z', 'Z']) - - parser_help = parser.format_help() - progname = self.main_program - self.assertEqual(parser_help, textwrap.dedent('''\ - usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z] - - optional arguments: - -h, --help show this help message and exit - -y Y - -z Z - - g: - gd - - -w W - -x X - '''.format(progname, ' ' if progname else '' ))) - -# ============================== -# Mutually exclusive group tests -# ============================== - -class TestMutuallyExclusiveGroupErrors(TestCase): - - def test_invalid_add_argument_group(self): - parser = ErrorRaisingArgumentParser() - raises = self.assertRaises - raises(TypeError, parser.add_mutually_exclusive_group, title='foo') - - def test_invalid_add_argument(self): - parser = ErrorRaisingArgumentParser() - group = parser.add_mutually_exclusive_group() - add_argument = group.add_argument - raises = self.assertRaises - raises(ValueError, add_argument, '--foo', required=True) - raises(ValueError, add_argument, 'bar') - raises(ValueError, add_argument, 'bar', nargs='+') - raises(ValueError, add_argument, 'bar', nargs=1) - raises(ValueError, add_argument, 'bar', nargs=argparse.PARSER) - - def test_help(self): - parser = ErrorRaisingArgumentParser(prog='PROG') - group1 = parser.add_mutually_exclusive_group() - group1.add_argument('--foo', action='store_true') - group1.add_argument('--bar', action='store_false') - group2 = parser.add_mutually_exclusive_group() - group2.add_argument('--soup', action='store_true') - group2.add_argument('--nuts', action='store_false') - expected = '''\ - usage: PROG [-h] [--foo | --bar] [--soup | --nuts] - - optional arguments: - -h, --help show this help message and exit - --foo - --bar - --soup - --nuts - ''' - self.assertEqual(parser.format_help(), textwrap.dedent(expected)) - -class MEMixin(object): - - def test_failures_when_not_required(self): - parse_args = self.get_parser(required=False).parse_args - error = ArgumentParserError - for args_string in self.failures: - self.assertRaises(error, parse_args, args_string.split()) - - def test_failures_when_required(self): - parse_args = self.get_parser(required=True).parse_args - error = ArgumentParserError - for args_string in self.failures + ['']: - self.assertRaises(error, parse_args, args_string.split()) - - def test_successes_when_not_required(self): - parse_args = self.get_parser(required=False).parse_args - successes = self.successes + self.successes_when_not_required - for args_string, expected_ns in successes: - actual_ns = parse_args(args_string.split()) - self.assertEqual(actual_ns, expected_ns) - - def test_successes_when_required(self): - parse_args = self.get_parser(required=True).parse_args - for args_string, expected_ns in self.successes: - actual_ns = parse_args(args_string.split()) - self.assertEqual(actual_ns, expected_ns) - - def test_usage_when_not_required(self): - format_usage = self.get_parser(required=False).format_usage - expected_usage = self.usage_when_not_required - self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) - - def test_usage_when_required(self): - format_usage = self.get_parser(required=True).format_usage - expected_usage = self.usage_when_required - self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) - - def test_help_when_not_required(self): - format_help = self.get_parser(required=False).format_help - help = self.usage_when_not_required + self.help - self.assertEqual(format_help(), textwrap.dedent(help)) - - def test_help_when_required(self): - format_help = self.get_parser(required=True).format_help - help = self.usage_when_required + self.help - self.assertEqual(format_help(), textwrap.dedent(help)) - - -class TestMutuallyExclusiveSimple(MEMixin, TestCase): - - def get_parser(self, required=None): - parser = ErrorRaisingArgumentParser(prog='PROG') - group = parser.add_mutually_exclusive_group(required=required) - group.add_argument('--bar', help='bar help') - group.add_argument('--baz', nargs='?', const='Z', help='baz help') - return parser - - failures = ['--bar X --baz Y', '--bar X --baz'] - successes = [ - ('--bar X', NS(bar='X', baz=None)), - ('--bar X --bar Z', NS(bar='Z', baz=None)), - ('--baz Y', NS(bar=None, baz='Y')), - ('--baz', NS(bar=None, baz='Z')), - ] - successes_when_not_required = [ - ('', NS(bar=None, baz=None)), - ] - - usage_when_not_required = '''\ - usage: PROG [-h] [--bar BAR | --baz [BAZ]] - ''' - usage_when_required = '''\ - usage: PROG [-h] (--bar BAR | --baz [BAZ]) - ''' - help = '''\ - - optional arguments: - -h, --help show this help message and exit - --bar BAR bar help - --baz [BAZ] baz help - ''' - - -class TestMutuallyExclusiveLong(MEMixin, TestCase): - - def get_parser(self, required=None): - parser = ErrorRaisingArgumentParser(prog='PROG') - parser.add_argument('--abcde', help='abcde help') - parser.add_argument('--fghij', help='fghij help') - group = parser.add_mutually_exclusive_group(required=required) - group.add_argument('--klmno', help='klmno help') - group.add_argument('--pqrst', help='pqrst help') - return parser - - failures = ['--klmno X --pqrst Y'] - successes = [ - ('--klmno X', NS(abcde=None, fghij=None, klmno='X', pqrst=None)), - ('--abcde Y --klmno X', - NS(abcde='Y', fghij=None, klmno='X', pqrst=None)), - ('--pqrst X', NS(abcde=None, fghij=None, klmno=None, pqrst='X')), - ('--pqrst X --fghij Y', - NS(abcde=None, fghij='Y', klmno=None, pqrst='X')), - ] - successes_when_not_required = [ - ('', NS(abcde=None, fghij=None, klmno=None, pqrst=None)), - ] - - usage_when_not_required = '''\ - usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] - [--klmno KLMNO | --pqrst PQRST] - ''' - usage_when_required = '''\ - usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] - (--klmno KLMNO | --pqrst PQRST) - ''' - help = '''\ - - optional arguments: - -h, --help show this help message and exit - --abcde ABCDE abcde help - --fghij FGHIJ fghij help - --klmno KLMNO klmno help - --pqrst PQRST pqrst help - ''' - - -class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase): - - def get_parser(self, required): - parser = ErrorRaisingArgumentParser(prog='PROG') - group = parser.add_mutually_exclusive_group(required=required) - group.add_argument('-x', help=argparse.SUPPRESS) - group.add_argument('-y', action='store_false', help='y help') - return parser - - failures = ['-x X -y'] - successes = [ - ('-x X', NS(x='X', y=True)), - ('-x X -x Y', NS(x='Y', y=True)), - ('-y', NS(x=None, y=False)), - ] - successes_when_not_required = [ - ('', NS(x=None, y=True)), - ] - - usage_when_not_required = '''\ - usage: PROG [-h] [-y] - ''' - usage_when_required = '''\ - usage: PROG [-h] -y - ''' - help = '''\ - - optional arguments: - -h, --help show this help message and exit - -y y help - ''' - - -class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase): - - def get_parser(self, required): - parser = ErrorRaisingArgumentParser(prog='PROG') - group = parser.add_mutually_exclusive_group(required=required) - add = group.add_argument - add('--spam', action='store_true', help=argparse.SUPPRESS) - add('--badger', action='store_false', help=argparse.SUPPRESS) - add('--bladder', help=argparse.SUPPRESS) - return parser - - failures = [ - '--spam --badger', - '--badger --bladder B', - '--bladder B --spam', - ] - successes = [ - ('--spam', NS(spam=True, badger=True, bladder=None)), - ('--badger', NS(spam=False, badger=False, bladder=None)), - ('--bladder B', NS(spam=False, badger=True, bladder='B')), - ('--spam --spam', NS(spam=True, badger=True, bladder=None)), - ] - successes_when_not_required = [ - ('', NS(spam=False, badger=True, bladder=None)), - ] - - usage_when_required = usage_when_not_required = '''\ - usage: PROG [-h] - ''' - help = '''\ - - optional arguments: - -h, --help show this help message and exit - ''' - - -class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase): - - def get_parser(self, required): - parser = ErrorRaisingArgumentParser(prog='PROG') - group = parser.add_mutually_exclusive_group(required=required) - group.add_argument('--foo', action='store_true', help='FOO') - group.add_argument('--spam', help='SPAM') - group.add_argument('badger', nargs='*', default='X', help='BADGER') - return parser - - failures = [ - '--foo --spam S', - '--spam S X', - 'X --foo', - 'X Y Z --spam S', - '--foo X Y', - ] - successes = [ - ('--foo', NS(foo=True, spam=None, badger='X')), - ('--spam S', NS(foo=False, spam='S', badger='X')), - ('X', NS(foo=False, spam=None, badger=['X'])), - ('X Y Z', NS(foo=False, spam=None, badger=['X', 'Y', 'Z'])), - ] - successes_when_not_required = [ - ('', NS(foo=False, spam=None, badger='X')), - ] - - usage_when_not_required = '''\ - usage: PROG [-h] [--foo | --spam SPAM | badger [badger ...]] - ''' - usage_when_required = '''\ - usage: PROG [-h] (--foo | --spam SPAM | badger [badger ...]) - ''' - help = '''\ - - positional arguments: - badger BADGER - - optional arguments: - -h, --help show this help message and exit - --foo FOO - --spam SPAM SPAM - ''' - - -class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase): - - def get_parser(self, required): - parser = ErrorRaisingArgumentParser(prog='PROG') - parser.add_argument('-x', action='store_true', help='x help') - group = parser.add_mutually_exclusive_group(required=required) - group.add_argument('-a', action='store_true', help='a help') - group.add_argument('-b', action='store_true', help='b help') - parser.add_argument('-y', action='store_true', help='y help') - group.add_argument('-c', action='store_true', help='c help') - return parser - - failures = ['-a -b', '-b -c', '-a -c', '-a -b -c'] - successes = [ - ('-a', NS(a=True, b=False, c=False, x=False, y=False)), - ('-b', NS(a=False, b=True, c=False, x=False, y=False)), - ('-c', NS(a=False, b=False, c=True, x=False, y=False)), - ('-a -x', NS(a=True, b=False, c=False, x=True, y=False)), - ('-y -b', NS(a=False, b=True, c=False, x=False, y=True)), - ('-x -y -c', NS(a=False, b=False, c=True, x=True, y=True)), - ] - successes_when_not_required = [ - ('', NS(a=False, b=False, c=False, x=False, y=False)), - ('-x', NS(a=False, b=False, c=False, x=True, y=False)), - ('-y', NS(a=False, b=False, c=False, x=False, y=True)), - ] - - usage_when_required = usage_when_not_required = '''\ - usage: PROG [-h] [-x] [-a] [-b] [-y] [-c] - ''' - help = '''\ - - optional arguments: - -h, --help show this help message and exit - -x x help - -a a help - -b b help - -y y help - -c c help - ''' - - -class TestMutuallyExclusiveInGroup(MEMixin, TestCase): - - def get_parser(self, required=None): - parser = ErrorRaisingArgumentParser(prog='PROG') - titled_group = parser.add_argument_group( - title='Titled group', description='Group description') - mutex_group = \ - titled_group.add_mutually_exclusive_group(required=required) - mutex_group.add_argument('--bar', help='bar help') - mutex_group.add_argument('--baz', help='baz help') - return parser - - failures = ['--bar X --baz Y', '--baz X --bar Y'] - successes = [ - ('--bar X', NS(bar='X', baz=None)), - ('--baz Y', NS(bar=None, baz='Y')), - ] - successes_when_not_required = [ - ('', NS(bar=None, baz=None)), - ] - - usage_when_not_required = '''\ - usage: PROG [-h] [--bar BAR | --baz BAZ] - ''' - usage_when_required = '''\ - usage: PROG [-h] (--bar BAR | --baz BAZ) - ''' - help = '''\ - - optional arguments: - -h, --help show this help message and exit - - Titled group: - Group description - - --bar BAR bar help - --baz BAZ baz help - ''' - - -class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase): - - def get_parser(self, required): - parser = ErrorRaisingArgumentParser(prog='PROG') - parser.add_argument('x', help='x help') - parser.add_argument('-y', action='store_true', help='y help') - group = parser.add_mutually_exclusive_group(required=required) - group.add_argument('a', nargs='?', help='a help') - group.add_argument('-b', action='store_true', help='b help') - group.add_argument('-c', action='store_true', help='c help') - return parser - - failures = ['X A -b', '-b -c', '-c X A'] - successes = [ - ('X A', NS(a='A', b=False, c=False, x='X', y=False)), - ('X -b', NS(a=None, b=True, c=False, x='X', y=False)), - ('X -c', NS(a=None, b=False, c=True, x='X', y=False)), - ('X A -y', NS(a='A', b=False, c=False, x='X', y=True)), - ('X -y -b', NS(a=None, b=True, c=False, x='X', y=True)), - ] - successes_when_not_required = [ - ('X', NS(a=None, b=False, c=False, x='X', y=False)), - ('X -y', NS(a=None, b=False, c=False, x='X', y=True)), - ] - - usage_when_required = usage_when_not_required = '''\ - usage: PROG [-h] [-y] [-b] [-c] x [a] - ''' - help = '''\ - - positional arguments: - x x help - a a help - - optional arguments: - -h, --help show this help message and exit - -y y help - -b b help - -c c help - ''' - -# ================================================= -# Mutually exclusive group in parent parser tests -# ================================================= - -class MEPBase(object): - - def get_parser(self, required=None): - parent = super(MEPBase, self).get_parser(required=required) - parser = ErrorRaisingArgumentParser( - prog=parent.prog, add_help=False, parents=[parent]) - return parser - - -class TestMutuallyExclusiveGroupErrorsParent( - MEPBase, TestMutuallyExclusiveGroupErrors): - pass - - -class TestMutuallyExclusiveSimpleParent( - MEPBase, TestMutuallyExclusiveSimple): - pass - - -class TestMutuallyExclusiveLongParent( - MEPBase, TestMutuallyExclusiveLong): - pass - - -class TestMutuallyExclusiveFirstSuppressedParent( - MEPBase, TestMutuallyExclusiveFirstSuppressed): - pass - - -class TestMutuallyExclusiveManySuppressedParent( - MEPBase, TestMutuallyExclusiveManySuppressed): - pass - - -class TestMutuallyExclusiveOptionalAndPositionalParent( - MEPBase, TestMutuallyExclusiveOptionalAndPositional): - pass - - -class TestMutuallyExclusiveOptionalsMixedParent( - MEPBase, TestMutuallyExclusiveOptionalsMixed): - pass - - -class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent( - MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed): - pass - -# ================= -# Set default tests -# ================= - -class TestSetDefaults(TestCase): - - def test_set_defaults_no_args(self): - parser = ErrorRaisingArgumentParser() - parser.set_defaults(x='foo') - parser.set_defaults(y='bar', z=1) - self.assertEqual(NS(x='foo', y='bar', z=1), - parser.parse_args([])) - self.assertEqual(NS(x='foo', y='bar', z=1), - parser.parse_args([], NS())) - self.assertEqual(NS(x='baz', y='bar', z=1), - parser.parse_args([], NS(x='baz'))) - self.assertEqual(NS(x='baz', y='bar', z=2), - parser.parse_args([], NS(x='baz', z=2))) - - def test_set_defaults_with_args(self): - parser = ErrorRaisingArgumentParser() - parser.set_defaults(x='foo', y='bar') - parser.add_argument('-x', default='xfoox') - self.assertEqual(NS(x='xfoox', y='bar'), - parser.parse_args([])) - self.assertEqual(NS(x='xfoox', y='bar'), - parser.parse_args([], NS())) - self.assertEqual(NS(x='baz', y='bar'), - parser.parse_args([], NS(x='baz'))) - self.assertEqual(NS(x='1', y='bar'), - parser.parse_args('-x 1'.split())) - self.assertEqual(NS(x='1', y='bar'), - parser.parse_args('-x 1'.split(), NS())) - self.assertEqual(NS(x='1', y='bar'), - parser.parse_args('-x 1'.split(), NS(x='baz'))) - - def test_set_defaults_subparsers(self): - parser = ErrorRaisingArgumentParser() - parser.set_defaults(x='foo') - subparsers = parser.add_subparsers() - parser_a = subparsers.add_parser('a') - parser_a.set_defaults(y='bar') - self.assertEqual(NS(x='foo', y='bar'), - parser.parse_args('a'.split())) - - def test_set_defaults_parents(self): - parent = ErrorRaisingArgumentParser(add_help=False) - parent.set_defaults(x='foo') - parser = ErrorRaisingArgumentParser(parents=[parent]) - self.assertEqual(NS(x='foo'), parser.parse_args([])) - - def test_set_defaults_same_as_add_argument(self): - parser = ErrorRaisingArgumentParser() - parser.set_defaults(w='W', x='X', y='Y', z='Z') - parser.add_argument('-w') - parser.add_argument('-x', default='XX') - parser.add_argument('y', nargs='?') - parser.add_argument('z', nargs='?', default='ZZ') - - # defaults set previously - self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'), - parser.parse_args([])) - - # reset defaults - parser.set_defaults(w='WW', x='X', y='YY', z='Z') - self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'), - parser.parse_args([])) - - def test_set_defaults_same_as_add_argument_group(self): - parser = ErrorRaisingArgumentParser() - parser.set_defaults(w='W', x='X', y='Y', z='Z') - group = parser.add_argument_group('foo') - group.add_argument('-w') - group.add_argument('-x', default='XX') - group.add_argument('y', nargs='?') - group.add_argument('z', nargs='?', default='ZZ') - - - # defaults set previously - self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'), - parser.parse_args([])) - - # reset defaults - parser.set_defaults(w='WW', x='X', y='YY', z='Z') - self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'), - parser.parse_args([])) - -# ================= -# Get default tests -# ================= - -class TestGetDefault(TestCase): - - def test_get_default(self): - parser = ErrorRaisingArgumentParser() - self.assertEqual(None, parser.get_default("foo")) - self.assertEqual(None, parser.get_default("bar")) - - parser.add_argument("--foo") - self.assertEqual(None, parser.get_default("foo")) - self.assertEqual(None, parser.get_default("bar")) - - parser.add_argument("--bar", type=int, default=42) - self.assertEqual(None, parser.get_default("foo")) - self.assertEqual(42, parser.get_default("bar")) - - parser.set_defaults(foo="badger") - self.assertEqual("badger", parser.get_default("foo")) - self.assertEqual(42, parser.get_default("bar")) - -# ========================== -# Namespace 'contains' tests -# ========================== - -class TestNamespaceContainsSimple(TestCase): - - def test_empty(self): - ns = argparse.Namespace() - self.assertEqual('' in ns, False) - self.assertEqual('' not in ns, True) - self.assertEqual('x' in ns, False) - - def test_non_empty(self): - ns = argparse.Namespace(x=1, y=2) - self.assertEqual('x' in ns, True) - self.assertEqual('x' not in ns, False) - self.assertEqual('y' in ns, True) - self.assertEqual('' in ns, False) - self.assertEqual('xx' in ns, False) - self.assertEqual('z' in ns, False) - -# ===================== -# Help formatting tests -# ===================== - -class TestHelpFormattingMetaclass(type): - - def __init__(cls, name, bases, bodydict): - if name == 'HelpTestCase': - return - - class AddTests(object): - - def __init__(self, test_class, func_suffix, std_name): - self.func_suffix = func_suffix - self.std_name = std_name - - for test_func in [self.test_format, - self.test_print, - self.test_print_file]: - test_name = '%s_%s' % (test_func.__name__, func_suffix) - - def test_wrapper(self, test_func=test_func): - test_func(self) - try: - test_wrapper.__name__ = test_name - except TypeError: - pass - setattr(test_class, test_name, test_wrapper) - - def _get_parser(self, tester): - parser = argparse.ArgumentParser( - *tester.parser_signature.args, - **tester.parser_signature.kwargs) - for argument_sig in getattr(tester, 'argument_signatures', []): - parser.add_argument(*argument_sig.args, - **argument_sig.kwargs) - group_sigs = getattr(tester, 'argument_group_signatures', []) - for group_sig, argument_sigs in group_sigs: - group = parser.add_argument_group(*group_sig.args, - **group_sig.kwargs) - for argument_sig in argument_sigs: - group.add_argument(*argument_sig.args, - **argument_sig.kwargs) - subparsers_sigs = getattr(tester, 'subparsers_signatures', []) - if subparsers_sigs: - subparsers = parser.add_subparsers() - for subparser_sig in subparsers_sigs: - subparsers.add_parser(*subparser_sig.args, - **subparser_sig.kwargs) - return parser - - def _test(self, tester, parser_text): - expected_text = getattr(tester, self.func_suffix) - expected_text = textwrap.dedent(expected_text) - if expected_text != parser_text: - print(repr(expected_text)) - print(repr(parser_text)) - for char1, char2 in zip(expected_text, parser_text): - if char1 != char2: - print('first diff: %r %r' % (char1, char2)) - break - tester.assertEqual(expected_text, parser_text) - - def test_format(self, tester): - parser = self._get_parser(tester) - format = getattr(parser, 'format_%s' % self.func_suffix) - self._test(tester, format()) - - def test_print(self, tester): - parser = self._get_parser(tester) - print_ = getattr(parser, 'print_%s' % self.func_suffix) - old_stream = getattr(sys, self.std_name) - setattr(sys, self.std_name, StdIOBuffer()) - try: - print_() - parser_text = getattr(sys, self.std_name).getvalue() - finally: - setattr(sys, self.std_name, old_stream) - self._test(tester, parser_text) - - def test_print_file(self, tester): - parser = self._get_parser(tester) - print_ = getattr(parser, 'print_%s' % self.func_suffix) - sfile = StdIOBuffer() - print_(sfile) - parser_text = sfile.getvalue() - self._test(tester, parser_text) - - # add tests for {format,print}_{usage,help,version} - for func_suffix, std_name in [('usage', 'stdout'), - ('help', 'stdout'), - ('version', 'stderr')]: - AddTests(cls, func_suffix, std_name) - -bases = TestCase, -HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {}) - - -class TestHelpBiggerOptionals(HelpTestCase): - """Make sure that argument help aligns when options are longer""" - - parser_signature = Sig(prog='PROG', description='DESCRIPTION', - epilog='EPILOG', version='0.1') - argument_signatures = [ - Sig('-x', action='store_true', help='X HELP'), - Sig('--y', help='Y HELP'), - Sig('foo', help='FOO HELP'), - Sig('bar', help='BAR HELP'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-v] [-x] [--y Y] foo bar - ''' - help = usage + '''\ - - DESCRIPTION - - positional arguments: - foo FOO HELP - bar BAR HELP - - optional arguments: - -h, --help show this help message and exit - -v, --version show program's version number and exit - -x X HELP - --y Y Y HELP - - EPILOG - ''' - version = '''\ - 0.1 - ''' - - -class TestHelpBiggerOptionalGroups(HelpTestCase): - """Make sure that argument help aligns when options are longer""" - - parser_signature = Sig(prog='PROG', description='DESCRIPTION', - epilog='EPILOG', version='0.1') - argument_signatures = [ - Sig('-x', action='store_true', help='X HELP'), - Sig('--y', help='Y HELP'), - Sig('foo', help='FOO HELP'), - Sig('bar', help='BAR HELP'), - ] - argument_group_signatures = [ - (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [ - Sig('baz', help='BAZ HELP'), - Sig('-z', nargs='+', help='Z HELP')]), - ] - usage = '''\ - usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz - ''' - help = usage + '''\ - - DESCRIPTION - - positional arguments: - foo FOO HELP - bar BAR HELP - - optional arguments: - -h, --help show this help message and exit - -v, --version show program's version number and exit - -x X HELP - --y Y Y HELP - - GROUP TITLE: - GROUP DESCRIPTION - - baz BAZ HELP - -z Z [Z ...] Z HELP - - EPILOG - ''' - version = '''\ - 0.1 - ''' - - -class TestHelpBiggerPositionals(HelpTestCase): - """Make sure that help aligns when arguments are longer""" - - parser_signature = Sig(usage='USAGE', description='DESCRIPTION') - argument_signatures = [ - Sig('-x', action='store_true', help='X HELP'), - Sig('--y', help='Y HELP'), - Sig('ekiekiekifekang', help='EKI HELP'), - Sig('bar', help='BAR HELP'), - ] - argument_group_signatures = [] - usage = '''\ - usage: USAGE - ''' - help = usage + '''\ - - DESCRIPTION - - positional arguments: - ekiekiekifekang EKI HELP - bar BAR HELP - - optional arguments: - -h, --help show this help message and exit - -x X HELP - --y Y Y HELP - ''' - - version = '' - - -class TestHelpReformatting(HelpTestCase): - """Make sure that text after short names starts on the first line""" - - parser_signature = Sig( - prog='PROG', - description=' oddly formatted\n' - 'description\n' - '\n' - 'that is so long that it should go onto multiple ' - 'lines when wrapped') - argument_signatures = [ - Sig('-x', metavar='XX', help='oddly\n' - ' formatted -x help'), - Sig('y', metavar='yyy', help='normal y help'), - ] - argument_group_signatures = [ - (Sig('title', description='\n' - ' oddly formatted group\n' - '\n' - 'description'), - [Sig('-a', action='store_true', - help=' oddly \n' - 'formatted -a help \n' - ' again, so long that it should be wrapped over ' - 'multiple lines')]), - ] - usage = '''\ - usage: PROG [-h] [-x XX] [-a] yyy - ''' - help = usage + '''\ - - oddly formatted description that is so long that it should go onto \ -multiple - lines when wrapped - - positional arguments: - yyy normal y help - - optional arguments: - -h, --help show this help message and exit - -x XX oddly formatted -x help - - title: - oddly formatted group description - - -a oddly formatted -a help again, so long that it should \ -be wrapped - over multiple lines - ''' - version = '' - - -class TestHelpWrappingShortNames(HelpTestCase): - """Make sure that text after short names starts on the first line""" - - parser_signature = Sig(prog='PROG', description= 'D\nD' * 30) - argument_signatures = [ - Sig('-x', metavar='XX', help='XHH HX' * 20), - Sig('y', metavar='yyy', help='YH YH' * 20), - ] - argument_group_signatures = [ - (Sig('ALPHAS'), [ - Sig('-a', action='store_true', help='AHHH HHA' * 10)]), - ] - usage = '''\ - usage: PROG [-h] [-x XX] [-a] yyy - ''' - help = usage + '''\ - - D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \ -DD DD DD - DD DD DD DD D - - positional arguments: - yyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \ -YHYH YHYH - YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH - - optional arguments: - -h, --help show this help message and exit - -x XX XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH \ -HXXHH HXXHH - HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX - - ALPHAS: - -a AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH \ -HHAAHHH - HHAAHHH HHAAHHH HHA - ''' - version = '' - - -class TestHelpWrappingLongNames(HelpTestCase): - """Make sure that text after long names starts on the next line""" - - parser_signature = Sig(usage='USAGE', description= 'D D' * 30, - version='V V'*30) - argument_signatures = [ - Sig('-x', metavar='X' * 25, help='XH XH' * 20), - Sig('y', metavar='y' * 25, help='YH YH' * 20), - ] - argument_group_signatures = [ - (Sig('ALPHAS'), [ - Sig('-a', metavar='A' * 25, help='AH AH' * 20), - Sig('z', metavar='z' * 25, help='ZH ZH' * 20)]), - ] - usage = '''\ - usage: USAGE - ''' - help = usage + '''\ - - D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \ -DD DD DD - DD DD DD DD D - - positional arguments: - yyyyyyyyyyyyyyyyyyyyyyyyy - YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \ -YHYH YHYH - YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH - - optional arguments: - -h, --help show this help message and exit - -v, --version show program's version number and exit - -x XXXXXXXXXXXXXXXXXXXXXXXXX - XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH \ -XHXH XHXH - XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH - - ALPHAS: - -a AAAAAAAAAAAAAAAAAAAAAAAAA - AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH \ -AHAH AHAH - AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH - zzzzzzzzzzzzzzzzzzzzzzzzz - ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH \ -ZHZH ZHZH - ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH - ''' - version = '''\ - V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV \ -VV VV VV - VV VV VV VV V - ''' - - -class TestHelpUsage(HelpTestCase): - """Test basic usage messages""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('-w', nargs='+', help='w'), - Sig('-x', nargs='*', help='x'), - Sig('a', help='a'), - Sig('b', help='b', nargs=2), - Sig('c', help='c', nargs='?'), - ] - argument_group_signatures = [ - (Sig('group'), [ - Sig('-y', nargs='?', help='y'), - Sig('-z', nargs=3, help='z'), - Sig('d', help='d', nargs='*'), - Sig('e', help='e', nargs='+'), - ]) - ] - usage = '''\ - usage: PROG [-h] [-w W [W ...]] [-x [X [X ...]]] [-y [Y]] [-z Z Z Z] - a b b [c] [d [d ...]] e [e ...] - ''' - help = usage + '''\ - - positional arguments: - a a - b b - c c - - optional arguments: - -h, --help show this help message and exit - -w W [W ...] w - -x [X [X ...]] x - - group: - -y [Y] y - -z Z Z Z z - d d - e e - ''' - version = '' - - -class TestHelpOnlyUserGroups(HelpTestCase): - """Test basic usage messages""" - - parser_signature = Sig(prog='PROG', add_help=False) - argument_signatures = [] - argument_group_signatures = [ - (Sig('xxxx'), [ - Sig('-x', help='x'), - Sig('a', help='a'), - ]), - (Sig('yyyy'), [ - Sig('b', help='b'), - Sig('-y', help='y'), - ]), - ] - usage = '''\ - usage: PROG [-x X] [-y Y] a b - ''' - help = usage + '''\ - - xxxx: - -x X x - a a - - yyyy: - b b - -y Y y - ''' - version = '' - - -class TestHelpUsageLongProg(HelpTestCase): - """Test usage messages where the prog is long""" - - parser_signature = Sig(prog='P' * 60) - argument_signatures = [ - Sig('-w', metavar='W'), - Sig('-x', metavar='X'), - Sig('a'), - Sig('b'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP - [-h] [-w W] [-x X] a b - ''' - help = usage + '''\ - - positional arguments: - a - b - - optional arguments: - -h, --help show this help message and exit - -w W - -x X - ''' - version = '' - - -class TestHelpUsageLongProgOptionsWrap(HelpTestCase): - """Test usage messages where the prog is long and the optionals wrap""" - - parser_signature = Sig(prog='P' * 60) - argument_signatures = [ - Sig('-w', metavar='W' * 25), - Sig('-x', metavar='X' * 25), - Sig('-y', metavar='Y' * 25), - Sig('-z', metavar='Z' * 25), - Sig('a'), - Sig('b'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP - [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ -[-x XXXXXXXXXXXXXXXXXXXXXXXXX] - [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] - a b - ''' - help = usage + '''\ - - positional arguments: - a - b - - optional arguments: - -h, --help show this help message and exit - -w WWWWWWWWWWWWWWWWWWWWWWWWW - -x XXXXXXXXXXXXXXXXXXXXXXXXX - -y YYYYYYYYYYYYYYYYYYYYYYYYY - -z ZZZZZZZZZZZZZZZZZZZZZZZZZ - ''' - version = '' - - -class TestHelpUsageLongProgPositionalsWrap(HelpTestCase): - """Test usage messages where the prog is long and the positionals wrap""" - - parser_signature = Sig(prog='P' * 60, add_help=False) - argument_signatures = [ - Sig('a' * 25), - Sig('b' * 25), - Sig('c' * 25), - ] - argument_group_signatures = [] - usage = '''\ - usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP - aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - ''' - help = usage + '''\ - - positional arguments: - aaaaaaaaaaaaaaaaaaaaaaaaa - bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - ''' - version = '' - - -class TestHelpUsageOptionalsWrap(HelpTestCase): - """Test usage messages where the optionals wrap""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('-w', metavar='W' * 25), - Sig('-x', metavar='X' * 25), - Sig('-y', metavar='Y' * 25), - Sig('-z', metavar='Z' * 25), - Sig('a'), - Sig('b'), - Sig('c'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ -[-x XXXXXXXXXXXXXXXXXXXXXXXXX] - [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \ -[-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] - a b c - ''' - help = usage + '''\ - - positional arguments: - a - b - c - - optional arguments: - -h, --help show this help message and exit - -w WWWWWWWWWWWWWWWWWWWWWWWWW - -x XXXXXXXXXXXXXXXXXXXXXXXXX - -y YYYYYYYYYYYYYYYYYYYYYYYYY - -z ZZZZZZZZZZZZZZZZZZZZZZZZZ - ''' - version = '' - - -class TestHelpUsagePositionalsWrap(HelpTestCase): - """Test usage messages where the positionals wrap""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('-x'), - Sig('-y'), - Sig('-z'), - Sig('a' * 25), - Sig('b' * 25), - Sig('c' * 25), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-x X] [-y Y] [-z Z] - aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - ''' - help = usage + '''\ - - positional arguments: - aaaaaaaaaaaaaaaaaaaaaaaaa - bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - - optional arguments: - -h, --help show this help message and exit - -x X - -y Y - -z Z - ''' - version = '' - - -class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase): - """Test usage messages where the optionals and positionals wrap""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('-x', metavar='X' * 25), - Sig('-y', metavar='Y' * 25), - Sig('-z', metavar='Z' * 25), - Sig('a' * 25), - Sig('b' * 25), - Sig('c' * 25), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ -[-y YYYYYYYYYYYYYYYYYYYYYYYYY] - [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] - aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - ''' - help = usage + '''\ - - positional arguments: - aaaaaaaaaaaaaaaaaaaaaaaaa - bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - - optional arguments: - -h, --help show this help message and exit - -x XXXXXXXXXXXXXXXXXXXXXXXXX - -y YYYYYYYYYYYYYYYYYYYYYYYYY - -z ZZZZZZZZZZZZZZZZZZZZZZZZZ - ''' - version = '' - - -class TestHelpUsageOptionalsOnlyWrap(HelpTestCase): - """Test usage messages where there are only optionals and they wrap""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('-x', metavar='X' * 25), - Sig('-y', metavar='Y' * 25), - Sig('-z', metavar='Z' * 25), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ -[-y YYYYYYYYYYYYYYYYYYYYYYYYY] - [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] - ''' - help = usage + '''\ - - optional arguments: - -h, --help show this help message and exit - -x XXXXXXXXXXXXXXXXXXXXXXXXX - -y YYYYYYYYYYYYYYYYYYYYYYYYY - -z ZZZZZZZZZZZZZZZZZZZZZZZZZ - ''' - version = '' - - -class TestHelpUsagePositionalsOnlyWrap(HelpTestCase): - """Test usage messages where there are only positionals and they wrap""" - - parser_signature = Sig(prog='PROG', add_help=False) - argument_signatures = [ - Sig('a' * 25), - Sig('b' * 25), - Sig('c' * 25), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - ''' - help = usage + '''\ - - positional arguments: - aaaaaaaaaaaaaaaaaaaaaaaaa - bbbbbbbbbbbbbbbbbbbbbbbbb - ccccccccccccccccccccccccc - ''' - version = '' - - -class TestHelpVariableExpansion(HelpTestCase): - """Test that variables are expanded properly in help messages""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('-x', type=int, - help='x %(prog)s %(default)s %(type)s %%'), - Sig('-y', action='store_const', default=42, const='XXX', - help='y %(prog)s %(default)s %(const)s'), - Sig('--foo', choices='abc', - help='foo %(prog)s %(default)s %(choices)s'), - Sig('--bar', default='baz', choices=[1, 2], metavar='BBB', - help='bar %(prog)s %(default)s %(dest)s'), - Sig('spam', help='spam %(prog)s %(default)s'), - Sig('badger', default=0.5, help='badger %(prog)s %(default)s'), - ] - argument_group_signatures = [ - (Sig('group'), [ - Sig('-a', help='a %(prog)s %(default)s'), - Sig('-b', default=-1, help='b %(prog)s %(default)s'), - ]) - ] - usage = ('''\ - usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B] - spam badger - ''') - help = usage + '''\ - - positional arguments: - spam spam PROG None - badger badger PROG 0.5 - - optional arguments: - -h, --help show this help message and exit - -x X x PROG None int % - -y y PROG 42 XXX - --foo {a,b,c} foo PROG None a, b, c - --bar BBB bar PROG baz bar - - group: - -a A a PROG None - -b B b PROG -1 - ''' - version = '' - - -class TestHelpVariableExpansionUsageSupplied(HelpTestCase): - """Test that variables are expanded properly when usage= is present""" - - parser_signature = Sig(prog='PROG', usage='%(prog)s FOO') - argument_signatures = [] - argument_group_signatures = [] - usage = ('''\ - usage: PROG FOO - ''') - help = usage + '''\ - - optional arguments: - -h, --help show this help message and exit - ''' - version = '' - - -class TestHelpVariableExpansionNoArguments(HelpTestCase): - """Test that variables are expanded properly with no arguments""" - - parser_signature = Sig(prog='PROG', add_help=False) - argument_signatures = [] - argument_group_signatures = [] - usage = ('''\ - usage: PROG - ''') - help = usage - version = '' - - -class TestHelpSuppressUsage(HelpTestCase): - """Test that items can be suppressed in usage messages""" - - parser_signature = Sig(prog='PROG', usage=argparse.SUPPRESS) - argument_signatures = [ - Sig('--foo', help='foo help'), - Sig('spam', help='spam help'), - ] - argument_group_signatures = [] - help = '''\ - positional arguments: - spam spam help - - optional arguments: - -h, --help show this help message and exit - --foo FOO foo help - ''' - usage = '' - version = '' - - -class TestHelpSuppressOptional(HelpTestCase): - """Test that optional arguments can be suppressed in help messages""" - - parser_signature = Sig(prog='PROG', add_help=False) - argument_signatures = [ - Sig('--foo', help=argparse.SUPPRESS), - Sig('spam', help='spam help'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG spam - ''' - help = usage + '''\ - - positional arguments: - spam spam help - ''' - version = '' - - -class TestHelpSuppressOptionalGroup(HelpTestCase): - """Test that optional groups can be suppressed in help messages""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('--foo', help='foo help'), - Sig('spam', help='spam help'), - ] - argument_group_signatures = [ - (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]), - ] - usage = '''\ - usage: PROG [-h] [--foo FOO] spam - ''' - help = usage + '''\ - - positional arguments: - spam spam help - - optional arguments: - -h, --help show this help message and exit - --foo FOO foo help - ''' - version = '' - - -class TestHelpSuppressPositional(HelpTestCase): - """Test that positional arguments can be suppressed in help messages""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('--foo', help='foo help'), - Sig('spam', help=argparse.SUPPRESS), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [--foo FOO] - ''' - help = usage + '''\ - - optional arguments: - -h, --help show this help message and exit - --foo FOO foo help - ''' - version = '' - - -class TestHelpRequiredOptional(HelpTestCase): - """Test that required options don't look optional""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('--foo', required=True, help='foo help'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] --foo FOO - ''' - help = usage + '''\ - - optional arguments: - -h, --help show this help message and exit - --foo FOO foo help - ''' - version = '' - - -class TestHelpAlternatePrefixChars(HelpTestCase): - """Test that options display with different prefix characters""" - - parser_signature = Sig(prog='PROG', prefix_chars='^;', add_help=False) - argument_signatures = [ - Sig('^^foo', action='store_true', help='foo help'), - Sig(';b', ';;bar', help='bar help'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [^^foo] [;b BAR] - ''' - help = usage + '''\ - - optional arguments: - ^^foo foo help - ;b BAR, ;;bar BAR bar help - ''' - version = '' - - -class TestHelpNoHelpOptional(HelpTestCase): - """Test that the --help argument can be suppressed help messages""" - - parser_signature = Sig(prog='PROG', add_help=False) - argument_signatures = [ - Sig('--foo', help='foo help'), - Sig('spam', help='spam help'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [--foo FOO] spam - ''' - help = usage + '''\ - - positional arguments: - spam spam help - - optional arguments: - --foo FOO foo help - ''' - version = '' - - -class TestHelpVersionOptional(HelpTestCase): - """Test that the --version argument can be suppressed help messages""" - - parser_signature = Sig(prog='PROG', version='1.0') - argument_signatures = [ - Sig('--foo', help='foo help'), - Sig('spam', help='spam help'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-v] [--foo FOO] spam - ''' - help = usage + '''\ - - positional arguments: - spam spam help - - optional arguments: - -h, --help show this help message and exit - -v, --version show program's version number and exit - --foo FOO foo help - ''' - version = '''\ - 1.0 - ''' - - -class TestHelpNone(HelpTestCase): - """Test that no errors occur if no help is specified""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('--foo'), - Sig('spam'), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [--foo FOO] spam - ''' - help = usage + '''\ - - positional arguments: - spam - - optional arguments: - -h, --help show this help message and exit - --foo FOO - ''' - version = '' - - -class TestHelpTupleMetavar(HelpTestCase): - """Test specifying metavar as a tuple""" - - parser_signature = Sig(prog='PROG') - argument_signatures = [ - Sig('-w', help='w', nargs='+', metavar=('W1', 'W2')), - Sig('-x', help='x', nargs='*', metavar=('X1', 'X2')), - Sig('-y', help='y', nargs=3, metavar=('Y1', 'Y2', 'Y3')), - Sig('-z', help='z', nargs='?', metavar=('Z1', )), - ] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] \ -[-z [Z1]] - ''' - help = usage + '''\ - - optional arguments: - -h, --help show this help message and exit - -w W1 [W2 ...] w - -x [X1 [X2 ...]] x - -y Y1 Y2 Y3 y - -z [Z1] z - ''' - version = '' - - -class TestHelpRawText(HelpTestCase): - """Test the RawTextHelpFormatter""" - - parser_signature = Sig( - prog='PROG', formatter_class=argparse.RawTextHelpFormatter, - description='Keep the formatting\n' - ' exactly as it is written\n' - '\n' - 'here\n') - - argument_signatures = [ - Sig('--foo', help=' foo help should also\n' - 'appear as given here'), - Sig('spam', help='spam help'), - ] - argument_group_signatures = [ - (Sig('title', description=' This text\n' - ' should be indented\n' - ' exactly like it is here\n'), - [Sig('--bar', help='bar help')]), - ] - usage = '''\ - usage: PROG [-h] [--foo FOO] [--bar BAR] spam - ''' - help = usage + '''\ - - Keep the formatting - exactly as it is written - - here - - positional arguments: - spam spam help - - optional arguments: - -h, --help show this help message and exit - --foo FOO foo help should also - appear as given here - - title: - This text - should be indented - exactly like it is here - - --bar BAR bar help - ''' - version = '' - - -class TestHelpRawDescription(HelpTestCase): - """Test the RawTextHelpFormatter""" - - parser_signature = Sig( - prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter, - description='Keep the formatting\n' - ' exactly as it is written\n' - '\n' - 'here\n') - - argument_signatures = [ - Sig('--foo', help=' foo help should not\n' - ' retain this odd formatting'), - Sig('spam', help='spam help'), - ] - argument_group_signatures = [ - (Sig('title', description=' This text\n' - ' should be indented\n' - ' exactly like it is here\n'), - [Sig('--bar', help='bar help')]), - ] - usage = '''\ - usage: PROG [-h] [--foo FOO] [--bar BAR] spam - ''' - help = usage + '''\ - - Keep the formatting - exactly as it is written - - here - - positional arguments: - spam spam help - - optional arguments: - -h, --help show this help message and exit - --foo FOO foo help should not retain this odd formatting - - title: - This text - should be indented - exactly like it is here - - --bar BAR bar help - ''' - version = '' - - -class TestHelpArgumentDefaults(HelpTestCase): - """Test the ArgumentDefaultsHelpFormatter""" - - parser_signature = Sig( - prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter, - description='description') - - argument_signatures = [ - Sig('--foo', help='foo help - oh and by the way, %(default)s'), - Sig('--bar', action='store_true', help='bar help'), - Sig('spam', help='spam help'), - Sig('badger', nargs='?', default='wooden', help='badger help'), - ] - argument_group_signatures = [ - (Sig('title', description='description'), - [Sig('--baz', type=int, default=42, help='baz help')]), - ] - usage = '''\ - usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger] - ''' - help = usage + '''\ - - description - - positional arguments: - spam spam help - badger badger help (default: wooden) - - optional arguments: - -h, --help show this help message and exit - --foo FOO foo help - oh and by the way, None - --bar bar help (default: False) - - title: - description - - --baz BAZ baz help (default: 42) - ''' - version = '' - -class TestHelpVersionAction(HelpTestCase): - """Test the default help for the version action""" - - parser_signature = Sig(prog='PROG', description='description') - argument_signatures = [Sig('-V', '--version', action='version', version='3.6')] - argument_group_signatures = [] - usage = '''\ - usage: PROG [-h] [-V] - ''' - help = usage + '''\ - - description - - optional arguments: - -h, --help show this help message and exit - -V, --version show program's version number and exit - ''' - version = '' - -class TestHelpSubparsersOrdering(HelpTestCase): - """Test ordering of subcommands in help matches the code""" - parser_signature = Sig(prog='PROG', - description='display some subcommands', - version='0.1') - - subparsers_signatures = [Sig(name=name) - for name in ('a', 'b', 'c', 'd', 'e')] - - usage = '''\ - usage: PROG [-h] [-v] {a,b,c,d,e} ... - ''' - - help = usage + '''\ - - display some subcommands - - positional arguments: - {a,b,c,d,e} - - optional arguments: - -h, --help show this help message and exit - -v, --version show program's version number and exit - ''' - - version = '''\ - 0.1 - ''' - -class TestHelpSubparsersWithHelpOrdering(HelpTestCase): - """Test ordering of subcommands in help matches the code""" - parser_signature = Sig(prog='PROG', - description='display some subcommands', - version='0.1') - - subcommand_data = (('a', 'a subcommand help'), - ('b', 'b subcommand help'), - ('c', 'c subcommand help'), - ('d', 'd subcommand help'), - ('e', 'e subcommand help'), - ) - - subparsers_signatures = [Sig(name=name, help=help) - for name, help in subcommand_data] - - usage = '''\ - usage: PROG [-h] [-v] {a,b,c,d,e} ... - ''' - - help = usage + '''\ - - display some subcommands - - positional arguments: - {a,b,c,d,e} - a a subcommand help - b b subcommand help - c c subcommand help - d d subcommand help - e e subcommand help - - optional arguments: - -h, --help show this help message and exit - -v, --version show program's version number and exit - ''' - - version = '''\ - 0.1 - ''' - - -# ===================================== -# Optional/Positional constructor tests -# ===================================== - -class TestInvalidArgumentConstructors(TestCase): - """Test a bunch of invalid Argument constructors""" - - def assertTypeError(self, *args, **kwargs): - parser = argparse.ArgumentParser() - self.assertRaises(TypeError, parser.add_argument, - *args, **kwargs) - - def assertValueError(self, *args, **kwargs): - parser = argparse.ArgumentParser() - self.assertRaises(ValueError, parser.add_argument, - *args, **kwargs) - - def test_invalid_keyword_arguments(self): - self.assertTypeError('-x', bar=None) - self.assertTypeError('-y', callback='foo') - self.assertTypeError('-y', callback_args=()) - self.assertTypeError('-y', callback_kwargs={}) - - def test_missing_destination(self): - self.assertTypeError() - for action in ['append', 'store']: - self.assertTypeError(action=action) - - def test_invalid_option_strings(self): - self.assertValueError('--') - self.assertValueError('---') - - def test_invalid_type(self): - self.assertValueError('--foo', type='int') - self.assertValueError('--foo', type=(int, float)) - - def test_invalid_action(self): - self.assertValueError('-x', action='foo') - self.assertValueError('foo', action='baz') - self.assertValueError('--foo', action=('store', 'append')) - parser = argparse.ArgumentParser() - try: - parser.add_argument("--foo", action="store-true") - except ValueError: - e = sys.exc_info()[1] - expected = 'unknown action' - msg = 'expected %r, found %r' % (expected, e) - self.assertTrue(expected in str(e), msg) - - def test_multiple_dest(self): - parser = argparse.ArgumentParser() - parser.add_argument(dest='foo') - try: - parser.add_argument('bar', dest='baz') - except ValueError: - e = sys.exc_info()[1] - expected = 'dest supplied twice for positional argument' - msg = 'expected %r, found %r' % (expected, e) - self.assertTrue(expected in str(e), msg) - - def test_no_argument_actions(self): - for action in ['store_const', 'store_true', 'store_false', - 'append_const', 'count']: - for attrs in [dict(type=int), dict(nargs='+'), - dict(choices='ab')]: - self.assertTypeError('-x', action=action, **attrs) - - def test_no_argument_no_const_actions(self): - # options with zero arguments - for action in ['store_true', 'store_false', 'count']: - - # const is always disallowed - self.assertTypeError('-x', const='foo', action=action) - - # nargs is always disallowed - self.assertTypeError('-x', nargs='*', action=action) - - def test_more_than_one_argument_actions(self): - for action in ['store', 'append']: - - # nargs=0 is disallowed - self.assertValueError('-x', nargs=0, action=action) - self.assertValueError('spam', nargs=0, action=action) - - # const is disallowed with non-optional arguments - for nargs in [1, '*', '+']: - self.assertValueError('-x', const='foo', - nargs=nargs, action=action) - self.assertValueError('spam', const='foo', - nargs=nargs, action=action) - - def test_required_const_actions(self): - for action in ['store_const', 'append_const']: - - # nargs is always disallowed - self.assertTypeError('-x', nargs='+', action=action) - - def test_parsers_action_missing_params(self): - self.assertTypeError('command', action='parsers') - self.assertTypeError('command', action='parsers', prog='PROG') - self.assertTypeError('command', action='parsers', - parser_class=argparse.ArgumentParser) - - def test_required_positional(self): - self.assertTypeError('foo', required=True) - - def test_user_defined_action(self): - - class Success(Exception): - pass - - class Action(object): - - def __init__(self, - option_strings, - dest, - const, - default, - required=False): - if dest == 'spam': - if const is Success: - if default is Success: - raise Success() - - def __call__(self, *args, **kwargs): - pass - - parser = argparse.ArgumentParser() - self.assertRaises(Success, parser.add_argument, '--spam', - action=Action, default=Success, const=Success) - self.assertRaises(Success, parser.add_argument, 'spam', - action=Action, default=Success, const=Success) - -# ================================ -# Actions returned by add_argument -# ================================ - -class TestActionsReturned(TestCase): - - def test_dest(self): - parser = argparse.ArgumentParser() - action = parser.add_argument('--foo') - self.assertEqual(action.dest, 'foo') - action = parser.add_argument('-b', '--bar') - self.assertEqual(action.dest, 'bar') - action = parser.add_argument('-x', '-y') - self.assertEqual(action.dest, 'x') - - def test_misc(self): - parser = argparse.ArgumentParser() - action = parser.add_argument('--foo', nargs='?', const=42, - default=84, type=int, choices=[1, 2], - help='FOO', metavar='BAR', dest='baz') - self.assertEqual(action.nargs, '?') - self.assertEqual(action.const, 42) - self.assertEqual(action.default, 84) - self.assertEqual(action.type, int) - self.assertEqual(action.choices, [1, 2]) - self.assertEqual(action.help, 'FOO') - self.assertEqual(action.metavar, 'BAR') - self.assertEqual(action.dest, 'baz') - - -# ================================ -# Argument conflict handling tests -# ================================ - -class TestConflictHandling(TestCase): - - def test_bad_type(self): - self.assertRaises(ValueError, argparse.ArgumentParser, - conflict_handler='foo') - - def test_conflict_error(self): - parser = argparse.ArgumentParser() - parser.add_argument('-x') - self.assertRaises(argparse.ArgumentError, - parser.add_argument, '-x') - parser.add_argument('--spam') - self.assertRaises(argparse.ArgumentError, - parser.add_argument, '--spam') - - def test_resolve_error(self): - get_parser = argparse.ArgumentParser - parser = get_parser(prog='PROG', conflict_handler='resolve') - - parser.add_argument('-x', help='OLD X') - parser.add_argument('-x', help='NEW X') - self.assertEqual(parser.format_help(), textwrap.dedent('''\ - usage: PROG [-h] [-x X] - - optional arguments: - -h, --help show this help message and exit - -x X NEW X - ''')) - - parser.add_argument('--spam', metavar='OLD_SPAM') - parser.add_argument('--spam', metavar='NEW_SPAM') - self.assertEqual(parser.format_help(), textwrap.dedent('''\ - usage: PROG [-h] [-x X] [--spam NEW_SPAM] - - optional arguments: - -h, --help show this help message and exit - -x X NEW X - --spam NEW_SPAM - ''')) - - -# ============================= -# Help and Version option tests -# ============================= - -class TestOptionalsHelpVersionActions(TestCase): - """Test the help and version actions""" - - def _get_error(self, func, *args, **kwargs): - try: - func(*args, **kwargs) - except ArgumentParserError: - return sys.exc_info()[1] - else: - self.assertRaises(ArgumentParserError, func, *args, **kwargs) - - def assertPrintHelpExit(self, parser, args_str): - self.assertEqual( - parser.format_help(), - self._get_error(parser.parse_args, args_str.split()).stdout) - - def assertPrintVersionExit(self, parser, args_str): - self.assertEqual( - parser.format_version(), - self._get_error(parser.parse_args, args_str.split()).stderr) - - def assertArgumentParserError(self, parser, *args): - self.assertRaises(ArgumentParserError, parser.parse_args, args) - - def test_version(self): - parser = ErrorRaisingArgumentParser(version='1.0') - self.assertPrintHelpExit(parser, '-h') - self.assertPrintHelpExit(parser, '--help') - self.assertPrintVersionExit(parser, '-v') - self.assertPrintVersionExit(parser, '--version') - - def test_version_format(self): - parser = ErrorRaisingArgumentParser(prog='PPP', version='%(prog)s 3.5') - msg = self._get_error(parser.parse_args, ['-v']).stderr - self.assertEqual('PPP 3.5\n', msg) - - def test_version_no_help(self): - parser = ErrorRaisingArgumentParser(add_help=False, version='1.0') - self.assertArgumentParserError(parser, '-h') - self.assertArgumentParserError(parser, '--help') - self.assertPrintVersionExit(parser, '-v') - self.assertPrintVersionExit(parser, '--version') - - def test_version_action(self): - parser = ErrorRaisingArgumentParser(prog='XXX') - parser.add_argument('-V', action='version', version='%(prog)s 3.7') - msg = self._get_error(parser.parse_args, ['-V']).stderr - self.assertEqual('XXX 3.7\n', msg) - - def test_no_help(self): - parser = ErrorRaisingArgumentParser(add_help=False) - self.assertArgumentParserError(parser, '-h') - self.assertArgumentParserError(parser, '--help') - self.assertArgumentParserError(parser, '-v') - self.assertArgumentParserError(parser, '--version') - - def test_alternate_help_version(self): - parser = ErrorRaisingArgumentParser() - parser.add_argument('-x', action='help') - parser.add_argument('-y', action='version') - self.assertPrintHelpExit(parser, '-x') - self.assertPrintVersionExit(parser, '-y') - self.assertArgumentParserError(parser, '-v') - self.assertArgumentParserError(parser, '--version') - - def test_help_version_extra_arguments(self): - parser = ErrorRaisingArgumentParser(version='1.0') - parser.add_argument('-x', action='store_true') - parser.add_argument('y') - - # try all combinations of valid prefixes and suffixes - valid_prefixes = ['', '-x', 'foo', '-x bar', 'baz -x'] - valid_suffixes = valid_prefixes + ['--bad-option', 'foo bar baz'] - for prefix in valid_prefixes: - for suffix in valid_suffixes: - format = '%s %%s %s' % (prefix, suffix) - self.assertPrintHelpExit(parser, format % '-h') - self.assertPrintHelpExit(parser, format % '--help') - self.assertPrintVersionExit(parser, format % '-v') - self.assertPrintVersionExit(parser, format % '--version') - - -# ====================== -# str() and repr() tests -# ====================== - -class TestStrings(TestCase): - """Test str() and repr() on Optionals and Positionals""" - - def assertStringEqual(self, obj, result_string): - for func in [str, repr]: - self.assertEqual(func(obj), result_string) - - def test_optional(self): - option = argparse.Action( - option_strings=['--foo', '-a', '-b'], - dest='b', - type='int', - nargs='+', - default=42, - choices=[1, 2, 3], - help='HELP', - metavar='METAVAR') - string = ( - "Action(option_strings=['--foo', '-a', '-b'], dest='b', " - "nargs='+', const=None, default=42, type='int', " - "choices=[1, 2, 3], help='HELP', metavar='METAVAR')") - self.assertStringEqual(option, string) - - def test_argument(self): - argument = argparse.Action( - option_strings=[], - dest='x', - type=float, - nargs='?', - default=2.5, - choices=[0.5, 1.5, 2.5], - help='H HH H', - metavar='MV MV MV') - string = ( - "Action(option_strings=[], dest='x', nargs='?', " - "const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], " - "help='H HH H', metavar='MV MV MV')" % float) - self.assertStringEqual(argument, string) - - def test_namespace(self): - ns = argparse.Namespace(foo=42, bar='spam') - string = "Namespace(bar='spam', foo=42)" - self.assertStringEqual(ns, string) - - def test_parser(self): - parser = argparse.ArgumentParser(prog='PROG') - string = ( - "ArgumentParser(prog='PROG', usage=None, description=None, " - "version=None, formatter_class=%r, conflict_handler='error', " - "add_help=True)" % argparse.HelpFormatter) - self.assertStringEqual(parser, string) - -# =============== -# Namespace tests -# =============== - -class TestNamespace(TestCase): - - def test_constructor(self): - ns = argparse.Namespace() - self.assertRaises(AttributeError, getattr, ns, 'x') - - ns = argparse.Namespace(a=42, b='spam') - self.assertEqual(ns.a, 42) - self.assertEqual(ns.b, 'spam') - - def test_equality(self): - ns1 = argparse.Namespace(a=1, b=2) - ns2 = argparse.Namespace(b=2, a=1) - ns3 = argparse.Namespace(a=1) - ns4 = argparse.Namespace(b=2) - - self.assertEqual(ns1, ns2) - self.assertNotEqual(ns1, ns3) - self.assertNotEqual(ns1, ns4) - self.assertNotEqual(ns2, ns3) - self.assertNotEqual(ns2, ns4) - self.assertTrue(ns1 != ns3) - self.assertTrue(ns1 != ns4) - self.assertTrue(ns2 != ns3) - self.assertTrue(ns2 != ns4) - - -# =================== -# File encoding tests -# =================== - -class TestEncoding(TestCase): - - def _test_module_encoding(self, path): - path, _ = os.path.splitext(path) - if path.endswith(r'$py'): - path = path[:-3] - path += ".py" - with codecs.open(path, 'r', 'utf8') as f: - f.read() - - def test_argparse_module_encoding(self): - self._test_module_encoding(argparse.__file__) - - def test_test_argparse_module_encoding(self): - self._test_module_encoding(__file__) - -# =================== -# ArgumentError tests -# =================== - -class TestArgumentError(TestCase): - - def test_argument_error(self): - msg = "my error here" - error = argparse.ArgumentError(None, msg) - self.assertEqual(str(error), msg) - -# ======================= -# ArgumentTypeError tests -# ======================= - -class TestArgumentTypeError(TestCase): - - def test_argument_type_error(self): - - def spam(string): - raise argparse.ArgumentTypeError('spam!') - - parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False) - parser.add_argument('x', type=spam) - try: - parser.parse_args(['XXX']) - except ArgumentParserError: - expected = 'usage: PROG x\nPROG: error: argument x: spam!\n' - msg = sys.exc_info()[1].stderr - self.assertEqual(expected, msg) - else: - self.fail() - -# ====================== -# parse_known_args tests -# ====================== - -class TestParseKnownArgs(TestCase): - - def test_optionals(self): - parser = argparse.ArgumentParser() - parser.add_argument('--foo') - args, extras = parser.parse_known_args('--foo F --bar --baz'.split()) - self.assertEqual(NS(foo='F'), args) - self.assertEqual(['--bar', '--baz'], extras) - - def test_mixed(self): - parser = argparse.ArgumentParser() - parser.add_argument('-v', nargs='?', const=1, type=int) - parser.add_argument('--spam', action='store_false') - parser.add_argument('badger') - - argv = ["B", "C", "--foo", "-v", "3", "4"] - args, extras = parser.parse_known_args(argv) - self.assertEqual(NS(v=3, spam=True, badger="B"), args) - self.assertEqual(["C", "--foo", "4"], extras) - -# ========================== -# add_argument metavar tests -# ========================== - -class TestAddArgumentMetavar(TestCase): - - EXPECTED_MESSAGE = "length of metavar tuple does not match nargs" - - def do_test_no_exception(self, nargs, metavar): - parser = argparse.ArgumentParser() - parser.add_argument("--foo", nargs=nargs, metavar=metavar) - - def do_test_exception(self, nargs, metavar): - parser = argparse.ArgumentParser() - with self.assertRaises(ValueError) as cm: - parser.add_argument("--foo", nargs=nargs, metavar=metavar) - self.assertEqual(cm.exception.args[0], self.EXPECTED_MESSAGE) - - # Unit tests for different values of metavar when nargs=None - - def test_nargs_None_metavar_string(self): - self.do_test_no_exception(nargs=None, metavar="1") - - def test_nargs_None_metavar_length0(self): - self.do_test_exception(nargs=None, metavar=tuple()) - - def test_nargs_None_metavar_length1(self): - self.do_test_no_exception(nargs=None, metavar=("1")) - - def test_nargs_None_metavar_length2(self): - self.do_test_exception(nargs=None, metavar=("1", "2")) - - def test_nargs_None_metavar_length3(self): - self.do_test_exception(nargs=None, metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=? - - def test_nargs_optional_metavar_string(self): - self.do_test_no_exception(nargs="?", metavar="1") - - def test_nargs_optional_metavar_length0(self): - self.do_test_exception(nargs="?", metavar=tuple()) - - def test_nargs_optional_metavar_length1(self): - self.do_test_no_exception(nargs="?", metavar=("1")) - - def test_nargs_optional_metavar_length2(self): - self.do_test_exception(nargs="?", metavar=("1", "2")) - - def test_nargs_optional_metavar_length3(self): - self.do_test_exception(nargs="?", metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=* - - def test_nargs_zeroormore_metavar_string(self): - self.do_test_no_exception(nargs="*", metavar="1") - - def test_nargs_zeroormore_metavar_length0(self): - self.do_test_exception(nargs="*", metavar=tuple()) - - def test_nargs_zeroormore_metavar_length1(self): - self.do_test_no_exception(nargs="*", metavar=("1")) - - def test_nargs_zeroormore_metavar_length2(self): - self.do_test_no_exception(nargs="*", metavar=("1", "2")) - - def test_nargs_zeroormore_metavar_length3(self): - self.do_test_exception(nargs="*", metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=+ - - def test_nargs_oneormore_metavar_string(self): - self.do_test_no_exception(nargs="+", metavar="1") - - def test_nargs_oneormore_metavar_length0(self): - self.do_test_exception(nargs="+", metavar=tuple()) - - def test_nargs_oneormore_metavar_length1(self): - self.do_test_no_exception(nargs="+", metavar=("1")) - - def test_nargs_oneormore_metavar_length2(self): - self.do_test_no_exception(nargs="+", metavar=("1", "2")) - - def test_nargs_oneormore_metavar_length3(self): - self.do_test_exception(nargs="+", metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=... - - def test_nargs_remainder_metavar_string(self): - self.do_test_no_exception(nargs="...", metavar="1") - - def test_nargs_remainder_metavar_length0(self): - self.do_test_no_exception(nargs="...", metavar=tuple()) - - def test_nargs_remainder_metavar_length1(self): - self.do_test_no_exception(nargs="...", metavar=("1")) - - def test_nargs_remainder_metavar_length2(self): - self.do_test_no_exception(nargs="...", metavar=("1", "2")) - - def test_nargs_remainder_metavar_length3(self): - self.do_test_no_exception(nargs="...", metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=A... - - def test_nargs_parser_metavar_string(self): - self.do_test_no_exception(nargs="A...", metavar="1") - - def test_nargs_parser_metavar_length0(self): - self.do_test_exception(nargs="A...", metavar=tuple()) - - def test_nargs_parser_metavar_length1(self): - self.do_test_no_exception(nargs="A...", metavar=("1")) - - def test_nargs_parser_metavar_length2(self): - self.do_test_exception(nargs="A...", metavar=("1", "2")) - - def test_nargs_parser_metavar_length3(self): - self.do_test_exception(nargs="A...", metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=1 - - def test_nargs_1_metavar_string(self): - self.do_test_no_exception(nargs=1, metavar="1") - - def test_nargs_1_metavar_length0(self): - self.do_test_exception(nargs=1, metavar=tuple()) - - def test_nargs_1_metavar_length1(self): - self.do_test_no_exception(nargs=1, metavar=("1")) - - def test_nargs_1_metavar_length2(self): - self.do_test_exception(nargs=1, metavar=("1", "2")) - - def test_nargs_1_metavar_length3(self): - self.do_test_exception(nargs=1, metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=2 - - def test_nargs_2_metavar_string(self): - self.do_test_no_exception(nargs=2, metavar="1") - - def test_nargs_2_metavar_length0(self): - self.do_test_exception(nargs=2, metavar=tuple()) - - def test_nargs_2_metavar_length1(self): - self.do_test_no_exception(nargs=2, metavar=("1")) - - def test_nargs_2_metavar_length2(self): - self.do_test_no_exception(nargs=2, metavar=("1", "2")) - - def test_nargs_2_metavar_length3(self): - self.do_test_exception(nargs=2, metavar=("1", "2", "3")) - - # Unit tests for different values of metavar when nargs=3 - - def test_nargs_3_metavar_string(self): - self.do_test_no_exception(nargs=3, metavar="1") - - def test_nargs_3_metavar_length0(self): - self.do_test_exception(nargs=3, metavar=tuple()) - - def test_nargs_3_metavar_length1(self): - self.do_test_no_exception(nargs=3, metavar=("1")) - - def test_nargs_3_metavar_length2(self): - self.do_test_exception(nargs=3, metavar=("1", "2")) - - def test_nargs_3_metavar_length3(self): - self.do_test_no_exception(nargs=3, metavar=("1", "2", "3")) - -# ============================ -# from argparse import * tests -# ============================ - -class TestImportStar(TestCase): - - def test(self): - for name in argparse.__all__: - self.assertTrue(hasattr(argparse, name)) - - def test_all_exports_everything_but_modules(self): - items = [ - name - for name, value in vars(argparse).items() - if not name.startswith("_") - if not inspect.ismodule(value) - ] - self.assertEqual(sorted(items), sorted(argparse.__all__)) - -def test_main(): - # silence warnings about version argument - these are expected - with test_support.check_warnings( - ('The "version" argument to ArgumentParser is deprecated.', - DeprecationWarning), - ('The (format|print)_version method is deprecated', - DeprecationWarning)): - test_support.run_unittest(__name__) - # Remove global references to avoid looking like we have refleaks. - RFile.seen = {} - WFile.seen = set() - - - -if __name__ == '__main__': - test_main() -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 17 23:21:03 2016 From: jython-checkins at python.org (jim.baker) Date: Thu, 18 Feb 2016 04:21:03 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Update_argparse_library_to_?= =?utf-8?q?latest=2C_and_patch_test_for_Jython?= Message-ID: <20160218042103.1986.83754@psf.io> https://hg.python.org/jython/rev/fd2d22e4e527 changeset: 7903:fd2d22e4e527 user: Jim Baker date: Wed Feb 17 19:57:26 2016 -0700 summary: Update argparse library to latest, and patch test for Jython files: Lib/test/test_argparse.py | 4836 ++++++++++++++ lib-python/2.7/argparse.py | 21 +- lib-python/2.7/test/test_argparse.py | 72 +- 3 files changed, 4924 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py new file mode 100644 --- /dev/null +++ b/Lib/test/test_argparse.py @@ -0,0 +1,4836 @@ +# Author: Steven J. Bethard . + +import codecs +import inspect +import os +import shutil +import stat +import sys +import textwrap +import tempfile +import unittest +import argparse + +from StringIO import StringIO + +class StdIOBuffer(StringIO): + pass + +from test import test_support + +class TestCase(unittest.TestCase): + + def assertEqual(self, obj1, obj2): + if obj1 != obj2: + print('') + print(repr(obj1)) + print(repr(obj2)) + print(obj1) + print(obj2) + super(TestCase, self).assertEqual(obj1, obj2) + + def setUp(self): + # The tests assume that line wrapping occurs at 80 columns, but this + # behaviour can be overridden by setting the COLUMNS environment + # variable. To ensure that this assumption is true, unset COLUMNS. + env = test_support.EnvironmentVarGuard() + env.unset("COLUMNS") + self.addCleanup(env.__exit__) + + +class TempDirMixin(object): + + def setUp(self): + self.temp_dir = tempfile.mkdtemp() + self.old_dir = os.getcwd() + os.chdir(self.temp_dir) + + def tearDown(self): + os.chdir(self.old_dir) + for root, dirs, files in os.walk(self.temp_dir, topdown=False): + for name in files: + os.chmod(os.path.join(self.temp_dir, name), stat.S_IWRITE) + shutil.rmtree(self.temp_dir, True) + + def create_readonly_file(self, filename): + file_path = os.path.join(self.temp_dir, filename) + with open(file_path, 'w') as file: + file.write(filename) + os.chmod(file_path, stat.S_IREAD) + +class Sig(object): + + def __init__(self, *args, **kwargs): + self.args = args + self.kwargs = kwargs + + +class NS(object): + + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + def __repr__(self): + sorted_items = sorted(self.__dict__.items()) + kwarg_str = ', '.join(['%s=%r' % tup for tup in sorted_items]) + return '%s(%s)' % (type(self).__name__, kwarg_str) + + __hash__ = None + + def __eq__(self, other): + return vars(self) == vars(other) + + def __ne__(self, other): + return not (self == other) + + +class ArgumentParserError(Exception): + + def __init__(self, message, stdout=None, stderr=None, error_code=None): + Exception.__init__(self, message, stdout, stderr) + self.message = message + self.stdout = stdout + self.stderr = stderr + self.error_code = error_code + + +def stderr_to_parser_error(parse_args, *args, **kwargs): + # if this is being called recursively and stderr or stdout is already being + # redirected, simply call the function and let the enclosing function + # catch the exception + if isinstance(sys.stderr, StdIOBuffer) or isinstance(sys.stdout, StdIOBuffer): + return parse_args(*args, **kwargs) + + # if this is not being called recursively, redirect stderr and + # use it as the ArgumentParserError message + old_stdout = sys.stdout + old_stderr = sys.stderr + sys.stdout = StdIOBuffer() + sys.stderr = StdIOBuffer() + try: + try: + result = parse_args(*args, **kwargs) + for key in list(vars(result)): + if getattr(result, key) is sys.stdout: + setattr(result, key, old_stdout) + if getattr(result, key) is sys.stderr: + setattr(result, key, old_stderr) + return result + except SystemExit: + code = sys.exc_info()[1].code + stdout = sys.stdout.getvalue() + stderr = sys.stderr.getvalue() + raise ArgumentParserError("SystemExit", stdout, stderr, code) + finally: + sys.stdout = old_stdout + sys.stderr = old_stderr + + +class ErrorRaisingArgumentParser(argparse.ArgumentParser): + + def parse_args(self, *args, **kwargs): + parse_args = super(ErrorRaisingArgumentParser, self).parse_args + return stderr_to_parser_error(parse_args, *args, **kwargs) + + def exit(self, *args, **kwargs): + exit = super(ErrorRaisingArgumentParser, self).exit + return stderr_to_parser_error(exit, *args, **kwargs) + + def error(self, *args, **kwargs): + error = super(ErrorRaisingArgumentParser, self).error + return stderr_to_parser_error(error, *args, **kwargs) + + +class ParserTesterMetaclass(type): + """Adds parser tests using the class attributes. + + Classes of this type should specify the following attributes: + + argument_signatures -- a list of Sig objects which specify + the signatures of Argument objects to be created + failures -- a list of args lists that should cause the parser + to fail + successes -- a list of (initial_args, options, remaining_args) tuples + where initial_args specifies the string args to be parsed, + options is a dict that should match the vars() of the options + parsed out of initial_args, and remaining_args should be any + remaining unparsed arguments + """ + + def __init__(cls, name, bases, bodydict): + if name == 'ParserTestCase': + return + + # default parser signature is empty + if not hasattr(cls, 'parser_signature'): + cls.parser_signature = Sig() + if not hasattr(cls, 'parser_class'): + cls.parser_class = ErrorRaisingArgumentParser + + # --------------------------------------- + # functions for adding optional arguments + # --------------------------------------- + def no_groups(parser, argument_signatures): + """Add all arguments directly to the parser""" + for sig in argument_signatures: + parser.add_argument(*sig.args, **sig.kwargs) + + def one_group(parser, argument_signatures): + """Add all arguments under a single group in the parser""" + group = parser.add_argument_group('foo') + for sig in argument_signatures: + group.add_argument(*sig.args, **sig.kwargs) + + def many_groups(parser, argument_signatures): + """Add each argument in its own group to the parser""" + for i, sig in enumerate(argument_signatures): + group = parser.add_argument_group('foo:%i' % i) + group.add_argument(*sig.args, **sig.kwargs) + + # -------------------------- + # functions for parsing args + # -------------------------- + def listargs(parser, args): + """Parse the args by passing in a list""" + return parser.parse_args(args) + + def sysargs(parser, args): + """Parse the args by defaulting to sys.argv""" + old_sys_argv = sys.argv + sys.argv = [old_sys_argv[0]] + args + try: + return parser.parse_args() + finally: + sys.argv = old_sys_argv + + # class that holds the combination of one optional argument + # addition method and one arg parsing method + class AddTests(object): + + def __init__(self, tester_cls, add_arguments, parse_args): + self._add_arguments = add_arguments + self._parse_args = parse_args + + add_arguments_name = self._add_arguments.__name__ + parse_args_name = self._parse_args.__name__ + for test_func in [self.test_failures, self.test_successes]: + func_name = test_func.__name__ + names = func_name, add_arguments_name, parse_args_name + test_name = '_'.join(names) + + def wrapper(self, test_func=test_func): + test_func(self) + try: + wrapper.__name__ = test_name + except TypeError: + pass + setattr(tester_cls, test_name, wrapper) + + def _get_parser(self, tester): + args = tester.parser_signature.args + kwargs = tester.parser_signature.kwargs + parser = tester.parser_class(*args, **kwargs) + self._add_arguments(parser, tester.argument_signatures) + return parser + + def test_failures(self, tester): + parser = self._get_parser(tester) + for args_str in tester.failures: + args = args_str.split() + raises = tester.assertRaises + raises(ArgumentParserError, parser.parse_args, args) + + def test_successes(self, tester): + parser = self._get_parser(tester) + for args, expected_ns in tester.successes: + if isinstance(args, str): + args = args.split() + result_ns = self._parse_args(parser, args) + tester.assertEqual(expected_ns, result_ns) + + # add tests for each combination of an optionals adding method + # and an arg parsing method + for add_arguments in [no_groups, one_group, many_groups]: + for parse_args in [listargs, sysargs]: + AddTests(cls, add_arguments, parse_args) + +bases = TestCase, +ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {}) + +# =============== +# Optionals tests +# =============== + +class TestOptionalsSingleDash(ParserTestCase): + """Test an Optional with a single-dash option string""" + + argument_signatures = [Sig('-x')] + failures = ['-x', 'a', '--foo', '-x --foo', '-x -y'] + successes = [ + ('', NS(x=None)), + ('-x a', NS(x='a')), + ('-xa', NS(x='a')), + ('-x -1', NS(x='-1')), + ('-x-1', NS(x='-1')), + ] + + +class TestOptionalsSingleDashCombined(ParserTestCase): + """Test an Optional with a single-dash option string""" + + argument_signatures = [ + Sig('-x', action='store_true'), + Sig('-yyy', action='store_const', const=42), + Sig('-z'), + ] + failures = ['a', '--foo', '-xa', '-x --foo', '-x -z', '-z -x', + '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza'] + successes = [ + ('', NS(x=False, yyy=None, z=None)), + ('-x', NS(x=True, yyy=None, z=None)), + ('-za', NS(x=False, yyy=None, z='a')), + ('-z a', NS(x=False, yyy=None, z='a')), + ('-xza', NS(x=True, yyy=None, z='a')), + ('-xz a', NS(x=True, yyy=None, z='a')), + ('-x -za', NS(x=True, yyy=None, z='a')), + ('-x -z a', NS(x=True, yyy=None, z='a')), + ('-y', NS(x=False, yyy=42, z=None)), + ('-yyy', NS(x=False, yyy=42, z=None)), + ('-x -yyy -za', NS(x=True, yyy=42, z='a')), + ('-x -yyy -z a', NS(x=True, yyy=42, z='a')), + ] + + +class TestOptionalsSingleDashLong(ParserTestCase): + """Test an Optional with a multi-character single-dash option string""" + + argument_signatures = [Sig('-foo')] + failures = ['-foo', 'a', '--foo', '-foo --foo', '-foo -y', '-fooa'] + successes = [ + ('', NS(foo=None)), + ('-foo a', NS(foo='a')), + ('-foo -1', NS(foo='-1')), + ('-fo a', NS(foo='a')), + ('-f a', NS(foo='a')), + ] + + +class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase): + """Test Optionals where option strings are subsets of each other""" + + argument_signatures = [Sig('-f'), Sig('-foobar'), Sig('-foorab')] + failures = ['-f', '-foo', '-fo', '-foo b', '-foob', '-fooba', '-foora'] + successes = [ + ('', NS(f=None, foobar=None, foorab=None)), + ('-f a', NS(f='a', foobar=None, foorab=None)), + ('-fa', NS(f='a', foobar=None, foorab=None)), + ('-foa', NS(f='oa', foobar=None, foorab=None)), + ('-fooa', NS(f='ooa', foobar=None, foorab=None)), + ('-foobar a', NS(f=None, foobar='a', foorab=None)), + ('-foorab a', NS(f=None, foobar=None, foorab='a')), + ] + + +class TestOptionalsSingleDashAmbiguous(ParserTestCase): + """Test Optionals that partially match but are not subsets""" + + argument_signatures = [Sig('-foobar'), Sig('-foorab')] + failures = ['-f', '-f a', '-fa', '-foa', '-foo', '-fo', '-foo b'] + successes = [ + ('', NS(foobar=None, foorab=None)), + ('-foob a', NS(foobar='a', foorab=None)), + ('-foor a', NS(foobar=None, foorab='a')), + ('-fooba a', NS(foobar='a', foorab=None)), + ('-foora a', NS(foobar=None, foorab='a')), + ('-foobar a', NS(foobar='a', foorab=None)), + ('-foorab a', NS(foobar=None, foorab='a')), + ] + + +class TestOptionalsNumeric(ParserTestCase): + """Test an Optional with a short opt string""" + + argument_signatures = [Sig('-1', dest='one')] + failures = ['-1', 'a', '-1 --foo', '-1 -y', '-1 -1', '-1 -2'] + successes = [ + ('', NS(one=None)), + ('-1 a', NS(one='a')), + ('-1a', NS(one='a')), + ('-1-2', NS(one='-2')), + ] + + +class TestOptionalsDoubleDash(ParserTestCase): + """Test an Optional with a double-dash option string""" + + argument_signatures = [Sig('--foo')] + failures = ['--foo', '-f', '-f a', 'a', '--foo -x', '--foo --bar'] + successes = [ + ('', NS(foo=None)), + ('--foo a', NS(foo='a')), + ('--foo=a', NS(foo='a')), + ('--foo -2.5', NS(foo='-2.5')), + ('--foo=-2.5', NS(foo='-2.5')), + ] + + +class TestOptionalsDoubleDashPartialMatch(ParserTestCase): + """Tests partial matching with a double-dash option string""" + + argument_signatures = [ + Sig('--badger', action='store_true'), + Sig('--bat'), + ] + failures = ['--bar', '--b', '--ba', '--b=2', '--ba=4', '--badge 5'] + successes = [ + ('', NS(badger=False, bat=None)), + ('--bat X', NS(badger=False, bat='X')), + ('--bad', NS(badger=True, bat=None)), + ('--badg', NS(badger=True, bat=None)), + ('--badge', NS(badger=True, bat=None)), + ('--badger', NS(badger=True, bat=None)), + ] + + +class TestOptionalsDoubleDashPrefixMatch(ParserTestCase): + """Tests when one double-dash option string is a prefix of another""" + + argument_signatures = [ + Sig('--badger', action='store_true'), + Sig('--ba'), + ] + failures = ['--bar', '--b', '--ba', '--b=2', '--badge 5'] + successes = [ + ('', NS(badger=False, ba=None)), + ('--ba X', NS(badger=False, ba='X')), + ('--ba=X', NS(badger=False, ba='X')), + ('--bad', NS(badger=True, ba=None)), + ('--badg', NS(badger=True, ba=None)), + ('--badge', NS(badger=True, ba=None)), + ('--badger', NS(badger=True, ba=None)), + ] + + +class TestOptionalsSingleDoubleDash(ParserTestCase): + """Test an Optional with single- and double-dash option strings""" + + argument_signatures = [ + Sig('-f', action='store_true'), + Sig('--bar'), + Sig('-baz', action='store_const', const=42), + ] + failures = ['--bar', '-fbar', '-fbaz', '-bazf', '-b B', 'B'] + successes = [ + ('', NS(f=False, bar=None, baz=None)), + ('-f', NS(f=True, bar=None, baz=None)), + ('--ba B', NS(f=False, bar='B', baz=None)), + ('-f --bar B', NS(f=True, bar='B', baz=None)), + ('-f -b', NS(f=True, bar=None, baz=42)), + ('-ba -f', NS(f=True, bar=None, baz=42)), + ] + + +class TestOptionalsAlternatePrefixChars(ParserTestCase): + """Test an Optional with option strings with custom prefixes""" + + parser_signature = Sig(prefix_chars='+:/', add_help=False) + argument_signatures = [ + Sig('+f', action='store_true'), + Sig('::bar'), + Sig('/baz', action='store_const', const=42), + ] + failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz', '-h', '--help', '+h', '::help', '/help'] + successes = [ + ('', NS(f=False, bar=None, baz=None)), + ('+f', NS(f=True, bar=None, baz=None)), + ('::ba B', NS(f=False, bar='B', baz=None)), + ('+f ::bar B', NS(f=True, bar='B', baz=None)), + ('+f /b', NS(f=True, bar=None, baz=42)), + ('/ba +f', NS(f=True, bar=None, baz=42)), + ] + + +class TestOptionalsAlternatePrefixCharsAddedHelp(ParserTestCase): + """When ``-`` not in prefix_chars, default operators created for help + should use the prefix_chars in use rather than - or -- + http://bugs.python.org/issue9444""" + + parser_signature = Sig(prefix_chars='+:/', add_help=True) + argument_signatures = [ + Sig('+f', action='store_true'), + Sig('::bar'), + Sig('/baz', action='store_const', const=42), + ] + failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz'] + successes = [ + ('', NS(f=False, bar=None, baz=None)), + ('+f', NS(f=True, bar=None, baz=None)), + ('::ba B', NS(f=False, bar='B', baz=None)), + ('+f ::bar B', NS(f=True, bar='B', baz=None)), + ('+f /b', NS(f=True, bar=None, baz=42)), + ('/ba +f', NS(f=True, bar=None, baz=42)) + ] + + +class TestOptionalsAlternatePrefixCharsMultipleShortArgs(ParserTestCase): + """Verify that Optionals must be called with their defined prefixes""" + + parser_signature = Sig(prefix_chars='+-', add_help=False) + argument_signatures = [ + Sig('-x', action='store_true'), + Sig('+y', action='store_true'), + Sig('+z', action='store_true'), + ] + failures = ['-w', + '-xyz', + '+x', + '-y', + '+xyz', + ] + successes = [ + ('', NS(x=False, y=False, z=False)), + ('-x', NS(x=True, y=False, z=False)), + ('+y -x', NS(x=True, y=True, z=False)), + ('+yz -x', NS(x=True, y=True, z=True)), + ] + + +class TestOptionalsShortLong(ParserTestCase): + """Test a combination of single- and double-dash option strings""" + + argument_signatures = [ + Sig('-v', '--verbose', '-n', '--noisy', action='store_true'), + ] + failures = ['--x --verbose', '-N', 'a', '-v x'] + successes = [ + ('', NS(verbose=False)), + ('-v', NS(verbose=True)), + ('--verbose', NS(verbose=True)), + ('-n', NS(verbose=True)), + ('--noisy', NS(verbose=True)), + ] + + +class TestOptionalsDest(ParserTestCase): + """Tests various means of setting destination""" + + argument_signatures = [Sig('--foo-bar'), Sig('--baz', dest='zabbaz')] + failures = ['a'] + successes = [ + ('--foo-bar f', NS(foo_bar='f', zabbaz=None)), + ('--baz g', NS(foo_bar=None, zabbaz='g')), + ('--foo-bar h --baz i', NS(foo_bar='h', zabbaz='i')), + ('--baz j --foo-bar k', NS(foo_bar='k', zabbaz='j')), + ] + + +class TestOptionalsDefault(ParserTestCase): + """Tests specifying a default for an Optional""" + + argument_signatures = [Sig('-x'), Sig('-y', default=42)] + failures = ['a'] + successes = [ + ('', NS(x=None, y=42)), + ('-xx', NS(x='x', y=42)), + ('-yy', NS(x=None, y='y')), + ] + + +class TestOptionalsNargsDefault(ParserTestCase): + """Tests not specifying the number of args for an Optional""" + + argument_signatures = [Sig('-x')] + failures = ['a', '-x'] + successes = [ + ('', NS(x=None)), + ('-x a', NS(x='a')), + ] + + +class TestOptionalsNargs1(ParserTestCase): + """Tests specifying the 1 arg for an Optional""" + + argument_signatures = [Sig('-x', nargs=1)] + failures = ['a', '-x'] + successes = [ + ('', NS(x=None)), + ('-x a', NS(x=['a'])), + ] + + +class TestOptionalsNargs3(ParserTestCase): + """Tests specifying the 3 args for an Optional""" + + argument_signatures = [Sig('-x', nargs=3)] + failures = ['a', '-x', '-x a', '-x a b', 'a -x', 'a -x b'] + successes = [ + ('', NS(x=None)), + ('-x a b c', NS(x=['a', 'b', 'c'])), + ] + + +class TestOptionalsNargsOptional(ParserTestCase): + """Tests specifying an Optional arg for an Optional""" + + argument_signatures = [ + Sig('-w', nargs='?'), + Sig('-x', nargs='?', const=42), + Sig('-y', nargs='?', default='spam'), + Sig('-z', nargs='?', type=int, const='42', default='84'), + ] + failures = ['2'] + successes = [ + ('', NS(w=None, x=None, y='spam', z=84)), + ('-w', NS(w=None, x=None, y='spam', z=84)), + ('-w 2', NS(w='2', x=None, y='spam', z=84)), + ('-x', NS(w=None, x=42, y='spam', z=84)), + ('-x 2', NS(w=None, x='2', y='spam', z=84)), + ('-y', NS(w=None, x=None, y=None, z=84)), + ('-y 2', NS(w=None, x=None, y='2', z=84)), + ('-z', NS(w=None, x=None, y='spam', z=42)), + ('-z 2', NS(w=None, x=None, y='spam', z=2)), + ] + + +class TestOptionalsNargsZeroOrMore(ParserTestCase): + """Tests specifying an args for an Optional that accepts zero or more""" + + argument_signatures = [ + Sig('-x', nargs='*'), + Sig('-y', nargs='*', default='spam'), + ] + failures = ['a'] + successes = [ + ('', NS(x=None, y='spam')), + ('-x', NS(x=[], y='spam')), + ('-x a', NS(x=['a'], y='spam')), + ('-x a b', NS(x=['a', 'b'], y='spam')), + ('-y', NS(x=None, y=[])), + ('-y a', NS(x=None, y=['a'])), + ('-y a b', NS(x=None, y=['a', 'b'])), + ] + + +class TestOptionalsNargsOneOrMore(ParserTestCase): + """Tests specifying an args for an Optional that accepts one or more""" + + argument_signatures = [ + Sig('-x', nargs='+'), + Sig('-y', nargs='+', default='spam'), + ] + failures = ['a', '-x', '-y', 'a -x', 'a -y b'] + successes = [ + ('', NS(x=None, y='spam')), + ('-x a', NS(x=['a'], y='spam')), + ('-x a b', NS(x=['a', 'b'], y='spam')), + ('-y a', NS(x=None, y=['a'])), + ('-y a b', NS(x=None, y=['a', 'b'])), + ] + + +class TestOptionalsChoices(ParserTestCase): + """Tests specifying the choices for an Optional""" + + argument_signatures = [ + Sig('-f', choices='abc'), + Sig('-g', type=int, choices=range(5))] + failures = ['a', '-f d', '-fad', '-ga', '-g 6'] + successes = [ + ('', NS(f=None, g=None)), + ('-f a', NS(f='a', g=None)), + ('-f c', NS(f='c', g=None)), + ('-g 0', NS(f=None, g=0)), + ('-g 03', NS(f=None, g=3)), + ('-fb -g4', NS(f='b', g=4)), + ] + + +class TestOptionalsRequired(ParserTestCase): + """Tests an optional action that is required""" + + argument_signatures = [ + Sig('-x', type=int, required=True), + ] + failures = ['a', ''] + successes = [ + ('-x 1', NS(x=1)), + ('-x42', NS(x=42)), + ] + + +class TestOptionalsActionStore(ParserTestCase): + """Tests the store action for an Optional""" + + argument_signatures = [Sig('-x', action='store')] + failures = ['a', 'a -x'] + successes = [ + ('', NS(x=None)), + ('-xfoo', NS(x='foo')), + ] + + +class TestOptionalsActionStoreConst(ParserTestCase): + """Tests the store_const action for an Optional""" + + argument_signatures = [Sig('-y', action='store_const', const=object)] + failures = ['a'] + successes = [ + ('', NS(y=None)), + ('-y', NS(y=object)), + ] + + +class TestOptionalsActionStoreFalse(ParserTestCase): + """Tests the store_false action for an Optional""" + + argument_signatures = [Sig('-z', action='store_false')] + failures = ['a', '-za', '-z a'] + successes = [ + ('', NS(z=True)), + ('-z', NS(z=False)), + ] + + +class TestOptionalsActionStoreTrue(ParserTestCase): + """Tests the store_true action for an Optional""" + + argument_signatures = [Sig('--apple', action='store_true')] + failures = ['a', '--apple=b', '--apple b'] + successes = [ + ('', NS(apple=False)), + ('--apple', NS(apple=True)), + ] + + +class TestOptionalsActionAppend(ParserTestCase): + """Tests the append action for an Optional""" + + argument_signatures = [Sig('--baz', action='append')] + failures = ['a', '--baz', 'a --baz', '--baz a b'] + successes = [ + ('', NS(baz=None)), + ('--baz a', NS(baz=['a'])), + ('--baz a --baz b', NS(baz=['a', 'b'])), + ] + + +class TestOptionalsActionAppendWithDefault(ParserTestCase): + """Tests the append action for an Optional""" + + argument_signatures = [Sig('--baz', action='append', default=['X'])] + failures = ['a', '--baz', 'a --baz', '--baz a b'] + successes = [ + ('', NS(baz=['X'])), + ('--baz a', NS(baz=['X', 'a'])), + ('--baz a --baz b', NS(baz=['X', 'a', 'b'])), + ] + + +class TestOptionalsActionAppendConst(ParserTestCase): + """Tests the append_const action for an Optional""" + + argument_signatures = [ + Sig('-b', action='append_const', const=Exception), + Sig('-c', action='append', dest='b'), + ] + failures = ['a', '-c', 'a -c', '-bx', '-b x'] + successes = [ + ('', NS(b=None)), + ('-b', NS(b=[Exception])), + ('-b -cx -b -cyz', NS(b=[Exception, 'x', Exception, 'yz'])), + ] + + +class TestOptionalsActionAppendConstWithDefault(ParserTestCase): + """Tests the append_const action for an Optional""" + + argument_signatures = [ + Sig('-b', action='append_const', const=Exception, default=['X']), + Sig('-c', action='append', dest='b'), + ] + failures = ['a', '-c', 'a -c', '-bx', '-b x'] + successes = [ + ('', NS(b=['X'])), + ('-b', NS(b=['X', Exception])), + ('-b -cx -b -cyz', NS(b=['X', Exception, 'x', Exception, 'yz'])), + ] + + +class TestOptionalsActionCount(ParserTestCase): + """Tests the count action for an Optional""" + + argument_signatures = [Sig('-x', action='count')] + failures = ['a', '-x a', '-x b', '-x a -x b'] + successes = [ + ('', NS(x=None)), + ('-x', NS(x=1)), + ] + + +# ================ +# Positional tests +# ================ + +class TestPositionalsNargsNone(ParserTestCase): + """Test a Positional that doesn't specify nargs""" + + argument_signatures = [Sig('foo')] + failures = ['', '-x', 'a b'] + successes = [ + ('a', NS(foo='a')), + ] + + +class TestPositionalsNargs1(ParserTestCase): + """Test a Positional that specifies an nargs of 1""" + + argument_signatures = [Sig('foo', nargs=1)] + failures = ['', '-x', 'a b'] + successes = [ + ('a', NS(foo=['a'])), + ] + + +class TestPositionalsNargs2(ParserTestCase): + """Test a Positional that specifies an nargs of 2""" + + argument_signatures = [Sig('foo', nargs=2)] + failures = ['', 'a', '-x', 'a b c'] + successes = [ + ('a b', NS(foo=['a', 'b'])), + ] + + +class TestPositionalsNargsZeroOrMore(ParserTestCase): + """Test a Positional that specifies unlimited nargs""" + + argument_signatures = [Sig('foo', nargs='*')] + failures = ['-x'] + successes = [ + ('', NS(foo=[])), + ('a', NS(foo=['a'])), + ('a b', NS(foo=['a', 'b'])), + ] + + +class TestPositionalsNargsZeroOrMoreDefault(ParserTestCase): + """Test a Positional that specifies unlimited nargs and a default""" + + argument_signatures = [Sig('foo', nargs='*', default='bar')] + failures = ['-x'] + successes = [ + ('', NS(foo='bar')), + ('a', NS(foo=['a'])), + ('a b', NS(foo=['a', 'b'])), + ] + + +class TestPositionalsNargsOneOrMore(ParserTestCase): + """Test a Positional that specifies one or more nargs""" + + argument_signatures = [Sig('foo', nargs='+')] + failures = ['', '-x'] + successes = [ + ('a', NS(foo=['a'])), + ('a b', NS(foo=['a', 'b'])), + ] + + +class TestPositionalsNargsOptional(ParserTestCase): + """Tests an Optional Positional""" + + argument_signatures = [Sig('foo', nargs='?')] + failures = ['-x', 'a b'] + successes = [ + ('', NS(foo=None)), + ('a', NS(foo='a')), + ] + + +class TestPositionalsNargsOptionalDefault(ParserTestCase): + """Tests an Optional Positional with a default value""" + + argument_signatures = [Sig('foo', nargs='?', default=42)] + failures = ['-x', 'a b'] + successes = [ + ('', NS(foo=42)), + ('a', NS(foo='a')), + ] + + +class TestPositionalsNargsOptionalConvertedDefault(ParserTestCase): + """Tests an Optional Positional with a default value + that needs to be converted to the appropriate type. + """ + + argument_signatures = [ + Sig('foo', nargs='?', type=int, default='42'), + ] + failures = ['-x', 'a b', '1 2'] + successes = [ + ('', NS(foo=42)), + ('1', NS(foo=1)), + ] + + +class TestPositionalsNargsNoneNone(ParserTestCase): + """Test two Positionals that don't specify nargs""" + + argument_signatures = [Sig('foo'), Sig('bar')] + failures = ['', '-x', 'a', 'a b c'] + successes = [ + ('a b', NS(foo='a', bar='b')), + ] + + +class TestPositionalsNargsNone1(ParserTestCase): + """Test a Positional with no nargs followed by one with 1""" + + argument_signatures = [Sig('foo'), Sig('bar', nargs=1)] + failures = ['', '--foo', 'a', 'a b c'] + successes = [ + ('a b', NS(foo='a', bar=['b'])), + ] + + +class TestPositionalsNargs2None(ParserTestCase): + """Test a Positional with 2 nargs followed by one with none""" + + argument_signatures = [Sig('foo', nargs=2), Sig('bar')] + failures = ['', '--foo', 'a', 'a b', 'a b c d'] + successes = [ + ('a b c', NS(foo=['a', 'b'], bar='c')), + ] + + +class TestPositionalsNargsNoneZeroOrMore(ParserTestCase): + """Test a Positional with no nargs followed by one with unlimited""" + + argument_signatures = [Sig('foo'), Sig('bar', nargs='*')] + failures = ['', '--foo'] + successes = [ + ('a', NS(foo='a', bar=[])), + ('a b', NS(foo='a', bar=['b'])), + ('a b c', NS(foo='a', bar=['b', 'c'])), + ] + + +class TestPositionalsNargsNoneOneOrMore(ParserTestCase): + """Test a Positional with no nargs followed by one with one or more""" + + argument_signatures = [Sig('foo'), Sig('bar', nargs='+')] + failures = ['', '--foo', 'a'] + successes = [ + ('a b', NS(foo='a', bar=['b'])), + ('a b c', NS(foo='a', bar=['b', 'c'])), + ] + + +class TestPositionalsNargsNoneOptional(ParserTestCase): + """Test a Positional with no nargs followed by one with an Optional""" + + argument_signatures = [Sig('foo'), Sig('bar', nargs='?')] + failures = ['', '--foo', 'a b c'] + successes = [ + ('a', NS(foo='a', bar=None)), + ('a b', NS(foo='a', bar='b')), + ] + + +class TestPositionalsNargsZeroOrMoreNone(ParserTestCase): + """Test a Positional with unlimited nargs followed by one with none""" + + argument_signatures = [Sig('foo', nargs='*'), Sig('bar')] + failures = ['', '--foo'] + successes = [ + ('a', NS(foo=[], bar='a')), + ('a b', NS(foo=['a'], bar='b')), + ('a b c', NS(foo=['a', 'b'], bar='c')), + ] + + +class TestPositionalsNargsOneOrMoreNone(ParserTestCase): + """Test a Positional with one or more nargs followed by one with none""" + + argument_signatures = [Sig('foo', nargs='+'), Sig('bar')] + failures = ['', '--foo', 'a'] + successes = [ + ('a b', NS(foo=['a'], bar='b')), + ('a b c', NS(foo=['a', 'b'], bar='c')), + ] + + +class TestPositionalsNargsOptionalNone(ParserTestCase): + """Test a Positional with an Optional nargs followed by one with none""" + + argument_signatures = [Sig('foo', nargs='?', default=42), Sig('bar')] + failures = ['', '--foo', 'a b c'] + successes = [ + ('a', NS(foo=42, bar='a')), + ('a b', NS(foo='a', bar='b')), + ] + + +class TestPositionalsNargs2ZeroOrMore(ParserTestCase): + """Test a Positional with 2 nargs followed by one with unlimited""" + + argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='*')] + failures = ['', '--foo', 'a'] + successes = [ + ('a b', NS(foo=['a', 'b'], bar=[])), + ('a b c', NS(foo=['a', 'b'], bar=['c'])), + ] + + +class TestPositionalsNargs2OneOrMore(ParserTestCase): + """Test a Positional with 2 nargs followed by one with one or more""" + + argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='+')] + failures = ['', '--foo', 'a', 'a b'] + successes = [ + ('a b c', NS(foo=['a', 'b'], bar=['c'])), + ] + + +class TestPositionalsNargs2Optional(ParserTestCase): + """Test a Positional with 2 nargs followed by one optional""" + + argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='?')] + failures = ['', '--foo', 'a', 'a b c d'] + successes = [ + ('a b', NS(foo=['a', 'b'], bar=None)), + ('a b c', NS(foo=['a', 'b'], bar='c')), + ] + + +class TestPositionalsNargsZeroOrMore1(ParserTestCase): + """Test a Positional with unlimited nargs followed by one with 1""" + + argument_signatures = [Sig('foo', nargs='*'), Sig('bar', nargs=1)] + failures = ['', '--foo', ] + successes = [ + ('a', NS(foo=[], bar=['a'])), + ('a b', NS(foo=['a'], bar=['b'])), + ('a b c', NS(foo=['a', 'b'], bar=['c'])), + ] + + +class TestPositionalsNargsOneOrMore1(ParserTestCase): + """Test a Positional with one or more nargs followed by one with 1""" + + argument_signatures = [Sig('foo', nargs='+'), Sig('bar', nargs=1)] + failures = ['', '--foo', 'a'] + successes = [ + ('a b', NS(foo=['a'], bar=['b'])), + ('a b c', NS(foo=['a', 'b'], bar=['c'])), + ] + + +class TestPositionalsNargsOptional1(ParserTestCase): + """Test a Positional with an Optional nargs followed by one with 1""" + + argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs=1)] + failures = ['', '--foo', 'a b c'] + successes = [ + ('a', NS(foo=None, bar=['a'])), + ('a b', NS(foo='a', bar=['b'])), + ] + + +class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase): + """Test three Positionals: no nargs, unlimited nargs and 1 nargs""" + + argument_signatures = [ + Sig('foo'), + Sig('bar', nargs='*'), + Sig('baz', nargs=1), + ] + failures = ['', '--foo', 'a'] + successes = [ + ('a b', NS(foo='a', bar=[], baz=['b'])), + ('a b c', NS(foo='a', bar=['b'], baz=['c'])), + ] + + +class TestPositionalsNargsNoneOneOrMore1(ParserTestCase): + """Test three Positionals: no nargs, one or more nargs and 1 nargs""" + + argument_signatures = [ + Sig('foo'), + Sig('bar', nargs='+'), + Sig('baz', nargs=1), + ] + failures = ['', '--foo', 'a', 'b'] + successes = [ + ('a b c', NS(foo='a', bar=['b'], baz=['c'])), + ('a b c d', NS(foo='a', bar=['b', 'c'], baz=['d'])), + ] + + +class TestPositionalsNargsNoneOptional1(ParserTestCase): + """Test three Positionals: no nargs, optional narg and 1 nargs""" + + argument_signatures = [ + Sig('foo'), + Sig('bar', nargs='?', default=0.625), + Sig('baz', nargs=1), + ] + failures = ['', '--foo', 'a'] + successes = [ + ('a b', NS(foo='a', bar=0.625, baz=['b'])), + ('a b c', NS(foo='a', bar='b', baz=['c'])), + ] + + +class TestPositionalsNargsOptionalOptional(ParserTestCase): + """Test two optional nargs""" + + argument_signatures = [ + Sig('foo', nargs='?'), + Sig('bar', nargs='?', default=42), + ] + failures = ['--foo', 'a b c'] + successes = [ + ('', NS(foo=None, bar=42)), + ('a', NS(foo='a', bar=42)), + ('a b', NS(foo='a', bar='b')), + ] + + +class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase): + """Test an Optional narg followed by unlimited nargs""" + + argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='*')] + failures = ['--foo'] + successes = [ + ('', NS(foo=None, bar=[])), + ('a', NS(foo='a', bar=[])), + ('a b', NS(foo='a', bar=['b'])), + ('a b c', NS(foo='a', bar=['b', 'c'])), + ] + + +class TestPositionalsNargsOptionalOneOrMore(ParserTestCase): + """Test an Optional narg followed by one or more nargs""" + + argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='+')] + failures = ['', '--foo'] + successes = [ + ('a', NS(foo=None, bar=['a'])), + ('a b', NS(foo='a', bar=['b'])), + ('a b c', NS(foo='a', bar=['b', 'c'])), + ] + + +class TestPositionalsChoicesString(ParserTestCase): + """Test a set of single-character choices""" + + argument_signatures = [Sig('spam', choices=set('abcdefg'))] + failures = ['', '--foo', 'h', '42', 'ef'] + successes = [ + ('a', NS(spam='a')), + ('g', NS(spam='g')), + ] + + +class TestPositionalsChoicesInt(ParserTestCase): + """Test a set of integer choices""" + + argument_signatures = [Sig('spam', type=int, choices=range(20))] + failures = ['', '--foo', 'h', '42', 'ef'] + successes = [ + ('4', NS(spam=4)), + ('15', NS(spam=15)), + ] + + +class TestPositionalsActionAppend(ParserTestCase): + """Test the 'append' action""" + + argument_signatures = [ + Sig('spam', action='append'), + Sig('spam', action='append', nargs=2), + ] + failures = ['', '--foo', 'a', 'a b', 'a b c d'] + successes = [ + ('a b c', NS(spam=['a', ['b', 'c']])), + ] + +# ======================================== +# Combined optionals and positionals tests +# ======================================== + +class TestOptionalsNumericAndPositionals(ParserTestCase): + """Tests negative number args when numeric options are present""" + + argument_signatures = [ + Sig('x', nargs='?'), + Sig('-4', dest='y', action='store_true'), + ] + failures = ['-2', '-315'] + successes = [ + ('', NS(x=None, y=False)), + ('a', NS(x='a', y=False)), + ('-4', NS(x=None, y=True)), + ('-4 a', NS(x='a', y=True)), + ] + + +class TestOptionalsAlmostNumericAndPositionals(ParserTestCase): + """Tests negative number args when almost numeric options are present""" + + argument_signatures = [ + Sig('x', nargs='?'), + Sig('-k4', dest='y', action='store_true'), + ] + failures = ['-k3'] + successes = [ + ('', NS(x=None, y=False)), + ('-2', NS(x='-2', y=False)), + ('a', NS(x='a', y=False)), + ('-k4', NS(x=None, y=True)), + ('-k4 a', NS(x='a', y=True)), + ] + + +class TestEmptyAndSpaceContainingArguments(ParserTestCase): + + argument_signatures = [ + Sig('x', nargs='?'), + Sig('-y', '--yyy', dest='y'), + ] + failures = ['-y'] + successes = [ + ([''], NS(x='', y=None)), + (['a badger'], NS(x='a badger', y=None)), + (['-a badger'], NS(x='-a badger', y=None)), + (['-y', ''], NS(x=None, y='')), + (['-y', 'a badger'], NS(x=None, y='a badger')), + (['-y', '-a badger'], NS(x=None, y='-a badger')), + (['--yyy=a badger'], NS(x=None, y='a badger')), + (['--yyy=-a badger'], NS(x=None, y='-a badger')), + ] + + +class TestPrefixCharacterOnlyArguments(ParserTestCase): + + parser_signature = Sig(prefix_chars='-+') + argument_signatures = [ + Sig('-', dest='x', nargs='?', const='badger'), + Sig('+', dest='y', type=int, default=42), + Sig('-+-', dest='z', action='store_true'), + ] + failures = ['-y', '+ -'] + successes = [ + ('', NS(x=None, y=42, z=False)), + ('-', NS(x='badger', y=42, z=False)), + ('- X', NS(x='X', y=42, z=False)), + ('+ -3', NS(x=None, y=-3, z=False)), + ('-+-', NS(x=None, y=42, z=True)), + ('- ===', NS(x='===', y=42, z=False)), + ] + + +class TestNargsZeroOrMore(ParserTestCase): + """Tests specifying an args for an Optional that accepts zero or more""" + + argument_signatures = [Sig('-x', nargs='*'), Sig('y', nargs='*')] + failures = [] + successes = [ + ('', NS(x=None, y=[])), + ('-x', NS(x=[], y=[])), + ('-x a', NS(x=['a'], y=[])), + ('-x a -- b', NS(x=['a'], y=['b'])), + ('a', NS(x=None, y=['a'])), + ('a -x', NS(x=[], y=['a'])), + ('a -x b', NS(x=['b'], y=['a'])), + ] + + +class TestNargsRemainder(ParserTestCase): + """Tests specifying a positional with nargs=REMAINDER""" + + argument_signatures = [Sig('x'), Sig('y', nargs='...'), Sig('-z')] + failures = ['', '-z', '-z Z'] + successes = [ + ('X', NS(x='X', y=[], z=None)), + ('-z Z X', NS(x='X', y=[], z='Z')), + ('X A B -z Z', NS(x='X', y=['A', 'B', '-z', 'Z'], z=None)), + ('X Y --foo', NS(x='X', y=['Y', '--foo'], z=None)), + ] + + +class TestOptionLike(ParserTestCase): + """Tests options that may or may not be arguments""" + + argument_signatures = [ + Sig('-x', type=float), + Sig('-3', type=float, dest='y'), + Sig('z', nargs='*'), + ] + failures = ['-x', '-y2.5', '-xa', '-x -a', + '-x -3', '-x -3.5', '-3 -3.5', + '-x -2.5', '-x -2.5 a', '-3 -.5', + 'a x -1', '-x -1 a', '-3 -1 a'] + successes = [ + ('', NS(x=None, y=None, z=[])), + ('-x 2.5', NS(x=2.5, y=None, z=[])), + ('-x 2.5 a', NS(x=2.5, y=None, z=['a'])), + ('-3.5', NS(x=None, y=0.5, z=[])), + ('-3-.5', NS(x=None, y=-0.5, z=[])), + ('-3 .5', NS(x=None, y=0.5, z=[])), + ('a -3.5', NS(x=None, y=0.5, z=['a'])), + ('a', NS(x=None, y=None, z=['a'])), + ('a -x 1', NS(x=1.0, y=None, z=['a'])), + ('-x 1 a', NS(x=1.0, y=None, z=['a'])), + ('-3 1 a', NS(x=None, y=1.0, z=['a'])), + ] + + +class TestDefaultSuppress(ParserTestCase): + """Test actions with suppressed defaults""" + + argument_signatures = [ + Sig('foo', nargs='?', default=argparse.SUPPRESS), + Sig('bar', nargs='*', default=argparse.SUPPRESS), + Sig('--baz', action='store_true', default=argparse.SUPPRESS), + ] + failures = ['-x'] + successes = [ + ('', NS()), + ('a', NS(foo='a')), + ('a b', NS(foo='a', bar=['b'])), + ('--baz', NS(baz=True)), + ('a --baz', NS(foo='a', baz=True)), + ('--baz a b', NS(foo='a', bar=['b'], baz=True)), + ] + + +class TestParserDefaultSuppress(ParserTestCase): + """Test actions with a parser-level default of SUPPRESS""" + + parser_signature = Sig(argument_default=argparse.SUPPRESS) + argument_signatures = [ + Sig('foo', nargs='?'), + Sig('bar', nargs='*'), + Sig('--baz', action='store_true'), + ] + failures = ['-x'] + successes = [ + ('', NS()), + ('a', NS(foo='a')), + ('a b', NS(foo='a', bar=['b'])), + ('--baz', NS(baz=True)), + ('a --baz', NS(foo='a', baz=True)), + ('--baz a b', NS(foo='a', bar=['b'], baz=True)), + ] + + +class TestParserDefault42(ParserTestCase): + """Test actions with a parser-level default of 42""" + + parser_signature = Sig(argument_default=42, version='1.0') + argument_signatures = [ + Sig('foo', nargs='?'), + Sig('bar', nargs='*'), + Sig('--baz', action='store_true'), + ] + failures = ['-x'] + successes = [ + ('', NS(foo=42, bar=42, baz=42)), + ('a', NS(foo='a', bar=42, baz=42)), + ('a b', NS(foo='a', bar=['b'], baz=42)), + ('--baz', NS(foo=42, bar=42, baz=True)), + ('a --baz', NS(foo='a', bar=42, baz=True)), + ('--baz a b', NS(foo='a', bar=['b'], baz=True)), + ] + + +class TestArgumentsFromFile(TempDirMixin, ParserTestCase): + """Test reading arguments from a file""" + + def setUp(self): + super(TestArgumentsFromFile, self).setUp() + file_texts = [ + ('hello', 'hello world!\n'), + ('recursive', '-a\n' + 'A\n' + '@hello'), + ('invalid', '@no-such-path\n'), + ] + for path, text in file_texts: + file = open(path, 'w') + file.write(text) + file.close() + + parser_signature = Sig(fromfile_prefix_chars='@') + argument_signatures = [ + Sig('-a'), + Sig('x'), + Sig('y', nargs='+'), + ] + failures = ['', '-b', 'X', '@invalid', '@missing'] + successes = [ + ('X Y', NS(a=None, x='X', y=['Y'])), + ('X -a A Y Z', NS(a='A', x='X', y=['Y', 'Z'])), + ('@hello X', NS(a=None, x='hello world!', y=['X'])), + ('X @hello', NS(a=None, x='X', y=['hello world!'])), + ('-a B @recursive Y Z', NS(a='A', x='hello world!', y=['Y', 'Z'])), + ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])), + (["-a", "", "X", "Y"], NS(a='', x='X', y=['Y'])), + ] + + +class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase): + """Test reading arguments from a file""" + + def setUp(self): + super(TestArgumentsFromFileConverter, self).setUp() + file_texts = [ + ('hello', 'hello world!\n'), + ] + for path, text in file_texts: + file = open(path, 'w') + file.write(text) + file.close() + + class FromFileConverterArgumentParser(ErrorRaisingArgumentParser): + + def convert_arg_line_to_args(self, arg_line): + for arg in arg_line.split(): + if not arg.strip(): + continue + yield arg + parser_class = FromFileConverterArgumentParser + parser_signature = Sig(fromfile_prefix_chars='@') + argument_signatures = [ + Sig('y', nargs='+'), + ] + failures = [] + successes = [ + ('@hello X', NS(y=['hello', 'world!', 'X'])), + ] + + +# ===================== +# Type conversion tests +# ===================== + +class TestFileTypeRepr(TestCase): + + def test_r(self): + type = argparse.FileType('r') + self.assertEqual("FileType('r')", repr(type)) + + def test_wb_1(self): + type = argparse.FileType('wb', 1) + self.assertEqual("FileType('wb', 1)", repr(type)) + + +class RFile(object): + seen = {} + + def __init__(self, name): + self.name = name + + __hash__ = None + + def __eq__(self, other): + if other in self.seen: + text = self.seen[other] + else: + text = self.seen[other] = other.read() + other.close() + if not isinstance(text, str): + text = text.decode('ascii') + return self.name == other.name == text + + +class TestFileTypeR(TempDirMixin, ParserTestCase): + """Test the FileType option/argument type for reading files""" + + def setUp(self): + super(TestFileTypeR, self).setUp() + for file_name in ['foo', 'bar']: + file = open(os.path.join(self.temp_dir, file_name), 'w') + file.write(file_name) + file.close() + self.create_readonly_file('readonly') + + argument_signatures = [ + Sig('-x', type=argparse.FileType()), + Sig('spam', type=argparse.FileType('r')), + ] + failures = ['-x', '-x bar', 'non-existent-file.txt'] + successes = [ + ('foo', NS(x=None, spam=RFile('foo'))), + ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), + ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), + ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), + ('readonly', NS(x=None, spam=RFile('readonly'))), + ] + +class TestFileTypeDefaults(TempDirMixin, ParserTestCase): + """Test that a file is not created unless the default is needed""" + def setUp(self): + super(TestFileTypeDefaults, self).setUp() + file = open(os.path.join(self.temp_dir, 'good'), 'w') + file.write('good') + file.close() + + argument_signatures = [ + Sig('-c', type=argparse.FileType('r'), default='no-file.txt'), + ] + # should provoke no such file error + failures = [''] + # should not provoke error because default file is created + successes = [('-c good', NS(c=RFile('good')))] + + +class TestFileTypeRB(TempDirMixin, ParserTestCase): + """Test the FileType option/argument type for reading files""" + + def setUp(self): + super(TestFileTypeRB, self).setUp() + for file_name in ['foo', 'bar']: + file = open(os.path.join(self.temp_dir, file_name), 'w') + file.write(file_name) + file.close() + + argument_signatures = [ + Sig('-x', type=argparse.FileType('rb')), + Sig('spam', type=argparse.FileType('rb')), + ] + failures = ['-x', '-x bar'] + successes = [ + ('foo', NS(x=None, spam=RFile('foo'))), + ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), + ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), + ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), + ] + + +class WFile(object): + seen = set() + + def __init__(self, name): + self.name = name + + __hash__ = None + + def __eq__(self, other): + if other not in self.seen: + text = 'Check that file is writable.' + if 'b' in other.mode: + text = text.encode('ascii') + other.write(text) + other.close() + self.seen.add(other) + return self.name == other.name + + + at unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, + "non-root user required") +class TestFileTypeW(TempDirMixin, ParserTestCase): + """Test the FileType option/argument type for writing files""" + + def setUp(self): + super(TestFileTypeW, self).setUp() + self.create_readonly_file('readonly') + + argument_signatures = [ + Sig('-x', type=argparse.FileType('w')), + Sig('spam', type=argparse.FileType('w')), + ] + failures = ['-x', '-x bar'] + failures = ['-x', '-x bar', 'readonly'] + successes = [ + ('foo', NS(x=None, spam=WFile('foo'))), + ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), + ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), + ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), + ] + + +class TestFileTypeWB(TempDirMixin, ParserTestCase): + + argument_signatures = [ + Sig('-x', type=argparse.FileType('wb')), + Sig('spam', type=argparse.FileType('wb')), + ] + failures = ['-x', '-x bar'] + successes = [ + ('foo', NS(x=None, spam=WFile('foo'))), + ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), + ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), + ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), + ] + + +class TestTypeCallable(ParserTestCase): + """Test some callables as option/argument types""" + + argument_signatures = [ + Sig('--eggs', type=complex), + Sig('spam', type=float), + ] + failures = ['a', '42j', '--eggs a', '--eggs 2i'] + successes = [ + ('--eggs=42 42', NS(eggs=42, spam=42.0)), + ('--eggs 2j -- -1.5', NS(eggs=2j, spam=-1.5)), + ('1024.675', NS(eggs=None, spam=1024.675)), + ] + + +class TestTypeUserDefined(ParserTestCase): + """Test a user-defined option/argument type""" + + class MyType(TestCase): + + def __init__(self, value): + self.value = value + + __hash__ = None + + def __eq__(self, other): + return (type(self), self.value) == (type(other), other.value) + + argument_signatures = [ + Sig('-x', type=MyType), + Sig('spam', type=MyType), + ] + failures = [] + successes = [ + ('a -x b', NS(x=MyType('b'), spam=MyType('a'))), + ('-xf g', NS(x=MyType('f'), spam=MyType('g'))), + ] + + +class TestTypeClassicClass(ParserTestCase): + """Test a classic class type""" + + class C: + + def __init__(self, value): + self.value = value + + __hash__ = None + + def __eq__(self, other): + return (type(self), self.value) == (type(other), other.value) + + argument_signatures = [ + Sig('-x', type=C), + Sig('spam', type=C), + ] + failures = [] + successes = [ + ('a -x b', NS(x=C('b'), spam=C('a'))), + ('-xf g', NS(x=C('f'), spam=C('g'))), + ] + + +class TestTypeRegistration(TestCase): + """Test a user-defined type by registering it""" + + def test(self): + + def get_my_type(string): + return 'my_type{%s}' % string + + parser = argparse.ArgumentParser() + parser.register('type', 'my_type', get_my_type) + parser.add_argument('-x', type='my_type') + parser.add_argument('y', type='my_type') + + self.assertEqual(parser.parse_args('1'.split()), + NS(x=None, y='my_type{1}')) + self.assertEqual(parser.parse_args('-x 1 42'.split()), + NS(x='my_type{1}', y='my_type{42}')) + + +# ============ +# Action tests +# ============ + +class TestActionUserDefined(ParserTestCase): + """Test a user-defined option/argument action""" + + class OptionalAction(argparse.Action): + + def __call__(self, parser, namespace, value, option_string=None): + try: + # check destination and option string + assert self.dest == 'spam', 'dest: %s' % self.dest + assert option_string == '-s', 'flag: %s' % option_string + # when option is before argument, badger=2, and when + # option is after argument, badger= + expected_ns = NS(spam=0.25) + if value in [0.125, 0.625]: + expected_ns.badger = 2 + elif value in [2.0]: + expected_ns.badger = 84 + else: + raise AssertionError('value: %s' % value) + assert expected_ns == namespace, ('expected %s, got %s' % + (expected_ns, namespace)) + except AssertionError: + e = sys.exc_info()[1] + raise ArgumentParserError('opt_action failed: %s' % e) + setattr(namespace, 'spam', value) + + class PositionalAction(argparse.Action): + + def __call__(self, parser, namespace, value, option_string=None): + try: + assert option_string is None, ('option_string: %s' % + option_string) + # check destination + assert self.dest == 'badger', 'dest: %s' % self.dest + # when argument is before option, spam=0.25, and when + # option is after argument, spam= + expected_ns = NS(badger=2) + if value in [42, 84]: + expected_ns.spam = 0.25 + elif value in [1]: + expected_ns.spam = 0.625 + elif value in [2]: + expected_ns.spam = 0.125 + else: + raise AssertionError('value: %s' % value) + assert expected_ns == namespace, ('expected %s, got %s' % + (expected_ns, namespace)) + except AssertionError: + e = sys.exc_info()[1] + raise ArgumentParserError('arg_action failed: %s' % e) + setattr(namespace, 'badger', value) + + argument_signatures = [ + Sig('-s', dest='spam', action=OptionalAction, + type=float, default=0.25), + Sig('badger', action=PositionalAction, + type=int, nargs='?', default=2), + ] + failures = [] + successes = [ + ('-s0.125', NS(spam=0.125, badger=2)), + ('42', NS(spam=0.25, badger=42)), + ('-s 0.625 1', NS(spam=0.625, badger=1)), + ('84 -s2', NS(spam=2.0, badger=84)), + ] + + +class TestActionRegistration(TestCase): + """Test a user-defined action supplied by registering it""" + + class MyAction(argparse.Action): + + def __call__(self, parser, namespace, values, option_string=None): + setattr(namespace, self.dest, 'foo[%s]' % values) + + def test(self): + + parser = argparse.ArgumentParser() + parser.register('action', 'my_action', self.MyAction) + parser.add_argument('badger', action='my_action') + + self.assertEqual(parser.parse_args(['1']), NS(badger='foo[1]')) + self.assertEqual(parser.parse_args(['42']), NS(badger='foo[42]')) + + +# ================ +# Subparsers tests +# ================ + +class TestAddSubparsers(TestCase): + """Test the add_subparsers method""" + + def assertArgumentParserError(self, *args, **kwargs): + self.assertRaises(ArgumentParserError, *args, **kwargs) + + def _get_parser(self, subparser_help=False, prefix_chars=None): + # create a parser with a subparsers argument + if prefix_chars: + parser = ErrorRaisingArgumentParser( + prog='PROG', description='main description', prefix_chars=prefix_chars) + parser.add_argument( + prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help') + else: + parser = ErrorRaisingArgumentParser( + prog='PROG', description='main description') + parser.add_argument( + '--foo', action='store_true', help='foo help') + parser.add_argument( + 'bar', type=float, help='bar help') + + # check that only one subparsers argument can be added + subparsers = parser.add_subparsers(help='command help') + self.assertArgumentParserError(parser.add_subparsers) + + # add first sub-parser + parser1_kwargs = dict(description='1 description') + if subparser_help: + parser1_kwargs['help'] = '1 help' + parser1 = subparsers.add_parser('1', **parser1_kwargs) + parser1.add_argument('-w', type=int, help='w help') + parser1.add_argument('x', choices='abc', help='x help') + + # add second sub-parser + parser2_kwargs = dict(description='2 description') + if subparser_help: + parser2_kwargs['help'] = '2 help' + parser2 = subparsers.add_parser('2', **parser2_kwargs) + parser2.add_argument('-y', choices='123', help='y help') + parser2.add_argument('z', type=complex, nargs='*', help='z help') + + # add third sub-parser + parser3_kwargs = dict(description='3 description') + if subparser_help: + parser3_kwargs['help'] = '3 help' + parser3 = subparsers.add_parser('3', **parser3_kwargs) + parser3.add_argument('t', type=int, help='t help') + parser3.add_argument('u', nargs='...', help='u help') + + # return the main parser + return parser + + def setUp(self): + super(TestAddSubparsers, self).setUp() + self.parser = self._get_parser() + self.command_help_parser = self._get_parser(subparser_help=True) + + def test_parse_args_failures(self): + # check some failure cases: + for args_str in ['', 'a', 'a a', '0.5 a', '0.5 1', + '0.5 1 -y', '0.5 2 -w']: + args = args_str.split() + self.assertArgumentParserError(self.parser.parse_args, args) + + def test_parse_args(self): + # check some non-failure cases: + self.assertEqual( + self.parser.parse_args('0.5 1 b -w 7'.split()), + NS(foo=False, bar=0.5, w=7, x='b'), + ) + self.assertEqual( + self.parser.parse_args('0.25 --foo 2 -y 2 3j -- -1j'.split()), + NS(foo=True, bar=0.25, y='2', z=[3j, -1j]), + ) + self.assertEqual( + self.parser.parse_args('--foo 0.125 1 c'.split()), + NS(foo=True, bar=0.125, w=None, x='c'), + ) + self.assertEqual( + self.parser.parse_args('-1.5 3 11 -- a --foo 7 -- b'.split()), + NS(foo=False, bar=-1.5, t=11, u=['a', '--foo', '7', '--', 'b']), + ) + + def test_parse_known_args(self): + self.assertEqual( + self.parser.parse_known_args('0.5 1 b -w 7'.split()), + (NS(foo=False, bar=0.5, w=7, x='b'), []), + ) + self.assertEqual( + self.parser.parse_known_args('0.5 -p 1 b -w 7'.split()), + (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']), + ) + self.assertEqual( + self.parser.parse_known_args('0.5 1 b -w 7 -p'.split()), + (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']), + ) + self.assertEqual( + self.parser.parse_known_args('0.5 1 b -q -rs -w 7'.split()), + (NS(foo=False, bar=0.5, w=7, x='b'), ['-q', '-rs']), + ) + self.assertEqual( + self.parser.parse_known_args('0.5 -W 1 b -X Y -w 7 Z'.split()), + (NS(foo=False, bar=0.5, w=7, x='b'), ['-W', '-X', 'Y', 'Z']), + ) + + def test_dest(self): + parser = ErrorRaisingArgumentParser() + parser.add_argument('--foo', action='store_true') + subparsers = parser.add_subparsers(dest='bar') + parser1 = subparsers.add_parser('1') + parser1.add_argument('baz') + self.assertEqual(NS(foo=False, bar='1', baz='2'), + parser.parse_args('1 2'.split())) + + def test_help(self): + self.assertEqual(self.parser.format_usage(), + 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n') + self.assertEqual(self.parser.format_help(), textwrap.dedent('''\ + usage: PROG [-h] [--foo] bar {1,2,3} ... + + main description + + positional arguments: + bar bar help + {1,2,3} command help + + optional arguments: + -h, --help show this help message and exit + --foo foo help + ''')) + + def test_help_extra_prefix_chars(self): + # Make sure - is still used for help if it is a non-first prefix char + parser = self._get_parser(prefix_chars='+:-') + self.assertEqual(parser.format_usage(), + 'usage: PROG [-h] [++foo] bar {1,2,3} ...\n') + self.assertEqual(parser.format_help(), textwrap.dedent('''\ + usage: PROG [-h] [++foo] bar {1,2,3} ... + + main description + + positional arguments: + bar bar help + {1,2,3} command help + + optional arguments: + -h, --help show this help message and exit + ++foo foo help + ''')) + + + def test_help_alternate_prefix_chars(self): + parser = self._get_parser(prefix_chars='+:/') + self.assertEqual(parser.format_usage(), + 'usage: PROG [+h] [++foo] bar {1,2,3} ...\n') + self.assertEqual(parser.format_help(), textwrap.dedent('''\ + usage: PROG [+h] [++foo] bar {1,2,3} ... + + main description + + positional arguments: + bar bar help + {1,2,3} command help + + optional arguments: + +h, ++help show this help message and exit + ++foo foo help + ''')) + + def test_parser_command_help(self): + self.assertEqual(self.command_help_parser.format_usage(), + 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n') + self.assertEqual(self.command_help_parser.format_help(), + textwrap.dedent('''\ + usage: PROG [-h] [--foo] bar {1,2,3} ... + + main description + + positional arguments: + bar bar help + {1,2,3} command help + 1 1 help + 2 2 help + 3 3 help + + optional arguments: + -h, --help show this help message and exit + --foo foo help + ''')) + + def test_subparser_title_help(self): + parser = ErrorRaisingArgumentParser(prog='PROG', + description='main description') + parser.add_argument('--foo', action='store_true', help='foo help') + parser.add_argument('bar', help='bar help') + subparsers = parser.add_subparsers(title='subcommands', + description='command help', + help='additional text') + parser1 = subparsers.add_parser('1') + parser2 = subparsers.add_parser('2') + self.assertEqual(parser.format_usage(), + 'usage: PROG [-h] [--foo] bar {1,2} ...\n') + self.assertEqual(parser.format_help(), textwrap.dedent('''\ + usage: PROG [-h] [--foo] bar {1,2} ... + + main description + + positional arguments: + bar bar help + + optional arguments: + -h, --help show this help message and exit + --foo foo help + + subcommands: + command help + + {1,2} additional text + ''')) + + def _test_subparser_help(self, args_str, expected_help): + try: + self.parser.parse_args(args_str.split()) + except ArgumentParserError: + err = sys.exc_info()[1] + if err.stdout != expected_help: + print(repr(expected_help)) + print(repr(err.stdout)) + self.assertEqual(err.stdout, expected_help) + + def test_subparser1_help(self): + self._test_subparser_help('5.0 1 -h', textwrap.dedent('''\ + usage: PROG bar 1 [-h] [-w W] {a,b,c} + + 1 description + + positional arguments: + {a,b,c} x help + + optional arguments: + -h, --help show this help message and exit + -w W w help + ''')) + + def test_subparser2_help(self): + self._test_subparser_help('5.0 2 -h', textwrap.dedent('''\ + usage: PROG bar 2 [-h] [-y {1,2,3}] [z [z ...]] + + 2 description + + positional arguments: + z z help + + optional arguments: + -h, --help show this help message and exit + -y {1,2,3} y help + ''')) + +# ============ +# Groups tests +# ============ + +class TestPositionalsGroups(TestCase): + """Tests that order of group positionals matches construction order""" + + def test_nongroup_first(self): + parser = ErrorRaisingArgumentParser() + parser.add_argument('foo') + group = parser.add_argument_group('g') + group.add_argument('bar') + parser.add_argument('baz') + expected = NS(foo='1', bar='2', baz='3') + result = parser.parse_args('1 2 3'.split()) + self.assertEqual(expected, result) + + def test_group_first(self): + parser = ErrorRaisingArgumentParser() + group = parser.add_argument_group('xxx') + group.add_argument('foo') + parser.add_argument('bar') + parser.add_argument('baz') + expected = NS(foo='1', bar='2', baz='3') + result = parser.parse_args('1 2 3'.split()) + self.assertEqual(expected, result) + + def test_interleaved_groups(self): + parser = ErrorRaisingArgumentParser() + group = parser.add_argument_group('xxx') + parser.add_argument('foo') + group.add_argument('bar') + parser.add_argument('baz') + group = parser.add_argument_group('yyy') + group.add_argument('frell') + expected = NS(foo='1', bar='2', baz='3', frell='4') + result = parser.parse_args('1 2 3 4'.split()) + self.assertEqual(expected, result) + +# =================== +# Parent parser tests +# =================== + +class TestParentParsers(TestCase): + """Tests that parsers can be created with parent parsers""" + + def assertArgumentParserError(self, *args, **kwargs): + self.assertRaises(ArgumentParserError, *args, **kwargs) + + def setUp(self): + super(TestParentParsers, self).setUp() + self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False) + self.wxyz_parent.add_argument('--w') + x_group = self.wxyz_parent.add_argument_group('x') + x_group.add_argument('-y') + self.wxyz_parent.add_argument('z') + + self.abcd_parent = ErrorRaisingArgumentParser(add_help=False) + self.abcd_parent.add_argument('a') + self.abcd_parent.add_argument('-b') + c_group = self.abcd_parent.add_argument_group('c') + c_group.add_argument('--d') + + self.w_parent = ErrorRaisingArgumentParser(add_help=False) + self.w_parent.add_argument('--w') + + self.z_parent = ErrorRaisingArgumentParser(add_help=False) + self.z_parent.add_argument('z') + + # parents with mutually exclusive groups + self.ab_mutex_parent = ErrorRaisingArgumentParser(add_help=False) + group = self.ab_mutex_parent.add_mutually_exclusive_group() + group.add_argument('-a', action='store_true') + group.add_argument('-b', action='store_true') + + self.main_program = os.path.basename(sys.argv[0]) + + def test_single_parent(self): + parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent]) + self.assertEqual(parser.parse_args('-y 1 2 --w 3'.split()), + NS(w='3', y='1', z='2')) + + def test_single_parent_mutex(self): + self._test_mutex_ab(self.ab_mutex_parent.parse_args) + parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent]) + self._test_mutex_ab(parser.parse_args) + + def test_single_granparent_mutex(self): + parents = [self.ab_mutex_parent] + parser = ErrorRaisingArgumentParser(add_help=False, parents=parents) + parser = ErrorRaisingArgumentParser(parents=[parser]) + self._test_mutex_ab(parser.parse_args) + + def _test_mutex_ab(self, parse_args): + self.assertEqual(parse_args([]), NS(a=False, b=False)) + self.assertEqual(parse_args(['-a']), NS(a=True, b=False)) + self.assertEqual(parse_args(['-b']), NS(a=False, b=True)) + self.assertArgumentParserError(parse_args, ['-a', '-b']) + self.assertArgumentParserError(parse_args, ['-b', '-a']) + self.assertArgumentParserError(parse_args, ['-c']) + self.assertArgumentParserError(parse_args, ['-a', '-c']) + self.assertArgumentParserError(parse_args, ['-b', '-c']) + + def test_multiple_parents(self): + parents = [self.abcd_parent, self.wxyz_parent] + parser = ErrorRaisingArgumentParser(parents=parents) + self.assertEqual(parser.parse_args('--d 1 --w 2 3 4'.split()), + NS(a='3', b=None, d='1', w='2', y=None, z='4')) + + def test_multiple_parents_mutex(self): + parents = [self.ab_mutex_parent, self.wxyz_parent] + parser = ErrorRaisingArgumentParser(parents=parents) + self.assertEqual(parser.parse_args('-a --w 2 3'.split()), + NS(a=True, b=False, w='2', y=None, z='3')) + self.assertArgumentParserError( + parser.parse_args, '-a --w 2 3 -b'.split()) + self.assertArgumentParserError( + parser.parse_args, '-a -b --w 2 3'.split()) + + def test_conflicting_parents(self): + self.assertRaises( + argparse.ArgumentError, + argparse.ArgumentParser, + parents=[self.w_parent, self.wxyz_parent]) + + def test_conflicting_parents_mutex(self): + self.assertRaises( + argparse.ArgumentError, + argparse.ArgumentParser, + parents=[self.abcd_parent, self.ab_mutex_parent]) + + def test_same_argument_name_parents(self): + parents = [self.wxyz_parent, self.z_parent] + parser = ErrorRaisingArgumentParser(parents=parents) + self.assertEqual(parser.parse_args('1 2'.split()), + NS(w=None, y=None, z='2')) + + def test_subparser_parents(self): + parser = ErrorRaisingArgumentParser() + subparsers = parser.add_subparsers() + abcde_parser = subparsers.add_parser('bar', parents=[self.abcd_parent]) + abcde_parser.add_argument('e') + self.assertEqual(parser.parse_args('bar -b 1 --d 2 3 4'.split()), + NS(a='3', b='1', d='2', e='4')) + + def test_subparser_parents_mutex(self): + parser = ErrorRaisingArgumentParser() + subparsers = parser.add_subparsers() + parents = [self.ab_mutex_parent] + abc_parser = subparsers.add_parser('foo', parents=parents) + c_group = abc_parser.add_argument_group('c_group') + c_group.add_argument('c') + parents = [self.wxyz_parent, self.ab_mutex_parent] + wxyzabe_parser = subparsers.add_parser('bar', parents=parents) + wxyzabe_parser.add_argument('e') + self.assertEqual(parser.parse_args('foo -a 4'.split()), + NS(a=True, b=False, c='4')) + self.assertEqual(parser.parse_args('bar -b --w 2 3 4'.split()), + NS(a=False, b=True, w='2', y=None, z='3', e='4')) + self.assertArgumentParserError( + parser.parse_args, 'foo -a -b 4'.split()) + self.assertArgumentParserError( + parser.parse_args, 'bar -b -a 4'.split()) + + def test_parent_help(self): + parents = [self.abcd_parent, self.wxyz_parent] + parser = ErrorRaisingArgumentParser(parents=parents) + parser_help = parser.format_help() + progname = self.main_program + self.assertEqual(parser_help, textwrap.dedent('''\ + usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z + + positional arguments: + a + z + + optional arguments: + -h, --help show this help message and exit + -b B + --w W + + c: + --d D + + x: + -y Y + '''.format(progname, ' ' if progname else '' ))) + + def test_groups_parents(self): + parent = ErrorRaisingArgumentParser(add_help=False) + g = parent.add_argument_group(title='g', description='gd') + g.add_argument('-w') + g.add_argument('-x') + m = parent.add_mutually_exclusive_group() + m.add_argument('-y') + m.add_argument('-z') + parser = ErrorRaisingArgumentParser(parents=[parent]) + + self.assertRaises(ArgumentParserError, parser.parse_args, + ['-y', 'Y', '-z', 'Z']) + + parser_help = parser.format_help() + progname = self.main_program + self.assertEqual(parser_help, textwrap.dedent('''\ + usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z] + + optional arguments: + -h, --help show this help message and exit + -y Y + -z Z + + g: + gd + + -w W + -x X + '''.format(progname, ' ' if progname else '' ))) + +# ============================== +# Mutually exclusive group tests +# ============================== + +class TestMutuallyExclusiveGroupErrors(TestCase): + + def test_invalid_add_argument_group(self): + parser = ErrorRaisingArgumentParser() + raises = self.assertRaises + raises(TypeError, parser.add_mutually_exclusive_group, title='foo') + + def test_invalid_add_argument(self): + parser = ErrorRaisingArgumentParser() + group = parser.add_mutually_exclusive_group() + add_argument = group.add_argument + raises = self.assertRaises + raises(ValueError, add_argument, '--foo', required=True) + raises(ValueError, add_argument, 'bar') + raises(ValueError, add_argument, 'bar', nargs='+') + raises(ValueError, add_argument, 'bar', nargs=1) + raises(ValueError, add_argument, 'bar', nargs=argparse.PARSER) + + def test_help(self): + parser = ErrorRaisingArgumentParser(prog='PROG') + group1 = parser.add_mutually_exclusive_group() + group1.add_argument('--foo', action='store_true') + group1.add_argument('--bar', action='store_false') + group2 = parser.add_mutually_exclusive_group() + group2.add_argument('--soup', action='store_true') + group2.add_argument('--nuts', action='store_false') + expected = '''\ + usage: PROG [-h] [--foo | --bar] [--soup | --nuts] + + optional arguments: + -h, --help show this help message and exit + --foo + --bar + --soup + --nuts + ''' + self.assertEqual(parser.format_help(), textwrap.dedent(expected)) + +class MEMixin(object): + + def test_failures_when_not_required(self): + parse_args = self.get_parser(required=False).parse_args + error = ArgumentParserError + for args_string in self.failures: + self.assertRaises(error, parse_args, args_string.split()) + + def test_failures_when_required(self): + parse_args = self.get_parser(required=True).parse_args + error = ArgumentParserError + for args_string in self.failures + ['']: + self.assertRaises(error, parse_args, args_string.split()) + + def test_successes_when_not_required(self): + parse_args = self.get_parser(required=False).parse_args + successes = self.successes + self.successes_when_not_required + for args_string, expected_ns in successes: + actual_ns = parse_args(args_string.split()) + self.assertEqual(actual_ns, expected_ns) + + def test_successes_when_required(self): + parse_args = self.get_parser(required=True).parse_args + for args_string, expected_ns in self.successes: + actual_ns = parse_args(args_string.split()) + self.assertEqual(actual_ns, expected_ns) + + def test_usage_when_not_required(self): + format_usage = self.get_parser(required=False).format_usage + expected_usage = self.usage_when_not_required + self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) + + def test_usage_when_required(self): + format_usage = self.get_parser(required=True).format_usage + expected_usage = self.usage_when_required + self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) + + def test_help_when_not_required(self): + format_help = self.get_parser(required=False).format_help + help = self.usage_when_not_required + self.help + self.assertEqual(format_help(), textwrap.dedent(help)) + + def test_help_when_required(self): + format_help = self.get_parser(required=True).format_help + help = self.usage_when_required + self.help + self.assertEqual(format_help(), textwrap.dedent(help)) + + +class TestMutuallyExclusiveSimple(MEMixin, TestCase): + + def get_parser(self, required=None): + parser = ErrorRaisingArgumentParser(prog='PROG') + group = parser.add_mutually_exclusive_group(required=required) + group.add_argument('--bar', help='bar help') + group.add_argument('--baz', nargs='?', const='Z', help='baz help') + return parser + + failures = ['--bar X --baz Y', '--bar X --baz'] + successes = [ + ('--bar X', NS(bar='X', baz=None)), + ('--bar X --bar Z', NS(bar='Z', baz=None)), + ('--baz Y', NS(bar=None, baz='Y')), + ('--baz', NS(bar=None, baz='Z')), + ] + successes_when_not_required = [ + ('', NS(bar=None, baz=None)), + ] + + usage_when_not_required = '''\ + usage: PROG [-h] [--bar BAR | --baz [BAZ]] + ''' + usage_when_required = '''\ + usage: PROG [-h] (--bar BAR | --baz [BAZ]) + ''' + help = '''\ + + optional arguments: + -h, --help show this help message and exit + --bar BAR bar help + --baz [BAZ] baz help + ''' + + +class TestMutuallyExclusiveLong(MEMixin, TestCase): + + def get_parser(self, required=None): + parser = ErrorRaisingArgumentParser(prog='PROG') + parser.add_argument('--abcde', help='abcde help') + parser.add_argument('--fghij', help='fghij help') + group = parser.add_mutually_exclusive_group(required=required) + group.add_argument('--klmno', help='klmno help') + group.add_argument('--pqrst', help='pqrst help') + return parser + + failures = ['--klmno X --pqrst Y'] + successes = [ + ('--klmno X', NS(abcde=None, fghij=None, klmno='X', pqrst=None)), + ('--abcde Y --klmno X', + NS(abcde='Y', fghij=None, klmno='X', pqrst=None)), + ('--pqrst X', NS(abcde=None, fghij=None, klmno=None, pqrst='X')), + ('--pqrst X --fghij Y', + NS(abcde=None, fghij='Y', klmno=None, pqrst='X')), + ] + successes_when_not_required = [ + ('', NS(abcde=None, fghij=None, klmno=None, pqrst=None)), + ] + + usage_when_not_required = '''\ + usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] + [--klmno KLMNO | --pqrst PQRST] + ''' + usage_when_required = '''\ + usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] + (--klmno KLMNO | --pqrst PQRST) + ''' + help = '''\ + + optional arguments: + -h, --help show this help message and exit + --abcde ABCDE abcde help + --fghij FGHIJ fghij help + --klmno KLMNO klmno help + --pqrst PQRST pqrst help + ''' + + +class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase): + + def get_parser(self, required): + parser = ErrorRaisingArgumentParser(prog='PROG') + group = parser.add_mutually_exclusive_group(required=required) + group.add_argument('-x', help=argparse.SUPPRESS) + group.add_argument('-y', action='store_false', help='y help') + return parser + + failures = ['-x X -y'] + successes = [ + ('-x X', NS(x='X', y=True)), + ('-x X -x Y', NS(x='Y', y=True)), + ('-y', NS(x=None, y=False)), + ] + successes_when_not_required = [ + ('', NS(x=None, y=True)), + ] + + usage_when_not_required = '''\ + usage: PROG [-h] [-y] + ''' + usage_when_required = '''\ + usage: PROG [-h] -y + ''' + help = '''\ + + optional arguments: + -h, --help show this help message and exit + -y y help + ''' + + +class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase): + + def get_parser(self, required): + parser = ErrorRaisingArgumentParser(prog='PROG') + group = parser.add_mutually_exclusive_group(required=required) + add = group.add_argument + add('--spam', action='store_true', help=argparse.SUPPRESS) + add('--badger', action='store_false', help=argparse.SUPPRESS) + add('--bladder', help=argparse.SUPPRESS) + return parser + + failures = [ + '--spam --badger', + '--badger --bladder B', + '--bladder B --spam', + ] + successes = [ + ('--spam', NS(spam=True, badger=True, bladder=None)), + ('--badger', NS(spam=False, badger=False, bladder=None)), + ('--bladder B', NS(spam=False, badger=True, bladder='B')), + ('--spam --spam', NS(spam=True, badger=True, bladder=None)), + ] + successes_when_not_required = [ + ('', NS(spam=False, badger=True, bladder=None)), + ] + + usage_when_required = usage_when_not_required = '''\ + usage: PROG [-h] + ''' + help = '''\ + + optional arguments: + -h, --help show this help message and exit + ''' + + +class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase): + + def get_parser(self, required): + parser = ErrorRaisingArgumentParser(prog='PROG') + group = parser.add_mutually_exclusive_group(required=required) + group.add_argument('--foo', action='store_true', help='FOO') + group.add_argument('--spam', help='SPAM') + group.add_argument('badger', nargs='*', default='X', help='BADGER') + return parser + + failures = [ + '--foo --spam S', + '--spam S X', + 'X --foo', + 'X Y Z --spam S', + '--foo X Y', + ] + successes = [ + ('--foo', NS(foo=True, spam=None, badger='X')), + ('--spam S', NS(foo=False, spam='S', badger='X')), + ('X', NS(foo=False, spam=None, badger=['X'])), + ('X Y Z', NS(foo=False, spam=None, badger=['X', 'Y', 'Z'])), + ] + successes_when_not_required = [ + ('', NS(foo=False, spam=None, badger='X')), + ] + + usage_when_not_required = '''\ + usage: PROG [-h] [--foo | --spam SPAM | badger [badger ...]] + ''' + usage_when_required = '''\ + usage: PROG [-h] (--foo | --spam SPAM | badger [badger ...]) + ''' + help = '''\ + + positional arguments: + badger BADGER + + optional arguments: + -h, --help show this help message and exit + --foo FOO + --spam SPAM SPAM + ''' + + +class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase): + + def get_parser(self, required): + parser = ErrorRaisingArgumentParser(prog='PROG') + parser.add_argument('-x', action='store_true', help='x help') + group = parser.add_mutually_exclusive_group(required=required) + group.add_argument('-a', action='store_true', help='a help') + group.add_argument('-b', action='store_true', help='b help') + parser.add_argument('-y', action='store_true', help='y help') + group.add_argument('-c', action='store_true', help='c help') + return parser + + failures = ['-a -b', '-b -c', '-a -c', '-a -b -c'] + successes = [ + ('-a', NS(a=True, b=False, c=False, x=False, y=False)), + ('-b', NS(a=False, b=True, c=False, x=False, y=False)), + ('-c', NS(a=False, b=False, c=True, x=False, y=False)), + ('-a -x', NS(a=True, b=False, c=False, x=True, y=False)), + ('-y -b', NS(a=False, b=True, c=False, x=False, y=True)), + ('-x -y -c', NS(a=False, b=False, c=True, x=True, y=True)), + ] + successes_when_not_required = [ + ('', NS(a=False, b=False, c=False, x=False, y=False)), + ('-x', NS(a=False, b=False, c=False, x=True, y=False)), + ('-y', NS(a=False, b=False, c=False, x=False, y=True)), + ] + + usage_when_required = usage_when_not_required = '''\ + usage: PROG [-h] [-x] [-a] [-b] [-y] [-c] + ''' + help = '''\ + + optional arguments: + -h, --help show this help message and exit + -x x help + -a a help + -b b help + -y y help + -c c help + ''' + + +class TestMutuallyExclusiveInGroup(MEMixin, TestCase): + + def get_parser(self, required=None): + parser = ErrorRaisingArgumentParser(prog='PROG') + titled_group = parser.add_argument_group( + title='Titled group', description='Group description') + mutex_group = \ + titled_group.add_mutually_exclusive_group(required=required) + mutex_group.add_argument('--bar', help='bar help') + mutex_group.add_argument('--baz', help='baz help') + return parser + + failures = ['--bar X --baz Y', '--baz X --bar Y'] + successes = [ + ('--bar X', NS(bar='X', baz=None)), + ('--baz Y', NS(bar=None, baz='Y')), + ] + successes_when_not_required = [ + ('', NS(bar=None, baz=None)), + ] + + usage_when_not_required = '''\ + usage: PROG [-h] [--bar BAR | --baz BAZ] + ''' + usage_when_required = '''\ + usage: PROG [-h] (--bar BAR | --baz BAZ) + ''' + help = '''\ + + optional arguments: + -h, --help show this help message and exit + + Titled group: + Group description + + --bar BAR bar help + --baz BAZ baz help + ''' + + +class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase): + + def get_parser(self, required): + parser = ErrorRaisingArgumentParser(prog='PROG') + parser.add_argument('x', help='x help') + parser.add_argument('-y', action='store_true', help='y help') + group = parser.add_mutually_exclusive_group(required=required) + group.add_argument('a', nargs='?', help='a help') + group.add_argument('-b', action='store_true', help='b help') + group.add_argument('-c', action='store_true', help='c help') + return parser + + failures = ['X A -b', '-b -c', '-c X A'] + successes = [ + ('X A', NS(a='A', b=False, c=False, x='X', y=False)), + ('X -b', NS(a=None, b=True, c=False, x='X', y=False)), + ('X -c', NS(a=None, b=False, c=True, x='X', y=False)), + ('X A -y', NS(a='A', b=False, c=False, x='X', y=True)), + ('X -y -b', NS(a=None, b=True, c=False, x='X', y=True)), + ] + successes_when_not_required = [ + ('X', NS(a=None, b=False, c=False, x='X', y=False)), + ('X -y', NS(a=None, b=False, c=False, x='X', y=True)), + ] + + usage_when_required = usage_when_not_required = '''\ + usage: PROG [-h] [-y] [-b] [-c] x [a] + ''' + help = '''\ + + positional arguments: + x x help + a a help + + optional arguments: + -h, --help show this help message and exit + -y y help + -b b help + -c c help + ''' + +# ================================================= +# Mutually exclusive group in parent parser tests +# ================================================= + +class MEPBase(object): + + def get_parser(self, required=None): + parent = super(MEPBase, self).get_parser(required=required) + parser = ErrorRaisingArgumentParser( + prog=parent.prog, add_help=False, parents=[parent]) + return parser + + +class TestMutuallyExclusiveGroupErrorsParent( + MEPBase, TestMutuallyExclusiveGroupErrors): + pass + + +class TestMutuallyExclusiveSimpleParent( + MEPBase, TestMutuallyExclusiveSimple): + pass + + +class TestMutuallyExclusiveLongParent( + MEPBase, TestMutuallyExclusiveLong): + pass + + +class TestMutuallyExclusiveFirstSuppressedParent( + MEPBase, TestMutuallyExclusiveFirstSuppressed): + pass + + +class TestMutuallyExclusiveManySuppressedParent( + MEPBase, TestMutuallyExclusiveManySuppressed): + pass + + +class TestMutuallyExclusiveOptionalAndPositionalParent( + MEPBase, TestMutuallyExclusiveOptionalAndPositional): + pass + + +class TestMutuallyExclusiveOptionalsMixedParent( + MEPBase, TestMutuallyExclusiveOptionalsMixed): + pass + + +class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent( + MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed): + pass + +# ================= +# Set default tests +# ================= + +class TestSetDefaults(TestCase): + + def test_set_defaults_no_args(self): + parser = ErrorRaisingArgumentParser() + parser.set_defaults(x='foo') + parser.set_defaults(y='bar', z=1) + self.assertEqual(NS(x='foo', y='bar', z=1), + parser.parse_args([])) + self.assertEqual(NS(x='foo', y='bar', z=1), + parser.parse_args([], NS())) + self.assertEqual(NS(x='baz', y='bar', z=1), + parser.parse_args([], NS(x='baz'))) + self.assertEqual(NS(x='baz', y='bar', z=2), + parser.parse_args([], NS(x='baz', z=2))) + + def test_set_defaults_with_args(self): + parser = ErrorRaisingArgumentParser() + parser.set_defaults(x='foo', y='bar') + parser.add_argument('-x', default='xfoox') + self.assertEqual(NS(x='xfoox', y='bar'), + parser.parse_args([])) + self.assertEqual(NS(x='xfoox', y='bar'), + parser.parse_args([], NS())) + self.assertEqual(NS(x='baz', y='bar'), + parser.parse_args([], NS(x='baz'))) + self.assertEqual(NS(x='1', y='bar'), + parser.parse_args('-x 1'.split())) + self.assertEqual(NS(x='1', y='bar'), + parser.parse_args('-x 1'.split(), NS())) + self.assertEqual(NS(x='1', y='bar'), + parser.parse_args('-x 1'.split(), NS(x='baz'))) + + def test_set_defaults_subparsers(self): + parser = ErrorRaisingArgumentParser() + parser.set_defaults(x='foo') + subparsers = parser.add_subparsers() + parser_a = subparsers.add_parser('a') + parser_a.set_defaults(y='bar') + self.assertEqual(NS(x='foo', y='bar'), + parser.parse_args('a'.split())) + + def test_set_defaults_parents(self): + parent = ErrorRaisingArgumentParser(add_help=False) + parent.set_defaults(x='foo') + parser = ErrorRaisingArgumentParser(parents=[parent]) + self.assertEqual(NS(x='foo'), parser.parse_args([])) + + def test_set_defaults_on_parent_and_subparser(self): + parser = argparse.ArgumentParser() + xparser = parser.add_subparsers().add_parser('X') + parser.set_defaults(foo=1) + xparser.set_defaults(foo=2) + self.assertEqual(NS(foo=2), parser.parse_args(['X'])) + + def test_set_defaults_same_as_add_argument(self): + parser = ErrorRaisingArgumentParser() + parser.set_defaults(w='W', x='X', y='Y', z='Z') + parser.add_argument('-w') + parser.add_argument('-x', default='XX') + parser.add_argument('y', nargs='?') + parser.add_argument('z', nargs='?', default='ZZ') + + # defaults set previously + self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'), + parser.parse_args([])) + + # reset defaults + parser.set_defaults(w='WW', x='X', y='YY', z='Z') + self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'), + parser.parse_args([])) + + def test_set_defaults_same_as_add_argument_group(self): + parser = ErrorRaisingArgumentParser() + parser.set_defaults(w='W', x='X', y='Y', z='Z') + group = parser.add_argument_group('foo') + group.add_argument('-w') + group.add_argument('-x', default='XX') + group.add_argument('y', nargs='?') + group.add_argument('z', nargs='?', default='ZZ') + + + # defaults set previously + self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'), + parser.parse_args([])) + + # reset defaults + parser.set_defaults(w='WW', x='X', y='YY', z='Z') + self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'), + parser.parse_args([])) + +# ================= +# Get default tests +# ================= + +class TestGetDefault(TestCase): + + def test_get_default(self): + parser = ErrorRaisingArgumentParser() + self.assertEqual(None, parser.get_default("foo")) + self.assertEqual(None, parser.get_default("bar")) + + parser.add_argument("--foo") + self.assertEqual(None, parser.get_default("foo")) + self.assertEqual(None, parser.get_default("bar")) + + parser.add_argument("--bar", type=int, default=42) + self.assertEqual(None, parser.get_default("foo")) + self.assertEqual(42, parser.get_default("bar")) + + parser.set_defaults(foo="badger") + self.assertEqual("badger", parser.get_default("foo")) + self.assertEqual(42, parser.get_default("bar")) + +# ========================== +# Namespace 'contains' tests +# ========================== + +class TestNamespaceContainsSimple(TestCase): + + def test_empty(self): + ns = argparse.Namespace() + self.assertEqual('' in ns, False) + self.assertEqual('' not in ns, True) + self.assertEqual('x' in ns, False) + + def test_non_empty(self): + ns = argparse.Namespace(x=1, y=2) + self.assertEqual('x' in ns, True) + self.assertEqual('x' not in ns, False) + self.assertEqual('y' in ns, True) + self.assertEqual('' in ns, False) + self.assertEqual('xx' in ns, False) + self.assertEqual('z' in ns, False) + +# ===================== +# Help formatting tests +# ===================== + +class TestHelpFormattingMetaclass(type): + + def __init__(cls, name, bases, bodydict): + if name == 'HelpTestCase': + return + + class AddTests(object): + + def __init__(self, test_class, func_suffix, std_name): + self.func_suffix = func_suffix + self.std_name = std_name + + for test_func in [self.test_format, + self.test_print, + self.test_print_file]: + test_name = '%s_%s' % (test_func.__name__, func_suffix) + + def test_wrapper(self, test_func=test_func): + test_func(self) + try: + test_wrapper.__name__ = test_name + except TypeError: + pass + setattr(test_class, test_name, test_wrapper) + + def _get_parser(self, tester): + parser = argparse.ArgumentParser( + *tester.parser_signature.args, + **tester.parser_signature.kwargs) + for argument_sig in getattr(tester, 'argument_signatures', []): + parser.add_argument(*argument_sig.args, + **argument_sig.kwargs) + group_sigs = getattr(tester, 'argument_group_signatures', []) + for group_sig, argument_sigs in group_sigs: + group = parser.add_argument_group(*group_sig.args, + **group_sig.kwargs) + for argument_sig in argument_sigs: + group.add_argument(*argument_sig.args, + **argument_sig.kwargs) + subparsers_sigs = getattr(tester, 'subparsers_signatures', []) + if subparsers_sigs: + subparsers = parser.add_subparsers() + for subparser_sig in subparsers_sigs: + subparsers.add_parser(*subparser_sig.args, + **subparser_sig.kwargs) + return parser + + def _test(self, tester, parser_text): + expected_text = getattr(tester, self.func_suffix) + expected_text = textwrap.dedent(expected_text) + if expected_text != parser_text: + print(repr(expected_text)) + print(repr(parser_text)) + for char1, char2 in zip(expected_text, parser_text): + if char1 != char2: + print('first diff: %r %r' % (char1, char2)) + break + tester.assertEqual(expected_text, parser_text) + + def test_format(self, tester): + parser = self._get_parser(tester) + format = getattr(parser, 'format_%s' % self.func_suffix) + self._test(tester, format()) + + def test_print(self, tester): + parser = self._get_parser(tester) + print_ = getattr(parser, 'print_%s' % self.func_suffix) + old_stream = getattr(sys, self.std_name) + setattr(sys, self.std_name, StdIOBuffer()) + try: + print_() + parser_text = getattr(sys, self.std_name).getvalue() + finally: + setattr(sys, self.std_name, old_stream) + self._test(tester, parser_text) + + def test_print_file(self, tester): + parser = self._get_parser(tester) + print_ = getattr(parser, 'print_%s' % self.func_suffix) + sfile = StdIOBuffer() + print_(sfile) + parser_text = sfile.getvalue() + self._test(tester, parser_text) + + # add tests for {format,print}_{usage,help,version} + for func_suffix, std_name in [('usage', 'stdout'), + ('help', 'stdout'), + ('version', 'stderr')]: + AddTests(cls, func_suffix, std_name) + +bases = TestCase, +HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {}) + + +class TestHelpBiggerOptionals(HelpTestCase): + """Make sure that argument help aligns when options are longer""" + + parser_signature = Sig(prog='PROG', description='DESCRIPTION', + epilog='EPILOG', version='0.1') + argument_signatures = [ + Sig('-x', action='store_true', help='X HELP'), + Sig('--y', help='Y HELP'), + Sig('foo', help='FOO HELP'), + Sig('bar', help='BAR HELP'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-v] [-x] [--y Y] foo bar + ''' + help = usage + '''\ + + DESCRIPTION + + positional arguments: + foo FOO HELP + bar BAR HELP + + optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + -x X HELP + --y Y Y HELP + + EPILOG + ''' + version = '''\ + 0.1 + ''' + +class TestShortColumns(HelpTestCase): + '''Test extremely small number of columns. + + TestCase prevents "COLUMNS" from being too small in the tests themselves, + but we don't want any exceptions thrown in such case. Only ugly representation. + ''' + def setUp(self): + env = test_support.EnvironmentVarGuard() + env.set("COLUMNS", '15') + self.addCleanup(env.__exit__) + + parser_signature = TestHelpBiggerOptionals.parser_signature + argument_signatures = TestHelpBiggerOptionals.argument_signatures + argument_group_signatures = TestHelpBiggerOptionals.argument_group_signatures + usage = '''\ + usage: PROG + [-h] + [-v] + [-x] + [--y Y] + foo + bar + ''' + help = usage + '''\ + + DESCRIPTION + + positional arguments: + foo + FOO HELP + bar + BAR HELP + + optional arguments: + -h, --help + show this + help + message and + exit + -v, --version + show + program's + version + number and + exit + -x + X HELP + --y Y + Y HELP + + EPILOG + ''' + version = TestHelpBiggerOptionals.version + + +class TestHelpBiggerOptionalGroups(HelpTestCase): + """Make sure that argument help aligns when options are longer""" + + parser_signature = Sig(prog='PROG', description='DESCRIPTION', + epilog='EPILOG', version='0.1') + argument_signatures = [ + Sig('-x', action='store_true', help='X HELP'), + Sig('--y', help='Y HELP'), + Sig('foo', help='FOO HELP'), + Sig('bar', help='BAR HELP'), + ] + argument_group_signatures = [ + (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [ + Sig('baz', help='BAZ HELP'), + Sig('-z', nargs='+', help='Z HELP')]), + ] + usage = '''\ + usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz + ''' + help = usage + '''\ + + DESCRIPTION + + positional arguments: + foo FOO HELP + bar BAR HELP + + optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + -x X HELP + --y Y Y HELP + + GROUP TITLE: + GROUP DESCRIPTION + + baz BAZ HELP + -z Z [Z ...] Z HELP + + EPILOG + ''' + version = '''\ + 0.1 + ''' + + +class TestHelpBiggerPositionals(HelpTestCase): + """Make sure that help aligns when arguments are longer""" + + parser_signature = Sig(usage='USAGE', description='DESCRIPTION') + argument_signatures = [ + Sig('-x', action='store_true', help='X HELP'), + Sig('--y', help='Y HELP'), + Sig('ekiekiekifekang', help='EKI HELP'), + Sig('bar', help='BAR HELP'), + ] + argument_group_signatures = [] + usage = '''\ + usage: USAGE + ''' + help = usage + '''\ + + DESCRIPTION + + positional arguments: + ekiekiekifekang EKI HELP + bar BAR HELP + + optional arguments: + -h, --help show this help message and exit + -x X HELP + --y Y Y HELP + ''' + + version = '' + + +class TestHelpReformatting(HelpTestCase): + """Make sure that text after short names starts on the first line""" + + parser_signature = Sig( + prog='PROG', + description=' oddly formatted\n' + 'description\n' + '\n' + 'that is so long that it should go onto multiple ' + 'lines when wrapped') + argument_signatures = [ + Sig('-x', metavar='XX', help='oddly\n' + ' formatted -x help'), + Sig('y', metavar='yyy', help='normal y help'), + ] + argument_group_signatures = [ + (Sig('title', description='\n' + ' oddly formatted group\n' + '\n' + 'description'), + [Sig('-a', action='store_true', + help=' oddly \n' + 'formatted -a help \n' + ' again, so long that it should be wrapped over ' + 'multiple lines')]), + ] + usage = '''\ + usage: PROG [-h] [-x XX] [-a] yyy + ''' + help = usage + '''\ + + oddly formatted description that is so long that it should go onto \ +multiple + lines when wrapped + + positional arguments: + yyy normal y help + + optional arguments: + -h, --help show this help message and exit + -x XX oddly formatted -x help + + title: + oddly formatted group description + + -a oddly formatted -a help again, so long that it should \ +be wrapped + over multiple lines + ''' + version = '' + + +class TestHelpWrappingShortNames(HelpTestCase): + """Make sure that text after short names starts on the first line""" + + parser_signature = Sig(prog='PROG', description= 'D\nD' * 30) + argument_signatures = [ + Sig('-x', metavar='XX', help='XHH HX' * 20), + Sig('y', metavar='yyy', help='YH YH' * 20), + ] + argument_group_signatures = [ + (Sig('ALPHAS'), [ + Sig('-a', action='store_true', help='AHHH HHA' * 10)]), + ] + usage = '''\ + usage: PROG [-h] [-x XX] [-a] yyy + ''' + help = usage + '''\ + + D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \ +DD DD DD + DD DD DD DD D + + positional arguments: + yyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \ +YHYH YHYH + YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH + + optional arguments: + -h, --help show this help message and exit + -x XX XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH \ +HXXHH HXXHH + HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX + + ALPHAS: + -a AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH \ +HHAAHHH + HHAAHHH HHAAHHH HHA + ''' + version = '' + + +class TestHelpWrappingLongNames(HelpTestCase): + """Make sure that text after long names starts on the next line""" + + parser_signature = Sig(usage='USAGE', description= 'D D' * 30, + version='V V'*30) + argument_signatures = [ + Sig('-x', metavar='X' * 25, help='XH XH' * 20), + Sig('y', metavar='y' * 25, help='YH YH' * 20), + ] + argument_group_signatures = [ + (Sig('ALPHAS'), [ + Sig('-a', metavar='A' * 25, help='AH AH' * 20), + Sig('z', metavar='z' * 25, help='ZH ZH' * 20)]), + ] + usage = '''\ + usage: USAGE + ''' + help = usage + '''\ + + D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \ +DD DD DD + DD DD DD DD D + + positional arguments: + yyyyyyyyyyyyyyyyyyyyyyyyy + YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \ +YHYH YHYH + YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH + + optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + -x XXXXXXXXXXXXXXXXXXXXXXXXX + XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH \ +XHXH XHXH + XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH + + ALPHAS: + -a AAAAAAAAAAAAAAAAAAAAAAAAA + AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH \ +AHAH AHAH + AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH + zzzzzzzzzzzzzzzzzzzzzzzzz + ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH \ +ZHZH ZHZH + ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH + ''' + version = '''\ + V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV \ +VV VV VV + VV VV VV VV V + ''' + + +class TestHelpUsage(HelpTestCase): + """Test basic usage messages""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('-w', nargs='+', help='w'), + Sig('-x', nargs='*', help='x'), + Sig('a', help='a'), + Sig('b', help='b', nargs=2), + Sig('c', help='c', nargs='?'), + ] + argument_group_signatures = [ + (Sig('group'), [ + Sig('-y', nargs='?', help='y'), + Sig('-z', nargs=3, help='z'), + Sig('d', help='d', nargs='*'), + Sig('e', help='e', nargs='+'), + ]) + ] + usage = '''\ + usage: PROG [-h] [-w W [W ...]] [-x [X [X ...]]] [-y [Y]] [-z Z Z Z] + a b b [c] [d [d ...]] e [e ...] + ''' + help = usage + '''\ + + positional arguments: + a a + b b + c c + + optional arguments: + -h, --help show this help message and exit + -w W [W ...] w + -x [X [X ...]] x + + group: + -y [Y] y + -z Z Z Z z + d d + e e + ''' + version = '' + + +class TestHelpOnlyUserGroups(HelpTestCase): + """Test basic usage messages""" + + parser_signature = Sig(prog='PROG', add_help=False) + argument_signatures = [] + argument_group_signatures = [ + (Sig('xxxx'), [ + Sig('-x', help='x'), + Sig('a', help='a'), + ]), + (Sig('yyyy'), [ + Sig('b', help='b'), + Sig('-y', help='y'), + ]), + ] + usage = '''\ + usage: PROG [-x X] [-y Y] a b + ''' + help = usage + '''\ + + xxxx: + -x X x + a a + + yyyy: + b b + -y Y y + ''' + version = '' + + +class TestHelpUsageLongProg(HelpTestCase): + """Test usage messages where the prog is long""" + + parser_signature = Sig(prog='P' * 60) + argument_signatures = [ + Sig('-w', metavar='W'), + Sig('-x', metavar='X'), + Sig('a'), + Sig('b'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP + [-h] [-w W] [-x X] a b + ''' + help = usage + '''\ + + positional arguments: + a + b + + optional arguments: + -h, --help show this help message and exit + -w W + -x X + ''' + version = '' + + +class TestHelpUsageLongProgOptionsWrap(HelpTestCase): + """Test usage messages where the prog is long and the optionals wrap""" + + parser_signature = Sig(prog='P' * 60) + argument_signatures = [ + Sig('-w', metavar='W' * 25), + Sig('-x', metavar='X' * 25), + Sig('-y', metavar='Y' * 25), + Sig('-z', metavar='Z' * 25), + Sig('a'), + Sig('b'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP + [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ +[-x XXXXXXXXXXXXXXXXXXXXXXXXX] + [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] + a b + ''' + help = usage + '''\ + + positional arguments: + a + b + + optional arguments: + -h, --help show this help message and exit + -w WWWWWWWWWWWWWWWWWWWWWWWWW + -x XXXXXXXXXXXXXXXXXXXXXXXXX + -y YYYYYYYYYYYYYYYYYYYYYYYYY + -z ZZZZZZZZZZZZZZZZZZZZZZZZZ + ''' + version = '' + + +class TestHelpUsageLongProgPositionalsWrap(HelpTestCase): + """Test usage messages where the prog is long and the positionals wrap""" + + parser_signature = Sig(prog='P' * 60, add_help=False) + argument_signatures = [ + Sig('a' * 25), + Sig('b' * 25), + Sig('c' * 25), + ] + argument_group_signatures = [] + usage = '''\ + usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP + aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + ''' + help = usage + '''\ + + positional arguments: + aaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + ''' + version = '' + + +class TestHelpUsageOptionalsWrap(HelpTestCase): + """Test usage messages where the optionals wrap""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('-w', metavar='W' * 25), + Sig('-x', metavar='X' * 25), + Sig('-y', metavar='Y' * 25), + Sig('-z', metavar='Z' * 25), + Sig('a'), + Sig('b'), + Sig('c'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ +[-x XXXXXXXXXXXXXXXXXXXXXXXXX] + [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \ +[-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] + a b c + ''' + help = usage + '''\ + + positional arguments: + a + b + c + + optional arguments: + -h, --help show this help message and exit + -w WWWWWWWWWWWWWWWWWWWWWWWWW + -x XXXXXXXXXXXXXXXXXXXXXXXXX + -y YYYYYYYYYYYYYYYYYYYYYYYYY + -z ZZZZZZZZZZZZZZZZZZZZZZZZZ + ''' + version = '' + + +class TestHelpUsagePositionalsWrap(HelpTestCase): + """Test usage messages where the positionals wrap""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('-x'), + Sig('-y'), + Sig('-z'), + Sig('a' * 25), + Sig('b' * 25), + Sig('c' * 25), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-x X] [-y Y] [-z Z] + aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + ''' + help = usage + '''\ + + positional arguments: + aaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + + optional arguments: + -h, --help show this help message and exit + -x X + -y Y + -z Z + ''' + version = '' + + +class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase): + """Test usage messages where the optionals and positionals wrap""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('-x', metavar='X' * 25), + Sig('-y', metavar='Y' * 25), + Sig('-z', metavar='Z' * 25), + Sig('a' * 25), + Sig('b' * 25), + Sig('c' * 25), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ +[-y YYYYYYYYYYYYYYYYYYYYYYYYY] + [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] + aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + ''' + help = usage + '''\ + + positional arguments: + aaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + + optional arguments: + -h, --help show this help message and exit + -x XXXXXXXXXXXXXXXXXXXXXXXXX + -y YYYYYYYYYYYYYYYYYYYYYYYYY + -z ZZZZZZZZZZZZZZZZZZZZZZZZZ + ''' + version = '' + + +class TestHelpUsageOptionalsOnlyWrap(HelpTestCase): + """Test usage messages where there are only optionals and they wrap""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('-x', metavar='X' * 25), + Sig('-y', metavar='Y' * 25), + Sig('-z', metavar='Z' * 25), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ +[-y YYYYYYYYYYYYYYYYYYYYYYYYY] + [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] + ''' + help = usage + '''\ + + optional arguments: + -h, --help show this help message and exit + -x XXXXXXXXXXXXXXXXXXXXXXXXX + -y YYYYYYYYYYYYYYYYYYYYYYYYY + -z ZZZZZZZZZZZZZZZZZZZZZZZZZ + ''' + version = '' + + +class TestHelpUsagePositionalsOnlyWrap(HelpTestCase): + """Test usage messages where there are only positionals and they wrap""" + + parser_signature = Sig(prog='PROG', add_help=False) + argument_signatures = [ + Sig('a' * 25), + Sig('b' * 25), + Sig('c' * 25), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + ''' + help = usage + '''\ + + positional arguments: + aaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbb + ccccccccccccccccccccccccc + ''' + version = '' + + +class TestHelpVariableExpansion(HelpTestCase): + """Test that variables are expanded properly in help messages""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('-x', type=int, + help='x %(prog)s %(default)s %(type)s %%'), + Sig('-y', action='store_const', default=42, const='XXX', + help='y %(prog)s %(default)s %(const)s'), + Sig('--foo', choices='abc', + help='foo %(prog)s %(default)s %(choices)s'), + Sig('--bar', default='baz', choices=[1, 2], metavar='BBB', + help='bar %(prog)s %(default)s %(dest)s'), + Sig('spam', help='spam %(prog)s %(default)s'), + Sig('badger', default=0.5, help='badger %(prog)s %(default)s'), + ] + argument_group_signatures = [ + (Sig('group'), [ + Sig('-a', help='a %(prog)s %(default)s'), + Sig('-b', default=-1, help='b %(prog)s %(default)s'), + ]) + ] + usage = ('''\ + usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B] + spam badger + ''') + help = usage + '''\ + + positional arguments: + spam spam PROG None + badger badger PROG 0.5 + + optional arguments: + -h, --help show this help message and exit + -x X x PROG None int % + -y y PROG 42 XXX + --foo {a,b,c} foo PROG None a, b, c + --bar BBB bar PROG baz bar + + group: + -a A a PROG None + -b B b PROG -1 + ''' + version = '' + + +class TestHelpVariableExpansionUsageSupplied(HelpTestCase): + """Test that variables are expanded properly when usage= is present""" + + parser_signature = Sig(prog='PROG', usage='%(prog)s FOO') + argument_signatures = [] + argument_group_signatures = [] + usage = ('''\ + usage: PROG FOO + ''') + help = usage + '''\ + + optional arguments: + -h, --help show this help message and exit + ''' + version = '' + + +class TestHelpVariableExpansionNoArguments(HelpTestCase): + """Test that variables are expanded properly with no arguments""" + + parser_signature = Sig(prog='PROG', add_help=False) + argument_signatures = [] + argument_group_signatures = [] + usage = ('''\ + usage: PROG + ''') + help = usage + version = '' + + +class TestHelpSuppressUsage(HelpTestCase): + """Test that items can be suppressed in usage messages""" + + parser_signature = Sig(prog='PROG', usage=argparse.SUPPRESS) + argument_signatures = [ + Sig('--foo', help='foo help'), + Sig('spam', help='spam help'), + ] + argument_group_signatures = [] + help = '''\ + positional arguments: + spam spam help + + optional arguments: + -h, --help show this help message and exit + --foo FOO foo help + ''' + usage = '' + version = '' + + +class TestHelpSuppressOptional(HelpTestCase): + """Test that optional arguments can be suppressed in help messages""" + + parser_signature = Sig(prog='PROG', add_help=False) + argument_signatures = [ + Sig('--foo', help=argparse.SUPPRESS), + Sig('spam', help='spam help'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG spam + ''' + help = usage + '''\ + + positional arguments: + spam spam help + ''' + version = '' + + +class TestHelpSuppressOptionalGroup(HelpTestCase): + """Test that optional groups can be suppressed in help messages""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('--foo', help='foo help'), + Sig('spam', help='spam help'), + ] + argument_group_signatures = [ + (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]), + ] + usage = '''\ + usage: PROG [-h] [--foo FOO] spam + ''' + help = usage + '''\ + + positional arguments: + spam spam help + + optional arguments: + -h, --help show this help message and exit + --foo FOO foo help + ''' + version = '' + + +class TestHelpSuppressPositional(HelpTestCase): + """Test that positional arguments can be suppressed in help messages""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('--foo', help='foo help'), + Sig('spam', help=argparse.SUPPRESS), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [--foo FOO] + ''' + help = usage + '''\ + + optional arguments: + -h, --help show this help message and exit + --foo FOO foo help + ''' + version = '' + + +class TestHelpRequiredOptional(HelpTestCase): + """Test that required options don't look optional""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('--foo', required=True, help='foo help'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] --foo FOO + ''' + help = usage + '''\ + + optional arguments: + -h, --help show this help message and exit + --foo FOO foo help + ''' + version = '' + + +class TestHelpAlternatePrefixChars(HelpTestCase): + """Test that options display with different prefix characters""" + + parser_signature = Sig(prog='PROG', prefix_chars='^;', add_help=False) + argument_signatures = [ + Sig('^^foo', action='store_true', help='foo help'), + Sig(';b', ';;bar', help='bar help'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [^^foo] [;b BAR] + ''' + help = usage + '''\ + + optional arguments: + ^^foo foo help + ;b BAR, ;;bar BAR bar help + ''' + version = '' + + +class TestHelpNoHelpOptional(HelpTestCase): + """Test that the --help argument can be suppressed help messages""" + + parser_signature = Sig(prog='PROG', add_help=False) + argument_signatures = [ + Sig('--foo', help='foo help'), + Sig('spam', help='spam help'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [--foo FOO] spam + ''' + help = usage + '''\ + + positional arguments: + spam spam help + + optional arguments: + --foo FOO foo help + ''' + version = '' + + +class TestHelpVersionOptional(HelpTestCase): + """Test that the --version argument can be suppressed help messages""" + + parser_signature = Sig(prog='PROG', version='1.0') + argument_signatures = [ + Sig('--foo', help='foo help'), + Sig('spam', help='spam help'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-v] [--foo FOO] spam + ''' + help = usage + '''\ + + positional arguments: + spam spam help + + optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + --foo FOO foo help + ''' + version = '''\ + 1.0 + ''' + + +class TestHelpNone(HelpTestCase): + """Test that no errors occur if no help is specified""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('--foo'), + Sig('spam'), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [--foo FOO] spam + ''' + help = usage + '''\ + + positional arguments: + spam + + optional arguments: + -h, --help show this help message and exit + --foo FOO + ''' + version = '' + + +class TestHelpTupleMetavar(HelpTestCase): + """Test specifying metavar as a tuple""" + + parser_signature = Sig(prog='PROG') + argument_signatures = [ + Sig('-w', help='w', nargs='+', metavar=('W1', 'W2')), + Sig('-x', help='x', nargs='*', metavar=('X1', 'X2')), + Sig('-y', help='y', nargs=3, metavar=('Y1', 'Y2', 'Y3')), + Sig('-z', help='z', nargs='?', metavar=('Z1', )), + ] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] \ +[-z [Z1]] + ''' + help = usage + '''\ + + optional arguments: + -h, --help show this help message and exit + -w W1 [W2 ...] w + -x [X1 [X2 ...]] x + -y Y1 Y2 Y3 y + -z [Z1] z + ''' + version = '' + + +class TestHelpRawText(HelpTestCase): + """Test the RawTextHelpFormatter""" + + parser_signature = Sig( + prog='PROG', formatter_class=argparse.RawTextHelpFormatter, + description='Keep the formatting\n' + ' exactly as it is written\n' + '\n' + 'here\n') + + argument_signatures = [ + Sig('--foo', help=' foo help should also\n' + 'appear as given here'), + Sig('spam', help='spam help'), + ] + argument_group_signatures = [ + (Sig('title', description=' This text\n' + ' should be indented\n' + ' exactly like it is here\n'), + [Sig('--bar', help='bar help')]), + ] + usage = '''\ + usage: PROG [-h] [--foo FOO] [--bar BAR] spam + ''' + help = usage + '''\ + + Keep the formatting + exactly as it is written + + here + + positional arguments: + spam spam help + + optional arguments: + -h, --help show this help message and exit + --foo FOO foo help should also + appear as given here + + title: + This text + should be indented + exactly like it is here + + --bar BAR bar help + ''' + version = '' + + +class TestHelpRawDescription(HelpTestCase): + """Test the RawTextHelpFormatter""" + + parser_signature = Sig( + prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter, + description='Keep the formatting\n' + ' exactly as it is written\n' + '\n' + 'here\n') + + argument_signatures = [ + Sig('--foo', help=' foo help should not\n' + ' retain this odd formatting'), + Sig('spam', help='spam help'), + ] + argument_group_signatures = [ + (Sig('title', description=' This text\n' + ' should be indented\n' + ' exactly like it is here\n'), + [Sig('--bar', help='bar help')]), + ] + usage = '''\ + usage: PROG [-h] [--foo FOO] [--bar BAR] spam + ''' + help = usage + '''\ + + Keep the formatting + exactly as it is written + + here + + positional arguments: + spam spam help + + optional arguments: + -h, --help show this help message and exit + --foo FOO foo help should not retain this odd formatting + + title: + This text + should be indented + exactly like it is here + + --bar BAR bar help + ''' + version = '' + + +class TestHelpArgumentDefaults(HelpTestCase): + """Test the ArgumentDefaultsHelpFormatter""" + + parser_signature = Sig( + prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description='description') + + argument_signatures = [ + Sig('--foo', help='foo help - oh and by the way, %(default)s'), + Sig('--bar', action='store_true', help='bar help'), + Sig('spam', help='spam help'), + Sig('badger', nargs='?', default='wooden', help='badger help'), + ] + argument_group_signatures = [ + (Sig('title', description='description'), + [Sig('--baz', type=int, default=42, help='baz help')]), + ] + usage = '''\ + usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger] + ''' + help = usage + '''\ + + description + + positional arguments: + spam spam help + badger badger help (default: wooden) + + optional arguments: + -h, --help show this help message and exit + --foo FOO foo help - oh and by the way, None + --bar bar help (default: False) + + title: + description + + --baz BAZ baz help (default: 42) + ''' + version = '' + +class TestHelpVersionAction(HelpTestCase): + """Test the default help for the version action""" + + parser_signature = Sig(prog='PROG', description='description') + argument_signatures = [Sig('-V', '--version', action='version', version='3.6')] + argument_group_signatures = [] + usage = '''\ + usage: PROG [-h] [-V] + ''' + help = usage + '''\ + + description + + optional arguments: + -h, --help show this help message and exit + -V, --version show program's version number and exit + ''' + version = '' + +class TestHelpSubparsersOrdering(HelpTestCase): + """Test ordering of subcommands in help matches the code""" + parser_signature = Sig(prog='PROG', + description='display some subcommands', + version='0.1') + + subparsers_signatures = [Sig(name=name) + for name in ('a', 'b', 'c', 'd', 'e')] + + usage = '''\ + usage: PROG [-h] [-v] {a,b,c,d,e} ... + ''' + + help = usage + '''\ + + display some subcommands + + positional arguments: + {a,b,c,d,e} + + optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + ''' + + version = '''\ + 0.1 + ''' + +class TestHelpSubparsersWithHelpOrdering(HelpTestCase): + """Test ordering of subcommands in help matches the code""" + parser_signature = Sig(prog='PROG', + description='display some subcommands', + version='0.1') + + subcommand_data = (('a', 'a subcommand help'), + ('b', 'b subcommand help'), + ('c', 'c subcommand help'), + ('d', 'd subcommand help'), + ('e', 'e subcommand help'), + ) + + subparsers_signatures = [Sig(name=name, help=help) + for name, help in subcommand_data] + + usage = '''\ + usage: PROG [-h] [-v] {a,b,c,d,e} ... + ''' + + help = usage + '''\ + + display some subcommands + + positional arguments: + {a,b,c,d,e} + a a subcommand help + b b subcommand help + c c subcommand help + d d subcommand help + e e subcommand help + + optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + ''' + + version = '''\ + 0.1 + ''' + + +# ===================================== +# Optional/Positional constructor tests +# ===================================== + +class TestInvalidArgumentConstructors(TestCase): + """Test a bunch of invalid Argument constructors""" + + def assertTypeError(self, *args, **kwargs): + parser = argparse.ArgumentParser() + self.assertRaises(TypeError, parser.add_argument, + *args, **kwargs) + + def assertValueError(self, *args, **kwargs): + parser = argparse.ArgumentParser() + self.assertRaises(ValueError, parser.add_argument, + *args, **kwargs) + + def test_invalid_keyword_arguments(self): + self.assertTypeError('-x', bar=None) + self.assertTypeError('-y', callback='foo') + self.assertTypeError('-y', callback_args=()) + self.assertTypeError('-y', callback_kwargs={}) + + def test_missing_destination(self): + self.assertTypeError() + for action in ['append', 'store']: + self.assertTypeError(action=action) + + def test_invalid_option_strings(self): + self.assertValueError('--') + self.assertValueError('---') + + def test_invalid_type(self): + self.assertValueError('--foo', type='int') + self.assertValueError('--foo', type=(int, float)) + + def test_invalid_action(self): + self.assertValueError('-x', action='foo') + self.assertValueError('foo', action='baz') + self.assertValueError('--foo', action=('store', 'append')) + parser = argparse.ArgumentParser() + try: + parser.add_argument("--foo", action="store-true") + except ValueError: + e = sys.exc_info()[1] + expected = 'unknown action' + msg = 'expected %r, found %r' % (expected, e) + self.assertTrue(expected in str(e), msg) + + def test_multiple_dest(self): + parser = argparse.ArgumentParser() + parser.add_argument(dest='foo') + try: + parser.add_argument('bar', dest='baz') + except ValueError: + e = sys.exc_info()[1] + expected = 'dest supplied twice for positional argument' + msg = 'expected %r, found %r' % (expected, e) + self.assertTrue(expected in str(e), msg) + + def test_no_argument_actions(self): + for action in ['store_const', 'store_true', 'store_false', + 'append_const', 'count']: + for attrs in [dict(type=int), dict(nargs='+'), + dict(choices='ab')]: + self.assertTypeError('-x', action=action, **attrs) + + def test_no_argument_no_const_actions(self): + # options with zero arguments + for action in ['store_true', 'store_false', 'count']: + + # const is always disallowed + self.assertTypeError('-x', const='foo', action=action) + + # nargs is always disallowed + self.assertTypeError('-x', nargs='*', action=action) + + def test_more_than_one_argument_actions(self): + for action in ['store', 'append']: + + # nargs=0 is disallowed + self.assertValueError('-x', nargs=0, action=action) + self.assertValueError('spam', nargs=0, action=action) + + # const is disallowed with non-optional arguments + for nargs in [1, '*', '+']: + self.assertValueError('-x', const='foo', + nargs=nargs, action=action) + self.assertValueError('spam', const='foo', + nargs=nargs, action=action) + + def test_required_const_actions(self): + for action in ['store_const', 'append_const']: + + # nargs is always disallowed + self.assertTypeError('-x', nargs='+', action=action) + + def test_parsers_action_missing_params(self): + self.assertTypeError('command', action='parsers') + self.assertTypeError('command', action='parsers', prog='PROG') + self.assertTypeError('command', action='parsers', + parser_class=argparse.ArgumentParser) + + def test_required_positional(self): + self.assertTypeError('foo', required=True) + + def test_user_defined_action(self): + + class Success(Exception): + pass + + class Action(object): + + def __init__(self, + option_strings, + dest, + const, + default, + required=False): + if dest == 'spam': + if const is Success: + if default is Success: + raise Success() + + def __call__(self, *args, **kwargs): + pass + + parser = argparse.ArgumentParser() + self.assertRaises(Success, parser.add_argument, '--spam', + action=Action, default=Success, const=Success) + self.assertRaises(Success, parser.add_argument, 'spam', + action=Action, default=Success, const=Success) + +# ================================ +# Actions returned by add_argument +# ================================ + +class TestActionsReturned(TestCase): + + def test_dest(self): + parser = argparse.ArgumentParser() + action = parser.add_argument('--foo') + self.assertEqual(action.dest, 'foo') + action = parser.add_argument('-b', '--bar') + self.assertEqual(action.dest, 'bar') + action = parser.add_argument('-x', '-y') + self.assertEqual(action.dest, 'x') + + def test_misc(self): + parser = argparse.ArgumentParser() + action = parser.add_argument('--foo', nargs='?', const=42, + default=84, type=int, choices=[1, 2], + help='FOO', metavar='BAR', dest='baz') + self.assertEqual(action.nargs, '?') + self.assertEqual(action.const, 42) + self.assertEqual(action.default, 84) + self.assertEqual(action.type, int) + self.assertEqual(action.choices, [1, 2]) + self.assertEqual(action.help, 'FOO') + self.assertEqual(action.metavar, 'BAR') + self.assertEqual(action.dest, 'baz') + + +# ================================ +# Argument conflict handling tests +# ================================ + +class TestConflictHandling(TestCase): + + def test_bad_type(self): + self.assertRaises(ValueError, argparse.ArgumentParser, + conflict_handler='foo') + + def test_conflict_error(self): + parser = argparse.ArgumentParser() + parser.add_argument('-x') + self.assertRaises(argparse.ArgumentError, + parser.add_argument, '-x') + parser.add_argument('--spam') + self.assertRaises(argparse.ArgumentError, + parser.add_argument, '--spam') + + def test_resolve_error(self): + get_parser = argparse.ArgumentParser + parser = get_parser(prog='PROG', conflict_handler='resolve') + + parser.add_argument('-x', help='OLD X') + parser.add_argument('-x', help='NEW X') + self.assertEqual(parser.format_help(), textwrap.dedent('''\ + usage: PROG [-h] [-x X] + + optional arguments: + -h, --help show this help message and exit + -x X NEW X + ''')) + + parser.add_argument('--spam', metavar='OLD_SPAM') + parser.add_argument('--spam', metavar='NEW_SPAM') + self.assertEqual(parser.format_help(), textwrap.dedent('''\ + usage: PROG [-h] [-x X] [--spam NEW_SPAM] + + optional arguments: + -h, --help show this help message and exit + -x X NEW X + --spam NEW_SPAM + ''')) + + +# ============================= +# Help and Version option tests +# ============================= + +class TestOptionalsHelpVersionActions(TestCase): + """Test the help and version actions""" + + def _get_error(self, func, *args, **kwargs): + try: + func(*args, **kwargs) + except ArgumentParserError: + return sys.exc_info()[1] + else: + self.assertRaises(ArgumentParserError, func, *args, **kwargs) + + def assertPrintHelpExit(self, parser, args_str): + self.assertEqual( + parser.format_help(), + self._get_error(parser.parse_args, args_str.split()).stdout) + + def assertPrintVersionExit(self, parser, args_str): + self.assertEqual( + parser.format_version(), + self._get_error(parser.parse_args, args_str.split()).stderr) + + def assertArgumentParserError(self, parser, *args): + self.assertRaises(ArgumentParserError, parser.parse_args, args) + + def test_version(self): + parser = ErrorRaisingArgumentParser(version='1.0') + self.assertPrintHelpExit(parser, '-h') + self.assertPrintHelpExit(parser, '--help') + self.assertPrintVersionExit(parser, '-v') + self.assertPrintVersionExit(parser, '--version') + + def test_version_format(self): + parser = ErrorRaisingArgumentParser(prog='PPP', version='%(prog)s 3.5') + msg = self._get_error(parser.parse_args, ['-v']).stderr + self.assertEqual('PPP 3.5\n', msg) + + def test_version_no_help(self): + parser = ErrorRaisingArgumentParser(add_help=False, version='1.0') + self.assertArgumentParserError(parser, '-h') + self.assertArgumentParserError(parser, '--help') + self.assertPrintVersionExit(parser, '-v') + self.assertPrintVersionExit(parser, '--version') + + def test_version_action(self): + parser = ErrorRaisingArgumentParser(prog='XXX') + parser.add_argument('-V', action='version', version='%(prog)s 3.7') + msg = self._get_error(parser.parse_args, ['-V']).stderr + self.assertEqual('XXX 3.7\n', msg) + + def test_no_help(self): + parser = ErrorRaisingArgumentParser(add_help=False) + self.assertArgumentParserError(parser, '-h') + self.assertArgumentParserError(parser, '--help') + self.assertArgumentParserError(parser, '-v') + self.assertArgumentParserError(parser, '--version') + + def test_alternate_help_version(self): + parser = ErrorRaisingArgumentParser() + parser.add_argument('-x', action='help') + parser.add_argument('-y', action='version') + self.assertPrintHelpExit(parser, '-x') + self.assertPrintVersionExit(parser, '-y') + self.assertArgumentParserError(parser, '-v') + self.assertArgumentParserError(parser, '--version') + + def test_help_version_extra_arguments(self): + parser = ErrorRaisingArgumentParser(version='1.0') + parser.add_argument('-x', action='store_true') + parser.add_argument('y') + + # try all combinations of valid prefixes and suffixes + valid_prefixes = ['', '-x', 'foo', '-x bar', 'baz -x'] + valid_suffixes = valid_prefixes + ['--bad-option', 'foo bar baz'] + for prefix in valid_prefixes: + for suffix in valid_suffixes: + format = '%s %%s %s' % (prefix, suffix) + self.assertPrintHelpExit(parser, format % '-h') + self.assertPrintHelpExit(parser, format % '--help') + self.assertPrintVersionExit(parser, format % '-v') + self.assertPrintVersionExit(parser, format % '--version') + + +# ====================== +# str() and repr() tests +# ====================== + +class TestStrings(TestCase): + """Test str() and repr() on Optionals and Positionals""" + + def assertStringEqual(self, obj, result_string): + for func in [str, repr]: + self.assertEqual(func(obj), result_string) + + def test_optional(self): + option = argparse.Action( + option_strings=['--foo', '-a', '-b'], + dest='b', + type='int', + nargs='+', + default=42, + choices=[1, 2, 3], + help='HELP', + metavar='METAVAR') + string = ( + "Action(option_strings=['--foo', '-a', '-b'], dest='b', " + "nargs='+', const=None, default=42, type='int', " + "choices=[1, 2, 3], help='HELP', metavar='METAVAR')") + self.assertStringEqual(option, string) + + def test_argument(self): + argument = argparse.Action( + option_strings=[], + dest='x', + type=float, + nargs='?', + default=2.5, + choices=[0.5, 1.5, 2.5], + help='H HH H', + metavar='MV MV MV') + string = ( + "Action(option_strings=[], dest='x', nargs='?', " + "const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], " + "help='H HH H', metavar='MV MV MV')" % float) + self.assertStringEqual(argument, string) + + def test_namespace(self): + ns = argparse.Namespace(foo=42, bar='spam') + string = "Namespace(bar='spam', foo=42)" + self.assertStringEqual(ns, string) + + def test_parser(self): + parser = argparse.ArgumentParser(prog='PROG') + string = ( + "ArgumentParser(prog='PROG', usage=None, description=None, " + "version=None, formatter_class=%r, conflict_handler='error', " + "add_help=True)" % argparse.HelpFormatter) + self.assertStringEqual(parser, string) + +# =============== +# Namespace tests +# =============== + +class TestNamespace(TestCase): + + def test_constructor(self): + ns = argparse.Namespace() + self.assertRaises(AttributeError, getattr, ns, 'x') + + ns = argparse.Namespace(a=42, b='spam') + self.assertEqual(ns.a, 42) + self.assertEqual(ns.b, 'spam') + + def test_equality(self): + ns1 = argparse.Namespace(a=1, b=2) + ns2 = argparse.Namespace(b=2, a=1) + ns3 = argparse.Namespace(a=1) + ns4 = argparse.Namespace(b=2) + + self.assertEqual(ns1, ns2) + self.assertNotEqual(ns1, ns3) + self.assertNotEqual(ns1, ns4) + self.assertNotEqual(ns2, ns3) + self.assertNotEqual(ns2, ns4) + self.assertTrue(ns1 != ns3) + self.assertTrue(ns1 != ns4) + self.assertTrue(ns2 != ns3) + self.assertTrue(ns2 != ns4) + + def test_equality_returns_notimplemeted(self): + # See issue 21481 + ns = argparse.Namespace(a=1, b=2) + self.assertIs(ns.__eq__(None), NotImplemented) + self.assertIs(ns.__ne__(None), NotImplemented) + + +# =================== +# File encoding tests +# =================== + +class TestEncoding(TestCase): + + def _test_module_encoding(self, path): + if path.endswith('$py.class'): + path = '%s.py' % path[:-9] + else: + path, _ = os.path.splitext(path) + path += ".py" + with codecs.open(path, 'r', 'utf8') as f: + f.read() + + def test_argparse_module_encoding(self): + self._test_module_encoding(argparse.__file__) + + def test_test_argparse_module_encoding(self): + self._test_module_encoding(__file__) + +# =================== +# ArgumentError tests +# =================== + +class TestArgumentError(TestCase): + + def test_argument_error(self): + msg = "my error here" + error = argparse.ArgumentError(None, msg) + self.assertEqual(str(error), msg) + +# ======================= +# ArgumentTypeError tests +# ======================= + +class TestArgumentTypeError(TestCase): + + def test_argument_type_error(self): + + def spam(string): + raise argparse.ArgumentTypeError('spam!') + + parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False) + parser.add_argument('x', type=spam) + try: + parser.parse_args(['XXX']) + except ArgumentParserError: + expected = 'usage: PROG x\nPROG: error: argument x: spam!\n' + msg = sys.exc_info()[1].stderr + self.assertEqual(expected, msg) + else: + self.fail() + +# ================================================ +# Check that the type function is called only once +# ================================================ + +class TestTypeFunctionCallOnlyOnce(TestCase): + + def test_type_function_call_only_once(self): + def spam(string_to_convert): + self.assertEqual(string_to_convert, 'spam!') + return 'foo_converted' + + parser = argparse.ArgumentParser() + parser.add_argument('--foo', type=spam, default='bar') + args = parser.parse_args('--foo spam!'.split()) + self.assertEqual(NS(foo='foo_converted'), args) + +# ================================================================== +# Check semantics regarding the default argument and type conversion +# ================================================================== + +class TestTypeFunctionCalledOnDefault(TestCase): + + def test_type_function_call_with_non_string_default(self): + def spam(int_to_convert): + self.assertEqual(int_to_convert, 0) + return 'foo_converted' + + parser = argparse.ArgumentParser() + parser.add_argument('--foo', type=spam, default=0) + args = parser.parse_args([]) + # foo should *not* be converted because its default is not a string. + self.assertEqual(NS(foo=0), args) + + def test_type_function_call_with_string_default(self): + def spam(int_to_convert): + return 'foo_converted' + + parser = argparse.ArgumentParser() + parser.add_argument('--foo', type=spam, default='0') + args = parser.parse_args([]) + # foo is converted because its default is a string. + self.assertEqual(NS(foo='foo_converted'), args) + + def test_no_double_type_conversion_of_default(self): + def extend(str_to_convert): + return str_to_convert + '*' + + parser = argparse.ArgumentParser() + parser.add_argument('--test', type=extend, default='*') + args = parser.parse_args([]) + # The test argument will be two stars, one coming from the default + # value and one coming from the type conversion being called exactly + # once. + self.assertEqual(NS(test='**'), args) + + def test_issue_15906(self): + # Issue #15906: When action='append', type=str, default=[] are + # providing, the dest value was the string representation "[]" when it + # should have been an empty list. + parser = argparse.ArgumentParser() + parser.add_argument('--test', dest='test', type=str, + default=[], action='append') + args = parser.parse_args([]) + self.assertEqual(args.test, []) + +# ====================== +# parse_known_args tests +# ====================== + +class TestParseKnownArgs(TestCase): + + def test_arguments_tuple(self): + parser = argparse.ArgumentParser() + parser.parse_args(()) + + def test_arguments_list(self): + parser = argparse.ArgumentParser() + parser.parse_args([]) + + def test_arguments_tuple_positional(self): + parser = argparse.ArgumentParser() + parser.add_argument('x') + parser.parse_args(('x',)) + + def test_arguments_list_positional(self): + parser = argparse.ArgumentParser() + parser.add_argument('x') + parser.parse_args(['x']) + + def test_optionals(self): + parser = argparse.ArgumentParser() + parser.add_argument('--foo') + args, extras = parser.parse_known_args('--foo F --bar --baz'.split()) + self.assertEqual(NS(foo='F'), args) + self.assertEqual(['--bar', '--baz'], extras) + + def test_mixed(self): + parser = argparse.ArgumentParser() + parser.add_argument('-v', nargs='?', const=1, type=int) + parser.add_argument('--spam', action='store_false') + parser.add_argument('badger') + + argv = ["B", "C", "--foo", "-v", "3", "4"] + args, extras = parser.parse_known_args(argv) + self.assertEqual(NS(v=3, spam=True, badger="B"), args) + self.assertEqual(["C", "--foo", "4"], extras) + +# ========================== +# add_argument metavar tests +# ========================== + +class TestAddArgumentMetavar(TestCase): + + EXPECTED_MESSAGE = "length of metavar tuple does not match nargs" + + def do_test_no_exception(self, nargs, metavar): + parser = argparse.ArgumentParser() + parser.add_argument("--foo", nargs=nargs, metavar=metavar) + + def do_test_exception(self, nargs, metavar): + parser = argparse.ArgumentParser() + with self.assertRaises(ValueError) as cm: + parser.add_argument("--foo", nargs=nargs, metavar=metavar) + self.assertEqual(cm.exception.args[0], self.EXPECTED_MESSAGE) + + # Unit tests for different values of metavar when nargs=None + + def test_nargs_None_metavar_string(self): + self.do_test_no_exception(nargs=None, metavar="1") + + def test_nargs_None_metavar_length0(self): + self.do_test_exception(nargs=None, metavar=tuple()) + + def test_nargs_None_metavar_length1(self): + self.do_test_no_exception(nargs=None, metavar=("1")) + + def test_nargs_None_metavar_length2(self): + self.do_test_exception(nargs=None, metavar=("1", "2")) + + def test_nargs_None_metavar_length3(self): + self.do_test_exception(nargs=None, metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=? + + def test_nargs_optional_metavar_string(self): + self.do_test_no_exception(nargs="?", metavar="1") + + def test_nargs_optional_metavar_length0(self): + self.do_test_exception(nargs="?", metavar=tuple()) + + def test_nargs_optional_metavar_length1(self): + self.do_test_no_exception(nargs="?", metavar=("1")) + + def test_nargs_optional_metavar_length2(self): + self.do_test_exception(nargs="?", metavar=("1", "2")) + + def test_nargs_optional_metavar_length3(self): + self.do_test_exception(nargs="?", metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=* + + def test_nargs_zeroormore_metavar_string(self): + self.do_test_no_exception(nargs="*", metavar="1") + + def test_nargs_zeroormore_metavar_length0(self): + self.do_test_exception(nargs="*", metavar=tuple()) + + def test_nargs_zeroormore_metavar_length1(self): + self.do_test_no_exception(nargs="*", metavar=("1")) + + def test_nargs_zeroormore_metavar_length2(self): + self.do_test_no_exception(nargs="*", metavar=("1", "2")) + + def test_nargs_zeroormore_metavar_length3(self): + self.do_test_exception(nargs="*", metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=+ + + def test_nargs_oneormore_metavar_string(self): + self.do_test_no_exception(nargs="+", metavar="1") + + def test_nargs_oneormore_metavar_length0(self): + self.do_test_exception(nargs="+", metavar=tuple()) + + def test_nargs_oneormore_metavar_length1(self): + self.do_test_no_exception(nargs="+", metavar=("1")) + + def test_nargs_oneormore_metavar_length2(self): + self.do_test_no_exception(nargs="+", metavar=("1", "2")) + + def test_nargs_oneormore_metavar_length3(self): + self.do_test_exception(nargs="+", metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=... + + def test_nargs_remainder_metavar_string(self): + self.do_test_no_exception(nargs="...", metavar="1") + + def test_nargs_remainder_metavar_length0(self): + self.do_test_no_exception(nargs="...", metavar=tuple()) + + def test_nargs_remainder_metavar_length1(self): + self.do_test_no_exception(nargs="...", metavar=("1")) + + def test_nargs_remainder_metavar_length2(self): + self.do_test_no_exception(nargs="...", metavar=("1", "2")) + + def test_nargs_remainder_metavar_length3(self): + self.do_test_no_exception(nargs="...", metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=A... + + def test_nargs_parser_metavar_string(self): + self.do_test_no_exception(nargs="A...", metavar="1") + + def test_nargs_parser_metavar_length0(self): + self.do_test_exception(nargs="A...", metavar=tuple()) + + def test_nargs_parser_metavar_length1(self): + self.do_test_no_exception(nargs="A...", metavar=("1")) + + def test_nargs_parser_metavar_length2(self): + self.do_test_exception(nargs="A...", metavar=("1", "2")) + + def test_nargs_parser_metavar_length3(self): + self.do_test_exception(nargs="A...", metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=1 + + def test_nargs_1_metavar_string(self): + self.do_test_no_exception(nargs=1, metavar="1") + + def test_nargs_1_metavar_length0(self): + self.do_test_exception(nargs=1, metavar=tuple()) + + def test_nargs_1_metavar_length1(self): + self.do_test_no_exception(nargs=1, metavar=("1")) + + def test_nargs_1_metavar_length2(self): + self.do_test_exception(nargs=1, metavar=("1", "2")) + + def test_nargs_1_metavar_length3(self): + self.do_test_exception(nargs=1, metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=2 + + def test_nargs_2_metavar_string(self): + self.do_test_no_exception(nargs=2, metavar="1") + + def test_nargs_2_metavar_length0(self): + self.do_test_exception(nargs=2, metavar=tuple()) + + def test_nargs_2_metavar_length1(self): + self.do_test_no_exception(nargs=2, metavar=("1")) + + def test_nargs_2_metavar_length2(self): + self.do_test_no_exception(nargs=2, metavar=("1", "2")) + + def test_nargs_2_metavar_length3(self): + self.do_test_exception(nargs=2, metavar=("1", "2", "3")) + + # Unit tests for different values of metavar when nargs=3 + + def test_nargs_3_metavar_string(self): + self.do_test_no_exception(nargs=3, metavar="1") + + def test_nargs_3_metavar_length0(self): + self.do_test_exception(nargs=3, metavar=tuple()) + + def test_nargs_3_metavar_length1(self): + self.do_test_no_exception(nargs=3, metavar=("1")) + + def test_nargs_3_metavar_length2(self): + self.do_test_exception(nargs=3, metavar=("1", "2")) + + def test_nargs_3_metavar_length3(self): + self.do_test_no_exception(nargs=3, metavar=("1", "2", "3")) + +# ============================ +# from argparse import * tests +# ============================ + +class TestImportStar(TestCase): + + def test(self): + for name in argparse.__all__: + self.assertTrue(hasattr(argparse, name)) + + def test_all_exports_everything_but_modules(self): + items = [ + name + for name, value in vars(argparse).items() + if not name.startswith("_") + if not inspect.ismodule(value) + ] + self.assertEqual(sorted(items), sorted(argparse.__all__)) + +def test_main(): + # silence warnings about version argument - these are expected + with test_support.check_warnings( + ('The "version" argument to ArgumentParser is deprecated.', + DeprecationWarning), + ('The (format|print)_version method is deprecated', + DeprecationWarning)): + test_support.run_unittest(__name__) + # Remove global references to avoid looking like we have refleaks. + RFile.seen = {} + WFile.seen = set() + + + +if __name__ == '__main__': + test_main() diff --git a/lib-python/2.7/argparse.py b/lib-python/2.7/argparse.py --- a/lib-python/2.7/argparse.py +++ b/lib-python/2.7/argparse.py @@ -168,6 +168,8 @@ self._prog = prog self._indent_increment = indent_increment self._max_help_position = max_help_position + self._max_help_position = min(max_help_position, + max(width - 20, indent_increment * 2)) self._width = width self._current_indent = 0 @@ -339,7 +341,7 @@ else: line_len = len(indent) - 1 for part in parts: - if line_len + 1 + len(part) > text_width: + if line_len + 1 + len(part) > text_width and line: lines.append(indent + ' '.join(line)) line = [] line_len = len(indent) - 1 @@ -478,7 +480,7 @@ def _format_text(self, text): if '%(prog)' in text: text = text % dict(prog=self._prog) - text_width = self._width - self._current_indent + text_width = max(self._width - self._current_indent, 11) indent = ' ' * self._current_indent return self._fill_text(text, text_width, indent) + '\n\n' @@ -486,7 +488,7 @@ # determine the required width and the entry label help_position = min(self._action_max_length + 2, self._max_help_position) - help_width = self._width - help_position + help_width = max(self._width - help_position, 11) action_width = help_position - self._current_indent - 2 action_header = self._format_action_invocation(action) @@ -1087,7 +1089,14 @@ # parse all the remaining options into the namespace # store any unrecognized options on the object, so that the top # level parser can decide what to do with them - namespace, arg_strings = parser.parse_known_args(arg_strings, namespace) + + # In case this subparser defines new defaults, we parse them + # in a new namespace object and then update the original + # namespace for the relevant parts. + subnamespace, arg_strings = parser.parse_known_args(arg_strings, None) + for key, value in vars(subnamespace).items(): + setattr(namespace, key, value) + if arg_strings: vars(namespace).setdefault(_UNRECOGNIZED_ARGS_ATTR, []) getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).extend(arg_strings) @@ -1155,9 +1164,13 @@ __hash__ = None def __eq__(self, other): + if not isinstance(other, Namespace): + return NotImplemented return vars(self) == vars(other) def __ne__(self, other): + if not isinstance(other, Namespace): + return NotImplemented return not (self == other) def __contains__(self, key): diff --git a/lib-python/2.7/test/test_argparse.py b/lib-python/2.7/test/test_argparse.py --- a/lib-python/2.7/test/test_argparse.py +++ b/lib-python/2.7/test/test_argparse.py @@ -47,6 +47,9 @@ def tearDown(self): os.chdir(self.old_dir) + for root, dirs, files in os.walk(self.temp_dir, topdown=False): + for name in files: + os.chmod(os.path.join(self.temp_dir, name), stat.S_IWRITE) shutil.rmtree(self.temp_dir, True) def create_readonly_file(self, filename): @@ -643,7 +646,7 @@ class TestOptionalsRequired(ParserTestCase): - """Tests the an optional action that is required""" + """Tests an optional action that is required""" argument_signatures = [ Sig('-x', type=int, required=True), @@ -2723,6 +2726,13 @@ parser = ErrorRaisingArgumentParser(parents=[parent]) self.assertEqual(NS(x='foo'), parser.parse_args([])) + def test_set_defaults_on_parent_and_subparser(self): + parser = argparse.ArgumentParser() + xparser = parser.add_subparsers().add_parser('X') + parser.set_defaults(foo=1) + xparser.set_defaults(foo=2) + self.assertEqual(NS(foo=2), parser.parse_args(['X'])) + def test_set_defaults_same_as_add_argument(self): parser = ErrorRaisingArgumentParser() parser.set_defaults(w='W', x='X', y='Y', z='Z') @@ -2936,6 +2946,60 @@ 0.1 ''' +class TestShortColumns(HelpTestCase): + '''Test extremely small number of columns. + + TestCase prevents "COLUMNS" from being too small in the tests themselves, + but we don't want any exceptions thrown in such case. Only ugly representation. + ''' + def setUp(self): + env = test_support.EnvironmentVarGuard() + env.set("COLUMNS", '15') + self.addCleanup(env.__exit__) + + parser_signature = TestHelpBiggerOptionals.parser_signature + argument_signatures = TestHelpBiggerOptionals.argument_signatures + argument_group_signatures = TestHelpBiggerOptionals.argument_group_signatures + usage = '''\ + usage: PROG + [-h] + [-v] + [-x] + [--y Y] + foo + bar + ''' + help = usage + '''\ + + DESCRIPTION + + positional arguments: + foo + FOO HELP + bar + BAR HELP + + optional arguments: + -h, --help + show this + help + message and + exit + -v, --version + show + program's + version + number and + exit + -x + X HELP + --y Y + Y HELP + + EPILOG + ''' + version = TestHelpBiggerOptionals.version + class TestHelpBiggerOptionalGroups(HelpTestCase): """Make sure that argument help aligns when options are longer""" @@ -4396,6 +4460,12 @@ self.assertTrue(ns2 != ns3) self.assertTrue(ns2 != ns4) + def test_equality_returns_notimplemeted(self): + # See issue 21481 + ns = argparse.Namespace(a=1, b=2) + self.assertIs(ns.__eq__(None), NotImplemented) + self.assertIs(ns.__ne__(None), NotImplemented) + # =================== # File encoding tests -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Sat Feb 20 21:20:57 2016 From: jython-checkins at python.org (jim.baker) Date: Sun, 21 Feb 2016 02:20:57 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Remove_special_casing_of_In?= =?utf-8?q?f=2C_NaN_for_complex_multiplication=2E_Fixes_=232460?= Message-ID: <20160221022053.2140.52655@psf.io> https://hg.python.org/jython/rev/5b0c3615b693 changeset: 7904:5b0c3615b693 user: Jim Baker date: Sat Feb 20 19:20:48 2016 -0700 summary: Remove special casing of Inf, NaN for complex multiplication. Fixes #2460 This special casing was originally helpful for solving other complex math problems, but resulted in an incorrect implementation of complex multiplication. To prevent possible future regressions, now verifies against CPython's results for *, /, +, - using a large number of combinations (> 25000), including Inf, -Inf, -0, 0, and NaN coefficients. files: Lib/test/complex_arithmetic.txt | 26266 +++++++++++++++ Lib/test/test_complex_jy.py | 38 +- src/org/python/core/PyComplex.java | 16 +- 3 files changed, 26311 insertions(+), 9 deletions(-) diff --git a/Lib/test/complex_arithmetic.txt b/Lib/test/complex_arithmetic.txt new file mode 100644 --- /dev/null +++ b/Lib/test/complex_arithmetic.txt @@ -0,0 +1,26266 @@ +# Data generated by the following program: +# +# import math +# import operator +# +# coeffs = float("-inf"), -16, -2, -0., 0., 2, 16, float("inf"), float("nan") +# nums = [] +# for a in coeffs: +# for b in coeffs: +# nums.append(complex(a, b)) +# +# ops = dict(mul=operator.mul, div=operator.div, add=operator.add, sub=operator.sub) +# +# for op_name, op in sorted(ops.iteritems()): +# for x in nums: +# for y in nums: +# try: +# value = op(x, y) +# print op_name, x, y, value +# except ZeroDivisionError: +# print op_name, x, y, "ZeroDivisionError" +# +add (-inf-infj) (-inf-infj) (-inf-infj) +add (-inf-infj) (-inf-16j) (-inf-infj) +add (-inf-infj) (-inf-2j) (-inf-infj) +add (-inf-infj) (-inf-0j) (-inf-infj) +add (-inf-infj) (-inf+0j) (-inf-infj) +add (-inf-infj) (-inf+2j) (-inf-infj) +add (-inf-infj) (-inf+16j) (-inf-infj) +add (-inf-infj) (-inf+infj) (-inf+nanj) +add (-inf-infj) (-inf+nanj) (-inf+nanj) +add (-inf-infj) (-16-infj) (-inf-infj) +add (-inf-infj) (-16-16j) (-inf-infj) +add (-inf-infj) (-16-2j) (-inf-infj) +add (-inf-infj) (-16-0j) (-inf-infj) +add (-inf-infj) (-16+0j) (-inf-infj) +add (-inf-infj) (-16+2j) (-inf-infj) +add (-inf-infj) (-16+16j) (-inf-infj) +add (-inf-infj) (-16+infj) (-inf+nanj) +add (-inf-infj) (-16+nanj) (-inf+nanj) +add (-inf-infj) (-2-infj) (-inf-infj) +add (-inf-infj) (-2-16j) (-inf-infj) +add (-inf-infj) (-2-2j) (-inf-infj) +add (-inf-infj) (-2-0j) (-inf-infj) +add (-inf-infj) (-2+0j) (-inf-infj) +add (-inf-infj) (-2+2j) (-inf-infj) +add (-inf-infj) (-2+16j) (-inf-infj) +add (-inf-infj) (-2+infj) (-inf+nanj) +add (-inf-infj) (-2+nanj) (-inf+nanj) +add (-inf-infj) (-0-infj) (-inf-infj) +add (-inf-infj) (-0-16j) (-inf-infj) +add (-inf-infj) (-0-2j) (-inf-infj) +add (-inf-infj) (-0-0j) (-inf-infj) +add (-inf-infj) (-0+0j) (-inf-infj) +add (-inf-infj) (-0+2j) (-inf-infj) +add (-inf-infj) (-0+16j) (-inf-infj) +add (-inf-infj) (-0+infj) (-inf+nanj) +add (-inf-infj) (-0+nanj) (-inf+nanj) +add (-inf-infj) -infj (-inf-infj) +add (-inf-infj) -16j (-inf-infj) +add (-inf-infj) -2j (-inf-infj) +add (-inf-infj) -0j (-inf-infj) +add (-inf-infj) 0j (-inf-infj) +add (-inf-infj) 2j (-inf-infj) +add (-inf-infj) 16j (-inf-infj) +add (-inf-infj) infj (-inf+nanj) +add (-inf-infj) nanj (-inf+nanj) +add (-inf-infj) (2-infj) (-inf-infj) +add (-inf-infj) (2-16j) (-inf-infj) +add (-inf-infj) (2-2j) (-inf-infj) +add (-inf-infj) (2-0j) (-inf-infj) +add (-inf-infj) (2+0j) (-inf-infj) +add (-inf-infj) (2+2j) (-inf-infj) +add (-inf-infj) (2+16j) (-inf-infj) +add (-inf-infj) (2+infj) (-inf+nanj) +add (-inf-infj) (2+nanj) (-inf+nanj) +add (-inf-infj) (16-infj) (-inf-infj) +add (-inf-infj) (16-16j) (-inf-infj) +add (-inf-infj) (16-2j) (-inf-infj) +add (-inf-infj) (16-0j) (-inf-infj) +add (-inf-infj) (16+0j) (-inf-infj) +add (-inf-infj) (16+2j) (-inf-infj) +add (-inf-infj) (16+16j) (-inf-infj) +add (-inf-infj) (16+infj) (-inf+nanj) +add (-inf-infj) (16+nanj) (-inf+nanj) +add (-inf-infj) (inf-infj) (nan-infj) +add (-inf-infj) (inf-16j) (nan-infj) +add (-inf-infj) (inf-2j) (nan-infj) +add (-inf-infj) (inf-0j) (nan-infj) +add (-inf-infj) (inf+0j) (nan-infj) +add (-inf-infj) (inf+2j) (nan-infj) +add (-inf-infj) (inf+16j) (nan-infj) +add (-inf-infj) (inf+infj) (nan+nanj) +add (-inf-infj) (inf+nanj) (nan+nanj) +add (-inf-infj) (nan-infj) (nan-infj) +add (-inf-infj) (nan-16j) (nan-infj) +add (-inf-infj) (nan-2j) (nan-infj) +add (-inf-infj) (nan-0j) (nan-infj) +add (-inf-infj) (nan+0j) (nan-infj) +add (-inf-infj) (nan+2j) (nan-infj) +add (-inf-infj) (nan+16j) (nan-infj) +add (-inf-infj) (nan+infj) (nan+nanj) +add (-inf-infj) (nan+nanj) (nan+nanj) +add (-inf-16j) (-inf-infj) (-inf-infj) +add (-inf-16j) (-inf-16j) (-inf-32j) +add (-inf-16j) (-inf-2j) (-inf-18j) +add (-inf-16j) (-inf-0j) (-inf-16j) +add (-inf-16j) (-inf+0j) (-inf-16j) +add (-inf-16j) (-inf+2j) (-inf-14j) +add (-inf-16j) (-inf+16j) (-inf+0j) +add (-inf-16j) (-inf+infj) (-inf+infj) +add (-inf-16j) (-inf+nanj) (-inf+nanj) +add (-inf-16j) (-16-infj) (-inf-infj) +add (-inf-16j) (-16-16j) (-inf-32j) +add (-inf-16j) (-16-2j) (-inf-18j) +add (-inf-16j) (-16-0j) (-inf-16j) +add (-inf-16j) (-16+0j) (-inf-16j) +add (-inf-16j) (-16+2j) (-inf-14j) +add (-inf-16j) (-16+16j) (-inf+0j) +add (-inf-16j) (-16+infj) (-inf+infj) +add (-inf-16j) (-16+nanj) (-inf+nanj) +add (-inf-16j) (-2-infj) (-inf-infj) +add (-inf-16j) (-2-16j) (-inf-32j) +add (-inf-16j) (-2-2j) (-inf-18j) +add (-inf-16j) (-2-0j) (-inf-16j) +add (-inf-16j) (-2+0j) (-inf-16j) +add (-inf-16j) (-2+2j) (-inf-14j) +add (-inf-16j) (-2+16j) (-inf+0j) +add (-inf-16j) (-2+infj) (-inf+infj) +add (-inf-16j) (-2+nanj) (-inf+nanj) +add (-inf-16j) (-0-infj) (-inf-infj) +add (-inf-16j) (-0-16j) (-inf-32j) +add (-inf-16j) (-0-2j) (-inf-18j) +add (-inf-16j) (-0-0j) (-inf-16j) +add (-inf-16j) (-0+0j) (-inf-16j) +add (-inf-16j) (-0+2j) (-inf-14j) +add (-inf-16j) (-0+16j) (-inf+0j) +add (-inf-16j) (-0+infj) (-inf+infj) +add (-inf-16j) (-0+nanj) (-inf+nanj) +add (-inf-16j) -infj (-inf-infj) +add (-inf-16j) -16j (-inf-32j) +add (-inf-16j) -2j (-inf-18j) +add (-inf-16j) -0j (-inf-16j) +add (-inf-16j) 0j (-inf-16j) +add (-inf-16j) 2j (-inf-14j) +add (-inf-16j) 16j (-inf+0j) +add (-inf-16j) infj (-inf+infj) +add (-inf-16j) nanj (-inf+nanj) +add (-inf-16j) (2-infj) (-inf-infj) +add (-inf-16j) (2-16j) (-inf-32j) +add (-inf-16j) (2-2j) (-inf-18j) +add (-inf-16j) (2-0j) (-inf-16j) +add (-inf-16j) (2+0j) (-inf-16j) +add (-inf-16j) (2+2j) (-inf-14j) +add (-inf-16j) (2+16j) (-inf+0j) +add (-inf-16j) (2+infj) (-inf+infj) +add (-inf-16j) (2+nanj) (-inf+nanj) +add (-inf-16j) (16-infj) (-inf-infj) +add (-inf-16j) (16-16j) (-inf-32j) +add (-inf-16j) (16-2j) (-inf-18j) +add (-inf-16j) (16-0j) (-inf-16j) +add (-inf-16j) (16+0j) (-inf-16j) +add (-inf-16j) (16+2j) (-inf-14j) +add (-inf-16j) (16+16j) (-inf+0j) +add (-inf-16j) (16+infj) (-inf+infj) +add (-inf-16j) (16+nanj) (-inf+nanj) +add (-inf-16j) (inf-infj) (nan-infj) +add (-inf-16j) (inf-16j) (nan-32j) +add (-inf-16j) (inf-2j) (nan-18j) +add (-inf-16j) (inf-0j) (nan-16j) +add (-inf-16j) (inf+0j) (nan-16j) +add (-inf-16j) (inf+2j) (nan-14j) +add (-inf-16j) (inf+16j) (nan+0j) +add (-inf-16j) (inf+infj) (nan+infj) +add (-inf-16j) (inf+nanj) (nan+nanj) +add (-inf-16j) (nan-infj) (nan-infj) +add (-inf-16j) (nan-16j) (nan-32j) +add (-inf-16j) (nan-2j) (nan-18j) +add (-inf-16j) (nan-0j) (nan-16j) +add (-inf-16j) (nan+0j) (nan-16j) +add (-inf-16j) (nan+2j) (nan-14j) +add (-inf-16j) (nan+16j) (nan+0j) +add (-inf-16j) (nan+infj) (nan+infj) +add (-inf-16j) (nan+nanj) (nan+nanj) +add (-inf-2j) (-inf-infj) (-inf-infj) +add (-inf-2j) (-inf-16j) (-inf-18j) +add (-inf-2j) (-inf-2j) (-inf-4j) +add (-inf-2j) (-inf-0j) (-inf-2j) +add (-inf-2j) (-inf+0j) (-inf-2j) +add (-inf-2j) (-inf+2j) (-inf+0j) +add (-inf-2j) (-inf+16j) (-inf+14j) +add (-inf-2j) (-inf+infj) (-inf+infj) +add (-inf-2j) (-inf+nanj) (-inf+nanj) +add (-inf-2j) (-16-infj) (-inf-infj) +add (-inf-2j) (-16-16j) (-inf-18j) +add (-inf-2j) (-16-2j) (-inf-4j) +add (-inf-2j) (-16-0j) (-inf-2j) +add (-inf-2j) (-16+0j) (-inf-2j) +add (-inf-2j) (-16+2j) (-inf+0j) +add (-inf-2j) (-16+16j) (-inf+14j) +add (-inf-2j) (-16+infj) (-inf+infj) +add (-inf-2j) (-16+nanj) (-inf+nanj) +add (-inf-2j) (-2-infj) (-inf-infj) +add (-inf-2j) (-2-16j) (-inf-18j) +add (-inf-2j) (-2-2j) (-inf-4j) +add (-inf-2j) (-2-0j) (-inf-2j) +add (-inf-2j) (-2+0j) (-inf-2j) +add (-inf-2j) (-2+2j) (-inf+0j) +add (-inf-2j) (-2+16j) (-inf+14j) +add (-inf-2j) (-2+infj) (-inf+infj) +add (-inf-2j) (-2+nanj) (-inf+nanj) +add (-inf-2j) (-0-infj) (-inf-infj) +add (-inf-2j) (-0-16j) (-inf-18j) +add (-inf-2j) (-0-2j) (-inf-4j) +add (-inf-2j) (-0-0j) (-inf-2j) +add (-inf-2j) (-0+0j) (-inf-2j) +add (-inf-2j) (-0+2j) (-inf+0j) +add (-inf-2j) (-0+16j) (-inf+14j) +add (-inf-2j) (-0+infj) (-inf+infj) +add (-inf-2j) (-0+nanj) (-inf+nanj) +add (-inf-2j) -infj (-inf-infj) +add (-inf-2j) -16j (-inf-18j) +add (-inf-2j) -2j (-inf-4j) +add (-inf-2j) -0j (-inf-2j) +add (-inf-2j) 0j (-inf-2j) +add (-inf-2j) 2j (-inf+0j) +add (-inf-2j) 16j (-inf+14j) +add (-inf-2j) infj (-inf+infj) +add (-inf-2j) nanj (-inf+nanj) +add (-inf-2j) (2-infj) (-inf-infj) +add (-inf-2j) (2-16j) (-inf-18j) +add (-inf-2j) (2-2j) (-inf-4j) +add (-inf-2j) (2-0j) (-inf-2j) +add (-inf-2j) (2+0j) (-inf-2j) +add (-inf-2j) (2+2j) (-inf+0j) +add (-inf-2j) (2+16j) (-inf+14j) +add (-inf-2j) (2+infj) (-inf+infj) +add (-inf-2j) (2+nanj) (-inf+nanj) +add (-inf-2j) (16-infj) (-inf-infj) +add (-inf-2j) (16-16j) (-inf-18j) +add (-inf-2j) (16-2j) (-inf-4j) +add (-inf-2j) (16-0j) (-inf-2j) +add (-inf-2j) (16+0j) (-inf-2j) +add (-inf-2j) (16+2j) (-inf+0j) +add (-inf-2j) (16+16j) (-inf+14j) +add (-inf-2j) (16+infj) (-inf+infj) +add (-inf-2j) (16+nanj) (-inf+nanj) +add (-inf-2j) (inf-infj) (nan-infj) +add (-inf-2j) (inf-16j) (nan-18j) +add (-inf-2j) (inf-2j) (nan-4j) +add (-inf-2j) (inf-0j) (nan-2j) +add (-inf-2j) (inf+0j) (nan-2j) +add (-inf-2j) (inf+2j) (nan+0j) +add (-inf-2j) (inf+16j) (nan+14j) +add (-inf-2j) (inf+infj) (nan+infj) +add (-inf-2j) (inf+nanj) (nan+nanj) +add (-inf-2j) (nan-infj) (nan-infj) +add (-inf-2j) (nan-16j) (nan-18j) +add (-inf-2j) (nan-2j) (nan-4j) +add (-inf-2j) (nan-0j) (nan-2j) +add (-inf-2j) (nan+0j) (nan-2j) +add (-inf-2j) (nan+2j) (nan+0j) +add (-inf-2j) (nan+16j) (nan+14j) +add (-inf-2j) (nan+infj) (nan+infj) +add (-inf-2j) (nan+nanj) (nan+nanj) +add (-inf-0j) (-inf-infj) (-inf-infj) +add (-inf-0j) (-inf-16j) (-inf-16j) +add (-inf-0j) (-inf-2j) (-inf-2j) +add (-inf-0j) (-inf-0j) (-inf-0j) +add (-inf-0j) (-inf+0j) (-inf+0j) +add (-inf-0j) (-inf+2j) (-inf+2j) +add (-inf-0j) (-inf+16j) (-inf+16j) +add (-inf-0j) (-inf+infj) (-inf+infj) +add (-inf-0j) (-inf+nanj) (-inf+nanj) +add (-inf-0j) (-16-infj) (-inf-infj) +add (-inf-0j) (-16-16j) (-inf-16j) +add (-inf-0j) (-16-2j) (-inf-2j) +add (-inf-0j) (-16-0j) (-inf-0j) +add (-inf-0j) (-16+0j) (-inf+0j) +add (-inf-0j) (-16+2j) (-inf+2j) +add (-inf-0j) (-16+16j) (-inf+16j) +add (-inf-0j) (-16+infj) (-inf+infj) +add (-inf-0j) (-16+nanj) (-inf+nanj) +add (-inf-0j) (-2-infj) (-inf-infj) +add (-inf-0j) (-2-16j) (-inf-16j) +add (-inf-0j) (-2-2j) (-inf-2j) +add (-inf-0j) (-2-0j) (-inf-0j) +add (-inf-0j) (-2+0j) (-inf+0j) +add (-inf-0j) (-2+2j) (-inf+2j) +add (-inf-0j) (-2+16j) (-inf+16j) +add (-inf-0j) (-2+infj) (-inf+infj) +add (-inf-0j) (-2+nanj) (-inf+nanj) +add (-inf-0j) (-0-infj) (-inf-infj) +add (-inf-0j) (-0-16j) (-inf-16j) +add (-inf-0j) (-0-2j) (-inf-2j) +add (-inf-0j) (-0-0j) (-inf-0j) +add (-inf-0j) (-0+0j) (-inf+0j) +add (-inf-0j) (-0+2j) (-inf+2j) +add (-inf-0j) (-0+16j) (-inf+16j) +add (-inf-0j) (-0+infj) (-inf+infj) +add (-inf-0j) (-0+nanj) (-inf+nanj) +add (-inf-0j) -infj (-inf-infj) +add (-inf-0j) -16j (-inf-16j) +add (-inf-0j) -2j (-inf-2j) +add (-inf-0j) -0j (-inf-0j) +add (-inf-0j) 0j (-inf+0j) +add (-inf-0j) 2j (-inf+2j) +add (-inf-0j) 16j (-inf+16j) +add (-inf-0j) infj (-inf+infj) +add (-inf-0j) nanj (-inf+nanj) +add (-inf-0j) (2-infj) (-inf-infj) +add (-inf-0j) (2-16j) (-inf-16j) +add (-inf-0j) (2-2j) (-inf-2j) +add (-inf-0j) (2-0j) (-inf-0j) +add (-inf-0j) (2+0j) (-inf+0j) +add (-inf-0j) (2+2j) (-inf+2j) +add (-inf-0j) (2+16j) (-inf+16j) +add (-inf-0j) (2+infj) (-inf+infj) +add (-inf-0j) (2+nanj) (-inf+nanj) +add (-inf-0j) (16-infj) (-inf-infj) +add (-inf-0j) (16-16j) (-inf-16j) +add (-inf-0j) (16-2j) (-inf-2j) +add (-inf-0j) (16-0j) (-inf-0j) +add (-inf-0j) (16+0j) (-inf+0j) +add (-inf-0j) (16+2j) (-inf+2j) +add (-inf-0j) (16+16j) (-inf+16j) +add (-inf-0j) (16+infj) (-inf+infj) +add (-inf-0j) (16+nanj) (-inf+nanj) +add (-inf-0j) (inf-infj) (nan-infj) +add (-inf-0j) (inf-16j) (nan-16j) +add (-inf-0j) (inf-2j) (nan-2j) +add (-inf-0j) (inf-0j) (nan-0j) +add (-inf-0j) (inf+0j) (nan+0j) +add (-inf-0j) (inf+2j) (nan+2j) +add (-inf-0j) (inf+16j) (nan+16j) +add (-inf-0j) (inf+infj) (nan+infj) +add (-inf-0j) (inf+nanj) (nan+nanj) +add (-inf-0j) (nan-infj) (nan-infj) +add (-inf-0j) (nan-16j) (nan-16j) +add (-inf-0j) (nan-2j) (nan-2j) +add (-inf-0j) (nan-0j) (nan-0j) +add (-inf-0j) (nan+0j) (nan+0j) +add (-inf-0j) (nan+2j) (nan+2j) +add (-inf-0j) (nan+16j) (nan+16j) +add (-inf-0j) (nan+infj) (nan+infj) +add (-inf-0j) (nan+nanj) (nan+nanj) +add (-inf+0j) (-inf-infj) (-inf-infj) +add (-inf+0j) (-inf-16j) (-inf-16j) +add (-inf+0j) (-inf-2j) (-inf-2j) +add (-inf+0j) (-inf-0j) (-inf+0j) +add (-inf+0j) (-inf+0j) (-inf+0j) +add (-inf+0j) (-inf+2j) (-inf+2j) +add (-inf+0j) (-inf+16j) (-inf+16j) +add (-inf+0j) (-inf+infj) (-inf+infj) +add (-inf+0j) (-inf+nanj) (-inf+nanj) +add (-inf+0j) (-16-infj) (-inf-infj) +add (-inf+0j) (-16-16j) (-inf-16j) +add (-inf+0j) (-16-2j) (-inf-2j) +add (-inf+0j) (-16-0j) (-inf+0j) +add (-inf+0j) (-16+0j) (-inf+0j) +add (-inf+0j) (-16+2j) (-inf+2j) +add (-inf+0j) (-16+16j) (-inf+16j) +add (-inf+0j) (-16+infj) (-inf+infj) +add (-inf+0j) (-16+nanj) (-inf+nanj) +add (-inf+0j) (-2-infj) (-inf-infj) +add (-inf+0j) (-2-16j) (-inf-16j) +add (-inf+0j) (-2-2j) (-inf-2j) +add (-inf+0j) (-2-0j) (-inf+0j) +add (-inf+0j) (-2+0j) (-inf+0j) +add (-inf+0j) (-2+2j) (-inf+2j) +add (-inf+0j) (-2+16j) (-inf+16j) +add (-inf+0j) (-2+infj) (-inf+infj) +add (-inf+0j) (-2+nanj) (-inf+nanj) +add (-inf+0j) (-0-infj) (-inf-infj) +add (-inf+0j) (-0-16j) (-inf-16j) +add (-inf+0j) (-0-2j) (-inf-2j) +add (-inf+0j) (-0-0j) (-inf+0j) +add (-inf+0j) (-0+0j) (-inf+0j) +add (-inf+0j) (-0+2j) (-inf+2j) +add (-inf+0j) (-0+16j) (-inf+16j) +add (-inf+0j) (-0+infj) (-inf+infj) +add (-inf+0j) (-0+nanj) (-inf+nanj) +add (-inf+0j) -infj (-inf-infj) +add (-inf+0j) -16j (-inf-16j) +add (-inf+0j) -2j (-inf-2j) +add (-inf+0j) -0j (-inf+0j) +add (-inf+0j) 0j (-inf+0j) +add (-inf+0j) 2j (-inf+2j) +add (-inf+0j) 16j (-inf+16j) +add (-inf+0j) infj (-inf+infj) +add (-inf+0j) nanj (-inf+nanj) +add (-inf+0j) (2-infj) (-inf-infj) +add (-inf+0j) (2-16j) (-inf-16j) +add (-inf+0j) (2-2j) (-inf-2j) +add (-inf+0j) (2-0j) (-inf+0j) +add (-inf+0j) (2+0j) (-inf+0j) +add (-inf+0j) (2+2j) (-inf+2j) +add (-inf+0j) (2+16j) (-inf+16j) +add (-inf+0j) (2+infj) (-inf+infj) +add (-inf+0j) (2+nanj) (-inf+nanj) +add (-inf+0j) (16-infj) (-inf-infj) +add (-inf+0j) (16-16j) (-inf-16j) +add (-inf+0j) (16-2j) (-inf-2j) +add (-inf+0j) (16-0j) (-inf+0j) +add (-inf+0j) (16+0j) (-inf+0j) +add (-inf+0j) (16+2j) (-inf+2j) +add (-inf+0j) (16+16j) (-inf+16j) +add (-inf+0j) (16+infj) (-inf+infj) +add (-inf+0j) (16+nanj) (-inf+nanj) +add (-inf+0j) (inf-infj) (nan-infj) +add (-inf+0j) (inf-16j) (nan-16j) +add (-inf+0j) (inf-2j) (nan-2j) +add (-inf+0j) (inf-0j) (nan+0j) +add (-inf+0j) (inf+0j) (nan+0j) +add (-inf+0j) (inf+2j) (nan+2j) +add (-inf+0j) (inf+16j) (nan+16j) +add (-inf+0j) (inf+infj) (nan+infj) +add (-inf+0j) (inf+nanj) (nan+nanj) +add (-inf+0j) (nan-infj) (nan-infj) +add (-inf+0j) (nan-16j) (nan-16j) +add (-inf+0j) (nan-2j) (nan-2j) +add (-inf+0j) (nan-0j) (nan+0j) +add (-inf+0j) (nan+0j) (nan+0j) +add (-inf+0j) (nan+2j) (nan+2j) +add (-inf+0j) (nan+16j) (nan+16j) +add (-inf+0j) (nan+infj) (nan+infj) +add (-inf+0j) (nan+nanj) (nan+nanj) +add (-inf+2j) (-inf-infj) (-inf-infj) +add (-inf+2j) (-inf-16j) (-inf-14j) +add (-inf+2j) (-inf-2j) (-inf+0j) +add (-inf+2j) (-inf-0j) (-inf+2j) +add (-inf+2j) (-inf+0j) (-inf+2j) +add (-inf+2j) (-inf+2j) (-inf+4j) +add (-inf+2j) (-inf+16j) (-inf+18j) +add (-inf+2j) (-inf+infj) (-inf+infj) +add (-inf+2j) (-inf+nanj) (-inf+nanj) +add (-inf+2j) (-16-infj) (-inf-infj) +add (-inf+2j) (-16-16j) (-inf-14j) +add (-inf+2j) (-16-2j) (-inf+0j) +add (-inf+2j) (-16-0j) (-inf+2j) +add (-inf+2j) (-16+0j) (-inf+2j) +add (-inf+2j) (-16+2j) (-inf+4j) +add (-inf+2j) (-16+16j) (-inf+18j) +add (-inf+2j) (-16+infj) (-inf+infj) +add (-inf+2j) (-16+nanj) (-inf+nanj) +add (-inf+2j) (-2-infj) (-inf-infj) +add (-inf+2j) (-2-16j) (-inf-14j) +add (-inf+2j) (-2-2j) (-inf+0j) +add (-inf+2j) (-2-0j) (-inf+2j) +add (-inf+2j) (-2+0j) (-inf+2j) +add (-inf+2j) (-2+2j) (-inf+4j) +add (-inf+2j) (-2+16j) (-inf+18j) +add (-inf+2j) (-2+infj) (-inf+infj) +add (-inf+2j) (-2+nanj) (-inf+nanj) +add (-inf+2j) (-0-infj) (-inf-infj) +add (-inf+2j) (-0-16j) (-inf-14j) +add (-inf+2j) (-0-2j) (-inf+0j) +add (-inf+2j) (-0-0j) (-inf+2j) +add (-inf+2j) (-0+0j) (-inf+2j) +add (-inf+2j) (-0+2j) (-inf+4j) +add (-inf+2j) (-0+16j) (-inf+18j) +add (-inf+2j) (-0+infj) (-inf+infj) +add (-inf+2j) (-0+nanj) (-inf+nanj) +add (-inf+2j) -infj (-inf-infj) +add (-inf+2j) -16j (-inf-14j) +add (-inf+2j) -2j (-inf+0j) +add (-inf+2j) -0j (-inf+2j) +add (-inf+2j) 0j (-inf+2j) +add (-inf+2j) 2j (-inf+4j) +add (-inf+2j) 16j (-inf+18j) +add (-inf+2j) infj (-inf+infj) +add (-inf+2j) nanj (-inf+nanj) +add (-inf+2j) (2-infj) (-inf-infj) +add (-inf+2j) (2-16j) (-inf-14j) +add (-inf+2j) (2-2j) (-inf+0j) +add (-inf+2j) (2-0j) (-inf+2j) +add (-inf+2j) (2+0j) (-inf+2j) +add (-inf+2j) (2+2j) (-inf+4j) +add (-inf+2j) (2+16j) (-inf+18j) +add (-inf+2j) (2+infj) (-inf+infj) +add (-inf+2j) (2+nanj) (-inf+nanj) +add (-inf+2j) (16-infj) (-inf-infj) +add (-inf+2j) (16-16j) (-inf-14j) +add (-inf+2j) (16-2j) (-inf+0j) +add (-inf+2j) (16-0j) (-inf+2j) +add (-inf+2j) (16+0j) (-inf+2j) +add (-inf+2j) (16+2j) (-inf+4j) +add (-inf+2j) (16+16j) (-inf+18j) +add (-inf+2j) (16+infj) (-inf+infj) +add (-inf+2j) (16+nanj) (-inf+nanj) +add (-inf+2j) (inf-infj) (nan-infj) +add (-inf+2j) (inf-16j) (nan-14j) +add (-inf+2j) (inf-2j) (nan+0j) +add (-inf+2j) (inf-0j) (nan+2j) +add (-inf+2j) (inf+0j) (nan+2j) +add (-inf+2j) (inf+2j) (nan+4j) +add (-inf+2j) (inf+16j) (nan+18j) +add (-inf+2j) (inf+infj) (nan+infj) +add (-inf+2j) (inf+nanj) (nan+nanj) +add (-inf+2j) (nan-infj) (nan-infj) +add (-inf+2j) (nan-16j) (nan-14j) +add (-inf+2j) (nan-2j) (nan+0j) +add (-inf+2j) (nan-0j) (nan+2j) +add (-inf+2j) (nan+0j) (nan+2j) +add (-inf+2j) (nan+2j) (nan+4j) +add (-inf+2j) (nan+16j) (nan+18j) +add (-inf+2j) (nan+infj) (nan+infj) +add (-inf+2j) (nan+nanj) (nan+nanj) +add (-inf+16j) (-inf-infj) (-inf-infj) +add (-inf+16j) (-inf-16j) (-inf+0j) +add (-inf+16j) (-inf-2j) (-inf+14j) +add (-inf+16j) (-inf-0j) (-inf+16j) +add (-inf+16j) (-inf+0j) (-inf+16j) +add (-inf+16j) (-inf+2j) (-inf+18j) +add (-inf+16j) (-inf+16j) (-inf+32j) +add (-inf+16j) (-inf+infj) (-inf+infj) +add (-inf+16j) (-inf+nanj) (-inf+nanj) +add (-inf+16j) (-16-infj) (-inf-infj) +add (-inf+16j) (-16-16j) (-inf+0j) +add (-inf+16j) (-16-2j) (-inf+14j) +add (-inf+16j) (-16-0j) (-inf+16j) +add (-inf+16j) (-16+0j) (-inf+16j) +add (-inf+16j) (-16+2j) (-inf+18j) +add (-inf+16j) (-16+16j) (-inf+32j) +add (-inf+16j) (-16+infj) (-inf+infj) +add (-inf+16j) (-16+nanj) (-inf+nanj) +add (-inf+16j) (-2-infj) (-inf-infj) +add (-inf+16j) (-2-16j) (-inf+0j) +add (-inf+16j) (-2-2j) (-inf+14j) +add (-inf+16j) (-2-0j) (-inf+16j) +add (-inf+16j) (-2+0j) (-inf+16j) +add (-inf+16j) (-2+2j) (-inf+18j) +add (-inf+16j) (-2+16j) (-inf+32j) +add (-inf+16j) (-2+infj) (-inf+infj) +add (-inf+16j) (-2+nanj) (-inf+nanj) +add (-inf+16j) (-0-infj) (-inf-infj) +add (-inf+16j) (-0-16j) (-inf+0j) +add (-inf+16j) (-0-2j) (-inf+14j) +add (-inf+16j) (-0-0j) (-inf+16j) +add (-inf+16j) (-0+0j) (-inf+16j) +add (-inf+16j) (-0+2j) (-inf+18j) +add (-inf+16j) (-0+16j) (-inf+32j) +add (-inf+16j) (-0+infj) (-inf+infj) +add (-inf+16j) (-0+nanj) (-inf+nanj) +add (-inf+16j) -infj (-inf-infj) +add (-inf+16j) -16j (-inf+0j) +add (-inf+16j) -2j (-inf+14j) +add (-inf+16j) -0j (-inf+16j) +add (-inf+16j) 0j (-inf+16j) +add (-inf+16j) 2j (-inf+18j) +add (-inf+16j) 16j (-inf+32j) +add (-inf+16j) infj (-inf+infj) +add (-inf+16j) nanj (-inf+nanj) +add (-inf+16j) (2-infj) (-inf-infj) +add (-inf+16j) (2-16j) (-inf+0j) +add (-inf+16j) (2-2j) (-inf+14j) +add (-inf+16j) (2-0j) (-inf+16j) +add (-inf+16j) (2+0j) (-inf+16j) +add (-inf+16j) (2+2j) (-inf+18j) +add (-inf+16j) (2+16j) (-inf+32j) +add (-inf+16j) (2+infj) (-inf+infj) +add (-inf+16j) (2+nanj) (-inf+nanj) +add (-inf+16j) (16-infj) (-inf-infj) +add (-inf+16j) (16-16j) (-inf+0j) +add (-inf+16j) (16-2j) (-inf+14j) +add (-inf+16j) (16-0j) (-inf+16j) +add (-inf+16j) (16+0j) (-inf+16j) +add (-inf+16j) (16+2j) (-inf+18j) +add (-inf+16j) (16+16j) (-inf+32j) +add (-inf+16j) (16+infj) (-inf+infj) +add (-inf+16j) (16+nanj) (-inf+nanj) +add (-inf+16j) (inf-infj) (nan-infj) +add (-inf+16j) (inf-16j) (nan+0j) +add (-inf+16j) (inf-2j) (nan+14j) +add (-inf+16j) (inf-0j) (nan+16j) +add (-inf+16j) (inf+0j) (nan+16j) +add (-inf+16j) (inf+2j) (nan+18j) +add (-inf+16j) (inf+16j) (nan+32j) +add (-inf+16j) (inf+infj) (nan+infj) +add (-inf+16j) (inf+nanj) (nan+nanj) +add (-inf+16j) (nan-infj) (nan-infj) +add (-inf+16j) (nan-16j) (nan+0j) +add (-inf+16j) (nan-2j) (nan+14j) +add (-inf+16j) (nan-0j) (nan+16j) +add (-inf+16j) (nan+0j) (nan+16j) +add (-inf+16j) (nan+2j) (nan+18j) +add (-inf+16j) (nan+16j) (nan+32j) +add (-inf+16j) (nan+infj) (nan+infj) +add (-inf+16j) (nan+nanj) (nan+nanj) +add (-inf+infj) (-inf-infj) (-inf+nanj) +add (-inf+infj) (-inf-16j) (-inf+infj) +add (-inf+infj) (-inf-2j) (-inf+infj) +add (-inf+infj) (-inf-0j) (-inf+infj) +add (-inf+infj) (-inf+0j) (-inf+infj) +add (-inf+infj) (-inf+2j) (-inf+infj) +add (-inf+infj) (-inf+16j) (-inf+infj) +add (-inf+infj) (-inf+infj) (-inf+infj) +add (-inf+infj) (-inf+nanj) (-inf+nanj) +add (-inf+infj) (-16-infj) (-inf+nanj) +add (-inf+infj) (-16-16j) (-inf+infj) +add (-inf+infj) (-16-2j) (-inf+infj) +add (-inf+infj) (-16-0j) (-inf+infj) +add (-inf+infj) (-16+0j) (-inf+infj) +add (-inf+infj) (-16+2j) (-inf+infj) +add (-inf+infj) (-16+16j) (-inf+infj) +add (-inf+infj) (-16+infj) (-inf+infj) +add (-inf+infj) (-16+nanj) (-inf+nanj) +add (-inf+infj) (-2-infj) (-inf+nanj) +add (-inf+infj) (-2-16j) (-inf+infj) +add (-inf+infj) (-2-2j) (-inf+infj) +add (-inf+infj) (-2-0j) (-inf+infj) +add (-inf+infj) (-2+0j) (-inf+infj) +add (-inf+infj) (-2+2j) (-inf+infj) +add (-inf+infj) (-2+16j) (-inf+infj) +add (-inf+infj) (-2+infj) (-inf+infj) +add (-inf+infj) (-2+nanj) (-inf+nanj) +add (-inf+infj) (-0-infj) (-inf+nanj) +add (-inf+infj) (-0-16j) (-inf+infj) +add (-inf+infj) (-0-2j) (-inf+infj) +add (-inf+infj) (-0-0j) (-inf+infj) +add (-inf+infj) (-0+0j) (-inf+infj) +add (-inf+infj) (-0+2j) (-inf+infj) +add (-inf+infj) (-0+16j) (-inf+infj) +add (-inf+infj) (-0+infj) (-inf+infj) +add (-inf+infj) (-0+nanj) (-inf+nanj) +add (-inf+infj) -infj (-inf+nanj) +add (-inf+infj) -16j (-inf+infj) +add (-inf+infj) -2j (-inf+infj) +add (-inf+infj) -0j (-inf+infj) +add (-inf+infj) 0j (-inf+infj) +add (-inf+infj) 2j (-inf+infj) +add (-inf+infj) 16j (-inf+infj) +add (-inf+infj) infj (-inf+infj) +add (-inf+infj) nanj (-inf+nanj) +add (-inf+infj) (2-infj) (-inf+nanj) +add (-inf+infj) (2-16j) (-inf+infj) +add (-inf+infj) (2-2j) (-inf+infj) +add (-inf+infj) (2-0j) (-inf+infj) +add (-inf+infj) (2+0j) (-inf+infj) +add (-inf+infj) (2+2j) (-inf+infj) +add (-inf+infj) (2+16j) (-inf+infj) +add (-inf+infj) (2+infj) (-inf+infj) +add (-inf+infj) (2+nanj) (-inf+nanj) +add (-inf+infj) (16-infj) (-inf+nanj) +add (-inf+infj) (16-16j) (-inf+infj) +add (-inf+infj) (16-2j) (-inf+infj) +add (-inf+infj) (16-0j) (-inf+infj) +add (-inf+infj) (16+0j) (-inf+infj) +add (-inf+infj) (16+2j) (-inf+infj) +add (-inf+infj) (16+16j) (-inf+infj) +add (-inf+infj) (16+infj) (-inf+infj) +add (-inf+infj) (16+nanj) (-inf+nanj) +add (-inf+infj) (inf-infj) (nan+nanj) +add (-inf+infj) (inf-16j) (nan+infj) +add (-inf+infj) (inf-2j) (nan+infj) +add (-inf+infj) (inf-0j) (nan+infj) +add (-inf+infj) (inf+0j) (nan+infj) +add (-inf+infj) (inf+2j) (nan+infj) +add (-inf+infj) (inf+16j) (nan+infj) +add (-inf+infj) (inf+infj) (nan+infj) +add (-inf+infj) (inf+nanj) (nan+nanj) +add (-inf+infj) (nan-infj) (nan+nanj) +add (-inf+infj) (nan-16j) (nan+infj) +add (-inf+infj) (nan-2j) (nan+infj) +add (-inf+infj) (nan-0j) (nan+infj) +add (-inf+infj) (nan+0j) (nan+infj) +add (-inf+infj) (nan+2j) (nan+infj) +add (-inf+infj) (nan+16j) (nan+infj) +add (-inf+infj) (nan+infj) (nan+infj) +add (-inf+infj) (nan+nanj) (nan+nanj) +add (-inf+nanj) (-inf-infj) (-inf+nanj) +add (-inf+nanj) (-inf-16j) (-inf+nanj) +add (-inf+nanj) (-inf-2j) (-inf+nanj) +add (-inf+nanj) (-inf-0j) (-inf+nanj) +add (-inf+nanj) (-inf+0j) (-inf+nanj) +add (-inf+nanj) (-inf+2j) (-inf+nanj) +add (-inf+nanj) (-inf+16j) (-inf+nanj) +add (-inf+nanj) (-inf+infj) (-inf+nanj) +add (-inf+nanj) (-inf+nanj) (-inf+nanj) +add (-inf+nanj) (-16-infj) (-inf+nanj) +add (-inf+nanj) (-16-16j) (-inf+nanj) +add (-inf+nanj) (-16-2j) (-inf+nanj) +add (-inf+nanj) (-16-0j) (-inf+nanj) +add (-inf+nanj) (-16+0j) (-inf+nanj) +add (-inf+nanj) (-16+2j) (-inf+nanj) +add (-inf+nanj) (-16+16j) (-inf+nanj) +add (-inf+nanj) (-16+infj) (-inf+nanj) +add (-inf+nanj) (-16+nanj) (-inf+nanj) +add (-inf+nanj) (-2-infj) (-inf+nanj) +add (-inf+nanj) (-2-16j) (-inf+nanj) +add (-inf+nanj) (-2-2j) (-inf+nanj) +add (-inf+nanj) (-2-0j) (-inf+nanj) +add (-inf+nanj) (-2+0j) (-inf+nanj) +add (-inf+nanj) (-2+2j) (-inf+nanj) +add (-inf+nanj) (-2+16j) (-inf+nanj) +add (-inf+nanj) (-2+infj) (-inf+nanj) +add (-inf+nanj) (-2+nanj) (-inf+nanj) +add (-inf+nanj) (-0-infj) (-inf+nanj) +add (-inf+nanj) (-0-16j) (-inf+nanj) +add (-inf+nanj) (-0-2j) (-inf+nanj) +add (-inf+nanj) (-0-0j) (-inf+nanj) +add (-inf+nanj) (-0+0j) (-inf+nanj) +add (-inf+nanj) (-0+2j) (-inf+nanj) +add (-inf+nanj) (-0+16j) (-inf+nanj) +add (-inf+nanj) (-0+infj) (-inf+nanj) +add (-inf+nanj) (-0+nanj) (-inf+nanj) +add (-inf+nanj) -infj (-inf+nanj) +add (-inf+nanj) -16j (-inf+nanj) +add (-inf+nanj) -2j (-inf+nanj) +add (-inf+nanj) -0j (-inf+nanj) +add (-inf+nanj) 0j (-inf+nanj) +add (-inf+nanj) 2j (-inf+nanj) +add (-inf+nanj) 16j (-inf+nanj) +add (-inf+nanj) infj (-inf+nanj) +add (-inf+nanj) nanj (-inf+nanj) +add (-inf+nanj) (2-infj) (-inf+nanj) +add (-inf+nanj) (2-16j) (-inf+nanj) +add (-inf+nanj) (2-2j) (-inf+nanj) +add (-inf+nanj) (2-0j) (-inf+nanj) +add (-inf+nanj) (2+0j) (-inf+nanj) +add (-inf+nanj) (2+2j) (-inf+nanj) +add (-inf+nanj) (2+16j) (-inf+nanj) +add (-inf+nanj) (2+infj) (-inf+nanj) +add (-inf+nanj) (2+nanj) (-inf+nanj) +add (-inf+nanj) (16-infj) (-inf+nanj) +add (-inf+nanj) (16-16j) (-inf+nanj) +add (-inf+nanj) (16-2j) (-inf+nanj) +add (-inf+nanj) (16-0j) (-inf+nanj) +add (-inf+nanj) (16+0j) (-inf+nanj) +add (-inf+nanj) (16+2j) (-inf+nanj) +add (-inf+nanj) (16+16j) (-inf+nanj) +add (-inf+nanj) (16+infj) (-inf+nanj) +add (-inf+nanj) (16+nanj) (-inf+nanj) +add (-inf+nanj) (inf-infj) (nan+nanj) +add (-inf+nanj) (inf-16j) (nan+nanj) +add (-inf+nanj) (inf-2j) (nan+nanj) +add (-inf+nanj) (inf-0j) (nan+nanj) +add (-inf+nanj) (inf+0j) (nan+nanj) +add (-inf+nanj) (inf+2j) (nan+nanj) +add (-inf+nanj) (inf+16j) (nan+nanj) +add (-inf+nanj) (inf+infj) (nan+nanj) +add (-inf+nanj) (inf+nanj) (nan+nanj) +add (-inf+nanj) (nan-infj) (nan+nanj) +add (-inf+nanj) (nan-16j) (nan+nanj) +add (-inf+nanj) (nan-2j) (nan+nanj) +add (-inf+nanj) (nan-0j) (nan+nanj) +add (-inf+nanj) (nan+0j) (nan+nanj) +add (-inf+nanj) (nan+2j) (nan+nanj) +add (-inf+nanj) (nan+16j) (nan+nanj) +add (-inf+nanj) (nan+infj) (nan+nanj) +add (-inf+nanj) (nan+nanj) (nan+nanj) +add (-16-infj) (-inf-infj) (-inf-infj) +add (-16-infj) (-inf-16j) (-inf-infj) +add (-16-infj) (-inf-2j) (-inf-infj) +add (-16-infj) (-inf-0j) (-inf-infj) +add (-16-infj) (-inf+0j) (-inf-infj) +add (-16-infj) (-inf+2j) (-inf-infj) +add (-16-infj) (-inf+16j) (-inf-infj) +add (-16-infj) (-inf+infj) (-inf+nanj) +add (-16-infj) (-inf+nanj) (-inf+nanj) +add (-16-infj) (-16-infj) (-32-infj) +add (-16-infj) (-16-16j) (-32-infj) +add (-16-infj) (-16-2j) (-32-infj) +add (-16-infj) (-16-0j) (-32-infj) +add (-16-infj) (-16+0j) (-32-infj) +add (-16-infj) (-16+2j) (-32-infj) +add (-16-infj) (-16+16j) (-32-infj) +add (-16-infj) (-16+infj) (-32+nanj) +add (-16-infj) (-16+nanj) (-32+nanj) +add (-16-infj) (-2-infj) (-18-infj) +add (-16-infj) (-2-16j) (-18-infj) +add (-16-infj) (-2-2j) (-18-infj) +add (-16-infj) (-2-0j) (-18-infj) +add (-16-infj) (-2+0j) (-18-infj) +add (-16-infj) (-2+2j) (-18-infj) +add (-16-infj) (-2+16j) (-18-infj) +add (-16-infj) (-2+infj) (-18+nanj) +add (-16-infj) (-2+nanj) (-18+nanj) +add (-16-infj) (-0-infj) (-16-infj) +add (-16-infj) (-0-16j) (-16-infj) +add (-16-infj) (-0-2j) (-16-infj) +add (-16-infj) (-0-0j) (-16-infj) +add (-16-infj) (-0+0j) (-16-infj) +add (-16-infj) (-0+2j) (-16-infj) +add (-16-infj) (-0+16j) (-16-infj) +add (-16-infj) (-0+infj) (-16+nanj) +add (-16-infj) (-0+nanj) (-16+nanj) +add (-16-infj) -infj (-16-infj) +add (-16-infj) -16j (-16-infj) +add (-16-infj) -2j (-16-infj) +add (-16-infj) -0j (-16-infj) +add (-16-infj) 0j (-16-infj) +add (-16-infj) 2j (-16-infj) +add (-16-infj) 16j (-16-infj) +add (-16-infj) infj (-16+nanj) +add (-16-infj) nanj (-16+nanj) +add (-16-infj) (2-infj) (-14-infj) +add (-16-infj) (2-16j) (-14-infj) +add (-16-infj) (2-2j) (-14-infj) +add (-16-infj) (2-0j) (-14-infj) +add (-16-infj) (2+0j) (-14-infj) +add (-16-infj) (2+2j) (-14-infj) +add (-16-infj) (2+16j) (-14-infj) +add (-16-infj) (2+infj) (-14+nanj) +add (-16-infj) (2+nanj) (-14+nanj) +add (-16-infj) (16-infj) -infj +add (-16-infj) (16-16j) -infj +add (-16-infj) (16-2j) -infj +add (-16-infj) (16-0j) -infj +add (-16-infj) (16+0j) -infj +add (-16-infj) (16+2j) -infj +add (-16-infj) (16+16j) -infj +add (-16-infj) (16+infj) nanj +add (-16-infj) (16+nanj) nanj +add (-16-infj) (inf-infj) (inf-infj) +add (-16-infj) (inf-16j) (inf-infj) +add (-16-infj) (inf-2j) (inf-infj) +add (-16-infj) (inf-0j) (inf-infj) +add (-16-infj) (inf+0j) (inf-infj) +add (-16-infj) (inf+2j) (inf-infj) +add (-16-infj) (inf+16j) (inf-infj) +add (-16-infj) (inf+infj) (inf+nanj) +add (-16-infj) (inf+nanj) (inf+nanj) +add (-16-infj) (nan-infj) (nan-infj) +add (-16-infj) (nan-16j) (nan-infj) +add (-16-infj) (nan-2j) (nan-infj) +add (-16-infj) (nan-0j) (nan-infj) +add (-16-infj) (nan+0j) (nan-infj) +add (-16-infj) (nan+2j) (nan-infj) +add (-16-infj) (nan+16j) (nan-infj) +add (-16-infj) (nan+infj) (nan+nanj) +add (-16-infj) (nan+nanj) (nan+nanj) +add (-16-16j) (-inf-infj) (-inf-infj) +add (-16-16j) (-inf-16j) (-inf-32j) +add (-16-16j) (-inf-2j) (-inf-18j) +add (-16-16j) (-inf-0j) (-inf-16j) +add (-16-16j) (-inf+0j) (-inf-16j) +add (-16-16j) (-inf+2j) (-inf-14j) +add (-16-16j) (-inf+16j) (-inf+0j) +add (-16-16j) (-inf+infj) (-inf+infj) +add (-16-16j) (-inf+nanj) (-inf+nanj) +add (-16-16j) (-16-infj) (-32-infj) +add (-16-16j) (-16-16j) (-32-32j) +add (-16-16j) (-16-2j) (-32-18j) +add (-16-16j) (-16-0j) (-32-16j) +add (-16-16j) (-16+0j) (-32-16j) +add (-16-16j) (-16+2j) (-32-14j) +add (-16-16j) (-16+16j) (-32+0j) +add (-16-16j) (-16+infj) (-32+infj) +add (-16-16j) (-16+nanj) (-32+nanj) +add (-16-16j) (-2-infj) (-18-infj) +add (-16-16j) (-2-16j) (-18-32j) +add (-16-16j) (-2-2j) (-18-18j) +add (-16-16j) (-2-0j) (-18-16j) +add (-16-16j) (-2+0j) (-18-16j) +add (-16-16j) (-2+2j) (-18-14j) +add (-16-16j) (-2+16j) (-18+0j) +add (-16-16j) (-2+infj) (-18+infj) +add (-16-16j) (-2+nanj) (-18+nanj) +add (-16-16j) (-0-infj) (-16-infj) +add (-16-16j) (-0-16j) (-16-32j) +add (-16-16j) (-0-2j) (-16-18j) +add (-16-16j) (-0-0j) (-16-16j) +add (-16-16j) (-0+0j) (-16-16j) +add (-16-16j) (-0+2j) (-16-14j) +add (-16-16j) (-0+16j) (-16+0j) +add (-16-16j) (-0+infj) (-16+infj) +add (-16-16j) (-0+nanj) (-16+nanj) +add (-16-16j) -infj (-16-infj) +add (-16-16j) -16j (-16-32j) +add (-16-16j) -2j (-16-18j) +add (-16-16j) -0j (-16-16j) +add (-16-16j) 0j (-16-16j) +add (-16-16j) 2j (-16-14j) +add (-16-16j) 16j (-16+0j) +add (-16-16j) infj (-16+infj) +add (-16-16j) nanj (-16+nanj) +add (-16-16j) (2-infj) (-14-infj) +add (-16-16j) (2-16j) (-14-32j) +add (-16-16j) (2-2j) (-14-18j) +add (-16-16j) (2-0j) (-14-16j) +add (-16-16j) (2+0j) (-14-16j) +add (-16-16j) (2+2j) (-14-14j) +add (-16-16j) (2+16j) (-14+0j) +add (-16-16j) (2+infj) (-14+infj) +add (-16-16j) (2+nanj) (-14+nanj) +add (-16-16j) (16-infj) -infj +add (-16-16j) (16-16j) -32j +add (-16-16j) (16-2j) -18j +add (-16-16j) (16-0j) -16j +add (-16-16j) (16+0j) -16j +add (-16-16j) (16+2j) -14j +add (-16-16j) (16+16j) 0j +add (-16-16j) (16+infj) infj +add (-16-16j) (16+nanj) nanj +add (-16-16j) (inf-infj) (inf-infj) +add (-16-16j) (inf-16j) (inf-32j) +add (-16-16j) (inf-2j) (inf-18j) +add (-16-16j) (inf-0j) (inf-16j) +add (-16-16j) (inf+0j) (inf-16j) +add (-16-16j) (inf+2j) (inf-14j) +add (-16-16j) (inf+16j) (inf+0j) +add (-16-16j) (inf+infj) (inf+infj) +add (-16-16j) (inf+nanj) (inf+nanj) +add (-16-16j) (nan-infj) (nan-infj) +add (-16-16j) (nan-16j) (nan-32j) +add (-16-16j) (nan-2j) (nan-18j) +add (-16-16j) (nan-0j) (nan-16j) +add (-16-16j) (nan+0j) (nan-16j) +add (-16-16j) (nan+2j) (nan-14j) +add (-16-16j) (nan+16j) (nan+0j) +add (-16-16j) (nan+infj) (nan+infj) +add (-16-16j) (nan+nanj) (nan+nanj) +add (-16-2j) (-inf-infj) (-inf-infj) +add (-16-2j) (-inf-16j) (-inf-18j) +add (-16-2j) (-inf-2j) (-inf-4j) +add (-16-2j) (-inf-0j) (-inf-2j) +add (-16-2j) (-inf+0j) (-inf-2j) +add (-16-2j) (-inf+2j) (-inf+0j) +add (-16-2j) (-inf+16j) (-inf+14j) +add (-16-2j) (-inf+infj) (-inf+infj) +add (-16-2j) (-inf+nanj) (-inf+nanj) +add (-16-2j) (-16-infj) (-32-infj) +add (-16-2j) (-16-16j) (-32-18j) +add (-16-2j) (-16-2j) (-32-4j) +add (-16-2j) (-16-0j) (-32-2j) +add (-16-2j) (-16+0j) (-32-2j) +add (-16-2j) (-16+2j) (-32+0j) +add (-16-2j) (-16+16j) (-32+14j) +add (-16-2j) (-16+infj) (-32+infj) +add (-16-2j) (-16+nanj) (-32+nanj) +add (-16-2j) (-2-infj) (-18-infj) +add (-16-2j) (-2-16j) (-18-18j) +add (-16-2j) (-2-2j) (-18-4j) +add (-16-2j) (-2-0j) (-18-2j) +add (-16-2j) (-2+0j) (-18-2j) +add (-16-2j) (-2+2j) (-18+0j) +add (-16-2j) (-2+16j) (-18+14j) +add (-16-2j) (-2+infj) (-18+infj) +add (-16-2j) (-2+nanj) (-18+nanj) +add (-16-2j) (-0-infj) (-16-infj) +add (-16-2j) (-0-16j) (-16-18j) +add (-16-2j) (-0-2j) (-16-4j) +add (-16-2j) (-0-0j) (-16-2j) +add (-16-2j) (-0+0j) (-16-2j) +add (-16-2j) (-0+2j) (-16+0j) +add (-16-2j) (-0+16j) (-16+14j) +add (-16-2j) (-0+infj) (-16+infj) +add (-16-2j) (-0+nanj) (-16+nanj) +add (-16-2j) -infj (-16-infj) +add (-16-2j) -16j (-16-18j) +add (-16-2j) -2j (-16-4j) +add (-16-2j) -0j (-16-2j) +add (-16-2j) 0j (-16-2j) +add (-16-2j) 2j (-16+0j) +add (-16-2j) 16j (-16+14j) +add (-16-2j) infj (-16+infj) +add (-16-2j) nanj (-16+nanj) +add (-16-2j) (2-infj) (-14-infj) +add (-16-2j) (2-16j) (-14-18j) +add (-16-2j) (2-2j) (-14-4j) +add (-16-2j) (2-0j) (-14-2j) +add (-16-2j) (2+0j) (-14-2j) +add (-16-2j) (2+2j) (-14+0j) +add (-16-2j) (2+16j) (-14+14j) +add (-16-2j) (2+infj) (-14+infj) +add (-16-2j) (2+nanj) (-14+nanj) +add (-16-2j) (16-infj) -infj +add (-16-2j) (16-16j) -18j +add (-16-2j) (16-2j) -4j +add (-16-2j) (16-0j) -2j +add (-16-2j) (16+0j) -2j +add (-16-2j) (16+2j) 0j +add (-16-2j) (16+16j) 14j +add (-16-2j) (16+infj) infj +add (-16-2j) (16+nanj) nanj +add (-16-2j) (inf-infj) (inf-infj) +add (-16-2j) (inf-16j) (inf-18j) +add (-16-2j) (inf-2j) (inf-4j) +add (-16-2j) (inf-0j) (inf-2j) +add (-16-2j) (inf+0j) (inf-2j) +add (-16-2j) (inf+2j) (inf+0j) +add (-16-2j) (inf+16j) (inf+14j) +add (-16-2j) (inf+infj) (inf+infj) +add (-16-2j) (inf+nanj) (inf+nanj) +add (-16-2j) (nan-infj) (nan-infj) +add (-16-2j) (nan-16j) (nan-18j) +add (-16-2j) (nan-2j) (nan-4j) +add (-16-2j) (nan-0j) (nan-2j) +add (-16-2j) (nan+0j) (nan-2j) +add (-16-2j) (nan+2j) (nan+0j) +add (-16-2j) (nan+16j) (nan+14j) +add (-16-2j) (nan+infj) (nan+infj) +add (-16-2j) (nan+nanj) (nan+nanj) +add (-16-0j) (-inf-infj) (-inf-infj) +add (-16-0j) (-inf-16j) (-inf-16j) +add (-16-0j) (-inf-2j) (-inf-2j) +add (-16-0j) (-inf-0j) (-inf-0j) +add (-16-0j) (-inf+0j) (-inf+0j) +add (-16-0j) (-inf+2j) (-inf+2j) +add (-16-0j) (-inf+16j) (-inf+16j) +add (-16-0j) (-inf+infj) (-inf+infj) +add (-16-0j) (-inf+nanj) (-inf+nanj) +add (-16-0j) (-16-infj) (-32-infj) +add (-16-0j) (-16-16j) (-32-16j) +add (-16-0j) (-16-2j) (-32-2j) +add (-16-0j) (-16-0j) (-32-0j) +add (-16-0j) (-16+0j) (-32+0j) +add (-16-0j) (-16+2j) (-32+2j) +add (-16-0j) (-16+16j) (-32+16j) +add (-16-0j) (-16+infj) (-32+infj) +add (-16-0j) (-16+nanj) (-32+nanj) +add (-16-0j) (-2-infj) (-18-infj) +add (-16-0j) (-2-16j) (-18-16j) +add (-16-0j) (-2-2j) (-18-2j) +add (-16-0j) (-2-0j) (-18-0j) +add (-16-0j) (-2+0j) (-18+0j) +add (-16-0j) (-2+2j) (-18+2j) +add (-16-0j) (-2+16j) (-18+16j) +add (-16-0j) (-2+infj) (-18+infj) +add (-16-0j) (-2+nanj) (-18+nanj) +add (-16-0j) (-0-infj) (-16-infj) +add (-16-0j) (-0-16j) (-16-16j) +add (-16-0j) (-0-2j) (-16-2j) +add (-16-0j) (-0-0j) (-16-0j) +add (-16-0j) (-0+0j) (-16+0j) +add (-16-0j) (-0+2j) (-16+2j) +add (-16-0j) (-0+16j) (-16+16j) +add (-16-0j) (-0+infj) (-16+infj) +add (-16-0j) (-0+nanj) (-16+nanj) +add (-16-0j) -infj (-16-infj) +add (-16-0j) -16j (-16-16j) +add (-16-0j) -2j (-16-2j) +add (-16-0j) -0j (-16-0j) +add (-16-0j) 0j (-16+0j) +add (-16-0j) 2j (-16+2j) +add (-16-0j) 16j (-16+16j) +add (-16-0j) infj (-16+infj) +add (-16-0j) nanj (-16+nanj) +add (-16-0j) (2-infj) (-14-infj) +add (-16-0j) (2-16j) (-14-16j) +add (-16-0j) (2-2j) (-14-2j) +add (-16-0j) (2-0j) (-14-0j) +add (-16-0j) (2+0j) (-14+0j) +add (-16-0j) (2+2j) (-14+2j) +add (-16-0j) (2+16j) (-14+16j) +add (-16-0j) (2+infj) (-14+infj) +add (-16-0j) (2+nanj) (-14+nanj) +add (-16-0j) (16-infj) -infj +add (-16-0j) (16-16j) -16j +add (-16-0j) (16-2j) -2j +add (-16-0j) (16-0j) -0j +add (-16-0j) (16+0j) 0j +add (-16-0j) (16+2j) 2j +add (-16-0j) (16+16j) 16j +add (-16-0j) (16+infj) infj +add (-16-0j) (16+nanj) nanj +add (-16-0j) (inf-infj) (inf-infj) +add (-16-0j) (inf-16j) (inf-16j) +add (-16-0j) (inf-2j) (inf-2j) +add (-16-0j) (inf-0j) (inf-0j) +add (-16-0j) (inf+0j) (inf+0j) +add (-16-0j) (inf+2j) (inf+2j) +add (-16-0j) (inf+16j) (inf+16j) +add (-16-0j) (inf+infj) (inf+infj) +add (-16-0j) (inf+nanj) (inf+nanj) +add (-16-0j) (nan-infj) (nan-infj) +add (-16-0j) (nan-16j) (nan-16j) +add (-16-0j) (nan-2j) (nan-2j) +add (-16-0j) (nan-0j) (nan-0j) +add (-16-0j) (nan+0j) (nan+0j) +add (-16-0j) (nan+2j) (nan+2j) +add (-16-0j) (nan+16j) (nan+16j) +add (-16-0j) (nan+infj) (nan+infj) +add (-16-0j) (nan+nanj) (nan+nanj) +add (-16+0j) (-inf-infj) (-inf-infj) +add (-16+0j) (-inf-16j) (-inf-16j) +add (-16+0j) (-inf-2j) (-inf-2j) +add (-16+0j) (-inf-0j) (-inf+0j) +add (-16+0j) (-inf+0j) (-inf+0j) +add (-16+0j) (-inf+2j) (-inf+2j) +add (-16+0j) (-inf+16j) (-inf+16j) +add (-16+0j) (-inf+infj) (-inf+infj) +add (-16+0j) (-inf+nanj) (-inf+nanj) +add (-16+0j) (-16-infj) (-32-infj) +add (-16+0j) (-16-16j) (-32-16j) +add (-16+0j) (-16-2j) (-32-2j) +add (-16+0j) (-16-0j) (-32+0j) +add (-16+0j) (-16+0j) (-32+0j) +add (-16+0j) (-16+2j) (-32+2j) +add (-16+0j) (-16+16j) (-32+16j) +add (-16+0j) (-16+infj) (-32+infj) +add (-16+0j) (-16+nanj) (-32+nanj) +add (-16+0j) (-2-infj) (-18-infj) +add (-16+0j) (-2-16j) (-18-16j) +add (-16+0j) (-2-2j) (-18-2j) +add (-16+0j) (-2-0j) (-18+0j) +add (-16+0j) (-2+0j) (-18+0j) +add (-16+0j) (-2+2j) (-18+2j) +add (-16+0j) (-2+16j) (-18+16j) +add (-16+0j) (-2+infj) (-18+infj) +add (-16+0j) (-2+nanj) (-18+nanj) +add (-16+0j) (-0-infj) (-16-infj) +add (-16+0j) (-0-16j) (-16-16j) +add (-16+0j) (-0-2j) (-16-2j) +add (-16+0j) (-0-0j) (-16+0j) +add (-16+0j) (-0+0j) (-16+0j) +add (-16+0j) (-0+2j) (-16+2j) +add (-16+0j) (-0+16j) (-16+16j) +add (-16+0j) (-0+infj) (-16+infj) +add (-16+0j) (-0+nanj) (-16+nanj) +add (-16+0j) -infj (-16-infj) +add (-16+0j) -16j (-16-16j) +add (-16+0j) -2j (-16-2j) +add (-16+0j) -0j (-16+0j) +add (-16+0j) 0j (-16+0j) +add (-16+0j) 2j (-16+2j) +add (-16+0j) 16j (-16+16j) +add (-16+0j) infj (-16+infj) +add (-16+0j) nanj (-16+nanj) +add (-16+0j) (2-infj) (-14-infj) +add (-16+0j) (2-16j) (-14-16j) +add (-16+0j) (2-2j) (-14-2j) +add (-16+0j) (2-0j) (-14+0j) +add (-16+0j) (2+0j) (-14+0j) +add (-16+0j) (2+2j) (-14+2j) +add (-16+0j) (2+16j) (-14+16j) +add (-16+0j) (2+infj) (-14+infj) +add (-16+0j) (2+nanj) (-14+nanj) +add (-16+0j) (16-infj) -infj +add (-16+0j) (16-16j) -16j +add (-16+0j) (16-2j) -2j +add (-16+0j) (16-0j) 0j +add (-16+0j) (16+0j) 0j +add (-16+0j) (16+2j) 2j +add (-16+0j) (16+16j) 16j +add (-16+0j) (16+infj) infj +add (-16+0j) (16+nanj) nanj +add (-16+0j) (inf-infj) (inf-infj) +add (-16+0j) (inf-16j) (inf-16j) +add (-16+0j) (inf-2j) (inf-2j) +add (-16+0j) (inf-0j) (inf+0j) +add (-16+0j) (inf+0j) (inf+0j) +add (-16+0j) (inf+2j) (inf+2j) +add (-16+0j) (inf+16j) (inf+16j) +add (-16+0j) (inf+infj) (inf+infj) +add (-16+0j) (inf+nanj) (inf+nanj) +add (-16+0j) (nan-infj) (nan-infj) +add (-16+0j) (nan-16j) (nan-16j) +add (-16+0j) (nan-2j) (nan-2j) +add (-16+0j) (nan-0j) (nan+0j) +add (-16+0j) (nan+0j) (nan+0j) +add (-16+0j) (nan+2j) (nan+2j) +add (-16+0j) (nan+16j) (nan+16j) +add (-16+0j) (nan+infj) (nan+infj) +add (-16+0j) (nan+nanj) (nan+nanj) +add (-16+2j) (-inf-infj) (-inf-infj) +add (-16+2j) (-inf-16j) (-inf-14j) +add (-16+2j) (-inf-2j) (-inf+0j) +add (-16+2j) (-inf-0j) (-inf+2j) +add (-16+2j) (-inf+0j) (-inf+2j) +add (-16+2j) (-inf+2j) (-inf+4j) +add (-16+2j) (-inf+16j) (-inf+18j) +add (-16+2j) (-inf+infj) (-inf+infj) +add (-16+2j) (-inf+nanj) (-inf+nanj) +add (-16+2j) (-16-infj) (-32-infj) +add (-16+2j) (-16-16j) (-32-14j) +add (-16+2j) (-16-2j) (-32+0j) +add (-16+2j) (-16-0j) (-32+2j) +add (-16+2j) (-16+0j) (-32+2j) +add (-16+2j) (-16+2j) (-32+4j) +add (-16+2j) (-16+16j) (-32+18j) +add (-16+2j) (-16+infj) (-32+infj) +add (-16+2j) (-16+nanj) (-32+nanj) +add (-16+2j) (-2-infj) (-18-infj) +add (-16+2j) (-2-16j) (-18-14j) +add (-16+2j) (-2-2j) (-18+0j) +add (-16+2j) (-2-0j) (-18+2j) +add (-16+2j) (-2+0j) (-18+2j) +add (-16+2j) (-2+2j) (-18+4j) +add (-16+2j) (-2+16j) (-18+18j) +add (-16+2j) (-2+infj) (-18+infj) +add (-16+2j) (-2+nanj) (-18+nanj) +add (-16+2j) (-0-infj) (-16-infj) +add (-16+2j) (-0-16j) (-16-14j) +add (-16+2j) (-0-2j) (-16+0j) +add (-16+2j) (-0-0j) (-16+2j) +add (-16+2j) (-0+0j) (-16+2j) +add (-16+2j) (-0+2j) (-16+4j) +add (-16+2j) (-0+16j) (-16+18j) +add (-16+2j) (-0+infj) (-16+infj) +add (-16+2j) (-0+nanj) (-16+nanj) +add (-16+2j) -infj (-16-infj) +add (-16+2j) -16j (-16-14j) +add (-16+2j) -2j (-16+0j) +add (-16+2j) -0j (-16+2j) +add (-16+2j) 0j (-16+2j) +add (-16+2j) 2j (-16+4j) +add (-16+2j) 16j (-16+18j) +add (-16+2j) infj (-16+infj) +add (-16+2j) nanj (-16+nanj) +add (-16+2j) (2-infj) (-14-infj) +add (-16+2j) (2-16j) (-14-14j) +add (-16+2j) (2-2j) (-14+0j) +add (-16+2j) (2-0j) (-14+2j) +add (-16+2j) (2+0j) (-14+2j) +add (-16+2j) (2+2j) (-14+4j) +add (-16+2j) (2+16j) (-14+18j) +add (-16+2j) (2+infj) (-14+infj) +add (-16+2j) (2+nanj) (-14+nanj) +add (-16+2j) (16-infj) -infj +add (-16+2j) (16-16j) -14j +add (-16+2j) (16-2j) 0j +add (-16+2j) (16-0j) 2j +add (-16+2j) (16+0j) 2j +add (-16+2j) (16+2j) 4j +add (-16+2j) (16+16j) 18j +add (-16+2j) (16+infj) infj +add (-16+2j) (16+nanj) nanj +add (-16+2j) (inf-infj) (inf-infj) +add (-16+2j) (inf-16j) (inf-14j) +add (-16+2j) (inf-2j) (inf+0j) +add (-16+2j) (inf-0j) (inf+2j) +add (-16+2j) (inf+0j) (inf+2j) +add (-16+2j) (inf+2j) (inf+4j) +add (-16+2j) (inf+16j) (inf+18j) +add (-16+2j) (inf+infj) (inf+infj) +add (-16+2j) (inf+nanj) (inf+nanj) +add (-16+2j) (nan-infj) (nan-infj) +add (-16+2j) (nan-16j) (nan-14j) +add (-16+2j) (nan-2j) (nan+0j) +add (-16+2j) (nan-0j) (nan+2j) +add (-16+2j) (nan+0j) (nan+2j) +add (-16+2j) (nan+2j) (nan+4j) +add (-16+2j) (nan+16j) (nan+18j) +add (-16+2j) (nan+infj) (nan+infj) +add (-16+2j) (nan+nanj) (nan+nanj) +add (-16+16j) (-inf-infj) (-inf-infj) +add (-16+16j) (-inf-16j) (-inf+0j) +add (-16+16j) (-inf-2j) (-inf+14j) +add (-16+16j) (-inf-0j) (-inf+16j) +add (-16+16j) (-inf+0j) (-inf+16j) +add (-16+16j) (-inf+2j) (-inf+18j) +add (-16+16j) (-inf+16j) (-inf+32j) +add (-16+16j) (-inf+infj) (-inf+infj) +add (-16+16j) (-inf+nanj) (-inf+nanj) +add (-16+16j) (-16-infj) (-32-infj) +add (-16+16j) (-16-16j) (-32+0j) +add (-16+16j) (-16-2j) (-32+14j) +add (-16+16j) (-16-0j) (-32+16j) +add (-16+16j) (-16+0j) (-32+16j) +add (-16+16j) (-16+2j) (-32+18j) +add (-16+16j) (-16+16j) (-32+32j) +add (-16+16j) (-16+infj) (-32+infj) +add (-16+16j) (-16+nanj) (-32+nanj) +add (-16+16j) (-2-infj) (-18-infj) +add (-16+16j) (-2-16j) (-18+0j) +add (-16+16j) (-2-2j) (-18+14j) +add (-16+16j) (-2-0j) (-18+16j) +add (-16+16j) (-2+0j) (-18+16j) +add (-16+16j) (-2+2j) (-18+18j) +add (-16+16j) (-2+16j) (-18+32j) +add (-16+16j) (-2+infj) (-18+infj) +add (-16+16j) (-2+nanj) (-18+nanj) +add (-16+16j) (-0-infj) (-16-infj) +add (-16+16j) (-0-16j) (-16+0j) +add (-16+16j) (-0-2j) (-16+14j) +add (-16+16j) (-0-0j) (-16+16j) +add (-16+16j) (-0+0j) (-16+16j) +add (-16+16j) (-0+2j) (-16+18j) +add (-16+16j) (-0+16j) (-16+32j) +add (-16+16j) (-0+infj) (-16+infj) +add (-16+16j) (-0+nanj) (-16+nanj) +add (-16+16j) -infj (-16-infj) +add (-16+16j) -16j (-16+0j) +add (-16+16j) -2j (-16+14j) +add (-16+16j) -0j (-16+16j) +add (-16+16j) 0j (-16+16j) +add (-16+16j) 2j (-16+18j) +add (-16+16j) 16j (-16+32j) +add (-16+16j) infj (-16+infj) +add (-16+16j) nanj (-16+nanj) +add (-16+16j) (2-infj) (-14-infj) +add (-16+16j) (2-16j) (-14+0j) +add (-16+16j) (2-2j) (-14+14j) +add (-16+16j) (2-0j) (-14+16j) +add (-16+16j) (2+0j) (-14+16j) +add (-16+16j) (2+2j) (-14+18j) +add (-16+16j) (2+16j) (-14+32j) +add (-16+16j) (2+infj) (-14+infj) +add (-16+16j) (2+nanj) (-14+nanj) +add (-16+16j) (16-infj) -infj +add (-16+16j) (16-16j) 0j +add (-16+16j) (16-2j) 14j +add (-16+16j) (16-0j) 16j +add (-16+16j) (16+0j) 16j +add (-16+16j) (16+2j) 18j +add (-16+16j) (16+16j) 32j +add (-16+16j) (16+infj) infj +add (-16+16j) (16+nanj) nanj +add (-16+16j) (inf-infj) (inf-infj) +add (-16+16j) (inf-16j) (inf+0j) +add (-16+16j) (inf-2j) (inf+14j) +add (-16+16j) (inf-0j) (inf+16j) +add (-16+16j) (inf+0j) (inf+16j) +add (-16+16j) (inf+2j) (inf+18j) +add (-16+16j) (inf+16j) (inf+32j) +add (-16+16j) (inf+infj) (inf+infj) +add (-16+16j) (inf+nanj) (inf+nanj) +add (-16+16j) (nan-infj) (nan-infj) +add (-16+16j) (nan-16j) (nan+0j) +add (-16+16j) (nan-2j) (nan+14j) +add (-16+16j) (nan-0j) (nan+16j) +add (-16+16j) (nan+0j) (nan+16j) +add (-16+16j) (nan+2j) (nan+18j) +add (-16+16j) (nan+16j) (nan+32j) +add (-16+16j) (nan+infj) (nan+infj) +add (-16+16j) (nan+nanj) (nan+nanj) +add (-16+infj) (-inf-infj) (-inf+nanj) +add (-16+infj) (-inf-16j) (-inf+infj) +add (-16+infj) (-inf-2j) (-inf+infj) +add (-16+infj) (-inf-0j) (-inf+infj) +add (-16+infj) (-inf+0j) (-inf+infj) +add (-16+infj) (-inf+2j) (-inf+infj) +add (-16+infj) (-inf+16j) (-inf+infj) +add (-16+infj) (-inf+infj) (-inf+infj) +add (-16+infj) (-inf+nanj) (-inf+nanj) +add (-16+infj) (-16-infj) (-32+nanj) +add (-16+infj) (-16-16j) (-32+infj) +add (-16+infj) (-16-2j) (-32+infj) +add (-16+infj) (-16-0j) (-32+infj) +add (-16+infj) (-16+0j) (-32+infj) +add (-16+infj) (-16+2j) (-32+infj) +add (-16+infj) (-16+16j) (-32+infj) +add (-16+infj) (-16+infj) (-32+infj) +add (-16+infj) (-16+nanj) (-32+nanj) +add (-16+infj) (-2-infj) (-18+nanj) +add (-16+infj) (-2-16j) (-18+infj) +add (-16+infj) (-2-2j) (-18+infj) +add (-16+infj) (-2-0j) (-18+infj) +add (-16+infj) (-2+0j) (-18+infj) +add (-16+infj) (-2+2j) (-18+infj) +add (-16+infj) (-2+16j) (-18+infj) +add (-16+infj) (-2+infj) (-18+infj) +add (-16+infj) (-2+nanj) (-18+nanj) +add (-16+infj) (-0-infj) (-16+nanj) +add (-16+infj) (-0-16j) (-16+infj) +add (-16+infj) (-0-2j) (-16+infj) +add (-16+infj) (-0-0j) (-16+infj) +add (-16+infj) (-0+0j) (-16+infj) +add (-16+infj) (-0+2j) (-16+infj) +add (-16+infj) (-0+16j) (-16+infj) +add (-16+infj) (-0+infj) (-16+infj) +add (-16+infj) (-0+nanj) (-16+nanj) +add (-16+infj) -infj (-16+nanj) +add (-16+infj) -16j (-16+infj) +add (-16+infj) -2j (-16+infj) +add (-16+infj) -0j (-16+infj) +add (-16+infj) 0j (-16+infj) +add (-16+infj) 2j (-16+infj) +add (-16+infj) 16j (-16+infj) +add (-16+infj) infj (-16+infj) +add (-16+infj) nanj (-16+nanj) +add (-16+infj) (2-infj) (-14+nanj) +add (-16+infj) (2-16j) (-14+infj) +add (-16+infj) (2-2j) (-14+infj) +add (-16+infj) (2-0j) (-14+infj) +add (-16+infj) (2+0j) (-14+infj) +add (-16+infj) (2+2j) (-14+infj) +add (-16+infj) (2+16j) (-14+infj) +add (-16+infj) (2+infj) (-14+infj) +add (-16+infj) (2+nanj) (-14+nanj) +add (-16+infj) (16-infj) nanj +add (-16+infj) (16-16j) infj +add (-16+infj) (16-2j) infj +add (-16+infj) (16-0j) infj +add (-16+infj) (16+0j) infj +add (-16+infj) (16+2j) infj +add (-16+infj) (16+16j) infj +add (-16+infj) (16+infj) infj +add (-16+infj) (16+nanj) nanj +add (-16+infj) (inf-infj) (inf+nanj) +add (-16+infj) (inf-16j) (inf+infj) +add (-16+infj) (inf-2j) (inf+infj) +add (-16+infj) (inf-0j) (inf+infj) +add (-16+infj) (inf+0j) (inf+infj) +add (-16+infj) (inf+2j) (inf+infj) +add (-16+infj) (inf+16j) (inf+infj) +add (-16+infj) (inf+infj) (inf+infj) +add (-16+infj) (inf+nanj) (inf+nanj) +add (-16+infj) (nan-infj) (nan+nanj) +add (-16+infj) (nan-16j) (nan+infj) +add (-16+infj) (nan-2j) (nan+infj) +add (-16+infj) (nan-0j) (nan+infj) +add (-16+infj) (nan+0j) (nan+infj) +add (-16+infj) (nan+2j) (nan+infj) +add (-16+infj) (nan+16j) (nan+infj) +add (-16+infj) (nan+infj) (nan+infj) +add (-16+infj) (nan+nanj) (nan+nanj) +add (-16+nanj) (-inf-infj) (-inf+nanj) +add (-16+nanj) (-inf-16j) (-inf+nanj) +add (-16+nanj) (-inf-2j) (-inf+nanj) +add (-16+nanj) (-inf-0j) (-inf+nanj) +add (-16+nanj) (-inf+0j) (-inf+nanj) +add (-16+nanj) (-inf+2j) (-inf+nanj) +add (-16+nanj) (-inf+16j) (-inf+nanj) +add (-16+nanj) (-inf+infj) (-inf+nanj) +add (-16+nanj) (-inf+nanj) (-inf+nanj) +add (-16+nanj) (-16-infj) (-32+nanj) +add (-16+nanj) (-16-16j) (-32+nanj) +add (-16+nanj) (-16-2j) (-32+nanj) +add (-16+nanj) (-16-0j) (-32+nanj) +add (-16+nanj) (-16+0j) (-32+nanj) +add (-16+nanj) (-16+2j) (-32+nanj) +add (-16+nanj) (-16+16j) (-32+nanj) +add (-16+nanj) (-16+infj) (-32+nanj) +add (-16+nanj) (-16+nanj) (-32+nanj) +add (-16+nanj) (-2-infj) (-18+nanj) +add (-16+nanj) (-2-16j) (-18+nanj) +add (-16+nanj) (-2-2j) (-18+nanj) +add (-16+nanj) (-2-0j) (-18+nanj) +add (-16+nanj) (-2+0j) (-18+nanj) +add (-16+nanj) (-2+2j) (-18+nanj) +add (-16+nanj) (-2+16j) (-18+nanj) +add (-16+nanj) (-2+infj) (-18+nanj) +add (-16+nanj) (-2+nanj) (-18+nanj) +add (-16+nanj) (-0-infj) (-16+nanj) +add (-16+nanj) (-0-16j) (-16+nanj) +add (-16+nanj) (-0-2j) (-16+nanj) +add (-16+nanj) (-0-0j) (-16+nanj) +add (-16+nanj) (-0+0j) (-16+nanj) +add (-16+nanj) (-0+2j) (-16+nanj) +add (-16+nanj) (-0+16j) (-16+nanj) +add (-16+nanj) (-0+infj) (-16+nanj) +add (-16+nanj) (-0+nanj) (-16+nanj) +add (-16+nanj) -infj (-16+nanj) +add (-16+nanj) -16j (-16+nanj) +add (-16+nanj) -2j (-16+nanj) +add (-16+nanj) -0j (-16+nanj) +add (-16+nanj) 0j (-16+nanj) +add (-16+nanj) 2j (-16+nanj) +add (-16+nanj) 16j (-16+nanj) +add (-16+nanj) infj (-16+nanj) +add (-16+nanj) nanj (-16+nanj) +add (-16+nanj) (2-infj) (-14+nanj) +add (-16+nanj) (2-16j) (-14+nanj) +add (-16+nanj) (2-2j) (-14+nanj) +add (-16+nanj) (2-0j) (-14+nanj) +add (-16+nanj) (2+0j) (-14+nanj) +add (-16+nanj) (2+2j) (-14+nanj) +add (-16+nanj) (2+16j) (-14+nanj) +add (-16+nanj) (2+infj) (-14+nanj) +add (-16+nanj) (2+nanj) (-14+nanj) +add (-16+nanj) (16-infj) nanj +add (-16+nanj) (16-16j) nanj +add (-16+nanj) (16-2j) nanj +add (-16+nanj) (16-0j) nanj +add (-16+nanj) (16+0j) nanj +add (-16+nanj) (16+2j) nanj +add (-16+nanj) (16+16j) nanj +add (-16+nanj) (16+infj) nanj +add (-16+nanj) (16+nanj) nanj +add (-16+nanj) (inf-infj) (inf+nanj) +add (-16+nanj) (inf-16j) (inf+nanj) +add (-16+nanj) (inf-2j) (inf+nanj) +add (-16+nanj) (inf-0j) (inf+nanj) +add (-16+nanj) (inf+0j) (inf+nanj) +add (-16+nanj) (inf+2j) (inf+nanj) +add (-16+nanj) (inf+16j) (inf+nanj) +add (-16+nanj) (inf+infj) (inf+nanj) +add (-16+nanj) (inf+nanj) (inf+nanj) +add (-16+nanj) (nan-infj) (nan+nanj) +add (-16+nanj) (nan-16j) (nan+nanj) +add (-16+nanj) (nan-2j) (nan+nanj) +add (-16+nanj) (nan-0j) (nan+nanj) +add (-16+nanj) (nan+0j) (nan+nanj) +add (-16+nanj) (nan+2j) (nan+nanj) +add (-16+nanj) (nan+16j) (nan+nanj) +add (-16+nanj) (nan+infj) (nan+nanj) +add (-16+nanj) (nan+nanj) (nan+nanj) +add (-2-infj) (-inf-infj) (-inf-infj) +add (-2-infj) (-inf-16j) (-inf-infj) +add (-2-infj) (-inf-2j) (-inf-infj) +add (-2-infj) (-inf-0j) (-inf-infj) +add (-2-infj) (-inf+0j) (-inf-infj) +add (-2-infj) (-inf+2j) (-inf-infj) +add (-2-infj) (-inf+16j) (-inf-infj) +add (-2-infj) (-inf+infj) (-inf+nanj) +add (-2-infj) (-inf+nanj) (-inf+nanj) +add (-2-infj) (-16-infj) (-18-infj) +add (-2-infj) (-16-16j) (-18-infj) +add (-2-infj) (-16-2j) (-18-infj) +add (-2-infj) (-16-0j) (-18-infj) +add (-2-infj) (-16+0j) (-18-infj) +add (-2-infj) (-16+2j) (-18-infj) +add (-2-infj) (-16+16j) (-18-infj) +add (-2-infj) (-16+infj) (-18+nanj) +add (-2-infj) (-16+nanj) (-18+nanj) +add (-2-infj) (-2-infj) (-4-infj) +add (-2-infj) (-2-16j) (-4-infj) +add (-2-infj) (-2-2j) (-4-infj) +add (-2-infj) (-2-0j) (-4-infj) +add (-2-infj) (-2+0j) (-4-infj) +add (-2-infj) (-2+2j) (-4-infj) +add (-2-infj) (-2+16j) (-4-infj) +add (-2-infj) (-2+infj) (-4+nanj) +add (-2-infj) (-2+nanj) (-4+nanj) +add (-2-infj) (-0-infj) (-2-infj) +add (-2-infj) (-0-16j) (-2-infj) +add (-2-infj) (-0-2j) (-2-infj) +add (-2-infj) (-0-0j) (-2-infj) +add (-2-infj) (-0+0j) (-2-infj) +add (-2-infj) (-0+2j) (-2-infj) +add (-2-infj) (-0+16j) (-2-infj) +add (-2-infj) (-0+infj) (-2+nanj) +add (-2-infj) (-0+nanj) (-2+nanj) +add (-2-infj) -infj (-2-infj) +add (-2-infj) -16j (-2-infj) +add (-2-infj) -2j (-2-infj) +add (-2-infj) -0j (-2-infj) +add (-2-infj) 0j (-2-infj) +add (-2-infj) 2j (-2-infj) +add (-2-infj) 16j (-2-infj) +add (-2-infj) infj (-2+nanj) +add (-2-infj) nanj (-2+nanj) +add (-2-infj) (2-infj) -infj +add (-2-infj) (2-16j) -infj +add (-2-infj) (2-2j) -infj +add (-2-infj) (2-0j) -infj +add (-2-infj) (2+0j) -infj +add (-2-infj) (2+2j) -infj +add (-2-infj) (2+16j) -infj +add (-2-infj) (2+infj) nanj +add (-2-infj) (2+nanj) nanj +add (-2-infj) (16-infj) (14-infj) +add (-2-infj) (16-16j) (14-infj) +add (-2-infj) (16-2j) (14-infj) +add (-2-infj) (16-0j) (14-infj) +add (-2-infj) (16+0j) (14-infj) +add (-2-infj) (16+2j) (14-infj) +add (-2-infj) (16+16j) (14-infj) +add (-2-infj) (16+infj) (14+nanj) +add (-2-infj) (16+nanj) (14+nanj) +add (-2-infj) (inf-infj) (inf-infj) +add (-2-infj) (inf-16j) (inf-infj) +add (-2-infj) (inf-2j) (inf-infj) +add (-2-infj) (inf-0j) (inf-infj) +add (-2-infj) (inf+0j) (inf-infj) +add (-2-infj) (inf+2j) (inf-infj) +add (-2-infj) (inf+16j) (inf-infj) +add (-2-infj) (inf+infj) (inf+nanj) +add (-2-infj) (inf+nanj) (inf+nanj) +add (-2-infj) (nan-infj) (nan-infj) +add (-2-infj) (nan-16j) (nan-infj) +add (-2-infj) (nan-2j) (nan-infj) +add (-2-infj) (nan-0j) (nan-infj) +add (-2-infj) (nan+0j) (nan-infj) +add (-2-infj) (nan+2j) (nan-infj) +add (-2-infj) (nan+16j) (nan-infj) +add (-2-infj) (nan+infj) (nan+nanj) +add (-2-infj) (nan+nanj) (nan+nanj) +add (-2-16j) (-inf-infj) (-inf-infj) +add (-2-16j) (-inf-16j) (-inf-32j) +add (-2-16j) (-inf-2j) (-inf-18j) +add (-2-16j) (-inf-0j) (-inf-16j) +add (-2-16j) (-inf+0j) (-inf-16j) +add (-2-16j) (-inf+2j) (-inf-14j) +add (-2-16j) (-inf+16j) (-inf+0j) +add (-2-16j) (-inf+infj) (-inf+infj) +add (-2-16j) (-inf+nanj) (-inf+nanj) +add (-2-16j) (-16-infj) (-18-infj) +add (-2-16j) (-16-16j) (-18-32j) +add (-2-16j) (-16-2j) (-18-18j) +add (-2-16j) (-16-0j) (-18-16j) +add (-2-16j) (-16+0j) (-18-16j) +add (-2-16j) (-16+2j) (-18-14j) +add (-2-16j) (-16+16j) (-18+0j) +add (-2-16j) (-16+infj) (-18+infj) +add (-2-16j) (-16+nanj) (-18+nanj) +add (-2-16j) (-2-infj) (-4-infj) +add (-2-16j) (-2-16j) (-4-32j) +add (-2-16j) (-2-2j) (-4-18j) +add (-2-16j) (-2-0j) (-4-16j) +add (-2-16j) (-2+0j) (-4-16j) +add (-2-16j) (-2+2j) (-4-14j) +add (-2-16j) (-2+16j) (-4+0j) +add (-2-16j) (-2+infj) (-4+infj) +add (-2-16j) (-2+nanj) (-4+nanj) +add (-2-16j) (-0-infj) (-2-infj) +add (-2-16j) (-0-16j) (-2-32j) +add (-2-16j) (-0-2j) (-2-18j) +add (-2-16j) (-0-0j) (-2-16j) +add (-2-16j) (-0+0j) (-2-16j) +add (-2-16j) (-0+2j) (-2-14j) +add (-2-16j) (-0+16j) (-2+0j) +add (-2-16j) (-0+infj) (-2+infj) +add (-2-16j) (-0+nanj) (-2+nanj) +add (-2-16j) -infj (-2-infj) +add (-2-16j) -16j (-2-32j) +add (-2-16j) -2j (-2-18j) +add (-2-16j) -0j (-2-16j) +add (-2-16j) 0j (-2-16j) +add (-2-16j) 2j (-2-14j) +add (-2-16j) 16j (-2+0j) +add (-2-16j) infj (-2+infj) +add (-2-16j) nanj (-2+nanj) +add (-2-16j) (2-infj) -infj +add (-2-16j) (2-16j) -32j +add (-2-16j) (2-2j) -18j +add (-2-16j) (2-0j) -16j +add (-2-16j) (2+0j) -16j +add (-2-16j) (2+2j) -14j +add (-2-16j) (2+16j) 0j +add (-2-16j) (2+infj) infj +add (-2-16j) (2+nanj) nanj +add (-2-16j) (16-infj) (14-infj) +add (-2-16j) (16-16j) (14-32j) +add (-2-16j) (16-2j) (14-18j) +add (-2-16j) (16-0j) (14-16j) +add (-2-16j) (16+0j) (14-16j) +add (-2-16j) (16+2j) (14-14j) +add (-2-16j) (16+16j) (14+0j) +add (-2-16j) (16+infj) (14+infj) +add (-2-16j) (16+nanj) (14+nanj) +add (-2-16j) (inf-infj) (inf-infj) +add (-2-16j) (inf-16j) (inf-32j) +add (-2-16j) (inf-2j) (inf-18j) +add (-2-16j) (inf-0j) (inf-16j) +add (-2-16j) (inf+0j) (inf-16j) +add (-2-16j) (inf+2j) (inf-14j) +add (-2-16j) (inf+16j) (inf+0j) +add (-2-16j) (inf+infj) (inf+infj) +add (-2-16j) (inf+nanj) (inf+nanj) +add (-2-16j) (nan-infj) (nan-infj) +add (-2-16j) (nan-16j) (nan-32j) +add (-2-16j) (nan-2j) (nan-18j) +add (-2-16j) (nan-0j) (nan-16j) +add (-2-16j) (nan+0j) (nan-16j) +add (-2-16j) (nan+2j) (nan-14j) +add (-2-16j) (nan+16j) (nan+0j) +add (-2-16j) (nan+infj) (nan+infj) +add (-2-16j) (nan+nanj) (nan+nanj) +add (-2-2j) (-inf-infj) (-inf-infj) +add (-2-2j) (-inf-16j) (-inf-18j) +add (-2-2j) (-inf-2j) (-inf-4j) +add (-2-2j) (-inf-0j) (-inf-2j) +add (-2-2j) (-inf+0j) (-inf-2j) +add (-2-2j) (-inf+2j) (-inf+0j) +add (-2-2j) (-inf+16j) (-inf+14j) +add (-2-2j) (-inf+infj) (-inf+infj) +add (-2-2j) (-inf+nanj) (-inf+nanj) +add (-2-2j) (-16-infj) (-18-infj) +add (-2-2j) (-16-16j) (-18-18j) +add (-2-2j) (-16-2j) (-18-4j) +add (-2-2j) (-16-0j) (-18-2j) +add (-2-2j) (-16+0j) (-18-2j) +add (-2-2j) (-16+2j) (-18+0j) +add (-2-2j) (-16+16j) (-18+14j) +add (-2-2j) (-16+infj) (-18+infj) +add (-2-2j) (-16+nanj) (-18+nanj) +add (-2-2j) (-2-infj) (-4-infj) +add (-2-2j) (-2-16j) (-4-18j) +add (-2-2j) (-2-2j) (-4-4j) +add (-2-2j) (-2-0j) (-4-2j) +add (-2-2j) (-2+0j) (-4-2j) +add (-2-2j) (-2+2j) (-4+0j) +add (-2-2j) (-2+16j) (-4+14j) +add (-2-2j) (-2+infj) (-4+infj) +add (-2-2j) (-2+nanj) (-4+nanj) +add (-2-2j) (-0-infj) (-2-infj) +add (-2-2j) (-0-16j) (-2-18j) +add (-2-2j) (-0-2j) (-2-4j) +add (-2-2j) (-0-0j) (-2-2j) +add (-2-2j) (-0+0j) (-2-2j) +add (-2-2j) (-0+2j) (-2+0j) +add (-2-2j) (-0+16j) (-2+14j) +add (-2-2j) (-0+infj) (-2+infj) +add (-2-2j) (-0+nanj) (-2+nanj) +add (-2-2j) -infj (-2-infj) +add (-2-2j) -16j (-2-18j) +add (-2-2j) -2j (-2-4j) +add (-2-2j) -0j (-2-2j) +add (-2-2j) 0j (-2-2j) +add (-2-2j) 2j (-2+0j) +add (-2-2j) 16j (-2+14j) +add (-2-2j) infj (-2+infj) +add (-2-2j) nanj (-2+nanj) +add (-2-2j) (2-infj) -infj +add (-2-2j) (2-16j) -18j +add (-2-2j) (2-2j) -4j +add (-2-2j) (2-0j) -2j +add (-2-2j) (2+0j) -2j +add (-2-2j) (2+2j) 0j +add (-2-2j) (2+16j) 14j +add (-2-2j) (2+infj) infj +add (-2-2j) (2+nanj) nanj +add (-2-2j) (16-infj) (14-infj) +add (-2-2j) (16-16j) (14-18j) +add (-2-2j) (16-2j) (14-4j) +add (-2-2j) (16-0j) (14-2j) +add (-2-2j) (16+0j) (14-2j) +add (-2-2j) (16+2j) (14+0j) +add (-2-2j) (16+16j) (14+14j) +add (-2-2j) (16+infj) (14+infj) +add (-2-2j) (16+nanj) (14+nanj) +add (-2-2j) (inf-infj) (inf-infj) +add (-2-2j) (inf-16j) (inf-18j) +add (-2-2j) (inf-2j) (inf-4j) +add (-2-2j) (inf-0j) (inf-2j) +add (-2-2j) (inf+0j) (inf-2j) +add (-2-2j) (inf+2j) (inf+0j) +add (-2-2j) (inf+16j) (inf+14j) +add (-2-2j) (inf+infj) (inf+infj) +add (-2-2j) (inf+nanj) (inf+nanj) +add (-2-2j) (nan-infj) (nan-infj) +add (-2-2j) (nan-16j) (nan-18j) +add (-2-2j) (nan-2j) (nan-4j) +add (-2-2j) (nan-0j) (nan-2j) +add (-2-2j) (nan+0j) (nan-2j) +add (-2-2j) (nan+2j) (nan+0j) +add (-2-2j) (nan+16j) (nan+14j) +add (-2-2j) (nan+infj) (nan+infj) +add (-2-2j) (nan+nanj) (nan+nanj) +add (-2-0j) (-inf-infj) (-inf-infj) +add (-2-0j) (-inf-16j) (-inf-16j) +add (-2-0j) (-inf-2j) (-inf-2j) +add (-2-0j) (-inf-0j) (-inf-0j) +add (-2-0j) (-inf+0j) (-inf+0j) +add (-2-0j) (-inf+2j) (-inf+2j) +add (-2-0j) (-inf+16j) (-inf+16j) +add (-2-0j) (-inf+infj) (-inf+infj) +add (-2-0j) (-inf+nanj) (-inf+nanj) +add (-2-0j) (-16-infj) (-18-infj) +add (-2-0j) (-16-16j) (-18-16j) +add (-2-0j) (-16-2j) (-18-2j) +add (-2-0j) (-16-0j) (-18-0j) +add (-2-0j) (-16+0j) (-18+0j) +add (-2-0j) (-16+2j) (-18+2j) +add (-2-0j) (-16+16j) (-18+16j) +add (-2-0j) (-16+infj) (-18+infj) +add (-2-0j) (-16+nanj) (-18+nanj) +add (-2-0j) (-2-infj) (-4-infj) +add (-2-0j) (-2-16j) (-4-16j) +add (-2-0j) (-2-2j) (-4-2j) +add (-2-0j) (-2-0j) (-4-0j) +add (-2-0j) (-2+0j) (-4+0j) +add (-2-0j) (-2+2j) (-4+2j) +add (-2-0j) (-2+16j) (-4+16j) +add (-2-0j) (-2+infj) (-4+infj) +add (-2-0j) (-2+nanj) (-4+nanj) +add (-2-0j) (-0-infj) (-2-infj) +add (-2-0j) (-0-16j) (-2-16j) +add (-2-0j) (-0-2j) (-2-2j) +add (-2-0j) (-0-0j) (-2-0j) +add (-2-0j) (-0+0j) (-2+0j) +add (-2-0j) (-0+2j) (-2+2j) +add (-2-0j) (-0+16j) (-2+16j) +add (-2-0j) (-0+infj) (-2+infj) +add (-2-0j) (-0+nanj) (-2+nanj) +add (-2-0j) -infj (-2-infj) +add (-2-0j) -16j (-2-16j) +add (-2-0j) -2j (-2-2j) +add (-2-0j) -0j (-2-0j) +add (-2-0j) 0j (-2+0j) +add (-2-0j) 2j (-2+2j) +add (-2-0j) 16j (-2+16j) +add (-2-0j) infj (-2+infj) +add (-2-0j) nanj (-2+nanj) +add (-2-0j) (2-infj) -infj +add (-2-0j) (2-16j) -16j +add (-2-0j) (2-2j) -2j +add (-2-0j) (2-0j) -0j +add (-2-0j) (2+0j) 0j +add (-2-0j) (2+2j) 2j +add (-2-0j) (2+16j) 16j +add (-2-0j) (2+infj) infj +add (-2-0j) (2+nanj) nanj +add (-2-0j) (16-infj) (14-infj) +add (-2-0j) (16-16j) (14-16j) +add (-2-0j) (16-2j) (14-2j) +add (-2-0j) (16-0j) (14-0j) +add (-2-0j) (16+0j) (14+0j) +add (-2-0j) (16+2j) (14+2j) +add (-2-0j) (16+16j) (14+16j) +add (-2-0j) (16+infj) (14+infj) +add (-2-0j) (16+nanj) (14+nanj) +add (-2-0j) (inf-infj) (inf-infj) +add (-2-0j) (inf-16j) (inf-16j) +add (-2-0j) (inf-2j) (inf-2j) +add (-2-0j) (inf-0j) (inf-0j) +add (-2-0j) (inf+0j) (inf+0j) +add (-2-0j) (inf+2j) (inf+2j) +add (-2-0j) (inf+16j) (inf+16j) +add (-2-0j) (inf+infj) (inf+infj) +add (-2-0j) (inf+nanj) (inf+nanj) +add (-2-0j) (nan-infj) (nan-infj) +add (-2-0j) (nan-16j) (nan-16j) +add (-2-0j) (nan-2j) (nan-2j) +add (-2-0j) (nan-0j) (nan-0j) +add (-2-0j) (nan+0j) (nan+0j) +add (-2-0j) (nan+2j) (nan+2j) +add (-2-0j) (nan+16j) (nan+16j) +add (-2-0j) (nan+infj) (nan+infj) +add (-2-0j) (nan+nanj) (nan+nanj) +add (-2+0j) (-inf-infj) (-inf-infj) +add (-2+0j) (-inf-16j) (-inf-16j) +add (-2+0j) (-inf-2j) (-inf-2j) +add (-2+0j) (-inf-0j) (-inf+0j) +add (-2+0j) (-inf+0j) (-inf+0j) +add (-2+0j) (-inf+2j) (-inf+2j) +add (-2+0j) (-inf+16j) (-inf+16j) +add (-2+0j) (-inf+infj) (-inf+infj) +add (-2+0j) (-inf+nanj) (-inf+nanj) +add (-2+0j) (-16-infj) (-18-infj) +add (-2+0j) (-16-16j) (-18-16j) +add (-2+0j) (-16-2j) (-18-2j) +add (-2+0j) (-16-0j) (-18+0j) +add (-2+0j) (-16+0j) (-18+0j) +add (-2+0j) (-16+2j) (-18+2j) +add (-2+0j) (-16+16j) (-18+16j) +add (-2+0j) (-16+infj) (-18+infj) +add (-2+0j) (-16+nanj) (-18+nanj) +add (-2+0j) (-2-infj) (-4-infj) +add (-2+0j) (-2-16j) (-4-16j) +add (-2+0j) (-2-2j) (-4-2j) +add (-2+0j) (-2-0j) (-4+0j) +add (-2+0j) (-2+0j) (-4+0j) +add (-2+0j) (-2+2j) (-4+2j) +add (-2+0j) (-2+16j) (-4+16j) +add (-2+0j) (-2+infj) (-4+infj) +add (-2+0j) (-2+nanj) (-4+nanj) +add (-2+0j) (-0-infj) (-2-infj) +add (-2+0j) (-0-16j) (-2-16j) +add (-2+0j) (-0-2j) (-2-2j) +add (-2+0j) (-0-0j) (-2+0j) +add (-2+0j) (-0+0j) (-2+0j) +add (-2+0j) (-0+2j) (-2+2j) +add (-2+0j) (-0+16j) (-2+16j) +add (-2+0j) (-0+infj) (-2+infj) +add (-2+0j) (-0+nanj) (-2+nanj) +add (-2+0j) -infj (-2-infj) +add (-2+0j) -16j (-2-16j) +add (-2+0j) -2j (-2-2j) +add (-2+0j) -0j (-2+0j) +add (-2+0j) 0j (-2+0j) +add (-2+0j) 2j (-2+2j) +add (-2+0j) 16j (-2+16j) +add (-2+0j) infj (-2+infj) +add (-2+0j) nanj (-2+nanj) +add (-2+0j) (2-infj) -infj +add (-2+0j) (2-16j) -16j +add (-2+0j) (2-2j) -2j +add (-2+0j) (2-0j) 0j +add (-2+0j) (2+0j) 0j +add (-2+0j) (2+2j) 2j +add (-2+0j) (2+16j) 16j +add (-2+0j) (2+infj) infj +add (-2+0j) (2+nanj) nanj +add (-2+0j) (16-infj) (14-infj) +add (-2+0j) (16-16j) (14-16j) +add (-2+0j) (16-2j) (14-2j) +add (-2+0j) (16-0j) (14+0j) +add (-2+0j) (16+0j) (14+0j) +add (-2+0j) (16+2j) (14+2j) +add (-2+0j) (16+16j) (14+16j) +add (-2+0j) (16+infj) (14+infj) +add (-2+0j) (16+nanj) (14+nanj) +add (-2+0j) (inf-infj) (inf-infj) +add (-2+0j) (inf-16j) (inf-16j) +add (-2+0j) (inf-2j) (inf-2j) +add (-2+0j) (inf-0j) (inf+0j) +add (-2+0j) (inf+0j) (inf+0j) +add (-2+0j) (inf+2j) (inf+2j) +add (-2+0j) (inf+16j) (inf+16j) +add (-2+0j) (inf+infj) (inf+infj) +add (-2+0j) (inf+nanj) (inf+nanj) +add (-2+0j) (nan-infj) (nan-infj) +add (-2+0j) (nan-16j) (nan-16j) +add (-2+0j) (nan-2j) (nan-2j) +add (-2+0j) (nan-0j) (nan+0j) +add (-2+0j) (nan+0j) (nan+0j) +add (-2+0j) (nan+2j) (nan+2j) +add (-2+0j) (nan+16j) (nan+16j) +add (-2+0j) (nan+infj) (nan+infj) +add (-2+0j) (nan+nanj) (nan+nanj) +add (-2+2j) (-inf-infj) (-inf-infj) +add (-2+2j) (-inf-16j) (-inf-14j) +add (-2+2j) (-inf-2j) (-inf+0j) +add (-2+2j) (-inf-0j) (-inf+2j) +add (-2+2j) (-inf+0j) (-inf+2j) +add (-2+2j) (-inf+2j) (-inf+4j) +add (-2+2j) (-inf+16j) (-inf+18j) +add (-2+2j) (-inf+infj) (-inf+infj) +add (-2+2j) (-inf+nanj) (-inf+nanj) +add (-2+2j) (-16-infj) (-18-infj) +add (-2+2j) (-16-16j) (-18-14j) +add (-2+2j) (-16-2j) (-18+0j) +add (-2+2j) (-16-0j) (-18+2j) +add (-2+2j) (-16+0j) (-18+2j) +add (-2+2j) (-16+2j) (-18+4j) +add (-2+2j) (-16+16j) (-18+18j) +add (-2+2j) (-16+infj) (-18+infj) +add (-2+2j) (-16+nanj) (-18+nanj) +add (-2+2j) (-2-infj) (-4-infj) +add (-2+2j) (-2-16j) (-4-14j) +add (-2+2j) (-2-2j) (-4+0j) +add (-2+2j) (-2-0j) (-4+2j) +add (-2+2j) (-2+0j) (-4+2j) +add (-2+2j) (-2+2j) (-4+4j) +add (-2+2j) (-2+16j) (-4+18j) +add (-2+2j) (-2+infj) (-4+infj) +add (-2+2j) (-2+nanj) (-4+nanj) +add (-2+2j) (-0-infj) (-2-infj) +add (-2+2j) (-0-16j) (-2-14j) +add (-2+2j) (-0-2j) (-2+0j) +add (-2+2j) (-0-0j) (-2+2j) +add (-2+2j) (-0+0j) (-2+2j) +add (-2+2j) (-0+2j) (-2+4j) +add (-2+2j) (-0+16j) (-2+18j) +add (-2+2j) (-0+infj) (-2+infj) +add (-2+2j) (-0+nanj) (-2+nanj) +add (-2+2j) -infj (-2-infj) +add (-2+2j) -16j (-2-14j) +add (-2+2j) -2j (-2+0j) +add (-2+2j) -0j (-2+2j) +add (-2+2j) 0j (-2+2j) +add (-2+2j) 2j (-2+4j) +add (-2+2j) 16j (-2+18j) +add (-2+2j) infj (-2+infj) +add (-2+2j) nanj (-2+nanj) +add (-2+2j) (2-infj) -infj +add (-2+2j) (2-16j) -14j +add (-2+2j) (2-2j) 0j +add (-2+2j) (2-0j) 2j +add (-2+2j) (2+0j) 2j +add (-2+2j) (2+2j) 4j +add (-2+2j) (2+16j) 18j +add (-2+2j) (2+infj) infj +add (-2+2j) (2+nanj) nanj +add (-2+2j) (16-infj) (14-infj) +add (-2+2j) (16-16j) (14-14j) +add (-2+2j) (16-2j) (14+0j) +add (-2+2j) (16-0j) (14+2j) +add (-2+2j) (16+0j) (14+2j) +add (-2+2j) (16+2j) (14+4j) +add (-2+2j) (16+16j) (14+18j) +add (-2+2j) (16+infj) (14+infj) +add (-2+2j) (16+nanj) (14+nanj) +add (-2+2j) (inf-infj) (inf-infj) +add (-2+2j) (inf-16j) (inf-14j) +add (-2+2j) (inf-2j) (inf+0j) +add (-2+2j) (inf-0j) (inf+2j) +add (-2+2j) (inf+0j) (inf+2j) +add (-2+2j) (inf+2j) (inf+4j) +add (-2+2j) (inf+16j) (inf+18j) +add (-2+2j) (inf+infj) (inf+infj) +add (-2+2j) (inf+nanj) (inf+nanj) +add (-2+2j) (nan-infj) (nan-infj) +add (-2+2j) (nan-16j) (nan-14j) +add (-2+2j) (nan-2j) (nan+0j) +add (-2+2j) (nan-0j) (nan+2j) +add (-2+2j) (nan+0j) (nan+2j) +add (-2+2j) (nan+2j) (nan+4j) +add (-2+2j) (nan+16j) (nan+18j) +add (-2+2j) (nan+infj) (nan+infj) +add (-2+2j) (nan+nanj) (nan+nanj) +add (-2+16j) (-inf-infj) (-inf-infj) +add (-2+16j) (-inf-16j) (-inf+0j) +add (-2+16j) (-inf-2j) (-inf+14j) +add (-2+16j) (-inf-0j) (-inf+16j) +add (-2+16j) (-inf+0j) (-inf+16j) +add (-2+16j) (-inf+2j) (-inf+18j) +add (-2+16j) (-inf+16j) (-inf+32j) +add (-2+16j) (-inf+infj) (-inf+infj) +add (-2+16j) (-inf+nanj) (-inf+nanj) +add (-2+16j) (-16-infj) (-18-infj) +add (-2+16j) (-16-16j) (-18+0j) +add (-2+16j) (-16-2j) (-18+14j) +add (-2+16j) (-16-0j) (-18+16j) +add (-2+16j) (-16+0j) (-18+16j) +add (-2+16j) (-16+2j) (-18+18j) +add (-2+16j) (-16+16j) (-18+32j) +add (-2+16j) (-16+infj) (-18+infj) +add (-2+16j) (-16+nanj) (-18+nanj) +add (-2+16j) (-2-infj) (-4-infj) +add (-2+16j) (-2-16j) (-4+0j) +add (-2+16j) (-2-2j) (-4+14j) +add (-2+16j) (-2-0j) (-4+16j) +add (-2+16j) (-2+0j) (-4+16j) +add (-2+16j) (-2+2j) (-4+18j) +add (-2+16j) (-2+16j) (-4+32j) +add (-2+16j) (-2+infj) (-4+infj) +add (-2+16j) (-2+nanj) (-4+nanj) +add (-2+16j) (-0-infj) (-2-infj) +add (-2+16j) (-0-16j) (-2+0j) +add (-2+16j) (-0-2j) (-2+14j) +add (-2+16j) (-0-0j) (-2+16j) +add (-2+16j) (-0+0j) (-2+16j) +add (-2+16j) (-0+2j) (-2+18j) +add (-2+16j) (-0+16j) (-2+32j) +add (-2+16j) (-0+infj) (-2+infj) +add (-2+16j) (-0+nanj) (-2+nanj) +add (-2+16j) -infj (-2-infj) +add (-2+16j) -16j (-2+0j) +add (-2+16j) -2j (-2+14j) +add (-2+16j) -0j (-2+16j) +add (-2+16j) 0j (-2+16j) +add (-2+16j) 2j (-2+18j) +add (-2+16j) 16j (-2+32j) +add (-2+16j) infj (-2+infj) +add (-2+16j) nanj (-2+nanj) +add (-2+16j) (2-infj) -infj +add (-2+16j) (2-16j) 0j +add (-2+16j) (2-2j) 14j +add (-2+16j) (2-0j) 16j +add (-2+16j) (2+0j) 16j +add (-2+16j) (2+2j) 18j +add (-2+16j) (2+16j) 32j +add (-2+16j) (2+infj) infj +add (-2+16j) (2+nanj) nanj +add (-2+16j) (16-infj) (14-infj) +add (-2+16j) (16-16j) (14+0j) +add (-2+16j) (16-2j) (14+14j) +add (-2+16j) (16-0j) (14+16j) +add (-2+16j) (16+0j) (14+16j) +add (-2+16j) (16+2j) (14+18j) +add (-2+16j) (16+16j) (14+32j) +add (-2+16j) (16+infj) (14+infj) +add (-2+16j) (16+nanj) (14+nanj) +add (-2+16j) (inf-infj) (inf-infj) +add (-2+16j) (inf-16j) (inf+0j) +add (-2+16j) (inf-2j) (inf+14j) +add (-2+16j) (inf-0j) (inf+16j) +add (-2+16j) (inf+0j) (inf+16j) +add (-2+16j) (inf+2j) (inf+18j) +add (-2+16j) (inf+16j) (inf+32j) +add (-2+16j) (inf+infj) (inf+infj) +add (-2+16j) (inf+nanj) (inf+nanj) +add (-2+16j) (nan-infj) (nan-infj) +add (-2+16j) (nan-16j) (nan+0j) +add (-2+16j) (nan-2j) (nan+14j) +add (-2+16j) (nan-0j) (nan+16j) +add (-2+16j) (nan+0j) (nan+16j) +add (-2+16j) (nan+2j) (nan+18j) +add (-2+16j) (nan+16j) (nan+32j) +add (-2+16j) (nan+infj) (nan+infj) +add (-2+16j) (nan+nanj) (nan+nanj) +add (-2+infj) (-inf-infj) (-inf+nanj) +add (-2+infj) (-inf-16j) (-inf+infj) +add (-2+infj) (-inf-2j) (-inf+infj) +add (-2+infj) (-inf-0j) (-inf+infj) +add (-2+infj) (-inf+0j) (-inf+infj) +add (-2+infj) (-inf+2j) (-inf+infj) +add (-2+infj) (-inf+16j) (-inf+infj) +add (-2+infj) (-inf+infj) (-inf+infj) +add (-2+infj) (-inf+nanj) (-inf+nanj) +add (-2+infj) (-16-infj) (-18+nanj) +add (-2+infj) (-16-16j) (-18+infj) +add (-2+infj) (-16-2j) (-18+infj) +add (-2+infj) (-16-0j) (-18+infj) +add (-2+infj) (-16+0j) (-18+infj) +add (-2+infj) (-16+2j) (-18+infj) +add (-2+infj) (-16+16j) (-18+infj) +add (-2+infj) (-16+infj) (-18+infj) +add (-2+infj) (-16+nanj) (-18+nanj) +add (-2+infj) (-2-infj) (-4+nanj) +add (-2+infj) (-2-16j) (-4+infj) +add (-2+infj) (-2-2j) (-4+infj) +add (-2+infj) (-2-0j) (-4+infj) +add (-2+infj) (-2+0j) (-4+infj) +add (-2+infj) (-2+2j) (-4+infj) +add (-2+infj) (-2+16j) (-4+infj) +add (-2+infj) (-2+infj) (-4+infj) +add (-2+infj) (-2+nanj) (-4+nanj) +add (-2+infj) (-0-infj) (-2+nanj) +add (-2+infj) (-0-16j) (-2+infj) +add (-2+infj) (-0-2j) (-2+infj) +add (-2+infj) (-0-0j) (-2+infj) +add (-2+infj) (-0+0j) (-2+infj) +add (-2+infj) (-0+2j) (-2+infj) +add (-2+infj) (-0+16j) (-2+infj) +add (-2+infj) (-0+infj) (-2+infj) +add (-2+infj) (-0+nanj) (-2+nanj) +add (-2+infj) -infj (-2+nanj) +add (-2+infj) -16j (-2+infj) +add (-2+infj) -2j (-2+infj) +add (-2+infj) -0j (-2+infj) +add (-2+infj) 0j (-2+infj) +add (-2+infj) 2j (-2+infj) +add (-2+infj) 16j (-2+infj) +add (-2+infj) infj (-2+infj) +add (-2+infj) nanj (-2+nanj) +add (-2+infj) (2-infj) nanj +add (-2+infj) (2-16j) infj +add (-2+infj) (2-2j) infj +add (-2+infj) (2-0j) infj +add (-2+infj) (2+0j) infj +add (-2+infj) (2+2j) infj +add (-2+infj) (2+16j) infj +add (-2+infj) (2+infj) infj +add (-2+infj) (2+nanj) nanj +add (-2+infj) (16-infj) (14+nanj) +add (-2+infj) (16-16j) (14+infj) +add (-2+infj) (16-2j) (14+infj) +add (-2+infj) (16-0j) (14+infj) +add (-2+infj) (16+0j) (14+infj) +add (-2+infj) (16+2j) (14+infj) +add (-2+infj) (16+16j) (14+infj) +add (-2+infj) (16+infj) (14+infj) +add (-2+infj) (16+nanj) (14+nanj) +add (-2+infj) (inf-infj) (inf+nanj) +add (-2+infj) (inf-16j) (inf+infj) +add (-2+infj) (inf-2j) (inf+infj) +add (-2+infj) (inf-0j) (inf+infj) +add (-2+infj) (inf+0j) (inf+infj) +add (-2+infj) (inf+2j) (inf+infj) +add (-2+infj) (inf+16j) (inf+infj) +add (-2+infj) (inf+infj) (inf+infj) +add (-2+infj) (inf+nanj) (inf+nanj) +add (-2+infj) (nan-infj) (nan+nanj) +add (-2+infj) (nan-16j) (nan+infj) +add (-2+infj) (nan-2j) (nan+infj) +add (-2+infj) (nan-0j) (nan+infj) +add (-2+infj) (nan+0j) (nan+infj) +add (-2+infj) (nan+2j) (nan+infj) +add (-2+infj) (nan+16j) (nan+infj) +add (-2+infj) (nan+infj) (nan+infj) +add (-2+infj) (nan+nanj) (nan+nanj) +add (-2+nanj) (-inf-infj) (-inf+nanj) +add (-2+nanj) (-inf-16j) (-inf+nanj) +add (-2+nanj) (-inf-2j) (-inf+nanj) +add (-2+nanj) (-inf-0j) (-inf+nanj) +add (-2+nanj) (-inf+0j) (-inf+nanj) +add (-2+nanj) (-inf+2j) (-inf+nanj) +add (-2+nanj) (-inf+16j) (-inf+nanj) +add (-2+nanj) (-inf+infj) (-inf+nanj) +add (-2+nanj) (-inf+nanj) (-inf+nanj) +add (-2+nanj) (-16-infj) (-18+nanj) +add (-2+nanj) (-16-16j) (-18+nanj) +add (-2+nanj) (-16-2j) (-18+nanj) +add (-2+nanj) (-16-0j) (-18+nanj) +add (-2+nanj) (-16+0j) (-18+nanj) +add (-2+nanj) (-16+2j) (-18+nanj) +add (-2+nanj) (-16+16j) (-18+nanj) +add (-2+nanj) (-16+infj) (-18+nanj) +add (-2+nanj) (-16+nanj) (-18+nanj) +add (-2+nanj) (-2-infj) (-4+nanj) +add (-2+nanj) (-2-16j) (-4+nanj) +add (-2+nanj) (-2-2j) (-4+nanj) +add (-2+nanj) (-2-0j) (-4+nanj) +add (-2+nanj) (-2+0j) (-4+nanj) +add (-2+nanj) (-2+2j) (-4+nanj) +add (-2+nanj) (-2+16j) (-4+nanj) +add (-2+nanj) (-2+infj) (-4+nanj) +add (-2+nanj) (-2+nanj) (-4+nanj) +add (-2+nanj) (-0-infj) (-2+nanj) +add (-2+nanj) (-0-16j) (-2+nanj) +add (-2+nanj) (-0-2j) (-2+nanj) +add (-2+nanj) (-0-0j) (-2+nanj) +add (-2+nanj) (-0+0j) (-2+nanj) +add (-2+nanj) (-0+2j) (-2+nanj) +add (-2+nanj) (-0+16j) (-2+nanj) +add (-2+nanj) (-0+infj) (-2+nanj) +add (-2+nanj) (-0+nanj) (-2+nanj) +add (-2+nanj) -infj (-2+nanj) +add (-2+nanj) -16j (-2+nanj) +add (-2+nanj) -2j (-2+nanj) +add (-2+nanj) -0j (-2+nanj) +add (-2+nanj) 0j (-2+nanj) +add (-2+nanj) 2j (-2+nanj) +add (-2+nanj) 16j (-2+nanj) +add (-2+nanj) infj (-2+nanj) +add (-2+nanj) nanj (-2+nanj) +add (-2+nanj) (2-infj) nanj +add (-2+nanj) (2-16j) nanj +add (-2+nanj) (2-2j) nanj +add (-2+nanj) (2-0j) nanj +add (-2+nanj) (2+0j) nanj +add (-2+nanj) (2+2j) nanj +add (-2+nanj) (2+16j) nanj +add (-2+nanj) (2+infj) nanj +add (-2+nanj) (2+nanj) nanj +add (-2+nanj) (16-infj) (14+nanj) +add (-2+nanj) (16-16j) (14+nanj) +add (-2+nanj) (16-2j) (14+nanj) +add (-2+nanj) (16-0j) (14+nanj) +add (-2+nanj) (16+0j) (14+nanj) +add (-2+nanj) (16+2j) (14+nanj) +add (-2+nanj) (16+16j) (14+nanj) +add (-2+nanj) (16+infj) (14+nanj) +add (-2+nanj) (16+nanj) (14+nanj) +add (-2+nanj) (inf-infj) (inf+nanj) +add (-2+nanj) (inf-16j) (inf+nanj) +add (-2+nanj) (inf-2j) (inf+nanj) +add (-2+nanj) (inf-0j) (inf+nanj) +add (-2+nanj) (inf+0j) (inf+nanj) +add (-2+nanj) (inf+2j) (inf+nanj) +add (-2+nanj) (inf+16j) (inf+nanj) +add (-2+nanj) (inf+infj) (inf+nanj) +add (-2+nanj) (inf+nanj) (inf+nanj) +add (-2+nanj) (nan-infj) (nan+nanj) +add (-2+nanj) (nan-16j) (nan+nanj) +add (-2+nanj) (nan-2j) (nan+nanj) +add (-2+nanj) (nan-0j) (nan+nanj) +add (-2+nanj) (nan+0j) (nan+nanj) +add (-2+nanj) (nan+2j) (nan+nanj) +add (-2+nanj) (nan+16j) (nan+nanj) +add (-2+nanj) (nan+infj) (nan+nanj) +add (-2+nanj) (nan+nanj) (nan+nanj) +add (-0-infj) (-inf-infj) (-inf-infj) +add (-0-infj) (-inf-16j) (-inf-infj) +add (-0-infj) (-inf-2j) (-inf-infj) +add (-0-infj) (-inf-0j) (-inf-infj) +add (-0-infj) (-inf+0j) (-inf-infj) +add (-0-infj) (-inf+2j) (-inf-infj) +add (-0-infj) (-inf+16j) (-inf-infj) +add (-0-infj) (-inf+infj) (-inf+nanj) +add (-0-infj) (-inf+nanj) (-inf+nanj) +add (-0-infj) (-16-infj) (-16-infj) +add (-0-infj) (-16-16j) (-16-infj) +add (-0-infj) (-16-2j) (-16-infj) +add (-0-infj) (-16-0j) (-16-infj) +add (-0-infj) (-16+0j) (-16-infj) +add (-0-infj) (-16+2j) (-16-infj) +add (-0-infj) (-16+16j) (-16-infj) +add (-0-infj) (-16+infj) (-16+nanj) +add (-0-infj) (-16+nanj) (-16+nanj) +add (-0-infj) (-2-infj) (-2-infj) +add (-0-infj) (-2-16j) (-2-infj) +add (-0-infj) (-2-2j) (-2-infj) +add (-0-infj) (-2-0j) (-2-infj) +add (-0-infj) (-2+0j) (-2-infj) +add (-0-infj) (-2+2j) (-2-infj) +add (-0-infj) (-2+16j) (-2-infj) +add (-0-infj) (-2+infj) (-2+nanj) +add (-0-infj) (-2+nanj) (-2+nanj) +add (-0-infj) (-0-infj) (-0-infj) +add (-0-infj) (-0-16j) (-0-infj) +add (-0-infj) (-0-2j) (-0-infj) +add (-0-infj) (-0-0j) (-0-infj) +add (-0-infj) (-0+0j) (-0-infj) +add (-0-infj) (-0+2j) (-0-infj) +add (-0-infj) (-0+16j) (-0-infj) +add (-0-infj) (-0+infj) (-0+nanj) +add (-0-infj) (-0+nanj) (-0+nanj) +add (-0-infj) -infj -infj +add (-0-infj) -16j -infj +add (-0-infj) -2j -infj +add (-0-infj) -0j -infj +add (-0-infj) 0j -infj +add (-0-infj) 2j -infj +add (-0-infj) 16j -infj +add (-0-infj) infj nanj +add (-0-infj) nanj nanj +add (-0-infj) (2-infj) (2-infj) +add (-0-infj) (2-16j) (2-infj) +add (-0-infj) (2-2j) (2-infj) +add (-0-infj) (2-0j) (2-infj) +add (-0-infj) (2+0j) (2-infj) +add (-0-infj) (2+2j) (2-infj) +add (-0-infj) (2+16j) (2-infj) +add (-0-infj) (2+infj) (2+nanj) +add (-0-infj) (2+nanj) (2+nanj) +add (-0-infj) (16-infj) (16-infj) +add (-0-infj) (16-16j) (16-infj) +add (-0-infj) (16-2j) (16-infj) +add (-0-infj) (16-0j) (16-infj) +add (-0-infj) (16+0j) (16-infj) +add (-0-infj) (16+2j) (16-infj) +add (-0-infj) (16+16j) (16-infj) +add (-0-infj) (16+infj) (16+nanj) +add (-0-infj) (16+nanj) (16+nanj) +add (-0-infj) (inf-infj) (inf-infj) +add (-0-infj) (inf-16j) (inf-infj) +add (-0-infj) (inf-2j) (inf-infj) +add (-0-infj) (inf-0j) (inf-infj) +add (-0-infj) (inf+0j) (inf-infj) +add (-0-infj) (inf+2j) (inf-infj) +add (-0-infj) (inf+16j) (inf-infj) +add (-0-infj) (inf+infj) (inf+nanj) +add (-0-infj) (inf+nanj) (inf+nanj) +add (-0-infj) (nan-infj) (nan-infj) +add (-0-infj) (nan-16j) (nan-infj) +add (-0-infj) (nan-2j) (nan-infj) +add (-0-infj) (nan-0j) (nan-infj) +add (-0-infj) (nan+0j) (nan-infj) +add (-0-infj) (nan+2j) (nan-infj) +add (-0-infj) (nan+16j) (nan-infj) +add (-0-infj) (nan+infj) (nan+nanj) +add (-0-infj) (nan+nanj) (nan+nanj) +add (-0-16j) (-inf-infj) (-inf-infj) +add (-0-16j) (-inf-16j) (-inf-32j) +add (-0-16j) (-inf-2j) (-inf-18j) +add (-0-16j) (-inf-0j) (-inf-16j) +add (-0-16j) (-inf+0j) (-inf-16j) +add (-0-16j) (-inf+2j) (-inf-14j) +add (-0-16j) (-inf+16j) (-inf+0j) +add (-0-16j) (-inf+infj) (-inf+infj) +add (-0-16j) (-inf+nanj) (-inf+nanj) +add (-0-16j) (-16-infj) (-16-infj) +add (-0-16j) (-16-16j) (-16-32j) +add (-0-16j) (-16-2j) (-16-18j) +add (-0-16j) (-16-0j) (-16-16j) +add (-0-16j) (-16+0j) (-16-16j) +add (-0-16j) (-16+2j) (-16-14j) +add (-0-16j) (-16+16j) (-16+0j) +add (-0-16j) (-16+infj) (-16+infj) +add (-0-16j) (-16+nanj) (-16+nanj) +add (-0-16j) (-2-infj) (-2-infj) +add (-0-16j) (-2-16j) (-2-32j) +add (-0-16j) (-2-2j) (-2-18j) +add (-0-16j) (-2-0j) (-2-16j) +add (-0-16j) (-2+0j) (-2-16j) +add (-0-16j) (-2+2j) (-2-14j) +add (-0-16j) (-2+16j) (-2+0j) +add (-0-16j) (-2+infj) (-2+infj) +add (-0-16j) (-2+nanj) (-2+nanj) +add (-0-16j) (-0-infj) (-0-infj) +add (-0-16j) (-0-16j) (-0-32j) +add (-0-16j) (-0-2j) (-0-18j) +add (-0-16j) (-0-0j) (-0-16j) +add (-0-16j) (-0+0j) (-0-16j) +add (-0-16j) (-0+2j) (-0-14j) +add (-0-16j) (-0+16j) (-0+0j) +add (-0-16j) (-0+infj) (-0+infj) +add (-0-16j) (-0+nanj) (-0+nanj) +add (-0-16j) -infj -infj +add (-0-16j) -16j -32j +add (-0-16j) -2j -18j +add (-0-16j) -0j -16j +add (-0-16j) 0j -16j +add (-0-16j) 2j -14j +add (-0-16j) 16j 0j +add (-0-16j) infj infj +add (-0-16j) nanj nanj +add (-0-16j) (2-infj) (2-infj) +add (-0-16j) (2-16j) (2-32j) +add (-0-16j) (2-2j) (2-18j) +add (-0-16j) (2-0j) (2-16j) +add (-0-16j) (2+0j) (2-16j) +add (-0-16j) (2+2j) (2-14j) +add (-0-16j) (2+16j) (2+0j) +add (-0-16j) (2+infj) (2+infj) +add (-0-16j) (2+nanj) (2+nanj) +add (-0-16j) (16-infj) (16-infj) +add (-0-16j) (16-16j) (16-32j) +add (-0-16j) (16-2j) (16-18j) +add (-0-16j) (16-0j) (16-16j) +add (-0-16j) (16+0j) (16-16j) +add (-0-16j) (16+2j) (16-14j) +add (-0-16j) (16+16j) (16+0j) +add (-0-16j) (16+infj) (16+infj) +add (-0-16j) (16+nanj) (16+nanj) +add (-0-16j) (inf-infj) (inf-infj) +add (-0-16j) (inf-16j) (inf-32j) +add (-0-16j) (inf-2j) (inf-18j) +add (-0-16j) (inf-0j) (inf-16j) +add (-0-16j) (inf+0j) (inf-16j) +add (-0-16j) (inf+2j) (inf-14j) +add (-0-16j) (inf+16j) (inf+0j) +add (-0-16j) (inf+infj) (inf+infj) +add (-0-16j) (inf+nanj) (inf+nanj) +add (-0-16j) (nan-infj) (nan-infj) +add (-0-16j) (nan-16j) (nan-32j) +add (-0-16j) (nan-2j) (nan-18j) +add (-0-16j) (nan-0j) (nan-16j) +add (-0-16j) (nan+0j) (nan-16j) +add (-0-16j) (nan+2j) (nan-14j) +add (-0-16j) (nan+16j) (nan+0j) +add (-0-16j) (nan+infj) (nan+infj) +add (-0-16j) (nan+nanj) (nan+nanj) +add (-0-2j) (-inf-infj) (-inf-infj) +add (-0-2j) (-inf-16j) (-inf-18j) +add (-0-2j) (-inf-2j) (-inf-4j) +add (-0-2j) (-inf-0j) (-inf-2j) +add (-0-2j) (-inf+0j) (-inf-2j) +add (-0-2j) (-inf+2j) (-inf+0j) +add (-0-2j) (-inf+16j) (-inf+14j) +add (-0-2j) (-inf+infj) (-inf+infj) +add (-0-2j) (-inf+nanj) (-inf+nanj) +add (-0-2j) (-16-infj) (-16-infj) +add (-0-2j) (-16-16j) (-16-18j) +add (-0-2j) (-16-2j) (-16-4j) +add (-0-2j) (-16-0j) (-16-2j) +add (-0-2j) (-16+0j) (-16-2j) +add (-0-2j) (-16+2j) (-16+0j) +add (-0-2j) (-16+16j) (-16+14j) +add (-0-2j) (-16+infj) (-16+infj) +add (-0-2j) (-16+nanj) (-16+nanj) +add (-0-2j) (-2-infj) (-2-infj) +add (-0-2j) (-2-16j) (-2-18j) +add (-0-2j) (-2-2j) (-2-4j) +add (-0-2j) (-2-0j) (-2-2j) +add (-0-2j) (-2+0j) (-2-2j) +add (-0-2j) (-2+2j) (-2+0j) +add (-0-2j) (-2+16j) (-2+14j) +add (-0-2j) (-2+infj) (-2+infj) +add (-0-2j) (-2+nanj) (-2+nanj) +add (-0-2j) (-0-infj) (-0-infj) +add (-0-2j) (-0-16j) (-0-18j) +add (-0-2j) (-0-2j) (-0-4j) +add (-0-2j) (-0-0j) (-0-2j) +add (-0-2j) (-0+0j) (-0-2j) +add (-0-2j) (-0+2j) (-0+0j) +add (-0-2j) (-0+16j) (-0+14j) +add (-0-2j) (-0+infj) (-0+infj) +add (-0-2j) (-0+nanj) (-0+nanj) +add (-0-2j) -infj -infj +add (-0-2j) -16j -18j +add (-0-2j) -2j -4j +add (-0-2j) -0j -2j +add (-0-2j) 0j -2j +add (-0-2j) 2j 0j +add (-0-2j) 16j 14j +add (-0-2j) infj infj +add (-0-2j) nanj nanj +add (-0-2j) (2-infj) (2-infj) +add (-0-2j) (2-16j) (2-18j) +add (-0-2j) (2-2j) (2-4j) +add (-0-2j) (2-0j) (2-2j) +add (-0-2j) (2+0j) (2-2j) +add (-0-2j) (2+2j) (2+0j) +add (-0-2j) (2+16j) (2+14j) +add (-0-2j) (2+infj) (2+infj) +add (-0-2j) (2+nanj) (2+nanj) +add (-0-2j) (16-infj) (16-infj) +add (-0-2j) (16-16j) (16-18j) +add (-0-2j) (16-2j) (16-4j) +add (-0-2j) (16-0j) (16-2j) +add (-0-2j) (16+0j) (16-2j) +add (-0-2j) (16+2j) (16+0j) +add (-0-2j) (16+16j) (16+14j) +add (-0-2j) (16+infj) (16+infj) +add (-0-2j) (16+nanj) (16+nanj) +add (-0-2j) (inf-infj) (inf-infj) +add (-0-2j) (inf-16j) (inf-18j) +add (-0-2j) (inf-2j) (inf-4j) +add (-0-2j) (inf-0j) (inf-2j) +add (-0-2j) (inf+0j) (inf-2j) +add (-0-2j) (inf+2j) (inf+0j) +add (-0-2j) (inf+16j) (inf+14j) +add (-0-2j) (inf+infj) (inf+infj) +add (-0-2j) (inf+nanj) (inf+nanj) +add (-0-2j) (nan-infj) (nan-infj) +add (-0-2j) (nan-16j) (nan-18j) +add (-0-2j) (nan-2j) (nan-4j) +add (-0-2j) (nan-0j) (nan-2j) +add (-0-2j) (nan+0j) (nan-2j) +add (-0-2j) (nan+2j) (nan+0j) +add (-0-2j) (nan+16j) (nan+14j) +add (-0-2j) (nan+infj) (nan+infj) +add (-0-2j) (nan+nanj) (nan+nanj) +add (-0-0j) (-inf-infj) (-inf-infj) +add (-0-0j) (-inf-16j) (-inf-16j) +add (-0-0j) (-inf-2j) (-inf-2j) +add (-0-0j) (-inf-0j) (-inf-0j) +add (-0-0j) (-inf+0j) (-inf+0j) +add (-0-0j) (-inf+2j) (-inf+2j) +add (-0-0j) (-inf+16j) (-inf+16j) +add (-0-0j) (-inf+infj) (-inf+infj) +add (-0-0j) (-inf+nanj) (-inf+nanj) +add (-0-0j) (-16-infj) (-16-infj) +add (-0-0j) (-16-16j) (-16-16j) +add (-0-0j) (-16-2j) (-16-2j) +add (-0-0j) (-16-0j) (-16-0j) +add (-0-0j) (-16+0j) (-16+0j) +add (-0-0j) (-16+2j) (-16+2j) +add (-0-0j) (-16+16j) (-16+16j) +add (-0-0j) (-16+infj) (-16+infj) +add (-0-0j) (-16+nanj) (-16+nanj) +add (-0-0j) (-2-infj) (-2-infj) +add (-0-0j) (-2-16j) (-2-16j) +add (-0-0j) (-2-2j) (-2-2j) +add (-0-0j) (-2-0j) (-2-0j) +add (-0-0j) (-2+0j) (-2+0j) +add (-0-0j) (-2+2j) (-2+2j) +add (-0-0j) (-2+16j) (-2+16j) +add (-0-0j) (-2+infj) (-2+infj) +add (-0-0j) (-2+nanj) (-2+nanj) +add (-0-0j) (-0-infj) (-0-infj) +add (-0-0j) (-0-16j) (-0-16j) +add (-0-0j) (-0-2j) (-0-2j) +add (-0-0j) (-0-0j) (-0-0j) +add (-0-0j) (-0+0j) (-0+0j) +add (-0-0j) (-0+2j) (-0+2j) +add (-0-0j) (-0+16j) (-0+16j) +add (-0-0j) (-0+infj) (-0+infj) +add (-0-0j) (-0+nanj) (-0+nanj) +add (-0-0j) -infj -infj +add (-0-0j) -16j -16j +add (-0-0j) -2j -2j +add (-0-0j) -0j -0j +add (-0-0j) 0j 0j +add (-0-0j) 2j 2j +add (-0-0j) 16j 16j +add (-0-0j) infj infj +add (-0-0j) nanj nanj +add (-0-0j) (2-infj) (2-infj) +add (-0-0j) (2-16j) (2-16j) +add (-0-0j) (2-2j) (2-2j) +add (-0-0j) (2-0j) (2-0j) +add (-0-0j) (2+0j) (2+0j) +add (-0-0j) (2+2j) (2+2j) +add (-0-0j) (2+16j) (2+16j) +add (-0-0j) (2+infj) (2+infj) +add (-0-0j) (2+nanj) (2+nanj) +add (-0-0j) (16-infj) (16-infj) +add (-0-0j) (16-16j) (16-16j) +add (-0-0j) (16-2j) (16-2j) +add (-0-0j) (16-0j) (16-0j) +add (-0-0j) (16+0j) (16+0j) +add (-0-0j) (16+2j) (16+2j) +add (-0-0j) (16+16j) (16+16j) +add (-0-0j) (16+infj) (16+infj) +add (-0-0j) (16+nanj) (16+nanj) +add (-0-0j) (inf-infj) (inf-infj) +add (-0-0j) (inf-16j) (inf-16j) +add (-0-0j) (inf-2j) (inf-2j) +add (-0-0j) (inf-0j) (inf-0j) +add (-0-0j) (inf+0j) (inf+0j) +add (-0-0j) (inf+2j) (inf+2j) +add (-0-0j) (inf+16j) (inf+16j) +add (-0-0j) (inf+infj) (inf+infj) +add (-0-0j) (inf+nanj) (inf+nanj) +add (-0-0j) (nan-infj) (nan-infj) +add (-0-0j) (nan-16j) (nan-16j) +add (-0-0j) (nan-2j) (nan-2j) +add (-0-0j) (nan-0j) (nan-0j) +add (-0-0j) (nan+0j) (nan+0j) +add (-0-0j) (nan+2j) (nan+2j) +add (-0-0j) (nan+16j) (nan+16j) +add (-0-0j) (nan+infj) (nan+infj) +add (-0-0j) (nan+nanj) (nan+nanj) +add (-0+0j) (-inf-infj) (-inf-infj) +add (-0+0j) (-inf-16j) (-inf-16j) +add (-0+0j) (-inf-2j) (-inf-2j) +add (-0+0j) (-inf-0j) (-inf+0j) +add (-0+0j) (-inf+0j) (-inf+0j) +add (-0+0j) (-inf+2j) (-inf+2j) +add (-0+0j) (-inf+16j) (-inf+16j) +add (-0+0j) (-inf+infj) (-inf+infj) +add (-0+0j) (-inf+nanj) (-inf+nanj) +add (-0+0j) (-16-infj) (-16-infj) +add (-0+0j) (-16-16j) (-16-16j) +add (-0+0j) (-16-2j) (-16-2j) +add (-0+0j) (-16-0j) (-16+0j) +add (-0+0j) (-16+0j) (-16+0j) +add (-0+0j) (-16+2j) (-16+2j) +add (-0+0j) (-16+16j) (-16+16j) +add (-0+0j) (-16+infj) (-16+infj) +add (-0+0j) (-16+nanj) (-16+nanj) +add (-0+0j) (-2-infj) (-2-infj) +add (-0+0j) (-2-16j) (-2-16j) +add (-0+0j) (-2-2j) (-2-2j) +add (-0+0j) (-2-0j) (-2+0j) +add (-0+0j) (-2+0j) (-2+0j) +add (-0+0j) (-2+2j) (-2+2j) +add (-0+0j) (-2+16j) (-2+16j) +add (-0+0j) (-2+infj) (-2+infj) +add (-0+0j) (-2+nanj) (-2+nanj) +add (-0+0j) (-0-infj) (-0-infj) +add (-0+0j) (-0-16j) (-0-16j) +add (-0+0j) (-0-2j) (-0-2j) +add (-0+0j) (-0-0j) (-0+0j) +add (-0+0j) (-0+0j) (-0+0j) +add (-0+0j) (-0+2j) (-0+2j) +add (-0+0j) (-0+16j) (-0+16j) +add (-0+0j) (-0+infj) (-0+infj) +add (-0+0j) (-0+nanj) (-0+nanj) +add (-0+0j) -infj -infj +add (-0+0j) -16j -16j +add (-0+0j) -2j -2j +add (-0+0j) -0j 0j +add (-0+0j) 0j 0j +add (-0+0j) 2j 2j +add (-0+0j) 16j 16j +add (-0+0j) infj infj +add (-0+0j) nanj nanj +add (-0+0j) (2-infj) (2-infj) +add (-0+0j) (2-16j) (2-16j) +add (-0+0j) (2-2j) (2-2j) +add (-0+0j) (2-0j) (2+0j) +add (-0+0j) (2+0j) (2+0j) +add (-0+0j) (2+2j) (2+2j) +add (-0+0j) (2+16j) (2+16j) +add (-0+0j) (2+infj) (2+infj) +add (-0+0j) (2+nanj) (2+nanj) +add (-0+0j) (16-infj) (16-infj) +add (-0+0j) (16-16j) (16-16j) +add (-0+0j) (16-2j) (16-2j) +add (-0+0j) (16-0j) (16+0j) +add (-0+0j) (16+0j) (16+0j) +add (-0+0j) (16+2j) (16+2j) +add (-0+0j) (16+16j) (16+16j) +add (-0+0j) (16+infj) (16+infj) +add (-0+0j) (16+nanj) (16+nanj) +add (-0+0j) (inf-infj) (inf-infj) +add (-0+0j) (inf-16j) (inf-16j) +add (-0+0j) (inf-2j) (inf-2j) +add (-0+0j) (inf-0j) (inf+0j) +add (-0+0j) (inf+0j) (inf+0j) +add (-0+0j) (inf+2j) (inf+2j) +add (-0+0j) (inf+16j) (inf+16j) +add (-0+0j) (inf+infj) (inf+infj) +add (-0+0j) (inf+nanj) (inf+nanj) +add (-0+0j) (nan-infj) (nan-infj) +add (-0+0j) (nan-16j) (nan-16j) +add (-0+0j) (nan-2j) (nan-2j) +add (-0+0j) (nan-0j) (nan+0j) +add (-0+0j) (nan+0j) (nan+0j) +add (-0+0j) (nan+2j) (nan+2j) +add (-0+0j) (nan+16j) (nan+16j) +add (-0+0j) (nan+infj) (nan+infj) +add (-0+0j) (nan+nanj) (nan+nanj) +add (-0+2j) (-inf-infj) (-inf-infj) +add (-0+2j) (-inf-16j) (-inf-14j) +add (-0+2j) (-inf-2j) (-inf+0j) +add (-0+2j) (-inf-0j) (-inf+2j) +add (-0+2j) (-inf+0j) (-inf+2j) +add (-0+2j) (-inf+2j) (-inf+4j) +add (-0+2j) (-inf+16j) (-inf+18j) +add (-0+2j) (-inf+infj) (-inf+infj) +add (-0+2j) (-inf+nanj) (-inf+nanj) +add (-0+2j) (-16-infj) (-16-infj) +add (-0+2j) (-16-16j) (-16-14j) +add (-0+2j) (-16-2j) (-16+0j) +add (-0+2j) (-16-0j) (-16+2j) +add (-0+2j) (-16+0j) (-16+2j) +add (-0+2j) (-16+2j) (-16+4j) +add (-0+2j) (-16+16j) (-16+18j) +add (-0+2j) (-16+infj) (-16+infj) +add (-0+2j) (-16+nanj) (-16+nanj) +add (-0+2j) (-2-infj) (-2-infj) +add (-0+2j) (-2-16j) (-2-14j) +add (-0+2j) (-2-2j) (-2+0j) +add (-0+2j) (-2-0j) (-2+2j) +add (-0+2j) (-2+0j) (-2+2j) +add (-0+2j) (-2+2j) (-2+4j) +add (-0+2j) (-2+16j) (-2+18j) +add (-0+2j) (-2+infj) (-2+infj) +add (-0+2j) (-2+nanj) (-2+nanj) +add (-0+2j) (-0-infj) (-0-infj) +add (-0+2j) (-0-16j) (-0-14j) +add (-0+2j) (-0-2j) (-0+0j) +add (-0+2j) (-0-0j) (-0+2j) +add (-0+2j) (-0+0j) (-0+2j) +add (-0+2j) (-0+2j) (-0+4j) +add (-0+2j) (-0+16j) (-0+18j) +add (-0+2j) (-0+infj) (-0+infj) +add (-0+2j) (-0+nanj) (-0+nanj) +add (-0+2j) -infj -infj +add (-0+2j) -16j -14j +add (-0+2j) -2j 0j +add (-0+2j) -0j 2j +add (-0+2j) 0j 2j +add (-0+2j) 2j 4j +add (-0+2j) 16j 18j +add (-0+2j) infj infj +add (-0+2j) nanj nanj +add (-0+2j) (2-infj) (2-infj) +add (-0+2j) (2-16j) (2-14j) +add (-0+2j) (2-2j) (2+0j) +add (-0+2j) (2-0j) (2+2j) +add (-0+2j) (2+0j) (2+2j) +add (-0+2j) (2+2j) (2+4j) +add (-0+2j) (2+16j) (2+18j) +add (-0+2j) (2+infj) (2+infj) +add (-0+2j) (2+nanj) (2+nanj) +add (-0+2j) (16-infj) (16-infj) +add (-0+2j) (16-16j) (16-14j) +add (-0+2j) (16-2j) (16+0j) +add (-0+2j) (16-0j) (16+2j) +add (-0+2j) (16+0j) (16+2j) +add (-0+2j) (16+2j) (16+4j) +add (-0+2j) (16+16j) (16+18j) +add (-0+2j) (16+infj) (16+infj) +add (-0+2j) (16+nanj) (16+nanj) +add (-0+2j) (inf-infj) (inf-infj) +add (-0+2j) (inf-16j) (inf-14j) +add (-0+2j) (inf-2j) (inf+0j) +add (-0+2j) (inf-0j) (inf+2j) +add (-0+2j) (inf+0j) (inf+2j) +add (-0+2j) (inf+2j) (inf+4j) +add (-0+2j) (inf+16j) (inf+18j) +add (-0+2j) (inf+infj) (inf+infj) +add (-0+2j) (inf+nanj) (inf+nanj) +add (-0+2j) (nan-infj) (nan-infj) +add (-0+2j) (nan-16j) (nan-14j) +add (-0+2j) (nan-2j) (nan+0j) +add (-0+2j) (nan-0j) (nan+2j) +add (-0+2j) (nan+0j) (nan+2j) +add (-0+2j) (nan+2j) (nan+4j) +add (-0+2j) (nan+16j) (nan+18j) +add (-0+2j) (nan+infj) (nan+infj) +add (-0+2j) (nan+nanj) (nan+nanj) +add (-0+16j) (-inf-infj) (-inf-infj) +add (-0+16j) (-inf-16j) (-inf+0j) +add (-0+16j) (-inf-2j) (-inf+14j) +add (-0+16j) (-inf-0j) (-inf+16j) +add (-0+16j) (-inf+0j) (-inf+16j) +add (-0+16j) (-inf+2j) (-inf+18j) +add (-0+16j) (-inf+16j) (-inf+32j) +add (-0+16j) (-inf+infj) (-inf+infj) +add (-0+16j) (-inf+nanj) (-inf+nanj) +add (-0+16j) (-16-infj) (-16-infj) +add (-0+16j) (-16-16j) (-16+0j) +add (-0+16j) (-16-2j) (-16+14j) +add (-0+16j) (-16-0j) (-16+16j) +add (-0+16j) (-16+0j) (-16+16j) +add (-0+16j) (-16+2j) (-16+18j) +add (-0+16j) (-16+16j) (-16+32j) +add (-0+16j) (-16+infj) (-16+infj) +add (-0+16j) (-16+nanj) (-16+nanj) +add (-0+16j) (-2-infj) (-2-infj) +add (-0+16j) (-2-16j) (-2+0j) +add (-0+16j) (-2-2j) (-2+14j) +add (-0+16j) (-2-0j) (-2+16j) +add (-0+16j) (-2+0j) (-2+16j) +add (-0+16j) (-2+2j) (-2+18j) +add (-0+16j) (-2+16j) (-2+32j) +add (-0+16j) (-2+infj) (-2+infj) +add (-0+16j) (-2+nanj) (-2+nanj) +add (-0+16j) (-0-infj) (-0-infj) +add (-0+16j) (-0-16j) (-0+0j) +add (-0+16j) (-0-2j) (-0+14j) +add (-0+16j) (-0-0j) (-0+16j) +add (-0+16j) (-0+0j) (-0+16j) +add (-0+16j) (-0+2j) (-0+18j) +add (-0+16j) (-0+16j) (-0+32j) +add (-0+16j) (-0+infj) (-0+infj) +add (-0+16j) (-0+nanj) (-0+nanj) +add (-0+16j) -infj -infj +add (-0+16j) -16j 0j +add (-0+16j) -2j 14j +add (-0+16j) -0j 16j +add (-0+16j) 0j 16j +add (-0+16j) 2j 18j +add (-0+16j) 16j 32j +add (-0+16j) infj infj +add (-0+16j) nanj nanj +add (-0+16j) (2-infj) (2-infj) +add (-0+16j) (2-16j) (2+0j) +add (-0+16j) (2-2j) (2+14j) +add (-0+16j) (2-0j) (2+16j) +add (-0+16j) (2+0j) (2+16j) +add (-0+16j) (2+2j) (2+18j) +add (-0+16j) (2+16j) (2+32j) +add (-0+16j) (2+infj) (2+infj) +add (-0+16j) (2+nanj) (2+nanj) +add (-0+16j) (16-infj) (16-infj) +add (-0+16j) (16-16j) (16+0j) +add (-0+16j) (16-2j) (16+14j) +add (-0+16j) (16-0j) (16+16j) +add (-0+16j) (16+0j) (16+16j) +add (-0+16j) (16+2j) (16+18j) +add (-0+16j) (16+16j) (16+32j) +add (-0+16j) (16+infj) (16+infj) +add (-0+16j) (16+nanj) (16+nanj) +add (-0+16j) (inf-infj) (inf-infj) +add (-0+16j) (inf-16j) (inf+0j) +add (-0+16j) (inf-2j) (inf+14j) +add (-0+16j) (inf-0j) (inf+16j) +add (-0+16j) (inf+0j) (inf+16j) +add (-0+16j) (inf+2j) (inf+18j) +add (-0+16j) (inf+16j) (inf+32j) +add (-0+16j) (inf+infj) (inf+infj) +add (-0+16j) (inf+nanj) (inf+nanj) +add (-0+16j) (nan-infj) (nan-infj) +add (-0+16j) (nan-16j) (nan+0j) +add (-0+16j) (nan-2j) (nan+14j) +add (-0+16j) (nan-0j) (nan+16j) +add (-0+16j) (nan+0j) (nan+16j) +add (-0+16j) (nan+2j) (nan+18j) +add (-0+16j) (nan+16j) (nan+32j) +add (-0+16j) (nan+infj) (nan+infj) +add (-0+16j) (nan+nanj) (nan+nanj) +add (-0+infj) (-inf-infj) (-inf+nanj) +add (-0+infj) (-inf-16j) (-inf+infj) +add (-0+infj) (-inf-2j) (-inf+infj) +add (-0+infj) (-inf-0j) (-inf+infj) +add (-0+infj) (-inf+0j) (-inf+infj) +add (-0+infj) (-inf+2j) (-inf+infj) +add (-0+infj) (-inf+16j) (-inf+infj) +add (-0+infj) (-inf+infj) (-inf+infj) +add (-0+infj) (-inf+nanj) (-inf+nanj) +add (-0+infj) (-16-infj) (-16+nanj) +add (-0+infj) (-16-16j) (-16+infj) +add (-0+infj) (-16-2j) (-16+infj) +add (-0+infj) (-16-0j) (-16+infj) +add (-0+infj) (-16+0j) (-16+infj) +add (-0+infj) (-16+2j) (-16+infj) +add (-0+infj) (-16+16j) (-16+infj) +add (-0+infj) (-16+infj) (-16+infj) +add (-0+infj) (-16+nanj) (-16+nanj) +add (-0+infj) (-2-infj) (-2+nanj) +add (-0+infj) (-2-16j) (-2+infj) +add (-0+infj) (-2-2j) (-2+infj) +add (-0+infj) (-2-0j) (-2+infj) +add (-0+infj) (-2+0j) (-2+infj) +add (-0+infj) (-2+2j) (-2+infj) +add (-0+infj) (-2+16j) (-2+infj) +add (-0+infj) (-2+infj) (-2+infj) +add (-0+infj) (-2+nanj) (-2+nanj) +add (-0+infj) (-0-infj) (-0+nanj) +add (-0+infj) (-0-16j) (-0+infj) +add (-0+infj) (-0-2j) (-0+infj) +add (-0+infj) (-0-0j) (-0+infj) +add (-0+infj) (-0+0j) (-0+infj) +add (-0+infj) (-0+2j) (-0+infj) +add (-0+infj) (-0+16j) (-0+infj) +add (-0+infj) (-0+infj) (-0+infj) +add (-0+infj) (-0+nanj) (-0+nanj) +add (-0+infj) -infj nanj +add (-0+infj) -16j infj +add (-0+infj) -2j infj +add (-0+infj) -0j infj +add (-0+infj) 0j infj +add (-0+infj) 2j infj +add (-0+infj) 16j infj +add (-0+infj) infj infj +add (-0+infj) nanj nanj +add (-0+infj) (2-infj) (2+nanj) +add (-0+infj) (2-16j) (2+infj) +add (-0+infj) (2-2j) (2+infj) +add (-0+infj) (2-0j) (2+infj) +add (-0+infj) (2+0j) (2+infj) +add (-0+infj) (2+2j) (2+infj) +add (-0+infj) (2+16j) (2+infj) +add (-0+infj) (2+infj) (2+infj) +add (-0+infj) (2+nanj) (2+nanj) +add (-0+infj) (16-infj) (16+nanj) +add (-0+infj) (16-16j) (16+infj) +add (-0+infj) (16-2j) (16+infj) +add (-0+infj) (16-0j) (16+infj) +add (-0+infj) (16+0j) (16+infj) +add (-0+infj) (16+2j) (16+infj) +add (-0+infj) (16+16j) (16+infj) +add (-0+infj) (16+infj) (16+infj) +add (-0+infj) (16+nanj) (16+nanj) +add (-0+infj) (inf-infj) (inf+nanj) +add (-0+infj) (inf-16j) (inf+infj) +add (-0+infj) (inf-2j) (inf+infj) +add (-0+infj) (inf-0j) (inf+infj) +add (-0+infj) (inf+0j) (inf+infj) +add (-0+infj) (inf+2j) (inf+infj) +add (-0+infj) (inf+16j) (inf+infj) +add (-0+infj) (inf+infj) (inf+infj) +add (-0+infj) (inf+nanj) (inf+nanj) +add (-0+infj) (nan-infj) (nan+nanj) +add (-0+infj) (nan-16j) (nan+infj) +add (-0+infj) (nan-2j) (nan+infj) +add (-0+infj) (nan-0j) (nan+infj) +add (-0+infj) (nan+0j) (nan+infj) +add (-0+infj) (nan+2j) (nan+infj) +add (-0+infj) (nan+16j) (nan+infj) +add (-0+infj) (nan+infj) (nan+infj) +add (-0+infj) (nan+nanj) (nan+nanj) +add (-0+nanj) (-inf-infj) (-inf+nanj) +add (-0+nanj) (-inf-16j) (-inf+nanj) +add (-0+nanj) (-inf-2j) (-inf+nanj) +add (-0+nanj) (-inf-0j) (-inf+nanj) +add (-0+nanj) (-inf+0j) (-inf+nanj) +add (-0+nanj) (-inf+2j) (-inf+nanj) +add (-0+nanj) (-inf+16j) (-inf+nanj) +add (-0+nanj) (-inf+infj) (-inf+nanj) +add (-0+nanj) (-inf+nanj) (-inf+nanj) +add (-0+nanj) (-16-infj) (-16+nanj) +add (-0+nanj) (-16-16j) (-16+nanj) +add (-0+nanj) (-16-2j) (-16+nanj) +add (-0+nanj) (-16-0j) (-16+nanj) +add (-0+nanj) (-16+0j) (-16+nanj) +add (-0+nanj) (-16+2j) (-16+nanj) +add (-0+nanj) (-16+16j) (-16+nanj) +add (-0+nanj) (-16+infj) (-16+nanj) +add (-0+nanj) (-16+nanj) (-16+nanj) +add (-0+nanj) (-2-infj) (-2+nanj) +add (-0+nanj) (-2-16j) (-2+nanj) +add (-0+nanj) (-2-2j) (-2+nanj) +add (-0+nanj) (-2-0j) (-2+nanj) +add (-0+nanj) (-2+0j) (-2+nanj) +add (-0+nanj) (-2+2j) (-2+nanj) +add (-0+nanj) (-2+16j) (-2+nanj) +add (-0+nanj) (-2+infj) (-2+nanj) +add (-0+nanj) (-2+nanj) (-2+nanj) +add (-0+nanj) (-0-infj) (-0+nanj) +add (-0+nanj) (-0-16j) (-0+nanj) +add (-0+nanj) (-0-2j) (-0+nanj) +add (-0+nanj) (-0-0j) (-0+nanj) +add (-0+nanj) (-0+0j) (-0+nanj) +add (-0+nanj) (-0+2j) (-0+nanj) +add (-0+nanj) (-0+16j) (-0+nanj) +add (-0+nanj) (-0+infj) (-0+nanj) +add (-0+nanj) (-0+nanj) (-0+nanj) +add (-0+nanj) -infj nanj +add (-0+nanj) -16j nanj +add (-0+nanj) -2j nanj +add (-0+nanj) -0j nanj +add (-0+nanj) 0j nanj +add (-0+nanj) 2j nanj +add (-0+nanj) 16j nanj +add (-0+nanj) infj nanj +add (-0+nanj) nanj nanj +add (-0+nanj) (2-infj) (2+nanj) +add (-0+nanj) (2-16j) (2+nanj) +add (-0+nanj) (2-2j) (2+nanj) +add (-0+nanj) (2-0j) (2+nanj) +add (-0+nanj) (2+0j) (2+nanj) +add (-0+nanj) (2+2j) (2+nanj) +add (-0+nanj) (2+16j) (2+nanj) +add (-0+nanj) (2+infj) (2+nanj) +add (-0+nanj) (2+nanj) (2+nanj) +add (-0+nanj) (16-infj) (16+nanj) +add (-0+nanj) (16-16j) (16+nanj) +add (-0+nanj) (16-2j) (16+nanj) +add (-0+nanj) (16-0j) (16+nanj) +add (-0+nanj) (16+0j) (16+nanj) +add (-0+nanj) (16+2j) (16+nanj) +add (-0+nanj) (16+16j) (16+nanj) +add (-0+nanj) (16+infj) (16+nanj) +add (-0+nanj) (16+nanj) (16+nanj) +add (-0+nanj) (inf-infj) (inf+nanj) +add (-0+nanj) (inf-16j) (inf+nanj) +add (-0+nanj) (inf-2j) (inf+nanj) +add (-0+nanj) (inf-0j) (inf+nanj) +add (-0+nanj) (inf+0j) (inf+nanj) +add (-0+nanj) (inf+2j) (inf+nanj) +add (-0+nanj) (inf+16j) (inf+nanj) +add (-0+nanj) (inf+infj) (inf+nanj) +add (-0+nanj) (inf+nanj) (inf+nanj) +add (-0+nanj) (nan-infj) (nan+nanj) +add (-0+nanj) (nan-16j) (nan+nanj) +add (-0+nanj) (nan-2j) (nan+nanj) +add (-0+nanj) (nan-0j) (nan+nanj) +add (-0+nanj) (nan+0j) (nan+nanj) +add (-0+nanj) (nan+2j) (nan+nanj) +add (-0+nanj) (nan+16j) (nan+nanj) +add (-0+nanj) (nan+infj) (nan+nanj) +add (-0+nanj) (nan+nanj) (nan+nanj) +add -infj (-inf-infj) (-inf-infj) +add -infj (-inf-16j) (-inf-infj) +add -infj (-inf-2j) (-inf-infj) +add -infj (-inf-0j) (-inf-infj) +add -infj (-inf+0j) (-inf-infj) +add -infj (-inf+2j) (-inf-infj) +add -infj (-inf+16j) (-inf-infj) +add -infj (-inf+infj) (-inf+nanj) +add -infj (-inf+nanj) (-inf+nanj) +add -infj (-16-infj) (-16-infj) +add -infj (-16-16j) (-16-infj) +add -infj (-16-2j) (-16-infj) +add -infj (-16-0j) (-16-infj) +add -infj (-16+0j) (-16-infj) +add -infj (-16+2j) (-16-infj) +add -infj (-16+16j) (-16-infj) +add -infj (-16+infj) (-16+nanj) +add -infj (-16+nanj) (-16+nanj) +add -infj (-2-infj) (-2-infj) +add -infj (-2-16j) (-2-infj) +add -infj (-2-2j) (-2-infj) +add -infj (-2-0j) (-2-infj) +add -infj (-2+0j) (-2-infj) +add -infj (-2+2j) (-2-infj) +add -infj (-2+16j) (-2-infj) +add -infj (-2+infj) (-2+nanj) +add -infj (-2+nanj) (-2+nanj) +add -infj (-0-infj) -infj +add -infj (-0-16j) -infj +add -infj (-0-2j) -infj +add -infj (-0-0j) -infj +add -infj (-0+0j) -infj +add -infj (-0+2j) -infj +add -infj (-0+16j) -infj +add -infj (-0+infj) nanj +add -infj (-0+nanj) nanj +add -infj -infj -infj +add -infj -16j -infj +add -infj -2j -infj +add -infj -0j -infj +add -infj 0j -infj +add -infj 2j -infj +add -infj 16j -infj +add -infj infj nanj +add -infj nanj nanj +add -infj (2-infj) (2-infj) +add -infj (2-16j) (2-infj) +add -infj (2-2j) (2-infj) +add -infj (2-0j) (2-infj) +add -infj (2+0j) (2-infj) +add -infj (2+2j) (2-infj) +add -infj (2+16j) (2-infj) +add -infj (2+infj) (2+nanj) +add -infj (2+nanj) (2+nanj) +add -infj (16-infj) (16-infj) +add -infj (16-16j) (16-infj) +add -infj (16-2j) (16-infj) +add -infj (16-0j) (16-infj) +add -infj (16+0j) (16-infj) +add -infj (16+2j) (16-infj) +add -infj (16+16j) (16-infj) +add -infj (16+infj) (16+nanj) +add -infj (16+nanj) (16+nanj) +add -infj (inf-infj) (inf-infj) +add -infj (inf-16j) (inf-infj) +add -infj (inf-2j) (inf-infj) +add -infj (inf-0j) (inf-infj) +add -infj (inf+0j) (inf-infj) +add -infj (inf+2j) (inf-infj) +add -infj (inf+16j) (inf-infj) +add -infj (inf+infj) (inf+nanj) +add -infj (inf+nanj) (inf+nanj) +add -infj (nan-infj) (nan-infj) +add -infj (nan-16j) (nan-infj) +add -infj (nan-2j) (nan-infj) +add -infj (nan-0j) (nan-infj) +add -infj (nan+0j) (nan-infj) +add -infj (nan+2j) (nan-infj) +add -infj (nan+16j) (nan-infj) +add -infj (nan+infj) (nan+nanj) +add -infj (nan+nanj) (nan+nanj) +add -16j (-inf-infj) (-inf-infj) +add -16j (-inf-16j) (-inf-32j) +add -16j (-inf-2j) (-inf-18j) +add -16j (-inf-0j) (-inf-16j) +add -16j (-inf+0j) (-inf-16j) +add -16j (-inf+2j) (-inf-14j) +add -16j (-inf+16j) (-inf+0j) +add -16j (-inf+infj) (-inf+infj) +add -16j (-inf+nanj) (-inf+nanj) +add -16j (-16-infj) (-16-infj) +add -16j (-16-16j) (-16-32j) +add -16j (-16-2j) (-16-18j) +add -16j (-16-0j) (-16-16j) +add -16j (-16+0j) (-16-16j) +add -16j (-16+2j) (-16-14j) +add -16j (-16+16j) (-16+0j) +add -16j (-16+infj) (-16+infj) +add -16j (-16+nanj) (-16+nanj) +add -16j (-2-infj) (-2-infj) +add -16j (-2-16j) (-2-32j) +add -16j (-2-2j) (-2-18j) +add -16j (-2-0j) (-2-16j) +add -16j (-2+0j) (-2-16j) +add -16j (-2+2j) (-2-14j) +add -16j (-2+16j) (-2+0j) +add -16j (-2+infj) (-2+infj) +add -16j (-2+nanj) (-2+nanj) +add -16j (-0-infj) -infj +add -16j (-0-16j) -32j +add -16j (-0-2j) -18j +add -16j (-0-0j) -16j +add -16j (-0+0j) -16j +add -16j (-0+2j) -14j +add -16j (-0+16j) 0j +add -16j (-0+infj) infj +add -16j (-0+nanj) nanj +add -16j -infj -infj +add -16j -16j -32j +add -16j -2j -18j +add -16j -0j -16j +add -16j 0j -16j +add -16j 2j -14j +add -16j 16j 0j +add -16j infj infj +add -16j nanj nanj +add -16j (2-infj) (2-infj) +add -16j (2-16j) (2-32j) +add -16j (2-2j) (2-18j) +add -16j (2-0j) (2-16j) +add -16j (2+0j) (2-16j) +add -16j (2+2j) (2-14j) +add -16j (2+16j) (2+0j) +add -16j (2+infj) (2+infj) +add -16j (2+nanj) (2+nanj) +add -16j (16-infj) (16-infj) +add -16j (16-16j) (16-32j) +add -16j (16-2j) (16-18j) +add -16j (16-0j) (16-16j) +add -16j (16+0j) (16-16j) +add -16j (16+2j) (16-14j) +add -16j (16+16j) (16+0j) +add -16j (16+infj) (16+infj) +add -16j (16+nanj) (16+nanj) +add -16j (inf-infj) (inf-infj) +add -16j (inf-16j) (inf-32j) +add -16j (inf-2j) (inf-18j) +add -16j (inf-0j) (inf-16j) +add -16j (inf+0j) (inf-16j) +add -16j (inf+2j) (inf-14j) +add -16j (inf+16j) (inf+0j) +add -16j (inf+infj) (inf+infj) +add -16j (inf+nanj) (inf+nanj) +add -16j (nan-infj) (nan-infj) +add -16j (nan-16j) (nan-32j) +add -16j (nan-2j) (nan-18j) +add -16j (nan-0j) (nan-16j) +add -16j (nan+0j) (nan-16j) +add -16j (nan+2j) (nan-14j) +add -16j (nan+16j) (nan+0j) +add -16j (nan+infj) (nan+infj) +add -16j (nan+nanj) (nan+nanj) +add -2j (-inf-infj) (-inf-infj) +add -2j (-inf-16j) (-inf-18j) +add -2j (-inf-2j) (-inf-4j) +add -2j (-inf-0j) (-inf-2j) +add -2j (-inf+0j) (-inf-2j) +add -2j (-inf+2j) (-inf+0j) +add -2j (-inf+16j) (-inf+14j) +add -2j (-inf+infj) (-inf+infj) +add -2j (-inf+nanj) (-inf+nanj) +add -2j (-16-infj) (-16-infj) +add -2j (-16-16j) (-16-18j) +add -2j (-16-2j) (-16-4j) +add -2j (-16-0j) (-16-2j) +add -2j (-16+0j) (-16-2j) +add -2j (-16+2j) (-16+0j) +add -2j (-16+16j) (-16+14j) +add -2j (-16+infj) (-16+infj) +add -2j (-16+nanj) (-16+nanj) +add -2j (-2-infj) (-2-infj) +add -2j (-2-16j) (-2-18j) +add -2j (-2-2j) (-2-4j) +add -2j (-2-0j) (-2-2j) +add -2j (-2+0j) (-2-2j) +add -2j (-2+2j) (-2+0j) +add -2j (-2+16j) (-2+14j) +add -2j (-2+infj) (-2+infj) +add -2j (-2+nanj) (-2+nanj) +add -2j (-0-infj) -infj +add -2j (-0-16j) -18j +add -2j (-0-2j) -4j +add -2j (-0-0j) -2j +add -2j (-0+0j) -2j +add -2j (-0+2j) 0j +add -2j (-0+16j) 14j +add -2j (-0+infj) infj +add -2j (-0+nanj) nanj +add -2j -infj -infj +add -2j -16j -18j +add -2j -2j -4j +add -2j -0j -2j +add -2j 0j -2j +add -2j 2j 0j +add -2j 16j 14j +add -2j infj infj +add -2j nanj nanj +add -2j (2-infj) (2-infj) +add -2j (2-16j) (2-18j) +add -2j (2-2j) (2-4j) +add -2j (2-0j) (2-2j) +add -2j (2+0j) (2-2j) +add -2j (2+2j) (2+0j) +add -2j (2+16j) (2+14j) +add -2j (2+infj) (2+infj) +add -2j (2+nanj) (2+nanj) +add -2j (16-infj) (16-infj) +add -2j (16-16j) (16-18j) +add -2j (16-2j) (16-4j) +add -2j (16-0j) (16-2j) +add -2j (16+0j) (16-2j) +add -2j (16+2j) (16+0j) +add -2j (16+16j) (16+14j) +add -2j (16+infj) (16+infj) +add -2j (16+nanj) (16+nanj) +add -2j (inf-infj) (inf-infj) +add -2j (inf-16j) (inf-18j) +add -2j (inf-2j) (inf-4j) +add -2j (inf-0j) (inf-2j) +add -2j (inf+0j) (inf-2j) +add -2j (inf+2j) (inf+0j) +add -2j (inf+16j) (inf+14j) +add -2j (inf+infj) (inf+infj) +add -2j (inf+nanj) (inf+nanj) +add -2j (nan-infj) (nan-infj) +add -2j (nan-16j) (nan-18j) +add -2j (nan-2j) (nan-4j) +add -2j (nan-0j) (nan-2j) +add -2j (nan+0j) (nan-2j) +add -2j (nan+2j) (nan+0j) +add -2j (nan+16j) (nan+14j) +add -2j (nan+infj) (nan+infj) +add -2j (nan+nanj) (nan+nanj) +add -0j (-inf-infj) (-inf-infj) +add -0j (-inf-16j) (-inf-16j) +add -0j (-inf-2j) (-inf-2j) +add -0j (-inf-0j) (-inf-0j) +add -0j (-inf+0j) (-inf+0j) +add -0j (-inf+2j) (-inf+2j) +add -0j (-inf+16j) (-inf+16j) +add -0j (-inf+infj) (-inf+infj) +add -0j (-inf+nanj) (-inf+nanj) +add -0j (-16-infj) (-16-infj) +add -0j (-16-16j) (-16-16j) +add -0j (-16-2j) (-16-2j) +add -0j (-16-0j) (-16-0j) +add -0j (-16+0j) (-16+0j) +add -0j (-16+2j) (-16+2j) +add -0j (-16+16j) (-16+16j) +add -0j (-16+infj) (-16+infj) +add -0j (-16+nanj) (-16+nanj) +add -0j (-2-infj) (-2-infj) +add -0j (-2-16j) (-2-16j) +add -0j (-2-2j) (-2-2j) +add -0j (-2-0j) (-2-0j) +add -0j (-2+0j) (-2+0j) +add -0j (-2+2j) (-2+2j) +add -0j (-2+16j) (-2+16j) +add -0j (-2+infj) (-2+infj) +add -0j (-2+nanj) (-2+nanj) +add -0j (-0-infj) -infj +add -0j (-0-16j) -16j +add -0j (-0-2j) -2j +add -0j (-0-0j) -0j +add -0j (-0+0j) 0j +add -0j (-0+2j) 2j +add -0j (-0+16j) 16j +add -0j (-0+infj) infj +add -0j (-0+nanj) nanj +add -0j -infj -infj +add -0j -16j -16j +add -0j -2j -2j +add -0j -0j -0j +add -0j 0j 0j +add -0j 2j 2j +add -0j 16j 16j +add -0j infj infj +add -0j nanj nanj +add -0j (2-infj) (2-infj) +add -0j (2-16j) (2-16j) +add -0j (2-2j) (2-2j) +add -0j (2-0j) (2-0j) +add -0j (2+0j) (2+0j) +add -0j (2+2j) (2+2j) +add -0j (2+16j) (2+16j) +add -0j (2+infj) (2+infj) +add -0j (2+nanj) (2+nanj) +add -0j (16-infj) (16-infj) +add -0j (16-16j) (16-16j) +add -0j (16-2j) (16-2j) +add -0j (16-0j) (16-0j) +add -0j (16+0j) (16+0j) +add -0j (16+2j) (16+2j) +add -0j (16+16j) (16+16j) +add -0j (16+infj) (16+infj) +add -0j (16+nanj) (16+nanj) +add -0j (inf-infj) (inf-infj) +add -0j (inf-16j) (inf-16j) +add -0j (inf-2j) (inf-2j) +add -0j (inf-0j) (inf-0j) +add -0j (inf+0j) (inf+0j) +add -0j (inf+2j) (inf+2j) +add -0j (inf+16j) (inf+16j) +add -0j (inf+infj) (inf+infj) +add -0j (inf+nanj) (inf+nanj) +add -0j (nan-infj) (nan-infj) +add -0j (nan-16j) (nan-16j) +add -0j (nan-2j) (nan-2j) +add -0j (nan-0j) (nan-0j) +add -0j (nan+0j) (nan+0j) +add -0j (nan+2j) (nan+2j) +add -0j (nan+16j) (nan+16j) +add -0j (nan+infj) (nan+infj) +add -0j (nan+nanj) (nan+nanj) +add 0j (-inf-infj) (-inf-infj) +add 0j (-inf-16j) (-inf-16j) +add 0j (-inf-2j) (-inf-2j) +add 0j (-inf-0j) (-inf+0j) +add 0j (-inf+0j) (-inf+0j) +add 0j (-inf+2j) (-inf+2j) +add 0j (-inf+16j) (-inf+16j) +add 0j (-inf+infj) (-inf+infj) +add 0j (-inf+nanj) (-inf+nanj) +add 0j (-16-infj) (-16-infj) +add 0j (-16-16j) (-16-16j) +add 0j (-16-2j) (-16-2j) +add 0j (-16-0j) (-16+0j) +add 0j (-16+0j) (-16+0j) +add 0j (-16+2j) (-16+2j) +add 0j (-16+16j) (-16+16j) +add 0j (-16+infj) (-16+infj) +add 0j (-16+nanj) (-16+nanj) +add 0j (-2-infj) (-2-infj) +add 0j (-2-16j) (-2-16j) +add 0j (-2-2j) (-2-2j) +add 0j (-2-0j) (-2+0j) +add 0j (-2+0j) (-2+0j) +add 0j (-2+2j) (-2+2j) +add 0j (-2+16j) (-2+16j) +add 0j (-2+infj) (-2+infj) +add 0j (-2+nanj) (-2+nanj) +add 0j (-0-infj) -infj +add 0j (-0-16j) -16j +add 0j (-0-2j) -2j +add 0j (-0-0j) 0j +add 0j (-0+0j) 0j +add 0j (-0+2j) 2j +add 0j (-0+16j) 16j +add 0j (-0+infj) infj +add 0j (-0+nanj) nanj +add 0j -infj -infj +add 0j -16j -16j +add 0j -2j -2j +add 0j -0j 0j +add 0j 0j 0j +add 0j 2j 2j +add 0j 16j 16j +add 0j infj infj +add 0j nanj nanj +add 0j (2-infj) (2-infj) +add 0j (2-16j) (2-16j) +add 0j (2-2j) (2-2j) +add 0j (2-0j) (2+0j) +add 0j (2+0j) (2+0j) +add 0j (2+2j) (2+2j) +add 0j (2+16j) (2+16j) +add 0j (2+infj) (2+infj) +add 0j (2+nanj) (2+nanj) +add 0j (16-infj) (16-infj) +add 0j (16-16j) (16-16j) +add 0j (16-2j) (16-2j) +add 0j (16-0j) (16+0j) +add 0j (16+0j) (16+0j) +add 0j (16+2j) (16+2j) +add 0j (16+16j) (16+16j) +add 0j (16+infj) (16+infj) +add 0j (16+nanj) (16+nanj) +add 0j (inf-infj) (inf-infj) +add 0j (inf-16j) (inf-16j) +add 0j (inf-2j) (inf-2j) +add 0j (inf-0j) (inf+0j) +add 0j (inf+0j) (inf+0j) +add 0j (inf+2j) (inf+2j) +add 0j (inf+16j) (inf+16j) +add 0j (inf+infj) (inf+infj) +add 0j (inf+nanj) (inf+nanj) +add 0j (nan-infj) (nan-infj) +add 0j (nan-16j) (nan-16j) +add 0j (nan-2j) (nan-2j) +add 0j (nan-0j) (nan+0j) +add 0j (nan+0j) (nan+0j) +add 0j (nan+2j) (nan+2j) +add 0j (nan+16j) (nan+16j) +add 0j (nan+infj) (nan+infj) +add 0j (nan+nanj) (nan+nanj) +add 2j (-inf-infj) (-inf-infj) +add 2j (-inf-16j) (-inf-14j) +add 2j (-inf-2j) (-inf+0j) +add 2j (-inf-0j) (-inf+2j) +add 2j (-inf+0j) (-inf+2j) +add 2j (-inf+2j) (-inf+4j) +add 2j (-inf+16j) (-inf+18j) +add 2j (-inf+infj) (-inf+infj) +add 2j (-inf+nanj) (-inf+nanj) +add 2j (-16-infj) (-16-infj) +add 2j (-16-16j) (-16-14j) +add 2j (-16-2j) (-16+0j) +add 2j (-16-0j) (-16+2j) +add 2j (-16+0j) (-16+2j) +add 2j (-16+2j) (-16+4j) +add 2j (-16+16j) (-16+18j) +add 2j (-16+infj) (-16+infj) +add 2j (-16+nanj) (-16+nanj) +add 2j (-2-infj) (-2-infj) +add 2j (-2-16j) (-2-14j) +add 2j (-2-2j) (-2+0j) +add 2j (-2-0j) (-2+2j) +add 2j (-2+0j) (-2+2j) +add 2j (-2+2j) (-2+4j) +add 2j (-2+16j) (-2+18j) +add 2j (-2+infj) (-2+infj) +add 2j (-2+nanj) (-2+nanj) +add 2j (-0-infj) -infj +add 2j (-0-16j) -14j +add 2j (-0-2j) 0j +add 2j (-0-0j) 2j +add 2j (-0+0j) 2j +add 2j (-0+2j) 4j +add 2j (-0+16j) 18j +add 2j (-0+infj) infj +add 2j (-0+nanj) nanj +add 2j -infj -infj +add 2j -16j -14j +add 2j -2j 0j +add 2j -0j 2j +add 2j 0j 2j +add 2j 2j 4j +add 2j 16j 18j +add 2j infj infj +add 2j nanj nanj +add 2j (2-infj) (2-infj) +add 2j (2-16j) (2-14j) +add 2j (2-2j) (2+0j) +add 2j (2-0j) (2+2j) +add 2j (2+0j) (2+2j) +add 2j (2+2j) (2+4j) +add 2j (2+16j) (2+18j) +add 2j (2+infj) (2+infj) +add 2j (2+nanj) (2+nanj) +add 2j (16-infj) (16-infj) +add 2j (16-16j) (16-14j) +add 2j (16-2j) (16+0j) +add 2j (16-0j) (16+2j) +add 2j (16+0j) (16+2j) +add 2j (16+2j) (16+4j) +add 2j (16+16j) (16+18j) +add 2j (16+infj) (16+infj) +add 2j (16+nanj) (16+nanj) +add 2j (inf-infj) (inf-infj) +add 2j (inf-16j) (inf-14j) +add 2j (inf-2j) (inf+0j) +add 2j (inf-0j) (inf+2j) +add 2j (inf+0j) (inf+2j) +add 2j (inf+2j) (inf+4j) +add 2j (inf+16j) (inf+18j) +add 2j (inf+infj) (inf+infj) +add 2j (inf+nanj) (inf+nanj) +add 2j (nan-infj) (nan-infj) +add 2j (nan-16j) (nan-14j) +add 2j (nan-2j) (nan+0j) +add 2j (nan-0j) (nan+2j) +add 2j (nan+0j) (nan+2j) +add 2j (nan+2j) (nan+4j) +add 2j (nan+16j) (nan+18j) +add 2j (nan+infj) (nan+infj) +add 2j (nan+nanj) (nan+nanj) +add 16j (-inf-infj) (-inf-infj) +add 16j (-inf-16j) (-inf+0j) +add 16j (-inf-2j) (-inf+14j) +add 16j (-inf-0j) (-inf+16j) +add 16j (-inf+0j) (-inf+16j) +add 16j (-inf+2j) (-inf+18j) +add 16j (-inf+16j) (-inf+32j) +add 16j (-inf+infj) (-inf+infj) +add 16j (-inf+nanj) (-inf+nanj) +add 16j (-16-infj) (-16-infj) +add 16j (-16-16j) (-16+0j) +add 16j (-16-2j) (-16+14j) +add 16j (-16-0j) (-16+16j) +add 16j (-16+0j) (-16+16j) +add 16j (-16+2j) (-16+18j) +add 16j (-16+16j) (-16+32j) +add 16j (-16+infj) (-16+infj) +add 16j (-16+nanj) (-16+nanj) +add 16j (-2-infj) (-2-infj) +add 16j (-2-16j) (-2+0j) +add 16j (-2-2j) (-2+14j) +add 16j (-2-0j) (-2+16j) +add 16j (-2+0j) (-2+16j) +add 16j (-2+2j) (-2+18j) +add 16j (-2+16j) (-2+32j) +add 16j (-2+infj) (-2+infj) +add 16j (-2+nanj) (-2+nanj) +add 16j (-0-infj) -infj +add 16j (-0-16j) 0j +add 16j (-0-2j) 14j +add 16j (-0-0j) 16j +add 16j (-0+0j) 16j +add 16j (-0+2j) 18j +add 16j (-0+16j) 32j +add 16j (-0+infj) infj +add 16j (-0+nanj) nanj +add 16j -infj -infj +add 16j -16j 0j +add 16j -2j 14j +add 16j -0j 16j +add 16j 0j 16j +add 16j 2j 18j +add 16j 16j 32j +add 16j infj infj +add 16j nanj nanj +add 16j (2-infj) (2-infj) +add 16j (2-16j) (2+0j) +add 16j (2-2j) (2+14j) +add 16j (2-0j) (2+16j) +add 16j (2+0j) (2+16j) +add 16j (2+2j) (2+18j) +add 16j (2+16j) (2+32j) +add 16j (2+infj) (2+infj) +add 16j (2+nanj) (2+nanj) +add 16j (16-infj) (16-infj) +add 16j (16-16j) (16+0j) +add 16j (16-2j) (16+14j) +add 16j (16-0j) (16+16j) +add 16j (16+0j) (16+16j) +add 16j (16+2j) (16+18j) +add 16j (16+16j) (16+32j) +add 16j (16+infj) (16+infj) +add 16j (16+nanj) (16+nanj) +add 16j (inf-infj) (inf-infj) +add 16j (inf-16j) (inf+0j) +add 16j (inf-2j) (inf+14j) +add 16j (inf-0j) (inf+16j) +add 16j (inf+0j) (inf+16j) +add 16j (inf+2j) (inf+18j) +add 16j (inf+16j) (inf+32j) +add 16j (inf+infj) (inf+infj) +add 16j (inf+nanj) (inf+nanj) +add 16j (nan-infj) (nan-infj) +add 16j (nan-16j) (nan+0j) +add 16j (nan-2j) (nan+14j) +add 16j (nan-0j) (nan+16j) +add 16j (nan+0j) (nan+16j) +add 16j (nan+2j) (nan+18j) +add 16j (nan+16j) (nan+32j) +add 16j (nan+infj) (nan+infj) +add 16j (nan+nanj) (nan+nanj) +add infj (-inf-infj) (-inf+nanj) +add infj (-inf-16j) (-inf+infj) +add infj (-inf-2j) (-inf+infj) +add infj (-inf-0j) (-inf+infj) +add infj (-inf+0j) (-inf+infj) +add infj (-inf+2j) (-inf+infj) +add infj (-inf+16j) (-inf+infj) +add infj (-inf+infj) (-inf+infj) +add infj (-inf+nanj) (-inf+nanj) +add infj (-16-infj) (-16+nanj) +add infj (-16-16j) (-16+infj) +add infj (-16-2j) (-16+infj) +add infj (-16-0j) (-16+infj) +add infj (-16+0j) (-16+infj) +add infj (-16+2j) (-16+infj) +add infj (-16+16j) (-16+infj) +add infj (-16+infj) (-16+infj) +add infj (-16+nanj) (-16+nanj) +add infj (-2-infj) (-2+nanj) +add infj (-2-16j) (-2+infj) +add infj (-2-2j) (-2+infj) +add infj (-2-0j) (-2+infj) +add infj (-2+0j) (-2+infj) +add infj (-2+2j) (-2+infj) +add infj (-2+16j) (-2+infj) +add infj (-2+infj) (-2+infj) +add infj (-2+nanj) (-2+nanj) +add infj (-0-infj) nanj +add infj (-0-16j) infj +add infj (-0-2j) infj +add infj (-0-0j) infj +add infj (-0+0j) infj +add infj (-0+2j) infj +add infj (-0+16j) infj +add infj (-0+infj) infj +add infj (-0+nanj) nanj +add infj -infj nanj +add infj -16j infj +add infj -2j infj +add infj -0j infj +add infj 0j infj +add infj 2j infj +add infj 16j infj +add infj infj infj +add infj nanj nanj +add infj (2-infj) (2+nanj) +add infj (2-16j) (2+infj) +add infj (2-2j) (2+infj) +add infj (2-0j) (2+infj) +add infj (2+0j) (2+infj) +add infj (2+2j) (2+infj) +add infj (2+16j) (2+infj) +add infj (2+infj) (2+infj) +add infj (2+nanj) (2+nanj) +add infj (16-infj) (16+nanj) +add infj (16-16j) (16+infj) +add infj (16-2j) (16+infj) +add infj (16-0j) (16+infj) +add infj (16+0j) (16+infj) +add infj (16+2j) (16+infj) +add infj (16+16j) (16+infj) +add infj (16+infj) (16+infj) +add infj (16+nanj) (16+nanj) +add infj (inf-infj) (inf+nanj) +add infj (inf-16j) (inf+infj) +add infj (inf-2j) (inf+infj) +add infj (inf-0j) (inf+infj) +add infj (inf+0j) (inf+infj) +add infj (inf+2j) (inf+infj) +add infj (inf+16j) (inf+infj) +add infj (inf+infj) (inf+infj) +add infj (inf+nanj) (inf+nanj) +add infj (nan-infj) (nan+nanj) +add infj (nan-16j) (nan+infj) +add infj (nan-2j) (nan+infj) +add infj (nan-0j) (nan+infj) +add infj (nan+0j) (nan+infj) +add infj (nan+2j) (nan+infj) +add infj (nan+16j) (nan+infj) +add infj (nan+infj) (nan+infj) +add infj (nan+nanj) (nan+nanj) +add nanj (-inf-infj) (-inf+nanj) +add nanj (-inf-16j) (-inf+nanj) +add nanj (-inf-2j) (-inf+nanj) +add nanj (-inf-0j) (-inf+nanj) +add nanj (-inf+0j) (-inf+nanj) +add nanj (-inf+2j) (-inf+nanj) +add nanj (-inf+16j) (-inf+nanj) +add nanj (-inf+infj) (-inf+nanj) +add nanj (-inf+nanj) (-inf+nanj) +add nanj (-16-infj) (-16+nanj) +add nanj (-16-16j) (-16+nanj) +add nanj (-16-2j) (-16+nanj) +add nanj (-16-0j) (-16+nanj) +add nanj (-16+0j) (-16+nanj) +add nanj (-16+2j) (-16+nanj) +add nanj (-16+16j) (-16+nanj) +add nanj (-16+infj) (-16+nanj) +add nanj (-16+nanj) (-16+nanj) +add nanj (-2-infj) (-2+nanj) +add nanj (-2-16j) (-2+nanj) +add nanj (-2-2j) (-2+nanj) +add nanj (-2-0j) (-2+nanj) +add nanj (-2+0j) (-2+nanj) +add nanj (-2+2j) (-2+nanj) +add nanj (-2+16j) (-2+nanj) +add nanj (-2+infj) (-2+nanj) +add nanj (-2+nanj) (-2+nanj) +add nanj (-0-infj) nanj +add nanj (-0-16j) nanj +add nanj (-0-2j) nanj +add nanj (-0-0j) nanj +add nanj (-0+0j) nanj +add nanj (-0+2j) nanj +add nanj (-0+16j) nanj +add nanj (-0+infj) nanj +add nanj (-0+nanj) nanj +add nanj -infj nanj +add nanj -16j nanj +add nanj -2j nanj +add nanj -0j nanj +add nanj 0j nanj +add nanj 2j nanj +add nanj 16j nanj +add nanj infj nanj +add nanj nanj nanj +add nanj (2-infj) (2+nanj) +add nanj (2-16j) (2+nanj) +add nanj (2-2j) (2+nanj) +add nanj (2-0j) (2+nanj) +add nanj (2+0j) (2+nanj) +add nanj (2+2j) (2+nanj) +add nanj (2+16j) (2+nanj) +add nanj (2+infj) (2+nanj) +add nanj (2+nanj) (2+nanj) +add nanj (16-infj) (16+nanj) +add nanj (16-16j) (16+nanj) +add nanj (16-2j) (16+nanj) +add nanj (16-0j) (16+nanj) +add nanj (16+0j) (16+nanj) +add nanj (16+2j) (16+nanj) +add nanj (16+16j) (16+nanj) +add nanj (16+infj) (16+nanj) +add nanj (16+nanj) (16+nanj) +add nanj (inf-infj) (inf+nanj) +add nanj (inf-16j) (inf+nanj) +add nanj (inf-2j) (inf+nanj) +add nanj (inf-0j) (inf+nanj) +add nanj (inf+0j) (inf+nanj) +add nanj (inf+2j) (inf+nanj) +add nanj (inf+16j) (inf+nanj) +add nanj (inf+infj) (inf+nanj) +add nanj (inf+nanj) (inf+nanj) +add nanj (nan-infj) (nan+nanj) +add nanj (nan-16j) (nan+nanj) +add nanj (nan-2j) (nan+nanj) +add nanj (nan-0j) (nan+nanj) +add nanj (nan+0j) (nan+nanj) +add nanj (nan+2j) (nan+nanj) +add nanj (nan+16j) (nan+nanj) +add nanj (nan+infj) (nan+nanj) +add nanj (nan+nanj) (nan+nanj) +add (2-infj) (-inf-infj) (-inf-infj) +add (2-infj) (-inf-16j) (-inf-infj) +add (2-infj) (-inf-2j) (-inf-infj) +add (2-infj) (-inf-0j) (-inf-infj) +add (2-infj) (-inf+0j) (-inf-infj) +add (2-infj) (-inf+2j) (-inf-infj) +add (2-infj) (-inf+16j) (-inf-infj) +add (2-infj) (-inf+infj) (-inf+nanj) +add (2-infj) (-inf+nanj) (-inf+nanj) +add (2-infj) (-16-infj) (-14-infj) +add (2-infj) (-16-16j) (-14-infj) +add (2-infj) (-16-2j) (-14-infj) +add (2-infj) (-16-0j) (-14-infj) +add (2-infj) (-16+0j) (-14-infj) +add (2-infj) (-16+2j) (-14-infj) +add (2-infj) (-16+16j) (-14-infj) +add (2-infj) (-16+infj) (-14+nanj) +add (2-infj) (-16+nanj) (-14+nanj) +add (2-infj) (-2-infj) -infj +add (2-infj) (-2-16j) -infj +add (2-infj) (-2-2j) -infj +add (2-infj) (-2-0j) -infj +add (2-infj) (-2+0j) -infj +add (2-infj) (-2+2j) -infj +add (2-infj) (-2+16j) -infj +add (2-infj) (-2+infj) nanj +add (2-infj) (-2+nanj) nanj +add (2-infj) (-0-infj) (2-infj) +add (2-infj) (-0-16j) (2-infj) +add (2-infj) (-0-2j) (2-infj) +add (2-infj) (-0-0j) (2-infj) +add (2-infj) (-0+0j) (2-infj) +add (2-infj) (-0+2j) (2-infj) +add (2-infj) (-0+16j) (2-infj) +add (2-infj) (-0+infj) (2+nanj) +add (2-infj) (-0+nanj) (2+nanj) +add (2-infj) -infj (2-infj) +add (2-infj) -16j (2-infj) +add (2-infj) -2j (2-infj) +add (2-infj) -0j (2-infj) +add (2-infj) 0j (2-infj) +add (2-infj) 2j (2-infj) +add (2-infj) 16j (2-infj) +add (2-infj) infj (2+nanj) +add (2-infj) nanj (2+nanj) +add (2-infj) (2-infj) (4-infj) +add (2-infj) (2-16j) (4-infj) +add (2-infj) (2-2j) (4-infj) +add (2-infj) (2-0j) (4-infj) +add (2-infj) (2+0j) (4-infj) +add (2-infj) (2+2j) (4-infj) +add (2-infj) (2+16j) (4-infj) +add (2-infj) (2+infj) (4+nanj) +add (2-infj) (2+nanj) (4+nanj) +add (2-infj) (16-infj) (18-infj) +add (2-infj) (16-16j) (18-infj) +add (2-infj) (16-2j) (18-infj) +add (2-infj) (16-0j) (18-infj) +add (2-infj) (16+0j) (18-infj) +add (2-infj) (16+2j) (18-infj) +add (2-infj) (16+16j) (18-infj) +add (2-infj) (16+infj) (18+nanj) +add (2-infj) (16+nanj) (18+nanj) +add (2-infj) (inf-infj) (inf-infj) +add (2-infj) (inf-16j) (inf-infj) +add (2-infj) (inf-2j) (inf-infj) +add (2-infj) (inf-0j) (inf-infj) +add (2-infj) (inf+0j) (inf-infj) +add (2-infj) (inf+2j) (inf-infj) +add (2-infj) (inf+16j) (inf-infj) +add (2-infj) (inf+infj) (inf+nanj) +add (2-infj) (inf+nanj) (inf+nanj) +add (2-infj) (nan-infj) (nan-infj) +add (2-infj) (nan-16j) (nan-infj) +add (2-infj) (nan-2j) (nan-infj) +add (2-infj) (nan-0j) (nan-infj) +add (2-infj) (nan+0j) (nan-infj) +add (2-infj) (nan+2j) (nan-infj) +add (2-infj) (nan+16j) (nan-infj) +add (2-infj) (nan+infj) (nan+nanj) +add (2-infj) (nan+nanj) (nan+nanj) +add (2-16j) (-inf-infj) (-inf-infj) +add (2-16j) (-inf-16j) (-inf-32j) +add (2-16j) (-inf-2j) (-inf-18j) +add (2-16j) (-inf-0j) (-inf-16j) +add (2-16j) (-inf+0j) (-inf-16j) +add (2-16j) (-inf+2j) (-inf-14j) +add (2-16j) (-inf+16j) (-inf+0j) +add (2-16j) (-inf+infj) (-inf+infj) +add (2-16j) (-inf+nanj) (-inf+nanj) +add (2-16j) (-16-infj) (-14-infj) +add (2-16j) (-16-16j) (-14-32j) +add (2-16j) (-16-2j) (-14-18j) +add (2-16j) (-16-0j) (-14-16j) +add (2-16j) (-16+0j) (-14-16j) +add (2-16j) (-16+2j) (-14-14j) +add (2-16j) (-16+16j) (-14+0j) +add (2-16j) (-16+infj) (-14+infj) +add (2-16j) (-16+nanj) (-14+nanj) +add (2-16j) (-2-infj) -infj +add (2-16j) (-2-16j) -32j +add (2-16j) (-2-2j) -18j +add (2-16j) (-2-0j) -16j +add (2-16j) (-2+0j) -16j +add (2-16j) (-2+2j) -14j +add (2-16j) (-2+16j) 0j +add (2-16j) (-2+infj) infj +add (2-16j) (-2+nanj) nanj +add (2-16j) (-0-infj) (2-infj) +add (2-16j) (-0-16j) (2-32j) +add (2-16j) (-0-2j) (2-18j) +add (2-16j) (-0-0j) (2-16j) +add (2-16j) (-0+0j) (2-16j) +add (2-16j) (-0+2j) (2-14j) +add (2-16j) (-0+16j) (2+0j) +add (2-16j) (-0+infj) (2+infj) +add (2-16j) (-0+nanj) (2+nanj) +add (2-16j) -infj (2-infj) +add (2-16j) -16j (2-32j) +add (2-16j) -2j (2-18j) +add (2-16j) -0j (2-16j) +add (2-16j) 0j (2-16j) +add (2-16j) 2j (2-14j) +add (2-16j) 16j (2+0j) +add (2-16j) infj (2+infj) +add (2-16j) nanj (2+nanj) +add (2-16j) (2-infj) (4-infj) +add (2-16j) (2-16j) (4-32j) +add (2-16j) (2-2j) (4-18j) +add (2-16j) (2-0j) (4-16j) +add (2-16j) (2+0j) (4-16j) +add (2-16j) (2+2j) (4-14j) +add (2-16j) (2+16j) (4+0j) +add (2-16j) (2+infj) (4+infj) +add (2-16j) (2+nanj) (4+nanj) +add (2-16j) (16-infj) (18-infj) +add (2-16j) (16-16j) (18-32j) +add (2-16j) (16-2j) (18-18j) +add (2-16j) (16-0j) (18-16j) +add (2-16j) (16+0j) (18-16j) +add (2-16j) (16+2j) (18-14j) +add (2-16j) (16+16j) (18+0j) +add (2-16j) (16+infj) (18+infj) +add (2-16j) (16+nanj) (18+nanj) +add (2-16j) (inf-infj) (inf-infj) +add (2-16j) (inf-16j) (inf-32j) +add (2-16j) (inf-2j) (inf-18j) +add (2-16j) (inf-0j) (inf-16j) +add (2-16j) (inf+0j) (inf-16j) +add (2-16j) (inf+2j) (inf-14j) +add (2-16j) (inf+16j) (inf+0j) +add (2-16j) (inf+infj) (inf+infj) +add (2-16j) (inf+nanj) (inf+nanj) +add (2-16j) (nan-infj) (nan-infj) +add (2-16j) (nan-16j) (nan-32j) +add (2-16j) (nan-2j) (nan-18j) +add (2-16j) (nan-0j) (nan-16j) +add (2-16j) (nan+0j) (nan-16j) +add (2-16j) (nan+2j) (nan-14j) +add (2-16j) (nan+16j) (nan+0j) +add (2-16j) (nan+infj) (nan+infj) +add (2-16j) (nan+nanj) (nan+nanj) +add (2-2j) (-inf-infj) (-inf-infj) +add (2-2j) (-inf-16j) (-inf-18j) +add (2-2j) (-inf-2j) (-inf-4j) +add (2-2j) (-inf-0j) (-inf-2j) +add (2-2j) (-inf+0j) (-inf-2j) +add (2-2j) (-inf+2j) (-inf+0j) +add (2-2j) (-inf+16j) (-inf+14j) +add (2-2j) (-inf+infj) (-inf+infj) +add (2-2j) (-inf+nanj) (-inf+nanj) +add (2-2j) (-16-infj) (-14-infj) +add (2-2j) (-16-16j) (-14-18j) +add (2-2j) (-16-2j) (-14-4j) +add (2-2j) (-16-0j) (-14-2j) +add (2-2j) (-16+0j) (-14-2j) +add (2-2j) (-16+2j) (-14+0j) +add (2-2j) (-16+16j) (-14+14j) +add (2-2j) (-16+infj) (-14+infj) +add (2-2j) (-16+nanj) (-14+nanj) +add (2-2j) (-2-infj) -infj +add (2-2j) (-2-16j) -18j +add (2-2j) (-2-2j) -4j +add (2-2j) (-2-0j) -2j +add (2-2j) (-2+0j) -2j +add (2-2j) (-2+2j) 0j +add (2-2j) (-2+16j) 14j +add (2-2j) (-2+infj) infj +add (2-2j) (-2+nanj) nanj +add (2-2j) (-0-infj) (2-infj) +add (2-2j) (-0-16j) (2-18j) +add (2-2j) (-0-2j) (2-4j) +add (2-2j) (-0-0j) (2-2j) +add (2-2j) (-0+0j) (2-2j) +add (2-2j) (-0+2j) (2+0j) +add (2-2j) (-0+16j) (2+14j) +add (2-2j) (-0+infj) (2+infj) +add (2-2j) (-0+nanj) (2+nanj) +add (2-2j) -infj (2-infj) +add (2-2j) -16j (2-18j) +add (2-2j) -2j (2-4j) +add (2-2j) -0j (2-2j) +add (2-2j) 0j (2-2j) +add (2-2j) 2j (2+0j) +add (2-2j) 16j (2+14j) +add (2-2j) infj (2+infj) +add (2-2j) nanj (2+nanj) +add (2-2j) (2-infj) (4-infj) +add (2-2j) (2-16j) (4-18j) +add (2-2j) (2-2j) (4-4j) +add (2-2j) (2-0j) (4-2j) +add (2-2j) (2+0j) (4-2j) +add (2-2j) (2+2j) (4+0j) +add (2-2j) (2+16j) (4+14j) +add (2-2j) (2+infj) (4+infj) +add (2-2j) (2+nanj) (4+nanj) +add (2-2j) (16-infj) (18-infj) +add (2-2j) (16-16j) (18-18j) +add (2-2j) (16-2j) (18-4j) +add (2-2j) (16-0j) (18-2j) +add (2-2j) (16+0j) (18-2j) +add (2-2j) (16+2j) (18+0j) +add (2-2j) (16+16j) (18+14j) +add (2-2j) (16+infj) (18+infj) +add (2-2j) (16+nanj) (18+nanj) +add (2-2j) (inf-infj) (inf-infj) +add (2-2j) (inf-16j) (inf-18j) +add (2-2j) (inf-2j) (inf-4j) +add (2-2j) (inf-0j) (inf-2j) +add (2-2j) (inf+0j) (inf-2j) +add (2-2j) (inf+2j) (inf+0j) +add (2-2j) (inf+16j) (inf+14j) +add (2-2j) (inf+infj) (inf+infj) +add (2-2j) (inf+nanj) (inf+nanj) +add (2-2j) (nan-infj) (nan-infj) +add (2-2j) (nan-16j) (nan-18j) +add (2-2j) (nan-2j) (nan-4j) +add (2-2j) (nan-0j) (nan-2j) +add (2-2j) (nan+0j) (nan-2j) +add (2-2j) (nan+2j) (nan+0j) +add (2-2j) (nan+16j) (nan+14j) +add (2-2j) (nan+infj) (nan+infj) +add (2-2j) (nan+nanj) (nan+nanj) +add (2-0j) (-inf-infj) (-inf-infj) +add (2-0j) (-inf-16j) (-inf-16j) +add (2-0j) (-inf-2j) (-inf-2j) +add (2-0j) (-inf-0j) (-inf-0j) +add (2-0j) (-inf+0j) (-inf+0j) +add (2-0j) (-inf+2j) (-inf+2j) +add (2-0j) (-inf+16j) (-inf+16j) +add (2-0j) (-inf+infj) (-inf+infj) +add (2-0j) (-inf+nanj) (-inf+nanj) +add (2-0j) (-16-infj) (-14-infj) +add (2-0j) (-16-16j) (-14-16j) +add (2-0j) (-16-2j) (-14-2j) +add (2-0j) (-16-0j) (-14-0j) +add (2-0j) (-16+0j) (-14+0j) +add (2-0j) (-16+2j) (-14+2j) +add (2-0j) (-16+16j) (-14+16j) +add (2-0j) (-16+infj) (-14+infj) +add (2-0j) (-16+nanj) (-14+nanj) +add (2-0j) (-2-infj) -infj +add (2-0j) (-2-16j) -16j +add (2-0j) (-2-2j) -2j +add (2-0j) (-2-0j) -0j +add (2-0j) (-2+0j) 0j +add (2-0j) (-2+2j) 2j +add (2-0j) (-2+16j) 16j +add (2-0j) (-2+infj) infj +add (2-0j) (-2+nanj) nanj +add (2-0j) (-0-infj) (2-infj) +add (2-0j) (-0-16j) (2-16j) +add (2-0j) (-0-2j) (2-2j) +add (2-0j) (-0-0j) (2-0j) +add (2-0j) (-0+0j) (2+0j) +add (2-0j) (-0+2j) (2+2j) +add (2-0j) (-0+16j) (2+16j) +add (2-0j) (-0+infj) (2+infj) +add (2-0j) (-0+nanj) (2+nanj) +add (2-0j) -infj (2-infj) +add (2-0j) -16j (2-16j) +add (2-0j) -2j (2-2j) +add (2-0j) -0j (2-0j) +add (2-0j) 0j (2+0j) +add (2-0j) 2j (2+2j) +add (2-0j) 16j (2+16j) +add (2-0j) infj (2+infj) +add (2-0j) nanj (2+nanj) +add (2-0j) (2-infj) (4-infj) +add (2-0j) (2-16j) (4-16j) +add (2-0j) (2-2j) (4-2j) +add (2-0j) (2-0j) (4-0j) +add (2-0j) (2+0j) (4+0j) +add (2-0j) (2+2j) (4+2j) +add (2-0j) (2+16j) (4+16j) +add (2-0j) (2+infj) (4+infj) +add (2-0j) (2+nanj) (4+nanj) +add (2-0j) (16-infj) (18-infj) +add (2-0j) (16-16j) (18-16j) +add (2-0j) (16-2j) (18-2j) +add (2-0j) (16-0j) (18-0j) +add (2-0j) (16+0j) (18+0j) +add (2-0j) (16+2j) (18+2j) +add (2-0j) (16+16j) (18+16j) +add (2-0j) (16+infj) (18+infj) +add (2-0j) (16+nanj) (18+nanj) +add (2-0j) (inf-infj) (inf-infj) +add (2-0j) (inf-16j) (inf-16j) +add (2-0j) (inf-2j) (inf-2j) +add (2-0j) (inf-0j) (inf-0j) +add (2-0j) (inf+0j) (inf+0j) +add (2-0j) (inf+2j) (inf+2j) +add (2-0j) (inf+16j) (inf+16j) +add (2-0j) (inf+infj) (inf+infj) +add (2-0j) (inf+nanj) (inf+nanj) +add (2-0j) (nan-infj) (nan-infj) +add (2-0j) (nan-16j) (nan-16j) +add (2-0j) (nan-2j) (nan-2j) +add (2-0j) (nan-0j) (nan-0j) +add (2-0j) (nan+0j) (nan+0j) +add (2-0j) (nan+2j) (nan+2j) +add (2-0j) (nan+16j) (nan+16j) +add (2-0j) (nan+infj) (nan+infj) +add (2-0j) (nan+nanj) (nan+nanj) +add (2+0j) (-inf-infj) (-inf-infj) +add (2+0j) (-inf-16j) (-inf-16j) +add (2+0j) (-inf-2j) (-inf-2j) +add (2+0j) (-inf-0j) (-inf+0j) +add (2+0j) (-inf+0j) (-inf+0j) +add (2+0j) (-inf+2j) (-inf+2j) +add (2+0j) (-inf+16j) (-inf+16j) +add (2+0j) (-inf+infj) (-inf+infj) +add (2+0j) (-inf+nanj) (-inf+nanj) +add (2+0j) (-16-infj) (-14-infj) +add (2+0j) (-16-16j) (-14-16j) +add (2+0j) (-16-2j) (-14-2j) +add (2+0j) (-16-0j) (-14+0j) +add (2+0j) (-16+0j) (-14+0j) +add (2+0j) (-16+2j) (-14+2j) +add (2+0j) (-16+16j) (-14+16j) +add (2+0j) (-16+infj) (-14+infj) +add (2+0j) (-16+nanj) (-14+nanj) +add (2+0j) (-2-infj) -infj +add (2+0j) (-2-16j) -16j +add (2+0j) (-2-2j) -2j +add (2+0j) (-2-0j) 0j +add (2+0j) (-2+0j) 0j +add (2+0j) (-2+2j) 2j +add (2+0j) (-2+16j) 16j +add (2+0j) (-2+infj) infj +add (2+0j) (-2+nanj) nanj +add (2+0j) (-0-infj) (2-infj) +add (2+0j) (-0-16j) (2-16j) +add (2+0j) (-0-2j) (2-2j) +add (2+0j) (-0-0j) (2+0j) +add (2+0j) (-0+0j) (2+0j) +add (2+0j) (-0+2j) (2+2j) +add (2+0j) (-0+16j) (2+16j) +add (2+0j) (-0+infj) (2+infj) +add (2+0j) (-0+nanj) (2+nanj) +add (2+0j) -infj (2-infj) +add (2+0j) -16j (2-16j) +add (2+0j) -2j (2-2j) +add (2+0j) -0j (2+0j) +add (2+0j) 0j (2+0j) +add (2+0j) 2j (2+2j) +add (2+0j) 16j (2+16j) +add (2+0j) infj (2+infj) +add (2+0j) nanj (2+nanj) +add (2+0j) (2-infj) (4-infj) +add (2+0j) (2-16j) (4-16j) +add (2+0j) (2-2j) (4-2j) +add (2+0j) (2-0j) (4+0j) +add (2+0j) (2+0j) (4+0j) +add (2+0j) (2+2j) (4+2j) +add (2+0j) (2+16j) (4+16j) +add (2+0j) (2+infj) (4+infj) +add (2+0j) (2+nanj) (4+nanj) +add (2+0j) (16-infj) (18-infj) +add (2+0j) (16-16j) (18-16j) +add (2+0j) (16-2j) (18-2j) +add (2+0j) (16-0j) (18+0j) +add (2+0j) (16+0j) (18+0j) +add (2+0j) (16+2j) (18+2j) +add (2+0j) (16+16j) (18+16j) +add (2+0j) (16+infj) (18+infj) +add (2+0j) (16+nanj) (18+nanj) +add (2+0j) (inf-infj) (inf-infj) +add (2+0j) (inf-16j) (inf-16j) +add (2+0j) (inf-2j) (inf-2j) +add (2+0j) (inf-0j) (inf+0j) +add (2+0j) (inf+0j) (inf+0j) +add (2+0j) (inf+2j) (inf+2j) +add (2+0j) (inf+16j) (inf+16j) +add (2+0j) (inf+infj) (inf+infj) +add (2+0j) (inf+nanj) (inf+nanj) +add (2+0j) (nan-infj) (nan-infj) +add (2+0j) (nan-16j) (nan-16j) +add (2+0j) (nan-2j) (nan-2j) +add (2+0j) (nan-0j) (nan+0j) +add (2+0j) (nan+0j) (nan+0j) +add (2+0j) (nan+2j) (nan+2j) +add (2+0j) (nan+16j) (nan+16j) +add (2+0j) (nan+infj) (nan+infj) +add (2+0j) (nan+nanj) (nan+nanj) +add (2+2j) (-inf-infj) (-inf-infj) +add (2+2j) (-inf-16j) (-inf-14j) +add (2+2j) (-inf-2j) (-inf+0j) +add (2+2j) (-inf-0j) (-inf+2j) +add (2+2j) (-inf+0j) (-inf+2j) +add (2+2j) (-inf+2j) (-inf+4j) +add (2+2j) (-inf+16j) (-inf+18j) +add (2+2j) (-inf+infj) (-inf+infj) +add (2+2j) (-inf+nanj) (-inf+nanj) +add (2+2j) (-16-infj) (-14-infj) +add (2+2j) (-16-16j) (-14-14j) +add (2+2j) (-16-2j) (-14+0j) +add (2+2j) (-16-0j) (-14+2j) +add (2+2j) (-16+0j) (-14+2j) +add (2+2j) (-16+2j) (-14+4j) +add (2+2j) (-16+16j) (-14+18j) +add (2+2j) (-16+infj) (-14+infj) +add (2+2j) (-16+nanj) (-14+nanj) +add (2+2j) (-2-infj) -infj +add (2+2j) (-2-16j) -14j +add (2+2j) (-2-2j) 0j +add (2+2j) (-2-0j) 2j +add (2+2j) (-2+0j) 2j +add (2+2j) (-2+2j) 4j +add (2+2j) (-2+16j) 18j +add (2+2j) (-2+infj) infj +add (2+2j) (-2+nanj) nanj +add (2+2j) (-0-infj) (2-infj) +add (2+2j) (-0-16j) (2-14j) +add (2+2j) (-0-2j) (2+0j) +add (2+2j) (-0-0j) (2+2j) +add (2+2j) (-0+0j) (2+2j) +add (2+2j) (-0+2j) (2+4j) +add (2+2j) (-0+16j) (2+18j) +add (2+2j) (-0+infj) (2+infj) +add (2+2j) (-0+nanj) (2+nanj) +add (2+2j) -infj (2-infj) +add (2+2j) -16j (2-14j) +add (2+2j) -2j (2+0j) +add (2+2j) -0j (2+2j) +add (2+2j) 0j (2+2j) +add (2+2j) 2j (2+4j) +add (2+2j) 16j (2+18j) +add (2+2j) infj (2+infj) +add (2+2j) nanj (2+nanj) +add (2+2j) (2-infj) (4-infj) +add (2+2j) (2-16j) (4-14j) +add (2+2j) (2-2j) (4+0j) +add (2+2j) (2-0j) (4+2j) +add (2+2j) (2+0j) (4+2j) +add (2+2j) (2+2j) (4+4j) +add (2+2j) (2+16j) (4+18j) +add (2+2j) (2+infj) (4+infj) +add (2+2j) (2+nanj) (4+nanj) +add (2+2j) (16-infj) (18-infj) +add (2+2j) (16-16j) (18-14j) +add (2+2j) (16-2j) (18+0j) +add (2+2j) (16-0j) (18+2j) +add (2+2j) (16+0j) (18+2j) +add (2+2j) (16+2j) (18+4j) +add (2+2j) (16+16j) (18+18j) +add (2+2j) (16+infj) (18+infj) +add (2+2j) (16+nanj) (18+nanj) +add (2+2j) (inf-infj) (inf-infj) +add (2+2j) (inf-16j) (inf-14j) +add (2+2j) (inf-2j) (inf+0j) +add (2+2j) (inf-0j) (inf+2j) +add (2+2j) (inf+0j) (inf+2j) +add (2+2j) (inf+2j) (inf+4j) +add (2+2j) (inf+16j) (inf+18j) +add (2+2j) (inf+infj) (inf+infj) +add (2+2j) (inf+nanj) (inf+nanj) +add (2+2j) (nan-infj) (nan-infj) +add (2+2j) (nan-16j) (nan-14j) +add (2+2j) (nan-2j) (nan+0j) +add (2+2j) (nan-0j) (nan+2j) +add (2+2j) (nan+0j) (nan+2j) +add (2+2j) (nan+2j) (nan+4j) +add (2+2j) (nan+16j) (nan+18j) +add (2+2j) (nan+infj) (nan+infj) +add (2+2j) (nan+nanj) (nan+nanj) +add (2+16j) (-inf-infj) (-inf-infj) +add (2+16j) (-inf-16j) (-inf+0j) +add (2+16j) (-inf-2j) (-inf+14j) +add (2+16j) (-inf-0j) (-inf+16j) +add (2+16j) (-inf+0j) (-inf+16j) +add (2+16j) (-inf+2j) (-inf+18j) +add (2+16j) (-inf+16j) (-inf+32j) +add (2+16j) (-inf+infj) (-inf+infj) +add (2+16j) (-inf+nanj) (-inf+nanj) +add (2+16j) (-16-infj) (-14-infj) +add (2+16j) (-16-16j) (-14+0j) +add (2+16j) (-16-2j) (-14+14j) +add (2+16j) (-16-0j) (-14+16j) +add (2+16j) (-16+0j) (-14+16j) +add (2+16j) (-16+2j) (-14+18j) +add (2+16j) (-16+16j) (-14+32j) +add (2+16j) (-16+infj) (-14+infj) +add (2+16j) (-16+nanj) (-14+nanj) +add (2+16j) (-2-infj) -infj +add (2+16j) (-2-16j) 0j +add (2+16j) (-2-2j) 14j +add (2+16j) (-2-0j) 16j +add (2+16j) (-2+0j) 16j +add (2+16j) (-2+2j) 18j +add (2+16j) (-2+16j) 32j +add (2+16j) (-2+infj) infj +add (2+16j) (-2+nanj) nanj +add (2+16j) (-0-infj) (2-infj) +add (2+16j) (-0-16j) (2+0j) +add (2+16j) (-0-2j) (2+14j) +add (2+16j) (-0-0j) (2+16j) +add (2+16j) (-0+0j) (2+16j) +add (2+16j) (-0+2j) (2+18j) +add (2+16j) (-0+16j) (2+32j) +add (2+16j) (-0+infj) (2+infj) +add (2+16j) (-0+nanj) (2+nanj) +add (2+16j) -infj (2-infj) +add (2+16j) -16j (2+0j) +add (2+16j) -2j (2+14j) +add (2+16j) -0j (2+16j) +add (2+16j) 0j (2+16j) +add (2+16j) 2j (2+18j) +add (2+16j) 16j (2+32j) +add (2+16j) infj (2+infj) +add (2+16j) nanj (2+nanj) +add (2+16j) (2-infj) (4-infj) +add (2+16j) (2-16j) (4+0j) +add (2+16j) (2-2j) (4+14j) +add (2+16j) (2-0j) (4+16j) +add (2+16j) (2+0j) (4+16j) +add (2+16j) (2+2j) (4+18j) +add (2+16j) (2+16j) (4+32j) +add (2+16j) (2+infj) (4+infj) +add (2+16j) (2+nanj) (4+nanj) +add (2+16j) (16-infj) (18-infj) +add (2+16j) (16-16j) (18+0j) +add (2+16j) (16-2j) (18+14j) +add (2+16j) (16-0j) (18+16j) +add (2+16j) (16+0j) (18+16j) +add (2+16j) (16+2j) (18+18j) +add (2+16j) (16+16j) (18+32j) +add (2+16j) (16+infj) (18+infj) +add (2+16j) (16+nanj) (18+nanj) +add (2+16j) (inf-infj) (inf-infj) +add (2+16j) (inf-16j) (inf+0j) +add (2+16j) (inf-2j) (inf+14j) +add (2+16j) (inf-0j) (inf+16j) +add (2+16j) (inf+0j) (inf+16j) +add (2+16j) (inf+2j) (inf+18j) +add (2+16j) (inf+16j) (inf+32j) +add (2+16j) (inf+infj) (inf+infj) +add (2+16j) (inf+nanj) (inf+nanj) +add (2+16j) (nan-infj) (nan-infj) +add (2+16j) (nan-16j) (nan+0j) +add (2+16j) (nan-2j) (nan+14j) +add (2+16j) (nan-0j) (nan+16j) +add (2+16j) (nan+0j) (nan+16j) +add (2+16j) (nan+2j) (nan+18j) +add (2+16j) (nan+16j) (nan+32j) +add (2+16j) (nan+infj) (nan+infj) +add (2+16j) (nan+nanj) (nan+nanj) +add (2+infj) (-inf-infj) (-inf+nanj) +add (2+infj) (-inf-16j) (-inf+infj) +add (2+infj) (-inf-2j) (-inf+infj) +add (2+infj) (-inf-0j) (-inf+infj) +add (2+infj) (-inf+0j) (-inf+infj) +add (2+infj) (-inf+2j) (-inf+infj) +add (2+infj) (-inf+16j) (-inf+infj) +add (2+infj) (-inf+infj) (-inf+infj) +add (2+infj) (-inf+nanj) (-inf+nanj) +add (2+infj) (-16-infj) (-14+nanj) +add (2+infj) (-16-16j) (-14+infj) +add (2+infj) (-16-2j) (-14+infj) +add (2+infj) (-16-0j) (-14+infj) +add (2+infj) (-16+0j) (-14+infj) +add (2+infj) (-16+2j) (-14+infj) +add (2+infj) (-16+16j) (-14+infj) +add (2+infj) (-16+infj) (-14+infj) +add (2+infj) (-16+nanj) (-14+nanj) +add (2+infj) (-2-infj) nanj +add (2+infj) (-2-16j) infj +add (2+infj) (-2-2j) infj +add (2+infj) (-2-0j) infj +add (2+infj) (-2+0j) infj +add (2+infj) (-2+2j) infj +add (2+infj) (-2+16j) infj +add (2+infj) (-2+infj) infj +add (2+infj) (-2+nanj) nanj +add (2+infj) (-0-infj) (2+nanj) +add (2+infj) (-0-16j) (2+infj) +add (2+infj) (-0-2j) (2+infj) +add (2+infj) (-0-0j) (2+infj) +add (2+infj) (-0+0j) (2+infj) +add (2+infj) (-0+2j) (2+infj) +add (2+infj) (-0+16j) (2+infj) +add (2+infj) (-0+infj) (2+infj) +add (2+infj) (-0+nanj) (2+nanj) +add (2+infj) -infj (2+nanj) +add (2+infj) -16j (2+infj) +add (2+infj) -2j (2+infj) +add (2+infj) -0j (2+infj) +add (2+infj) 0j (2+infj) +add (2+infj) 2j (2+infj) +add (2+infj) 16j (2+infj) +add (2+infj) infj (2+infj) +add (2+infj) nanj (2+nanj) +add (2+infj) (2-infj) (4+nanj) +add (2+infj) (2-16j) (4+infj) +add (2+infj) (2-2j) (4+infj) +add (2+infj) (2-0j) (4+infj) +add (2+infj) (2+0j) (4+infj) +add (2+infj) (2+2j) (4+infj) +add (2+infj) (2+16j) (4+infj) +add (2+infj) (2+infj) (4+infj) +add (2+infj) (2+nanj) (4+nanj) +add (2+infj) (16-infj) (18+nanj) +add (2+infj) (16-16j) (18+infj) +add (2+infj) (16-2j) (18+infj) +add (2+infj) (16-0j) (18+infj) +add (2+infj) (16+0j) (18+infj) +add (2+infj) (16+2j) (18+infj) +add (2+infj) (16+16j) (18+infj) +add (2+infj) (16+infj) (18+infj) +add (2+infj) (16+nanj) (18+nanj) +add (2+infj) (inf-infj) (inf+nanj) +add (2+infj) (inf-16j) (inf+infj) +add (2+infj) (inf-2j) (inf+infj) +add (2+infj) (inf-0j) (inf+infj) +add (2+infj) (inf+0j) (inf+infj) +add (2+infj) (inf+2j) (inf+infj) +add (2+infj) (inf+16j) (inf+infj) +add (2+infj) (inf+infj) (inf+infj) +add (2+infj) (inf+nanj) (inf+nanj) +add (2+infj) (nan-infj) (nan+nanj) +add (2+infj) (nan-16j) (nan+infj) +add (2+infj) (nan-2j) (nan+infj) +add (2+infj) (nan-0j) (nan+infj) +add (2+infj) (nan+0j) (nan+infj) +add (2+infj) (nan+2j) (nan+infj) +add (2+infj) (nan+16j) (nan+infj) +add (2+infj) (nan+infj) (nan+infj) +add (2+infj) (nan+nanj) (nan+nanj) +add (2+nanj) (-inf-infj) (-inf+nanj) +add (2+nanj) (-inf-16j) (-inf+nanj) +add (2+nanj) (-inf-2j) (-inf+nanj) +add (2+nanj) (-inf-0j) (-inf+nanj) +add (2+nanj) (-inf+0j) (-inf+nanj) +add (2+nanj) (-inf+2j) (-inf+nanj) +add (2+nanj) (-inf+16j) (-inf+nanj) +add (2+nanj) (-inf+infj) (-inf+nanj) +add (2+nanj) (-inf+nanj) (-inf+nanj) +add (2+nanj) (-16-infj) (-14+nanj) +add (2+nanj) (-16-16j) (-14+nanj) +add (2+nanj) (-16-2j) (-14+nanj) +add (2+nanj) (-16-0j) (-14+nanj) +add (2+nanj) (-16+0j) (-14+nanj) +add (2+nanj) (-16+2j) (-14+nanj) +add (2+nanj) (-16+16j) (-14+nanj) +add (2+nanj) (-16+infj) (-14+nanj) +add (2+nanj) (-16+nanj) (-14+nanj) +add (2+nanj) (-2-infj) nanj +add (2+nanj) (-2-16j) nanj +add (2+nanj) (-2-2j) nanj +add (2+nanj) (-2-0j) nanj +add (2+nanj) (-2+0j) nanj +add (2+nanj) (-2+2j) nanj +add (2+nanj) (-2+16j) nanj +add (2+nanj) (-2+infj) nanj +add (2+nanj) (-2+nanj) nanj +add (2+nanj) (-0-infj) (2+nanj) +add (2+nanj) (-0-16j) (2+nanj) +add (2+nanj) (-0-2j) (2+nanj) +add (2+nanj) (-0-0j) (2+nanj) +add (2+nanj) (-0+0j) (2+nanj) +add (2+nanj) (-0+2j) (2+nanj) +add (2+nanj) (-0+16j) (2+nanj) +add (2+nanj) (-0+infj) (2+nanj) +add (2+nanj) (-0+nanj) (2+nanj) +add (2+nanj) -infj (2+nanj) +add (2+nanj) -16j (2+nanj) +add (2+nanj) -2j (2+nanj) +add (2+nanj) -0j (2+nanj) +add (2+nanj) 0j (2+nanj) +add (2+nanj) 2j (2+nanj) +add (2+nanj) 16j (2+nanj) +add (2+nanj) infj (2+nanj) +add (2+nanj) nanj (2+nanj) +add (2+nanj) (2-infj) (4+nanj) +add (2+nanj) (2-16j) (4+nanj) +add (2+nanj) (2-2j) (4+nanj) +add (2+nanj) (2-0j) (4+nanj) +add (2+nanj) (2+0j) (4+nanj) +add (2+nanj) (2+2j) (4+nanj) +add (2+nanj) (2+16j) (4+nanj) +add (2+nanj) (2+infj) (4+nanj) +add (2+nanj) (2+nanj) (4+nanj) +add (2+nanj) (16-infj) (18+nanj) +add (2+nanj) (16-16j) (18+nanj) +add (2+nanj) (16-2j) (18+nanj) +add (2+nanj) (16-0j) (18+nanj) +add (2+nanj) (16+0j) (18+nanj) +add (2+nanj) (16+2j) (18+nanj) +add (2+nanj) (16+16j) (18+nanj) +add (2+nanj) (16+infj) (18+nanj) +add (2+nanj) (16+nanj) (18+nanj) +add (2+nanj) (inf-infj) (inf+nanj) +add (2+nanj) (inf-16j) (inf+nanj) +add (2+nanj) (inf-2j) (inf+nanj) +add (2+nanj) (inf-0j) (inf+nanj) +add (2+nanj) (inf+0j) (inf+nanj) +add (2+nanj) (inf+2j) (inf+nanj) +add (2+nanj) (inf+16j) (inf+nanj) +add (2+nanj) (inf+infj) (inf+nanj) +add (2+nanj) (inf+nanj) (inf+nanj) +add (2+nanj) (nan-infj) (nan+nanj) +add (2+nanj) (nan-16j) (nan+nanj) +add (2+nanj) (nan-2j) (nan+nanj) +add (2+nanj) (nan-0j) (nan+nanj) +add (2+nanj) (nan+0j) (nan+nanj) +add (2+nanj) (nan+2j) (nan+nanj) +add (2+nanj) (nan+16j) (nan+nanj) +add (2+nanj) (nan+infj) (nan+nanj) +add (2+nanj) (nan+nanj) (nan+nanj) +add (16-infj) (-inf-infj) (-inf-infj) +add (16-infj) (-inf-16j) (-inf-infj) +add (16-infj) (-inf-2j) (-inf-infj) +add (16-infj) (-inf-0j) (-inf-infj) +add (16-infj) (-inf+0j) (-inf-infj) +add (16-infj) (-inf+2j) (-inf-infj) +add (16-infj) (-inf+16j) (-inf-infj) +add (16-infj) (-inf+infj) (-inf+nanj) +add (16-infj) (-inf+nanj) (-inf+nanj) +add (16-infj) (-16-infj) -infj +add (16-infj) (-16-16j) -infj +add (16-infj) (-16-2j) -infj +add (16-infj) (-16-0j) -infj +add (16-infj) (-16+0j) -infj +add (16-infj) (-16+2j) -infj +add (16-infj) (-16+16j) -infj +add (16-infj) (-16+infj) nanj +add (16-infj) (-16+nanj) nanj +add (16-infj) (-2-infj) (14-infj) +add (16-infj) (-2-16j) (14-infj) +add (16-infj) (-2-2j) (14-infj) +add (16-infj) (-2-0j) (14-infj) +add (16-infj) (-2+0j) (14-infj) +add (16-infj) (-2+2j) (14-infj) +add (16-infj) (-2+16j) (14-infj) +add (16-infj) (-2+infj) (14+nanj) +add (16-infj) (-2+nanj) (14+nanj) +add (16-infj) (-0-infj) (16-infj) +add (16-infj) (-0-16j) (16-infj) +add (16-infj) (-0-2j) (16-infj) +add (16-infj) (-0-0j) (16-infj) +add (16-infj) (-0+0j) (16-infj) +add (16-infj) (-0+2j) (16-infj) +add (16-infj) (-0+16j) (16-infj) +add (16-infj) (-0+infj) (16+nanj) +add (16-infj) (-0+nanj) (16+nanj) +add (16-infj) -infj (16-infj) +add (16-infj) -16j (16-infj) +add (16-infj) -2j (16-infj) +add (16-infj) -0j (16-infj) +add (16-infj) 0j (16-infj) +add (16-infj) 2j (16-infj) +add (16-infj) 16j (16-infj) +add (16-infj) infj (16+nanj) +add (16-infj) nanj (16+nanj) +add (16-infj) (2-infj) (18-infj) +add (16-infj) (2-16j) (18-infj) +add (16-infj) (2-2j) (18-infj) +add (16-infj) (2-0j) (18-infj) +add (16-infj) (2+0j) (18-infj) +add (16-infj) (2+2j) (18-infj) +add (16-infj) (2+16j) (18-infj) +add (16-infj) (2+infj) (18+nanj) +add (16-infj) (2+nanj) (18+nanj) +add (16-infj) (16-infj) (32-infj) +add (16-infj) (16-16j) (32-infj) +add (16-infj) (16-2j) (32-infj) +add (16-infj) (16-0j) (32-infj) +add (16-infj) (16+0j) (32-infj) +add (16-infj) (16+2j) (32-infj) +add (16-infj) (16+16j) (32-infj) +add (16-infj) (16+infj) (32+nanj) +add (16-infj) (16+nanj) (32+nanj) +add (16-infj) (inf-infj) (inf-infj) +add (16-infj) (inf-16j) (inf-infj) +add (16-infj) (inf-2j) (inf-infj) +add (16-infj) (inf-0j) (inf-infj) +add (16-infj) (inf+0j) (inf-infj) +add (16-infj) (inf+2j) (inf-infj) +add (16-infj) (inf+16j) (inf-infj) +add (16-infj) (inf+infj) (inf+nanj) +add (16-infj) (inf+nanj) (inf+nanj) +add (16-infj) (nan-infj) (nan-infj) +add (16-infj) (nan-16j) (nan-infj) +add (16-infj) (nan-2j) (nan-infj) +add (16-infj) (nan-0j) (nan-infj) +add (16-infj) (nan+0j) (nan-infj) +add (16-infj) (nan+2j) (nan-infj) +add (16-infj) (nan+16j) (nan-infj) +add (16-infj) (nan+infj) (nan+nanj) +add (16-infj) (nan+nanj) (nan+nanj) +add (16-16j) (-inf-infj) (-inf-infj) +add (16-16j) (-inf-16j) (-inf-32j) +add (16-16j) (-inf-2j) (-inf-18j) +add (16-16j) (-inf-0j) (-inf-16j) +add (16-16j) (-inf+0j) (-inf-16j) +add (16-16j) (-inf+2j) (-inf-14j) +add (16-16j) (-inf+16j) (-inf+0j) +add (16-16j) (-inf+infj) (-inf+infj) +add (16-16j) (-inf+nanj) (-inf+nanj) +add (16-16j) (-16-infj) -infj +add (16-16j) (-16-16j) -32j +add (16-16j) (-16-2j) -18j +add (16-16j) (-16-0j) -16j +add (16-16j) (-16+0j) -16j +add (16-16j) (-16+2j) -14j +add (16-16j) (-16+16j) 0j +add (16-16j) (-16+infj) infj +add (16-16j) (-16+nanj) nanj +add (16-16j) (-2-infj) (14-infj) +add (16-16j) (-2-16j) (14-32j) +add (16-16j) (-2-2j) (14-18j) +add (16-16j) (-2-0j) (14-16j) +add (16-16j) (-2+0j) (14-16j) +add (16-16j) (-2+2j) (14-14j) +add (16-16j) (-2+16j) (14+0j) +add (16-16j) (-2+infj) (14+infj) +add (16-16j) (-2+nanj) (14+nanj) +add (16-16j) (-0-infj) (16-infj) +add (16-16j) (-0-16j) (16-32j) +add (16-16j) (-0-2j) (16-18j) +add (16-16j) (-0-0j) (16-16j) +add (16-16j) (-0+0j) (16-16j) +add (16-16j) (-0+2j) (16-14j) +add (16-16j) (-0+16j) (16+0j) +add (16-16j) (-0+infj) (16+infj) +add (16-16j) (-0+nanj) (16+nanj) +add (16-16j) -infj (16-infj) +add (16-16j) -16j (16-32j) +add (16-16j) -2j (16-18j) +add (16-16j) -0j (16-16j) +add (16-16j) 0j (16-16j) +add (16-16j) 2j (16-14j) +add (16-16j) 16j (16+0j) +add (16-16j) infj (16+infj) +add (16-16j) nanj (16+nanj) +add (16-16j) (2-infj) (18-infj) +add (16-16j) (2-16j) (18-32j) +add (16-16j) (2-2j) (18-18j) +add (16-16j) (2-0j) (18-16j) +add (16-16j) (2+0j) (18-16j) +add (16-16j) (2+2j) (18-14j) +add (16-16j) (2+16j) (18+0j) +add (16-16j) (2+infj) (18+infj) +add (16-16j) (2+nanj) (18+nanj) +add (16-16j) (16-infj) (32-infj) +add (16-16j) (16-16j) (32-32j) +add (16-16j) (16-2j) (32-18j) +add (16-16j) (16-0j) (32-16j) +add (16-16j) (16+0j) (32-16j) +add (16-16j) (16+2j) (32-14j) +add (16-16j) (16+16j) (32+0j) +add (16-16j) (16+infj) (32+infj) +add (16-16j) (16+nanj) (32+nanj) +add (16-16j) (inf-infj) (inf-infj) +add (16-16j) (inf-16j) (inf-32j) +add (16-16j) (inf-2j) (inf-18j) +add (16-16j) (inf-0j) (inf-16j) +add (16-16j) (inf+0j) (inf-16j) +add (16-16j) (inf+2j) (inf-14j) +add (16-16j) (inf+16j) (inf+0j) +add (16-16j) (inf+infj) (inf+infj) +add (16-16j) (inf+nanj) (inf+nanj) +add (16-16j) (nan-infj) (nan-infj) +add (16-16j) (nan-16j) (nan-32j) +add (16-16j) (nan-2j) (nan-18j) +add (16-16j) (nan-0j) (nan-16j) +add (16-16j) (nan+0j) (nan-16j) +add (16-16j) (nan+2j) (nan-14j) +add (16-16j) (nan+16j) (nan+0j) +add (16-16j) (nan+infj) (nan+infj) +add (16-16j) (nan+nanj) (nan+nanj) +add (16-2j) (-inf-infj) (-inf-infj) +add (16-2j) (-inf-16j) (-inf-18j) +add (16-2j) (-inf-2j) (-inf-4j) +add (16-2j) (-inf-0j) (-inf-2j) +add (16-2j) (-inf+0j) (-inf-2j) +add (16-2j) (-inf+2j) (-inf+0j) +add (16-2j) (-inf+16j) (-inf+14j) +add (16-2j) (-inf+infj) (-inf+infj) +add (16-2j) (-inf+nanj) (-inf+nanj) +add (16-2j) (-16-infj) -infj +add (16-2j) (-16-16j) -18j +add (16-2j) (-16-2j) -4j +add (16-2j) (-16-0j) -2j +add (16-2j) (-16+0j) -2j +add (16-2j) (-16+2j) 0j +add (16-2j) (-16+16j) 14j +add (16-2j) (-16+infj) infj +add (16-2j) (-16+nanj) nanj +add (16-2j) (-2-infj) (14-infj) +add (16-2j) (-2-16j) (14-18j) +add (16-2j) (-2-2j) (14-4j) +add (16-2j) (-2-0j) (14-2j) +add (16-2j) (-2+0j) (14-2j) +add (16-2j) (-2+2j) (14+0j) +add (16-2j) (-2+16j) (14+14j) +add (16-2j) (-2+infj) (14+infj) +add (16-2j) (-2+nanj) (14+nanj) +add (16-2j) (-0-infj) (16-infj) +add (16-2j) (-0-16j) (16-18j) +add (16-2j) (-0-2j) (16-4j) +add (16-2j) (-0-0j) (16-2j) +add (16-2j) (-0+0j) (16-2j) +add (16-2j) (-0+2j) (16+0j) +add (16-2j) (-0+16j) (16+14j) +add (16-2j) (-0+infj) (16+infj) +add (16-2j) (-0+nanj) (16+nanj) +add (16-2j) -infj (16-infj) +add (16-2j) -16j (16-18j) +add (16-2j) -2j (16-4j) +add (16-2j) -0j (16-2j) +add (16-2j) 0j (16-2j) +add (16-2j) 2j (16+0j) +add (16-2j) 16j (16+14j) +add (16-2j) infj (16+infj) +add (16-2j) nanj (16+nanj) +add (16-2j) (2-infj) (18-infj) +add (16-2j) (2-16j) (18-18j) +add (16-2j) (2-2j) (18-4j) +add (16-2j) (2-0j) (18-2j) +add (16-2j) (2+0j) (18-2j) +add (16-2j) (2+2j) (18+0j) +add (16-2j) (2+16j) (18+14j) +add (16-2j) (2+infj) (18+infj) +add (16-2j) (2+nanj) (18+nanj) +add (16-2j) (16-infj) (32-infj) +add (16-2j) (16-16j) (32-18j) +add (16-2j) (16-2j) (32-4j) +add (16-2j) (16-0j) (32-2j) +add (16-2j) (16+0j) (32-2j) +add (16-2j) (16+2j) (32+0j) +add (16-2j) (16+16j) (32+14j) +add (16-2j) (16+infj) (32+infj) +add (16-2j) (16+nanj) (32+nanj) +add (16-2j) (inf-infj) (inf-infj) +add (16-2j) (inf-16j) (inf-18j) +add (16-2j) (inf-2j) (inf-4j) +add (16-2j) (inf-0j) (inf-2j) +add (16-2j) (inf+0j) (inf-2j) +add (16-2j) (inf+2j) (inf+0j) +add (16-2j) (inf+16j) (inf+14j) +add (16-2j) (inf+infj) (inf+infj) +add (16-2j) (inf+nanj) (inf+nanj) +add (16-2j) (nan-infj) (nan-infj) +add (16-2j) (nan-16j) (nan-18j) +add (16-2j) (nan-2j) (nan-4j) +add (16-2j) (nan-0j) (nan-2j) +add (16-2j) (nan+0j) (nan-2j) +add (16-2j) (nan+2j) (nan+0j) +add (16-2j) (nan+16j) (nan+14j) +add (16-2j) (nan+infj) (nan+infj) +add (16-2j) (nan+nanj) (nan+nanj) +add (16-0j) (-inf-infj) (-inf-infj) +add (16-0j) (-inf-16j) (-inf-16j) +add (16-0j) (-inf-2j) (-inf-2j) +add (16-0j) (-inf-0j) (-inf-0j) +add (16-0j) (-inf+0j) (-inf+0j) +add (16-0j) (-inf+2j) (-inf+2j) +add (16-0j) (-inf+16j) (-inf+16j) +add (16-0j) (-inf+infj) (-inf+infj) +add (16-0j) (-inf+nanj) (-inf+nanj) +add (16-0j) (-16-infj) -infj +add (16-0j) (-16-16j) -16j +add (16-0j) (-16-2j) -2j +add (16-0j) (-16-0j) -0j +add (16-0j) (-16+0j) 0j +add (16-0j) (-16+2j) 2j +add (16-0j) (-16+16j) 16j +add (16-0j) (-16+infj) infj +add (16-0j) (-16+nanj) nanj +add (16-0j) (-2-infj) (14-infj) +add (16-0j) (-2-16j) (14-16j) +add (16-0j) (-2-2j) (14-2j) +add (16-0j) (-2-0j) (14-0j) +add (16-0j) (-2+0j) (14+0j) +add (16-0j) (-2+2j) (14+2j) +add (16-0j) (-2+16j) (14+16j) +add (16-0j) (-2+infj) (14+infj) +add (16-0j) (-2+nanj) (14+nanj) +add (16-0j) (-0-infj) (16-infj) +add (16-0j) (-0-16j) (16-16j) +add (16-0j) (-0-2j) (16-2j) +add (16-0j) (-0-0j) (16-0j) +add (16-0j) (-0+0j) (16+0j) +add (16-0j) (-0+2j) (16+2j) +add (16-0j) (-0+16j) (16+16j) +add (16-0j) (-0+infj) (16+infj) +add (16-0j) (-0+nanj) (16+nanj) +add (16-0j) -infj (16-infj) +add (16-0j) -16j (16-16j) +add (16-0j) -2j (16-2j) +add (16-0j) -0j (16-0j) +add (16-0j) 0j (16+0j) +add (16-0j) 2j (16+2j) +add (16-0j) 16j (16+16j) +add (16-0j) infj (16+infj) +add (16-0j) nanj (16+nanj) +add (16-0j) (2-infj) (18-infj) +add (16-0j) (2-16j) (18-16j) +add (16-0j) (2-2j) (18-2j) +add (16-0j) (2-0j) (18-0j) +add (16-0j) (2+0j) (18+0j) +add (16-0j) (2+2j) (18+2j) +add (16-0j) (2+16j) (18+16j) +add (16-0j) (2+infj) (18+infj) +add (16-0j) (2+nanj) (18+nanj) +add (16-0j) (16-infj) (32-infj) +add (16-0j) (16-16j) (32-16j) +add (16-0j) (16-2j) (32-2j) +add (16-0j) (16-0j) (32-0j) +add (16-0j) (16+0j) (32+0j) +add (16-0j) (16+2j) (32+2j) +add (16-0j) (16+16j) (32+16j) +add (16-0j) (16+infj) (32+infj) +add (16-0j) (16+nanj) (32+nanj) +add (16-0j) (inf-infj) (inf-infj) +add (16-0j) (inf-16j) (inf-16j) +add (16-0j) (inf-2j) (inf-2j) +add (16-0j) (inf-0j) (inf-0j) +add (16-0j) (inf+0j) (inf+0j) +add (16-0j) (inf+2j) (inf+2j) +add (16-0j) (inf+16j) (inf+16j) +add (16-0j) (inf+infj) (inf+infj) +add (16-0j) (inf+nanj) (inf+nanj) +add (16-0j) (nan-infj) (nan-infj) +add (16-0j) (nan-16j) (nan-16j) +add (16-0j) (nan-2j) (nan-2j) +add (16-0j) (nan-0j) (nan-0j) +add (16-0j) (nan+0j) (nan+0j) +add (16-0j) (nan+2j) (nan+2j) +add (16-0j) (nan+16j) (nan+16j) +add (16-0j) (nan+infj) (nan+infj) +add (16-0j) (nan+nanj) (nan+nanj) +add (16+0j) (-inf-infj) (-inf-infj) +add (16+0j) (-inf-16j) (-inf-16j) +add (16+0j) (-inf-2j) (-inf-2j) +add (16+0j) (-inf-0j) (-inf+0j) +add (16+0j) (-inf+0j) (-inf+0j) +add (16+0j) (-inf+2j) (-inf+2j) +add (16+0j) (-inf+16j) (-inf+16j) +add (16+0j) (-inf+infj) (-inf+infj) +add (16+0j) (-inf+nanj) (-inf+nanj) +add (16+0j) (-16-infj) -infj +add (16+0j) (-16-16j) -16j +add (16+0j) (-16-2j) -2j +add (16+0j) (-16-0j) 0j +add (16+0j) (-16+0j) 0j +add (16+0j) (-16+2j) 2j +add (16+0j) (-16+16j) 16j +add (16+0j) (-16+infj) infj +add (16+0j) (-16+nanj) nanj +add (16+0j) (-2-infj) (14-infj) +add (16+0j) (-2-16j) (14-16j) +add (16+0j) (-2-2j) (14-2j) +add (16+0j) (-2-0j) (14+0j) +add (16+0j) (-2+0j) (14+0j) +add (16+0j) (-2+2j) (14+2j) +add (16+0j) (-2+16j) (14+16j) +add (16+0j) (-2+infj) (14+infj) +add (16+0j) (-2+nanj) (14+nanj) +add (16+0j) (-0-infj) (16-infj) +add (16+0j) (-0-16j) (16-16j) +add (16+0j) (-0-2j) (16-2j) +add (16+0j) (-0-0j) (16+0j) +add (16+0j) (-0+0j) (16+0j) +add (16+0j) (-0+2j) (16+2j) +add (16+0j) (-0+16j) (16+16j) +add (16+0j) (-0+infj) (16+infj) +add (16+0j) (-0+nanj) (16+nanj) +add (16+0j) -infj (16-infj) +add (16+0j) -16j (16-16j) +add (16+0j) -2j (16-2j) +add (16+0j) -0j (16+0j) +add (16+0j) 0j (16+0j) +add (16+0j) 2j (16+2j) +add (16+0j) 16j (16+16j) +add (16+0j) infj (16+infj) +add (16+0j) nanj (16+nanj) +add (16+0j) (2-infj) (18-infj) +add (16+0j) (2-16j) (18-16j) +add (16+0j) (2-2j) (18-2j) +add (16+0j) (2-0j) (18+0j) +add (16+0j) (2+0j) (18+0j) +add (16+0j) (2+2j) (18+2j) +add (16+0j) (2+16j) (18+16j) +add (16+0j) (2+infj) (18+infj) +add (16+0j) (2+nanj) (18+nanj) +add (16+0j) (16-infj) (32-infj) +add (16+0j) (16-16j) (32-16j) +add (16+0j) (16-2j) (32-2j) +add (16+0j) (16-0j) (32+0j) +add (16+0j) (16+0j) (32+0j) +add (16+0j) (16+2j) (32+2j) +add (16+0j) (16+16j) (32+16j) +add (16+0j) (16+infj) (32+infj) +add (16+0j) (16+nanj) (32+nanj) +add (16+0j) (inf-infj) (inf-infj) +add (16+0j) (inf-16j) (inf-16j) +add (16+0j) (inf-2j) (inf-2j) +add (16+0j) (inf-0j) (inf+0j) +add (16+0j) (inf+0j) (inf+0j) +add (16+0j) (inf+2j) (inf+2j) +add (16+0j) (inf+16j) (inf+16j) +add (16+0j) (inf+infj) (inf+infj) +add (16+0j) (inf+nanj) (inf+nanj) +add (16+0j) (nan-infj) (nan-infj) +add (16+0j) (nan-16j) (nan-16j) +add (16+0j) (nan-2j) (nan-2j) +add (16+0j) (nan-0j) (nan+0j) +add (16+0j) (nan+0j) (nan+0j) +add (16+0j) (nan+2j) (nan+2j) +add (16+0j) (nan+16j) (nan+16j) +add (16+0j) (nan+infj) (nan+infj) +add (16+0j) (nan+nanj) (nan+nanj) +add (16+2j) (-inf-infj) (-inf-infj) +add (16+2j) (-inf-16j) (-inf-14j) +add (16+2j) (-inf-2j) (-inf+0j) +add (16+2j) (-inf-0j) (-inf+2j) +add (16+2j) (-inf+0j) (-inf+2j) +add (16+2j) (-inf+2j) (-inf+4j) +add (16+2j) (-inf+16j) (-inf+18j) +add (16+2j) (-inf+infj) (-inf+infj) +add (16+2j) (-inf+nanj) (-inf+nanj) +add (16+2j) (-16-infj) -infj +add (16+2j) (-16-16j) -14j +add (16+2j) (-16-2j) 0j +add (16+2j) (-16-0j) 2j +add (16+2j) (-16+0j) 2j +add (16+2j) (-16+2j) 4j +add (16+2j) (-16+16j) 18j +add (16+2j) (-16+infj) infj +add (16+2j) (-16+nanj) nanj +add (16+2j) (-2-infj) (14-infj) +add (16+2j) (-2-16j) (14-14j) +add (16+2j) (-2-2j) (14+0j) +add (16+2j) (-2-0j) (14+2j) +add (16+2j) (-2+0j) (14+2j) +add (16+2j) (-2+2j) (14+4j) +add (16+2j) (-2+16j) (14+18j) +add (16+2j) (-2+infj) (14+infj) +add (16+2j) (-2+nanj) (14+nanj) +add (16+2j) (-0-infj) (16-infj) +add (16+2j) (-0-16j) (16-14j) +add (16+2j) (-0-2j) (16+0j) +add (16+2j) (-0-0j) (16+2j) +add (16+2j) (-0+0j) (16+2j) +add (16+2j) (-0+2j) (16+4j) +add (16+2j) (-0+16j) (16+18j) +add (16+2j) (-0+infj) (16+infj) +add (16+2j) (-0+nanj) (16+nanj) +add (16+2j) -infj (16-infj) +add (16+2j) -16j (16-14j) +add (16+2j) -2j (16+0j) +add (16+2j) -0j (16+2j) +add (16+2j) 0j (16+2j) +add (16+2j) 2j (16+4j) +add (16+2j) 16j (16+18j) +add (16+2j) infj (16+infj) +add (16+2j) nanj (16+nanj) +add (16+2j) (2-infj) (18-infj) +add (16+2j) (2-16j) (18-14j) +add (16+2j) (2-2j) (18+0j) +add (16+2j) (2-0j) (18+2j) +add (16+2j) (2+0j) (18+2j) +add (16+2j) (2+2j) (18+4j) +add (16+2j) (2+16j) (18+18j) +add (16+2j) (2+infj) (18+infj) +add (16+2j) (2+nanj) (18+nanj) +add (16+2j) (16-infj) (32-infj) +add (16+2j) (16-16j) (32-14j) +add (16+2j) (16-2j) (32+0j) +add (16+2j) (16-0j) (32+2j) +add (16+2j) (16+0j) (32+2j) +add (16+2j) (16+2j) (32+4j) +add (16+2j) (16+16j) (32+18j) +add (16+2j) (16+infj) (32+infj) +add (16+2j) (16+nanj) (32+nanj) +add (16+2j) (inf-infj) (inf-infj) +add (16+2j) (inf-16j) (inf-14j) +add (16+2j) (inf-2j) (inf+0j) +add (16+2j) (inf-0j) (inf+2j) +add (16+2j) (inf+0j) (inf+2j) +add (16+2j) (inf+2j) (inf+4j) +add (16+2j) (inf+16j) (inf+18j) +add (16+2j) (inf+infj) (inf+infj) +add (16+2j) (inf+nanj) (inf+nanj) +add (16+2j) (nan-infj) (nan-infj) +add (16+2j) (nan-16j) (nan-14j) +add (16+2j) (nan-2j) (nan+0j) +add (16+2j) (nan-0j) (nan+2j) +add (16+2j) (nan+0j) (nan+2j) +add (16+2j) (nan+2j) (nan+4j) +add (16+2j) (nan+16j) (nan+18j) +add (16+2j) (nan+infj) (nan+infj) +add (16+2j) (nan+nanj) (nan+nanj) +add (16+16j) (-inf-infj) (-inf-infj) +add (16+16j) (-inf-16j) (-inf+0j) +add (16+16j) (-inf-2j) (-inf+14j) +add (16+16j) (-inf-0j) (-inf+16j) +add (16+16j) (-inf+0j) (-inf+16j) +add (16+16j) (-inf+2j) (-inf+18j) +add (16+16j) (-inf+16j) (-inf+32j) +add (16+16j) (-inf+infj) (-inf+infj) +add (16+16j) (-inf+nanj) (-inf+nanj) +add (16+16j) (-16-infj) -infj +add (16+16j) (-16-16j) 0j +add (16+16j) (-16-2j) 14j +add (16+16j) (-16-0j) 16j +add (16+16j) (-16+0j) 16j +add (16+16j) (-16+2j) 18j +add (16+16j) (-16+16j) 32j +add (16+16j) (-16+infj) infj +add (16+16j) (-16+nanj) nanj +add (16+16j) (-2-infj) (14-infj) +add (16+16j) (-2-16j) (14+0j) +add (16+16j) (-2-2j) (14+14j) +add (16+16j) (-2-0j) (14+16j) +add (16+16j) (-2+0j) (14+16j) +add (16+16j) (-2+2j) (14+18j) +add (16+16j) (-2+16j) (14+32j) +add (16+16j) (-2+infj) (14+infj) +add (16+16j) (-2+nanj) (14+nanj) +add (16+16j) (-0-infj) (16-infj) +add (16+16j) (-0-16j) (16+0j) +add (16+16j) (-0-2j) (16+14j) +add (16+16j) (-0-0j) (16+16j) +add (16+16j) (-0+0j) (16+16j) +add (16+16j) (-0+2j) (16+18j) +add (16+16j) (-0+16j) (16+32j) +add (16+16j) (-0+infj) (16+infj) +add (16+16j) (-0+nanj) (16+nanj) +add (16+16j) -infj (16-infj) +add (16+16j) -16j (16+0j) +add (16+16j) -2j (16+14j) +add (16+16j) -0j (16+16j) +add (16+16j) 0j (16+16j) +add (16+16j) 2j (16+18j) +add (16+16j) 16j (16+32j) +add (16+16j) infj (16+infj) +add (16+16j) nanj (16+nanj) +add (16+16j) (2-infj) (18-infj) +add (16+16j) (2-16j) (18+0j) +add (16+16j) (2-2j) (18+14j) +add (16+16j) (2-0j) (18+16j) +add (16+16j) (2+0j) (18+16j) +add (16+16j) (2+2j) (18+18j) +add (16+16j) (2+16j) (18+32j) +add (16+16j) (2+infj) (18+infj) +add (16+16j) (2+nanj) (18+nanj) +add (16+16j) (16-infj) (32-infj) +add (16+16j) (16-16j) (32+0j) +add (16+16j) (16-2j) (32+14j) +add (16+16j) (16-0j) (32+16j) +add (16+16j) (16+0j) (32+16j) +add (16+16j) (16+2j) (32+18j) +add (16+16j) (16+16j) (32+32j) +add (16+16j) (16+infj) (32+infj) +add (16+16j) (16+nanj) (32+nanj) +add (16+16j) (inf-infj) (inf-infj) +add (16+16j) (inf-16j) (inf+0j) +add (16+16j) (inf-2j) (inf+14j) +add (16+16j) (inf-0j) (inf+16j) +add (16+16j) (inf+0j) (inf+16j) +add (16+16j) (inf+2j) (inf+18j) +add (16+16j) (inf+16j) (inf+32j) +add (16+16j) (inf+infj) (inf+infj) +add (16+16j) (inf+nanj) (inf+nanj) +add (16+16j) (nan-infj) (nan-infj) +add (16+16j) (nan-16j) (nan+0j) +add (16+16j) (nan-2j) (nan+14j) +add (16+16j) (nan-0j) (nan+16j) +add (16+16j) (nan+0j) (nan+16j) +add (16+16j) (nan+2j) (nan+18j) +add (16+16j) (nan+16j) (nan+32j) +add (16+16j) (nan+infj) (nan+infj) +add (16+16j) (nan+nanj) (nan+nanj) +add (16+infj) (-inf-infj) (-inf+nanj) +add (16+infj) (-inf-16j) (-inf+infj) +add (16+infj) (-inf-2j) (-inf+infj) +add (16+infj) (-inf-0j) (-inf+infj) +add (16+infj) (-inf+0j) (-inf+infj) +add (16+infj) (-inf+2j) (-inf+infj) +add (16+infj) (-inf+16j) (-inf+infj) +add (16+infj) (-inf+infj) (-inf+infj) +add (16+infj) (-inf+nanj) (-inf+nanj) +add (16+infj) (-16-infj) nanj +add (16+infj) (-16-16j) infj +add (16+infj) (-16-2j) infj +add (16+infj) (-16-0j) infj +add (16+infj) (-16+0j) infj +add (16+infj) (-16+2j) infj +add (16+infj) (-16+16j) infj +add (16+infj) (-16+infj) infj +add (16+infj) (-16+nanj) nanj +add (16+infj) (-2-infj) (14+nanj) +add (16+infj) (-2-16j) (14+infj) +add (16+infj) (-2-2j) (14+infj) +add (16+infj) (-2-0j) (14+infj) +add (16+infj) (-2+0j) (14+infj) +add (16+infj) (-2+2j) (14+infj) +add (16+infj) (-2+16j) (14+infj) +add (16+infj) (-2+infj) (14+infj) +add (16+infj) (-2+nanj) (14+nanj) +add (16+infj) (-0-infj) (16+nanj) +add (16+infj) (-0-16j) (16+infj) +add (16+infj) (-0-2j) (16+infj) +add (16+infj) (-0-0j) (16+infj) +add (16+infj) (-0+0j) (16+infj) +add (16+infj) (-0+2j) (16+infj) +add (16+infj) (-0+16j) (16+infj) +add (16+infj) (-0+infj) (16+infj) +add (16+infj) (-0+nanj) (16+nanj) +add (16+infj) -infj (16+nanj) +add (16+infj) -16j (16+infj) +add (16+infj) -2j (16+infj) +add (16+infj) -0j (16+infj) +add (16+infj) 0j (16+infj) +add (16+infj) 2j (16+infj) +add (16+infj) 16j (16+infj) +add (16+infj) infj (16+infj) +add (16+infj) nanj (16+nanj) +add (16+infj) (2-infj) (18+nanj) +add (16+infj) (2-16j) (18+infj) +add (16+infj) (2-2j) (18+infj) +add (16+infj) (2-0j) (18+infj) +add (16+infj) (2+0j) (18+infj) +add (16+infj) (2+2j) (18+infj) +add (16+infj) (2+16j) (18+infj) +add (16+infj) (2+infj) (18+infj) +add (16+infj) (2+nanj) (18+nanj) +add (16+infj) (16-infj) (32+nanj) +add (16+infj) (16-16j) (32+infj) +add (16+infj) (16-2j) (32+infj) +add (16+infj) (16-0j) (32+infj) +add (16+infj) (16+0j) (32+infj) +add (16+infj) (16+2j) (32+infj) +add (16+infj) (16+16j) (32+infj) +add (16+infj) (16+infj) (32+infj) +add (16+infj) (16+nanj) (32+nanj) +add (16+infj) (inf-infj) (inf+nanj) +add (16+infj) (inf-16j) (inf+infj) +add (16+infj) (inf-2j) (inf+infj) +add (16+infj) (inf-0j) (inf+infj) +add (16+infj) (inf+0j) (inf+infj) +add (16+infj) (inf+2j) (inf+infj) +add (16+infj) (inf+16j) (inf+infj) +add (16+infj) (inf+infj) (inf+infj) +add (16+infj) (inf+nanj) (inf+nanj) +add (16+infj) (nan-infj) (nan+nanj) +add (16+infj) (nan-16j) (nan+infj) +add (16+infj) (nan-2j) (nan+infj) +add (16+infj) (nan-0j) (nan+infj) +add (16+infj) (nan+0j) (nan+infj) +add (16+infj) (nan+2j) (nan+infj) +add (16+infj) (nan+16j) (nan+infj) +add (16+infj) (nan+infj) (nan+infj) +add (16+infj) (nan+nanj) (nan+nanj) +add (16+nanj) (-inf-infj) (-inf+nanj) +add (16+nanj) (-inf-16j) (-inf+nanj) +add (16+nanj) (-inf-2j) (-inf+nanj) +add (16+nanj) (-inf-0j) (-inf+nanj) +add (16+nanj) (-inf+0j) (-inf+nanj) +add (16+nanj) (-inf+2j) (-inf+nanj) +add (16+nanj) (-inf+16j) (-inf+nanj) +add (16+nanj) (-inf+infj) (-inf+nanj) +add (16+nanj) (-inf+nanj) (-inf+nanj) +add (16+nanj) (-16-infj) nanj +add (16+nanj) (-16-16j) nanj +add (16+nanj) (-16-2j) nanj +add (16+nanj) (-16-0j) nanj +add (16+nanj) (-16+0j) nanj +add (16+nanj) (-16+2j) nanj +add (16+nanj) (-16+16j) nanj +add (16+nanj) (-16+infj) nanj +add (16+nanj) (-16+nanj) nanj +add (16+nanj) (-2-infj) (14+nanj) +add (16+nanj) (-2-16j) (14+nanj) +add (16+nanj) (-2-2j) (14+nanj) +add (16+nanj) (-2-0j) (14+nanj) +add (16+nanj) (-2+0j) (14+nanj) +add (16+nanj) (-2+2j) (14+nanj) +add (16+nanj) (-2+16j) (14+nanj) +add (16+nanj) (-2+infj) (14+nanj) +add (16+nanj) (-2+nanj) (14+nanj) +add (16+nanj) (-0-infj) (16+nanj) +add (16+nanj) (-0-16j) (16+nanj) +add (16+nanj) (-0-2j) (16+nanj) +add (16+nanj) (-0-0j) (16+nanj) +add (16+nanj) (-0+0j) (16+nanj) +add (16+nanj) (-0+2j) (16+nanj) +add (16+nanj) (-0+16j) (16+nanj) +add (16+nanj) (-0+infj) (16+nanj) +add (16+nanj) (-0+nanj) (16+nanj) +add (16+nanj) -infj (16+nanj) +add (16+nanj) -16j (16+nanj) +add (16+nanj) -2j (16+nanj) +add (16+nanj) -0j (16+nanj) +add (16+nanj) 0j (16+nanj) +add (16+nanj) 2j (16+nanj) +add (16+nanj) 16j (16+nanj) +add (16+nanj) infj (16+nanj) +add (16+nanj) nanj (16+nanj) +add (16+nanj) (2-infj) (18+nanj) +add (16+nanj) (2-16j) (18+nanj) +add (16+nanj) (2-2j) (18+nanj) +add (16+nanj) (2-0j) (18+nanj) +add (16+nanj) (2+0j) (18+nanj) +add (16+nanj) (2+2j) (18+nanj) +add (16+nanj) (2+16j) (18+nanj) +add (16+nanj) (2+infj) (18+nanj) +add (16+nanj) (2+nanj) (18+nanj) +add (16+nanj) (16-infj) (32+nanj) +add (16+nanj) (16-16j) (32+nanj) +add (16+nanj) (16-2j) (32+nanj) +add (16+nanj) (16-0j) (32+nanj) +add (16+nanj) (16+0j) (32+nanj) +add (16+nanj) (16+2j) (32+nanj) +add (16+nanj) (16+16j) (32+nanj) +add (16+nanj) (16+infj) (32+nanj) +add (16+nanj) (16+nanj) (32+nanj) +add (16+nanj) (inf-infj) (inf+nanj) +add (16+nanj) (inf-16j) (inf+nanj) +add (16+nanj) (inf-2j) (inf+nanj) +add (16+nanj) (inf-0j) (inf+nanj) +add (16+nanj) (inf+0j) (inf+nanj) +add (16+nanj) (inf+2j) (inf+nanj) +add (16+nanj) (inf+16j) (inf+nanj) +add (16+nanj) (inf+infj) (inf+nanj) +add (16+nanj) (inf+nanj) (inf+nanj) +add (16+nanj) (nan-infj) (nan+nanj) +add (16+nanj) (nan-16j) (nan+nanj) +add (16+nanj) (nan-2j) (nan+nanj) +add (16+nanj) (nan-0j) (nan+nanj) +add (16+nanj) (nan+0j) (nan+nanj) +add (16+nanj) (nan+2j) (nan+nanj) +add (16+nanj) (nan+16j) (nan+nanj) +add (16+nanj) (nan+infj) (nan+nanj) +add (16+nanj) (nan+nanj) (nan+nanj) +add (inf-infj) (-inf-infj) (nan-infj) +add (inf-infj) (-inf-16j) (nan-infj) +add (inf-infj) (-inf-2j) (nan-infj) +add (inf-infj) (-inf-0j) (nan-infj) +add (inf-infj) (-inf+0j) (nan-infj) +add (inf-infj) (-inf+2j) (nan-infj) +add (inf-infj) (-inf+16j) (nan-infj) +add (inf-infj) (-inf+infj) (nan+nanj) +add (inf-infj) (-inf+nanj) (nan+nanj) +add (inf-infj) (-16-infj) (inf-infj) +add (inf-infj) (-16-16j) (inf-infj) +add (inf-infj) (-16-2j) (inf-infj) +add (inf-infj) (-16-0j) (inf-infj) +add (inf-infj) (-16+0j) (inf-infj) +add (inf-infj) (-16+2j) (inf-infj) +add (inf-infj) (-16+16j) (inf-infj) +add (inf-infj) (-16+infj) (inf+nanj) +add (inf-infj) (-16+nanj) (inf+nanj) +add (inf-infj) (-2-infj) (inf-infj) +add (inf-infj) (-2-16j) (inf-infj) +add (inf-infj) (-2-2j) (inf-infj) +add (inf-infj) (-2-0j) (inf-infj) +add (inf-infj) (-2+0j) (inf-infj) +add (inf-infj) (-2+2j) (inf-infj) +add (inf-infj) (-2+16j) (inf-infj) +add (inf-infj) (-2+infj) (inf+nanj) +add (inf-infj) (-2+nanj) (inf+nanj) +add (inf-infj) (-0-infj) (inf-infj) +add (inf-infj) (-0-16j) (inf-infj) +add (inf-infj) (-0-2j) (inf-infj) +add (inf-infj) (-0-0j) (inf-infj) +add (inf-infj) (-0+0j) (inf-infj) +add (inf-infj) (-0+2j) (inf-infj) +add (inf-infj) (-0+16j) (inf-infj) +add (inf-infj) (-0+infj) (inf+nanj) +add (inf-infj) (-0+nanj) (inf+nanj) +add (inf-infj) -infj (inf-infj) +add (inf-infj) -16j (inf-infj) +add (inf-infj) -2j (inf-infj) +add (inf-infj) -0j (inf-infj) +add (inf-infj) 0j (inf-infj) +add (inf-infj) 2j (inf-infj) +add (inf-infj) 16j (inf-infj) +add (inf-infj) infj (inf+nanj) +add (inf-infj) nanj (inf+nanj) +add (inf-infj) (2-infj) (inf-infj) +add (inf-infj) (2-16j) (inf-infj) +add (inf-infj) (2-2j) (inf-infj) +add (inf-infj) (2-0j) (inf-infj) +add (inf-infj) (2+0j) (inf-infj) +add (inf-infj) (2+2j) (inf-infj) +add (inf-infj) (2+16j) (inf-infj) +add (inf-infj) (2+infj) (inf+nanj) +add (inf-infj) (2+nanj) (inf+nanj) +add (inf-infj) (16-infj) (inf-infj) +add (inf-infj) (16-16j) (inf-infj) +add (inf-infj) (16-2j) (inf-infj) +add (inf-infj) (16-0j) (inf-infj) +add (inf-infj) (16+0j) (inf-infj) +add (inf-infj) (16+2j) (inf-infj) +add (inf-infj) (16+16j) (inf-infj) +add (inf-infj) (16+infj) (inf+nanj) +add (inf-infj) (16+nanj) (inf+nanj) +add (inf-infj) (inf-infj) (inf-infj) +add (inf-infj) (inf-16j) (inf-infj) +add (inf-infj) (inf-2j) (inf-infj) +add (inf-infj) (inf-0j) (inf-infj) +add (inf-infj) (inf+0j) (inf-infj) +add (inf-infj) (inf+2j) (inf-infj) +add (inf-infj) (inf+16j) (inf-infj) +add (inf-infj) (inf+infj) (inf+nanj) +add (inf-infj) (inf+nanj) (inf+nanj) +add (inf-infj) (nan-infj) (nan-infj) +add (inf-infj) (nan-16j) (nan-infj) +add (inf-infj) (nan-2j) (nan-infj) +add (inf-infj) (nan-0j) (nan-infj) +add (inf-infj) (nan+0j) (nan-infj) +add (inf-infj) (nan+2j) (nan-infj) +add (inf-infj) (nan+16j) (nan-infj) +add (inf-infj) (nan+infj) (nan+nanj) +add (inf-infj) (nan+nanj) (nan+nanj) +add (inf-16j) (-inf-infj) (nan-infj) +add (inf-16j) (-inf-16j) (nan-32j) +add (inf-16j) (-inf-2j) (nan-18j) +add (inf-16j) (-inf-0j) (nan-16j) +add (inf-16j) (-inf+0j) (nan-16j) +add (inf-16j) (-inf+2j) (nan-14j) +add (inf-16j) (-inf+16j) (nan+0j) +add (inf-16j) (-inf+infj) (nan+infj) +add (inf-16j) (-inf+nanj) (nan+nanj) +add (inf-16j) (-16-infj) (inf-infj) +add (inf-16j) (-16-16j) (inf-32j) +add (inf-16j) (-16-2j) (inf-18j) +add (inf-16j) (-16-0j) (inf-16j) +add (inf-16j) (-16+0j) (inf-16j) +add (inf-16j) (-16+2j) (inf-14j) +add (inf-16j) (-16+16j) (inf+0j) +add (inf-16j) (-16+infj) (inf+infj) +add (inf-16j) (-16+nanj) (inf+nanj) +add (inf-16j) (-2-infj) (inf-infj) +add (inf-16j) (-2-16j) (inf-32j) +add (inf-16j) (-2-2j) (inf-18j) +add (inf-16j) (-2-0j) (inf-16j) +add (inf-16j) (-2+0j) (inf-16j) +add (inf-16j) (-2+2j) (inf-14j) +add (inf-16j) (-2+16j) (inf+0j) +add (inf-16j) (-2+infj) (inf+infj) +add (inf-16j) (-2+nanj) (inf+nanj) +add (inf-16j) (-0-infj) (inf-infj) +add (inf-16j) (-0-16j) (inf-32j) +add (inf-16j) (-0-2j) (inf-18j) +add (inf-16j) (-0-0j) (inf-16j) +add (inf-16j) (-0+0j) (inf-16j) +add (inf-16j) (-0+2j) (inf-14j) +add (inf-16j) (-0+16j) (inf+0j) +add (inf-16j) (-0+infj) (inf+infj) +add (inf-16j) (-0+nanj) (inf+nanj) +add (inf-16j) -infj (inf-infj) +add (inf-16j) -16j (inf-32j) +add (inf-16j) -2j (inf-18j) +add (inf-16j) -0j (inf-16j) +add (inf-16j) 0j (inf-16j) +add (inf-16j) 2j (inf-14j) +add (inf-16j) 16j (inf+0j) +add (inf-16j) infj (inf+infj) +add (inf-16j) nanj (inf+nanj) +add (inf-16j) (2-infj) (inf-infj) +add (inf-16j) (2-16j) (inf-32j) +add (inf-16j) (2-2j) (inf-18j) +add (inf-16j) (2-0j) (inf-16j) +add (inf-16j) (2+0j) (inf-16j) +add (inf-16j) (2+2j) (inf-14j) +add (inf-16j) (2+16j) (inf+0j) +add (inf-16j) (2+infj) (inf+infj) +add (inf-16j) (2+nanj) (inf+nanj) +add (inf-16j) (16-infj) (inf-infj) +add (inf-16j) (16-16j) (inf-32j) +add (inf-16j) (16-2j) (inf-18j) +add (inf-16j) (16-0j) (inf-16j) +add (inf-16j) (16+0j) (inf-16j) +add (inf-16j) (16+2j) (inf-14j) +add (inf-16j) (16+16j) (inf+0j) +add (inf-16j) (16+infj) (inf+infj) +add (inf-16j) (16+nanj) (inf+nanj) +add (inf-16j) (inf-infj) (inf-infj) +add (inf-16j) (inf-16j) (inf-32j) +add (inf-16j) (inf-2j) (inf-18j) +add (inf-16j) (inf-0j) (inf-16j) +add (inf-16j) (inf+0j) (inf-16j) +add (inf-16j) (inf+2j) (inf-14j) +add (inf-16j) (inf+16j) (inf+0j) +add (inf-16j) (inf+infj) (inf+infj) +add (inf-16j) (inf+nanj) (inf+nanj) +add (inf-16j) (nan-infj) (nan-infj) +add (inf-16j) (nan-16j) (nan-32j) +add (inf-16j) (nan-2j) (nan-18j) +add (inf-16j) (nan-0j) (nan-16j) +add (inf-16j) (nan+0j) (nan-16j) +add (inf-16j) (nan+2j) (nan-14j) +add (inf-16j) (nan+16j) (nan+0j) +add (inf-16j) (nan+infj) (nan+infj) +add (inf-16j) (nan+nanj) (nan+nanj) +add (inf-2j) (-inf-infj) (nan-infj) +add (inf-2j) (-inf-16j) (nan-18j) +add (inf-2j) (-inf-2j) (nan-4j) +add (inf-2j) (-inf-0j) (nan-2j) +add (inf-2j) (-inf+0j) (nan-2j) +add (inf-2j) (-inf+2j) (nan+0j) +add (inf-2j) (-inf+16j) (nan+14j) +add (inf-2j) (-inf+infj) (nan+infj) +add (inf-2j) (-inf+nanj) (nan+nanj) +add (inf-2j) (-16-infj) (inf-infj) +add (inf-2j) (-16-16j) (inf-18j) +add (inf-2j) (-16-2j) (inf-4j) +add (inf-2j) (-16-0j) (inf-2j) +add (inf-2j) (-16+0j) (inf-2j) +add (inf-2j) (-16+2j) (inf+0j) +add (inf-2j) (-16+16j) (inf+14j) +add (inf-2j) (-16+infj) (inf+infj) +add (inf-2j) (-16+nanj) (inf+nanj) +add (inf-2j) (-2-infj) (inf-infj) +add (inf-2j) (-2-16j) (inf-18j) +add (inf-2j) (-2-2j) (inf-4j) +add (inf-2j) (-2-0j) (inf-2j) +add (inf-2j) (-2+0j) (inf-2j) +add (inf-2j) (-2+2j) (inf+0j) +add (inf-2j) (-2+16j) (inf+14j) +add (inf-2j) (-2+infj) (inf+infj) +add (inf-2j) (-2+nanj) (inf+nanj) +add (inf-2j) (-0-infj) (inf-infj) +add (inf-2j) (-0-16j) (inf-18j) +add (inf-2j) (-0-2j) (inf-4j) +add (inf-2j) (-0-0j) (inf-2j) +add (inf-2j) (-0+0j) (inf-2j) +add (inf-2j) (-0+2j) (inf+0j) +add (inf-2j) (-0+16j) (inf+14j) +add (inf-2j) (-0+infj) (inf+infj) +add (inf-2j) (-0+nanj) (inf+nanj) +add (inf-2j) -infj (inf-infj) +add (inf-2j) -16j (inf-18j) +add (inf-2j) -2j (inf-4j) +add (inf-2j) -0j (inf-2j) +add (inf-2j) 0j (inf-2j) +add (inf-2j) 2j (inf+0j) +add (inf-2j) 16j (inf+14j) +add (inf-2j) infj (inf+infj) +add (inf-2j) nanj (inf+nanj) +add (inf-2j) (2-infj) (inf-infj) +add (inf-2j) (2-16j) (inf-18j) +add (inf-2j) (2-2j) (inf-4j) +add (inf-2j) (2-0j) (inf-2j) +add (inf-2j) (2+0j) (inf-2j) +add (inf-2j) (2+2j) (inf+0j) +add (inf-2j) (2+16j) (inf+14j) +add (inf-2j) (2+infj) (inf+infj) +add (inf-2j) (2+nanj) (inf+nanj) +add (inf-2j) (16-infj) (inf-infj) +add (inf-2j) (16-16j) (inf-18j) +add (inf-2j) (16-2j) (inf-4j) +add (inf-2j) (16-0j) (inf-2j) +add (inf-2j) (16+0j) (inf-2j) +add (inf-2j) (16+2j) (inf+0j) +add (inf-2j) (16+16j) (inf+14j) +add (inf-2j) (16+infj) (inf+infj) +add (inf-2j) (16+nanj) (inf+nanj) +add (inf-2j) (inf-infj) (inf-infj) +add (inf-2j) (inf-16j) (inf-18j) +add (inf-2j) (inf-2j) (inf-4j) +add (inf-2j) (inf-0j) (inf-2j) +add (inf-2j) (inf+0j) (inf-2j) +add (inf-2j) (inf+2j) (inf+0j) +add (inf-2j) (inf+16j) (inf+14j) +add (inf-2j) (inf+infj) (inf+infj) +add (inf-2j) (inf+nanj) (inf+nanj) +add (inf-2j) (nan-infj) (nan-infj) +add (inf-2j) (nan-16j) (nan-18j) +add (inf-2j) (nan-2j) (nan-4j) +add (inf-2j) (nan-0j) (nan-2j) +add (inf-2j) (nan+0j) (nan-2j) +add (inf-2j) (nan+2j) (nan+0j) +add (inf-2j) (nan+16j) (nan+14j) +add (inf-2j) (nan+infj) (nan+infj) +add (inf-2j) (nan+nanj) (nan+nanj) +add (inf-0j) (-inf-infj) (nan-infj) +add (inf-0j) (-inf-16j) (nan-16j) +add (inf-0j) (-inf-2j) (nan-2j) +add (inf-0j) (-inf-0j) (nan-0j) +add (inf-0j) (-inf+0j) (nan+0j) +add (inf-0j) (-inf+2j) (nan+2j) +add (inf-0j) (-inf+16j) (nan+16j) +add (inf-0j) (-inf+infj) (nan+infj) +add (inf-0j) (-inf+nanj) (nan+nanj) +add (inf-0j) (-16-infj) (inf-infj) +add (inf-0j) (-16-16j) (inf-16j) +add (inf-0j) (-16-2j) (inf-2j) +add (inf-0j) (-16-0j) (inf-0j) +add (inf-0j) (-16+0j) (inf+0j) +add (inf-0j) (-16+2j) (inf+2j) +add (inf-0j) (-16+16j) (inf+16j) +add (inf-0j) (-16+infj) (inf+infj) +add (inf-0j) (-16+nanj) (inf+nanj) +add (inf-0j) (-2-infj) (inf-infj) +add (inf-0j) (-2-16j) (inf-16j) +add (inf-0j) (-2-2j) (inf-2j) +add (inf-0j) (-2-0j) (inf-0j) +add (inf-0j) (-2+0j) (inf+0j) +add (inf-0j) (-2+2j) (inf+2j) +add (inf-0j) (-2+16j) (inf+16j) +add (inf-0j) (-2+infj) (inf+infj) +add (inf-0j) (-2+nanj) (inf+nanj) +add (inf-0j) (-0-infj) (inf-infj) +add (inf-0j) (-0-16j) (inf-16j) +add (inf-0j) (-0-2j) (inf-2j) +add (inf-0j) (-0-0j) (inf-0j) +add (inf-0j) (-0+0j) (inf+0j) +add (inf-0j) (-0+2j) (inf+2j) +add (inf-0j) (-0+16j) (inf+16j) +add (inf-0j) (-0+infj) (inf+infj) +add (inf-0j) (-0+nanj) (inf+nanj) +add (inf-0j) -infj (inf-infj) +add (inf-0j) -16j (inf-16j) +add (inf-0j) -2j (inf-2j) +add (inf-0j) -0j (inf-0j) +add (inf-0j) 0j (inf+0j) +add (inf-0j) 2j (inf+2j) +add (inf-0j) 16j (inf+16j) +add (inf-0j) infj (inf+infj) +add (inf-0j) nanj (inf+nanj) +add (inf-0j) (2-infj) (inf-infj) +add (inf-0j) (2-16j) (inf-16j) +add (inf-0j) (2-2j) (inf-2j) +add (inf-0j) (2-0j) (inf-0j) +add (inf-0j) (2+0j) (inf+0j) +add (inf-0j) (2+2j) (inf+2j) +add (inf-0j) (2+16j) (inf+16j) +add (inf-0j) (2+infj) (inf+infj) +add (inf-0j) (2+nanj) (inf+nanj) +add (inf-0j) (16-infj) (inf-infj) +add (inf-0j) (16-16j) (inf-16j) +add (inf-0j) (16-2j) (inf-2j) +add (inf-0j) (16-0j) (inf-0j) +add (inf-0j) (16+0j) (inf+0j) +add (inf-0j) (16+2j) (inf+2j) +add (inf-0j) (16+16j) (inf+16j) +add (inf-0j) (16+infj) (inf+infj) +add (inf-0j) (16+nanj) (inf+nanj) +add (inf-0j) (inf-infj) (inf-infj) +add (inf-0j) (inf-16j) (inf-16j) +add (inf-0j) (inf-2j) (inf-2j) +add (inf-0j) (inf-0j) (inf-0j) +add (inf-0j) (inf+0j) (inf+0j) +add (inf-0j) (inf+2j) (inf+2j) +add (inf-0j) (inf+16j) (inf+16j) +add (inf-0j) (inf+infj) (inf+infj) +add (inf-0j) (inf+nanj) (inf+nanj) +add (inf-0j) (nan-infj) (nan-infj) +add (inf-0j) (nan-16j) (nan-16j) +add (inf-0j) (nan-2j) (nan-2j) +add (inf-0j) (nan-0j) (nan-0j) +add (inf-0j) (nan+0j) (nan+0j) +add (inf-0j) (nan+2j) (nan+2j) +add (inf-0j) (nan+16j) (nan+16j) +add (inf-0j) (nan+infj) (nan+infj) +add (inf-0j) (nan+nanj) (nan+nanj) +add (inf+0j) (-inf-infj) (nan-infj) +add (inf+0j) (-inf-16j) (nan-16j) +add (inf+0j) (-inf-2j) (nan-2j) +add (inf+0j) (-inf-0j) (nan+0j) +add (inf+0j) (-inf+0j) (nan+0j) +add (inf+0j) (-inf+2j) (nan+2j) +add (inf+0j) (-inf+16j) (nan+16j) +add (inf+0j) (-inf+infj) (nan+infj) +add (inf+0j) (-inf+nanj) (nan+nanj) +add (inf+0j) (-16-infj) (inf-infj) +add (inf+0j) (-16-16j) (inf-16j) +add (inf+0j) (-16-2j) (inf-2j) +add (inf+0j) (-16-0j) (inf+0j) +add (inf+0j) (-16+0j) (inf+0j) +add (inf+0j) (-16+2j) (inf+2j) +add (inf+0j) (-16+16j) (inf+16j) +add (inf+0j) (-16+infj) (inf+infj) +add (inf+0j) (-16+nanj) (inf+nanj) +add (inf+0j) (-2-infj) (inf-infj) +add (inf+0j) (-2-16j) (inf-16j) +add (inf+0j) (-2-2j) (inf-2j) +add (inf+0j) (-2-0j) (inf+0j) +add (inf+0j) (-2+0j) (inf+0j) +add (inf+0j) (-2+2j) (inf+2j) +add (inf+0j) (-2+16j) (inf+16j) +add (inf+0j) (-2+infj) (inf+infj) +add (inf+0j) (-2+nanj) (inf+nanj) +add (inf+0j) (-0-infj) (inf-infj) +add (inf+0j) (-0-16j) (inf-16j) +add (inf+0j) (-0-2j) (inf-2j) +add (inf+0j) (-0-0j) (inf+0j) +add (inf+0j) (-0+0j) (inf+0j) +add (inf+0j) (-0+2j) (inf+2j) +add (inf+0j) (-0+16j) (inf+16j) +add (inf+0j) (-0+infj) (inf+infj) +add (inf+0j) (-0+nanj) (inf+nanj) +add (inf+0j) -infj (inf-infj) +add (inf+0j) -16j (inf-16j) +add (inf+0j) -2j (inf-2j) +add (inf+0j) -0j (inf+0j) +add (inf+0j) 0j (inf+0j) +add (inf+0j) 2j (inf+2j) +add (inf+0j) 16j (inf+16j) +add (inf+0j) infj (inf+infj) +add (inf+0j) nanj (inf+nanj) +add (inf+0j) (2-infj) (inf-infj) +add (inf+0j) (2-16j) (inf-16j) +add (inf+0j) (2-2j) (inf-2j) +add (inf+0j) (2-0j) (inf+0j) +add (inf+0j) (2+0j) (inf+0j) +add (inf+0j) (2+2j) (inf+2j) +add (inf+0j) (2+16j) (inf+16j) +add (inf+0j) (2+infj) (inf+infj) +add (inf+0j) (2+nanj) (inf+nanj) +add (inf+0j) (16-infj) (inf-infj) +add (inf+0j) (16-16j) (inf-16j) +add (inf+0j) (16-2j) (inf-2j) +add (inf+0j) (16-0j) (inf+0j) +add (inf+0j) (16+0j) (inf+0j) +add (inf+0j) (16+2j) (inf+2j) +add (inf+0j) (16+16j) (inf+16j) +add (inf+0j) (16+infj) (inf+infj) +add (inf+0j) (16+nanj) (inf+nanj) +add (inf+0j) (inf-infj) (inf-infj) +add (inf+0j) (inf-16j) (inf-16j) +add (inf+0j) (inf-2j) (inf-2j) +add (inf+0j) (inf-0j) (inf+0j) +add (inf+0j) (inf+0j) (inf+0j) +add (inf+0j) (inf+2j) (inf+2j) +add (inf+0j) (inf+16j) (inf+16j) +add (inf+0j) (inf+infj) (inf+infj) +add (inf+0j) (inf+nanj) (inf+nanj) +add (inf+0j) (nan-infj) (nan-infj) +add (inf+0j) (nan-16j) (nan-16j) +add (inf+0j) (nan-2j) (nan-2j) +add (inf+0j) (nan-0j) (nan+0j) +add (inf+0j) (nan+0j) (nan+0j) +add (inf+0j) (nan+2j) (nan+2j) +add (inf+0j) (nan+16j) (nan+16j) +add (inf+0j) (nan+infj) (nan+infj) +add (inf+0j) (nan+nanj) (nan+nanj) +add (inf+2j) (-inf-infj) (nan-infj) +add (inf+2j) (-inf-16j) (nan-14j) +add (inf+2j) (-inf-2j) (nan+0j) +add (inf+2j) (-inf-0j) (nan+2j) +add (inf+2j) (-inf+0j) (nan+2j) +add (inf+2j) (-inf+2j) (nan+4j) +add (inf+2j) (-inf+16j) (nan+18j) +add (inf+2j) (-inf+infj) (nan+infj) +add (inf+2j) (-inf+nanj) (nan+nanj) +add (inf+2j) (-16-infj) (inf-infj) +add (inf+2j) (-16-16j) (inf-14j) +add (inf+2j) (-16-2j) (inf+0j) +add (inf+2j) (-16-0j) (inf+2j) +add (inf+2j) (-16+0j) (inf+2j) +add (inf+2j) (-16+2j) (inf+4j) +add (inf+2j) (-16+16j) (inf+18j) +add (inf+2j) (-16+infj) (inf+infj) +add (inf+2j) (-16+nanj) (inf+nanj) +add (inf+2j) (-2-infj) (inf-infj) +add (inf+2j) (-2-16j) (inf-14j) +add (inf+2j) (-2-2j) (inf+0j) +add (inf+2j) (-2-0j) (inf+2j) +add (inf+2j) (-2+0j) (inf+2j) +add (inf+2j) (-2+2j) (inf+4j) +add (inf+2j) (-2+16j) (inf+18j) +add (inf+2j) (-2+infj) (inf+infj) +add (inf+2j) (-2+nanj) (inf+nanj) +add (inf+2j) (-0-infj) (inf-infj) +add (inf+2j) (-0-16j) (inf-14j) +add (inf+2j) (-0-2j) (inf+0j) +add (inf+2j) (-0-0j) (inf+2j) +add (inf+2j) (-0+0j) (inf+2j) +add (inf+2j) (-0+2j) (inf+4j) +add (inf+2j) (-0+16j) (inf+18j) +add (inf+2j) (-0+infj) (inf+infj) +add (inf+2j) (-0+nanj) (inf+nanj) +add (inf+2j) -infj (inf-infj) +add (inf+2j) -16j (inf-14j) +add (inf+2j) -2j (inf+0j) +add (inf+2j) -0j (inf+2j) +add (inf+2j) 0j (inf+2j) +add (inf+2j) 2j (inf+4j) +add (inf+2j) 16j (inf+18j) +add (inf+2j) infj (inf+infj) +add (inf+2j) nanj (inf+nanj) +add (inf+2j) (2-infj) (inf-infj) +add (inf+2j) (2-16j) (inf-14j) +add (inf+2j) (2-2j) (inf+0j) +add (inf+2j) (2-0j) (inf+2j) +add (inf+2j) (2+0j) (inf+2j) +add (inf+2j) (2+2j) (inf+4j) +add (inf+2j) (2+16j) (inf+18j) +add (inf+2j) (2+infj) (inf+infj) +add (inf+2j) (2+nanj) (inf+nanj) +add (inf+2j) (16-infj) (inf-infj) +add (inf+2j) (16-16j) (inf-14j) +add (inf+2j) (16-2j) (inf+0j) +add (inf+2j) (16-0j) (inf+2j) +add (inf+2j) (16+0j) (inf+2j) +add (inf+2j) (16+2j) (inf+4j) +add (inf+2j) (16+16j) (inf+18j) +add (inf+2j) (16+infj) (inf+infj) +add (inf+2j) (16+nanj) (inf+nanj) +add (inf+2j) (inf-infj) (inf-infj) +add (inf+2j) (inf-16j) (inf-14j) +add (inf+2j) (inf-2j) (inf+0j) +add (inf+2j) (inf-0j) (inf+2j) +add (inf+2j) (inf+0j) (inf+2j) +add (inf+2j) (inf+2j) (inf+4j) +add (inf+2j) (inf+16j) (inf+18j) +add (inf+2j) (inf+infj) (inf+infj) +add (inf+2j) (inf+nanj) (inf+nanj) +add (inf+2j) (nan-infj) (nan-infj) +add (inf+2j) (nan-16j) (nan-14j) +add (inf+2j) (nan-2j) (nan+0j) +add (inf+2j) (nan-0j) (nan+2j) +add (inf+2j) (nan+0j) (nan+2j) +add (inf+2j) (nan+2j) (nan+4j) +add (inf+2j) (nan+16j) (nan+18j) +add (inf+2j) (nan+infj) (nan+infj) +add (inf+2j) (nan+nanj) (nan+nanj) +add (inf+16j) (-inf-infj) (nan-infj) +add (inf+16j) (-inf-16j) (nan+0j) +add (inf+16j) (-inf-2j) (nan+14j) +add (inf+16j) (-inf-0j) (nan+16j) +add (inf+16j) (-inf+0j) (nan+16j) +add (inf+16j) (-inf+2j) (nan+18j) +add (inf+16j) (-inf+16j) (nan+32j) +add (inf+16j) (-inf+infj) (nan+infj) +add (inf+16j) (-inf+nanj) (nan+nanj) +add (inf+16j) (-16-infj) (inf-infj) +add (inf+16j) (-16-16j) (inf+0j) +add (inf+16j) (-16-2j) (inf+14j) +add (inf+16j) (-16-0j) (inf+16j) +add (inf+16j) (-16+0j) (inf+16j) +add (inf+16j) (-16+2j) (inf+18j) +add (inf+16j) (-16+16j) (inf+32j) +add (inf+16j) (-16+infj) (inf+infj) +add (inf+16j) (-16+nanj) (inf+nanj) +add (inf+16j) (-2-infj) (inf-infj) +add (inf+16j) (-2-16j) (inf+0j) +add (inf+16j) (-2-2j) (inf+14j) +add (inf+16j) (-2-0j) (inf+16j) +add (inf+16j) (-2+0j) (inf+16j) +add (inf+16j) (-2+2j) (inf+18j) +add (inf+16j) (-2+16j) (inf+32j) +add (inf+16j) (-2+infj) (inf+infj) +add (inf+16j) (-2+nanj) (inf+nanj) +add (inf+16j) (-0-infj) (inf-infj) +add (inf+16j) (-0-16j) (inf+0j) +add (inf+16j) (-0-2j) (inf+14j) +add (inf+16j) (-0-0j) (inf+16j) +add (inf+16j) (-0+0j) (inf+16j) +add (inf+16j) (-0+2j) (inf+18j) +add (inf+16j) (-0+16j) (inf+32j) +add (inf+16j) (-0+infj) (inf+infj) +add (inf+16j) (-0+nanj) (inf+nanj) +add (inf+16j) -infj (inf-infj) +add (inf+16j) -16j (inf+0j) +add (inf+16j) -2j (inf+14j) +add (inf+16j) -0j (inf+16j) +add (inf+16j) 0j (inf+16j) +add (inf+16j) 2j (inf+18j) +add (inf+16j) 16j (inf+32j) +add (inf+16j) infj (inf+infj) +add (inf+16j) nanj (inf+nanj) +add (inf+16j) (2-infj) (inf-infj) +add (inf+16j) (2-16j) (inf+0j) +add (inf+16j) (2-2j) (inf+14j) +add (inf+16j) (2-0j) (inf+16j) +add (inf+16j) (2+0j) (inf+16j) +add (inf+16j) (2+2j) (inf+18j) +add (inf+16j) (2+16j) (inf+32j) +add (inf+16j) (2+infj) (inf+infj) +add (inf+16j) (2+nanj) (inf+nanj) +add (inf+16j) (16-infj) (inf-infj) +add (inf+16j) (16-16j) (inf+0j) +add (inf+16j) (16-2j) (inf+14j) +add (inf+16j) (16-0j) (inf+16j) +add (inf+16j) (16+0j) (inf+16j) +add (inf+16j) (16+2j) (inf+18j) +add (inf+16j) (16+16j) (inf+32j) +add (inf+16j) (16+infj) (inf+infj) +add (inf+16j) (16+nanj) (inf+nanj) +add (inf+16j) (inf-infj) (inf-infj) +add (inf+16j) (inf-16j) (inf+0j) +add (inf+16j) (inf-2j) (inf+14j) +add (inf+16j) (inf-0j) (inf+16j) +add (inf+16j) (inf+0j) (inf+16j) +add (inf+16j) (inf+2j) (inf+18j) +add (inf+16j) (inf+16j) (inf+32j) +add (inf+16j) (inf+infj) (inf+infj) +add (inf+16j) (inf+nanj) (inf+nanj) +add (inf+16j) (nan-infj) (nan-infj) +add (inf+16j) (nan-16j) (nan+0j) +add (inf+16j) (nan-2j) (nan+14j) +add (inf+16j) (nan-0j) (nan+16j) +add (inf+16j) (nan+0j) (nan+16j) +add (inf+16j) (nan+2j) (nan+18j) +add (inf+16j) (nan+16j) (nan+32j) +add (inf+16j) (nan+infj) (nan+infj) +add (inf+16j) (nan+nanj) (nan+nanj) +add (inf+infj) (-inf-infj) (nan+nanj) +add (inf+infj) (-inf-16j) (nan+infj) +add (inf+infj) (-inf-2j) (nan+infj) +add (inf+infj) (-inf-0j) (nan+infj) +add (inf+infj) (-inf+0j) (nan+infj) +add (inf+infj) (-inf+2j) (nan+infj) +add (inf+infj) (-inf+16j) (nan+infj) +add (inf+infj) (-inf+infj) (nan+infj) +add (inf+infj) (-inf+nanj) (nan+nanj) +add (inf+infj) (-16-infj) (inf+nanj) +add (inf+infj) (-16-16j) (inf+infj) +add (inf+infj) (-16-2j) (inf+infj) +add (inf+infj) (-16-0j) (inf+infj) +add (inf+infj) (-16+0j) (inf+infj) +add (inf+infj) (-16+2j) (inf+infj) +add (inf+infj) (-16+16j) (inf+infj) +add (inf+infj) (-16+infj) (inf+infj) +add (inf+infj) (-16+nanj) (inf+nanj) +add (inf+infj) (-2-infj) (inf+nanj) +add (inf+infj) (-2-16j) (inf+infj) +add (inf+infj) (-2-2j) (inf+infj) +add (inf+infj) (-2-0j) (inf+infj) +add (inf+infj) (-2+0j) (inf+infj) +add (inf+infj) (-2+2j) (inf+infj) +add (inf+infj) (-2+16j) (inf+infj) +add (inf+infj) (-2+infj) (inf+infj) +add (inf+infj) (-2+nanj) (inf+nanj) +add (inf+infj) (-0-infj) (inf+nanj) +add (inf+infj) (-0-16j) (inf+infj) +add (inf+infj) (-0-2j) (inf+infj) +add (inf+infj) (-0-0j) (inf+infj) +add (inf+infj) (-0+0j) (inf+infj) +add (inf+infj) (-0+2j) (inf+infj) +add (inf+infj) (-0+16j) (inf+infj) +add (inf+infj) (-0+infj) (inf+infj) +add (inf+infj) (-0+nanj) (inf+nanj) +add (inf+infj) -infj (inf+nanj) +add (inf+infj) -16j (inf+infj) +add (inf+infj) -2j (inf+infj) +add (inf+infj) -0j (inf+infj) +add (inf+infj) 0j (inf+infj) +add (inf+infj) 2j (inf+infj) +add (inf+infj) 16j (inf+infj) +add (inf+infj) infj (inf+infj) +add (inf+infj) nanj (inf+nanj) +add (inf+infj) (2-infj) (inf+nanj) +add (inf+infj) (2-16j) (inf+infj) +add (inf+infj) (2-2j) (inf+infj) +add (inf+infj) (2-0j) (inf+infj) +add (inf+infj) (2+0j) (inf+infj) +add (inf+infj) (2+2j) (inf+infj) +add (inf+infj) (2+16j) (inf+infj) +add (inf+infj) (2+infj) (inf+infj) +add (inf+infj) (2+nanj) (inf+nanj) +add (inf+infj) (16-infj) (inf+nanj) +add (inf+infj) (16-16j) (inf+infj) +add (inf+infj) (16-2j) (inf+infj) +add (inf+infj) (16-0j) (inf+infj) +add (inf+infj) (16+0j) (inf+infj) +add (inf+infj) (16+2j) (inf+infj) +add (inf+infj) (16+16j) (inf+infj) +add (inf+infj) (16+infj) (inf+infj) +add (inf+infj) (16+nanj) (inf+nanj) +add (inf+infj) (inf-infj) (inf+nanj) +add (inf+infj) (inf-16j) (inf+infj) +add (inf+infj) (inf-2j) (inf+infj) +add (inf+infj) (inf-0j) (inf+infj) +add (inf+infj) (inf+0j) (inf+infj) +add (inf+infj) (inf+2j) (inf+infj) +add (inf+infj) (inf+16j) (inf+infj) +add (inf+infj) (inf+infj) (inf+infj) +add (inf+infj) (inf+nanj) (inf+nanj) +add (inf+infj) (nan-infj) (nan+nanj) +add (inf+infj) (nan-16j) (nan+infj) +add (inf+infj) (nan-2j) (nan+infj) +add (inf+infj) (nan-0j) (nan+infj) +add (inf+infj) (nan+0j) (nan+infj) +add (inf+infj) (nan+2j) (nan+infj) +add (inf+infj) (nan+16j) (nan+infj) +add (inf+infj) (nan+infj) (nan+infj) +add (inf+infj) (nan+nanj) (nan+nanj) +add (inf+nanj) (-inf-infj) (nan+nanj) +add (inf+nanj) (-inf-16j) (nan+nanj) +add (inf+nanj) (-inf-2j) (nan+nanj) +add (inf+nanj) (-inf-0j) (nan+nanj) +add (inf+nanj) (-inf+0j) (nan+nanj) +add (inf+nanj) (-inf+2j) (nan+nanj) +add (inf+nanj) (-inf+16j) (nan+nanj) +add (inf+nanj) (-inf+infj) (nan+nanj) +add (inf+nanj) (-inf+nanj) (nan+nanj) +add (inf+nanj) (-16-infj) (inf+nanj) +add (inf+nanj) (-16-16j) (inf+nanj) +add (inf+nanj) (-16-2j) (inf+nanj) +add (inf+nanj) (-16-0j) (inf+nanj) +add (inf+nanj) (-16+0j) (inf+nanj) +add (inf+nanj) (-16+2j) (inf+nanj) +add (inf+nanj) (-16+16j) (inf+nanj) +add (inf+nanj) (-16+infj) (inf+nanj) +add (inf+nanj) (-16+nanj) (inf+nanj) +add (inf+nanj) (-2-infj) (inf+nanj) +add (inf+nanj) (-2-16j) (inf+nanj) +add (inf+nanj) (-2-2j) (inf+nanj) +add (inf+nanj) (-2-0j) (inf+nanj) +add (inf+nanj) (-2+0j) (inf+nanj) +add (inf+nanj) (-2+2j) (inf+nanj) +add (inf+nanj) (-2+16j) (inf+nanj) +add (inf+nanj) (-2+infj) (inf+nanj) +add (inf+nanj) (-2+nanj) (inf+nanj) +add (inf+nanj) (-0-infj) (inf+nanj) +add (inf+nanj) (-0-16j) (inf+nanj) +add (inf+nanj) (-0-2j) (inf+nanj) +add (inf+nanj) (-0-0j) (inf+nanj) +add (inf+nanj) (-0+0j) (inf+nanj) +add (inf+nanj) (-0+2j) (inf+nanj) +add (inf+nanj) (-0+16j) (inf+nanj) +add (inf+nanj) (-0+infj) (inf+nanj) +add (inf+nanj) (-0+nanj) (inf+nanj) +add (inf+nanj) -infj (inf+nanj) +add (inf+nanj) -16j (inf+nanj) +add (inf+nanj) -2j (inf+nanj) +add (inf+nanj) -0j (inf+nanj) +add (inf+nanj) 0j (inf+nanj) +add (inf+nanj) 2j (inf+nanj) +add (inf+nanj) 16j (inf+nanj) +add (inf+nanj) infj (inf+nanj) +add (inf+nanj) nanj (inf+nanj) +add (inf+nanj) (2-infj) (inf+nanj) +add (inf+nanj) (2-16j) (inf+nanj) +add (inf+nanj) (2-2j) (inf+nanj) +add (inf+nanj) (2-0j) (inf+nanj) +add (inf+nanj) (2+0j) (inf+nanj) +add (inf+nanj) (2+2j) (inf+nanj) +add (inf+nanj) (2+16j) (inf+nanj) +add (inf+nanj) (2+infj) (inf+nanj) +add (inf+nanj) (2+nanj) (inf+nanj) +add (inf+nanj) (16-infj) (inf+nanj) +add (inf+nanj) (16-16j) (inf+nanj) +add (inf+nanj) (16-2j) (inf+nanj) +add (inf+nanj) (16-0j) (inf+nanj) +add (inf+nanj) (16+0j) (inf+nanj) +add (inf+nanj) (16+2j) (inf+nanj) +add (inf+nanj) (16+16j) (inf+nanj) +add (inf+nanj) (16+infj) (inf+nanj) +add (inf+nanj) (16+nanj) (inf+nanj) +add (inf+nanj) (inf-infj) (inf+nanj) +add (inf+nanj) (inf-16j) (inf+nanj) +add (inf+nanj) (inf-2j) (inf+nanj) +add (inf+nanj) (inf-0j) (inf+nanj) +add (inf+nanj) (inf+0j) (inf+nanj) +add (inf+nanj) (inf+2j) (inf+nanj) +add (inf+nanj) (inf+16j) (inf+nanj) +add (inf+nanj) (inf+infj) (inf+nanj) +add (inf+nanj) (inf+nanj) (inf+nanj) +add (inf+nanj) (nan-infj) (nan+nanj) +add (inf+nanj) (nan-16j) (nan+nanj) +add (inf+nanj) (nan-2j) (nan+nanj) +add (inf+nanj) (nan-0j) (nan+nanj) +add (inf+nanj) (nan+0j) (nan+nanj) +add (inf+nanj) (nan+2j) (nan+nanj) +add (inf+nanj) (nan+16j) (nan+nanj) +add (inf+nanj) (nan+infj) (nan+nanj) +add (inf+nanj) (nan+nanj) (nan+nanj) +add (nan-infj) (-inf-infj) (nan-infj) +add (nan-infj) (-inf-16j) (nan-infj) +add (nan-infj) (-inf-2j) (nan-infj) +add (nan-infj) (-inf-0j) (nan-infj) +add (nan-infj) (-inf+0j) (nan-infj) +add (nan-infj) (-inf+2j) (nan-infj) +add (nan-infj) (-inf+16j) (nan-infj) +add (nan-infj) (-inf+infj) (nan+nanj) +add (nan-infj) (-inf+nanj) (nan+nanj) +add (nan-infj) (-16-infj) (nan-infj) +add (nan-infj) (-16-16j) (nan-infj) +add (nan-infj) (-16-2j) (nan-infj) +add (nan-infj) (-16-0j) (nan-infj) +add (nan-infj) (-16+0j) (nan-infj) +add (nan-infj) (-16+2j) (nan-infj) +add (nan-infj) (-16+16j) (nan-infj) +add (nan-infj) (-16+infj) (nan+nanj) +add (nan-infj) (-16+nanj) (nan+nanj) +add (nan-infj) (-2-infj) (nan-infj) +add (nan-infj) (-2-16j) (nan-infj) +add (nan-infj) (-2-2j) (nan-infj) +add (nan-infj) (-2-0j) (nan-infj) +add (nan-infj) (-2+0j) (nan-infj) +add (nan-infj) (-2+2j) (nan-infj) +add (nan-infj) (-2+16j) (nan-infj) +add (nan-infj) (-2+infj) (nan+nanj) +add (nan-infj) (-2+nanj) (nan+nanj) +add (nan-infj) (-0-infj) (nan-infj) +add (nan-infj) (-0-16j) (nan-infj) +add (nan-infj) (-0-2j) (nan-infj) +add (nan-infj) (-0-0j) (nan-infj) +add (nan-infj) (-0+0j) (nan-infj) +add (nan-infj) (-0+2j) (nan-infj) +add (nan-infj) (-0+16j) (nan-infj) +add (nan-infj) (-0+infj) (nan+nanj) +add (nan-infj) (-0+nanj) (nan+nanj) +add (nan-infj) -infj (nan-infj) +add (nan-infj) -16j (nan-infj) +add (nan-infj) -2j (nan-infj) +add (nan-infj) -0j (nan-infj) +add (nan-infj) 0j (nan-infj) +add (nan-infj) 2j (nan-infj) +add (nan-infj) 16j (nan-infj) +add (nan-infj) infj (nan+nanj) +add (nan-infj) nanj (nan+nanj) +add (nan-infj) (2-infj) (nan-infj) +add (nan-infj) (2-16j) (nan-infj) +add (nan-infj) (2-2j) (nan-infj) +add (nan-infj) (2-0j) (nan-infj) +add (nan-infj) (2+0j) (nan-infj) +add (nan-infj) (2+2j) (nan-infj) +add (nan-infj) (2+16j) (nan-infj) +add (nan-infj) (2+infj) (nan+nanj) +add (nan-infj) (2+nanj) (nan+nanj) +add (nan-infj) (16-infj) (nan-infj) +add (nan-infj) (16-16j) (nan-infj) +add (nan-infj) (16-2j) (nan-infj) +add (nan-infj) (16-0j) (nan-infj) +add (nan-infj) (16+0j) (nan-infj) +add (nan-infj) (16+2j) (nan-infj) +add (nan-infj) (16+16j) (nan-infj) +add (nan-infj) (16+infj) (nan+nanj) +add (nan-infj) (16+nanj) (nan+nanj) +add (nan-infj) (inf-infj) (nan-infj) +add (nan-infj) (inf-16j) (nan-infj) +add (nan-infj) (inf-2j) (nan-infj) +add (nan-infj) (inf-0j) (nan-infj) +add (nan-infj) (inf+0j) (nan-infj) +add (nan-infj) (inf+2j) (nan-infj) +add (nan-infj) (inf+16j) (nan-infj) +add (nan-infj) (inf+infj) (nan+nanj) +add (nan-infj) (inf+nanj) (nan+nanj) +add (nan-infj) (nan-infj) (nan-infj) +add (nan-infj) (nan-16j) (nan-infj) +add (nan-infj) (nan-2j) (nan-infj) +add (nan-infj) (nan-0j) (nan-infj) +add (nan-infj) (nan+0j) (nan-infj) +add (nan-infj) (nan+2j) (nan-infj) +add (nan-infj) (nan+16j) (nan-infj) +add (nan-infj) (nan+infj) (nan+nanj) +add (nan-infj) (nan+nanj) (nan+nanj) +add (nan-16j) (-inf-infj) (nan-infj) +add (nan-16j) (-inf-16j) (nan-32j) +add (nan-16j) (-inf-2j) (nan-18j) +add (nan-16j) (-inf-0j) (nan-16j) +add (nan-16j) (-inf+0j) (nan-16j) +add (nan-16j) (-inf+2j) (nan-14j) +add (nan-16j) (-inf+16j) (nan+0j) +add (nan-16j) (-inf+infj) (nan+infj) +add (nan-16j) (-inf+nanj) (nan+nanj) +add (nan-16j) (-16-infj) (nan-infj) +add (nan-16j) (-16-16j) (nan-32j) +add (nan-16j) (-16-2j) (nan-18j) +add (nan-16j) (-16-0j) (nan-16j) +add (nan-16j) (-16+0j) (nan-16j) +add (nan-16j) (-16+2j) (nan-14j) +add (nan-16j) (-16+16j) (nan+0j) +add (nan-16j) (-16+infj) (nan+infj) +add (nan-16j) (-16+nanj) (nan+nanj) +add (nan-16j) (-2-infj) (nan-infj) +add (nan-16j) (-2-16j) (nan-32j) +add (nan-16j) (-2-2j) (nan-18j) +add (nan-16j) (-2-0j) (nan-16j) +add (nan-16j) (-2+0j) (nan-16j) +add (nan-16j) (-2+2j) (nan-14j) +add (nan-16j) (-2+16j) (nan+0j) +add (nan-16j) (-2+infj) (nan+infj) +add (nan-16j) (-2+nanj) (nan+nanj) +add (nan-16j) (-0-infj) (nan-infj) +add (nan-16j) (-0-16j) (nan-32j) +add (nan-16j) (-0-2j) (nan-18j) +add (nan-16j) (-0-0j) (nan-16j) +add (nan-16j) (-0+0j) (nan-16j) +add (nan-16j) (-0+2j) (nan-14j) +add (nan-16j) (-0+16j) (nan+0j) +add (nan-16j) (-0+infj) (nan+infj) +add (nan-16j) (-0+nanj) (nan+nanj) +add (nan-16j) -infj (nan-infj) +add (nan-16j) -16j (nan-32j) +add (nan-16j) -2j (nan-18j) +add (nan-16j) -0j (nan-16j) +add (nan-16j) 0j (nan-16j) +add (nan-16j) 2j (nan-14j) +add (nan-16j) 16j (nan+0j) +add (nan-16j) infj (nan+infj) +add (nan-16j) nanj (nan+nanj) +add (nan-16j) (2-infj) (nan-infj) +add (nan-16j) (2-16j) (nan-32j) +add (nan-16j) (2-2j) (nan-18j) +add (nan-16j) (2-0j) (nan-16j) +add (nan-16j) (2+0j) (nan-16j) +add (nan-16j) (2+2j) (nan-14j) +add (nan-16j) (2+16j) (nan+0j) +add (nan-16j) (2+infj) (nan+infj) +add (nan-16j) (2+nanj) (nan+nanj) +add (nan-16j) (16-infj) (nan-infj) +add (nan-16j) (16-16j) (nan-32j) +add (nan-16j) (16-2j) (nan-18j) +add (nan-16j) (16-0j) (nan-16j) +add (nan-16j) (16+0j) (nan-16j) +add (nan-16j) (16+2j) (nan-14j) +add (nan-16j) (16+16j) (nan+0j) +add (nan-16j) (16+infj) (nan+infj) +add (nan-16j) (16+nanj) (nan+nanj) +add (nan-16j) (inf-infj) (nan-infj) +add (nan-16j) (inf-16j) (nan-32j) +add (nan-16j) (inf-2j) (nan-18j) +add (nan-16j) (inf-0j) (nan-16j) +add (nan-16j) (inf+0j) (nan-16j) +add (nan-16j) (inf+2j) (nan-14j) +add (nan-16j) (inf+16j) (nan+0j) +add (nan-16j) (inf+infj) (nan+infj) +add (nan-16j) (inf+nanj) (nan+nanj) +add (nan-16j) (nan-infj) (nan-infj) +add (nan-16j) (nan-16j) (nan-32j) +add (nan-16j) (nan-2j) (nan-18j) +add (nan-16j) (nan-0j) (nan-16j) +add (nan-16j) (nan+0j) (nan-16j) +add (nan-16j) (nan+2j) (nan-14j) +add (nan-16j) (nan+16j) (nan+0j) +add (nan-16j) (nan+infj) (nan+infj) +add (nan-16j) (nan+nanj) (nan+nanj) +add (nan-2j) (-inf-infj) (nan-infj) +add (nan-2j) (-inf-16j) (nan-18j) +add (nan-2j) (-inf-2j) (nan-4j) +add (nan-2j) (-inf-0j) (nan-2j) +add (nan-2j) (-inf+0j) (nan-2j) +add (nan-2j) (-inf+2j) (nan+0j) +add (nan-2j) (-inf+16j) (nan+14j) +add (nan-2j) (-inf+infj) (nan+infj) +add (nan-2j) (-inf+nanj) (nan+nanj) +add (nan-2j) (-16-infj) (nan-infj) +add (nan-2j) (-16-16j) (nan-18j) +add (nan-2j) (-16-2j) (nan-4j) +add (nan-2j) (-16-0j) (nan-2j) +add (nan-2j) (-16+0j) (nan-2j) +add (nan-2j) (-16+2j) (nan+0j) +add (nan-2j) (-16+16j) (nan+14j) +add (nan-2j) (-16+infj) (nan+infj) +add (nan-2j) (-16+nanj) (nan+nanj) +add (nan-2j) (-2-infj) (nan-infj) +add (nan-2j) (-2-16j) (nan-18j) +add (nan-2j) (-2-2j) (nan-4j) +add (nan-2j) (-2-0j) (nan-2j) +add (nan-2j) (-2+0j) (nan-2j) +add (nan-2j) (-2+2j) (nan+0j) +add (nan-2j) (-2+16j) (nan+14j) +add (nan-2j) (-2+infj) (nan+infj) +add (nan-2j) (-2+nanj) (nan+nanj) +add (nan-2j) (-0-infj) (nan-infj) +add (nan-2j) (-0-16j) (nan-18j) +add (nan-2j) (-0-2j) (nan-4j) +add (nan-2j) (-0-0j) (nan-2j) +add (nan-2j) (-0+0j) (nan-2j) +add (nan-2j) (-0+2j) (nan+0j) +add (nan-2j) (-0+16j) (nan+14j) +add (nan-2j) (-0+infj) (nan+infj) +add (nan-2j) (-0+nanj) (nan+nanj) +add (nan-2j) -infj (nan-infj) +add (nan-2j) -16j (nan-18j) +add (nan-2j) -2j (nan-4j) +add (nan-2j) -0j (nan-2j) +add (nan-2j) 0j (nan-2j) +add (nan-2j) 2j (nan+0j) +add (nan-2j) 16j (nan+14j) +add (nan-2j) infj (nan+infj) +add (nan-2j) nanj (nan+nanj) +add (nan-2j) (2-infj) (nan-infj) +add (nan-2j) (2-16j) (nan-18j) +add (nan-2j) (2-2j) (nan-4j) +add (nan-2j) (2-0j) (nan-2j) +add (nan-2j) (2+0j) (nan-2j) +add (nan-2j) (2+2j) (nan+0j) +add (nan-2j) (2+16j) (nan+14j) +add (nan-2j) (2+infj) (nan+infj) +add (nan-2j) (2+nanj) (nan+nanj) +add (nan-2j) (16-infj) (nan-infj) +add (nan-2j) (16-16j) (nan-18j) +add (nan-2j) (16-2j) (nan-4j) +add (nan-2j) (16-0j) (nan-2j) +add (nan-2j) (16+0j) (nan-2j) +add (nan-2j) (16+2j) (nan+0j) +add (nan-2j) (16+16j) (nan+14j) +add (nan-2j) (16+infj) (nan+infj) +add (nan-2j) (16+nanj) (nan+nanj) +add (nan-2j) (inf-infj) (nan-infj) +add (nan-2j) (inf-16j) (nan-18j) +add (nan-2j) (inf-2j) (nan-4j) +add (nan-2j) (inf-0j) (nan-2j) +add (nan-2j) (inf+0j) (nan-2j) +add (nan-2j) (inf+2j) (nan+0j) +add (nan-2j) (inf+16j) (nan+14j) +add (nan-2j) (inf+infj) (nan+infj) +add (nan-2j) (inf+nanj) (nan+nanj) +add (nan-2j) (nan-infj) (nan-infj) +add (nan-2j) (nan-16j) (nan-18j) +add (nan-2j) (nan-2j) (nan-4j) +add (nan-2j) (nan-0j) (nan-2j) +add (nan-2j) (nan+0j) (nan-2j) +add (nan-2j) (nan+2j) (nan+0j) +add (nan-2j) (nan+16j) (nan+14j) +add (nan-2j) (nan+infj) (nan+infj) +add (nan-2j) (nan+nanj) (nan+nanj) +add (nan-0j) (-inf-infj) (nan-infj) +add (nan-0j) (-inf-16j) (nan-16j) +add (nan-0j) (-inf-2j) (nan-2j) +add (nan-0j) (-inf-0j) (nan-0j) +add (nan-0j) (-inf+0j) (nan+0j) +add (nan-0j) (-inf+2j) (nan+2j) +add (nan-0j) (-inf+16j) (nan+16j) +add (nan-0j) (-inf+infj) (nan+infj) +add (nan-0j) (-inf+nanj) (nan+nanj) +add (nan-0j) (-16-infj) (nan-infj) +add (nan-0j) (-16-16j) (nan-16j) +add (nan-0j) (-16-2j) (nan-2j) +add (nan-0j) (-16-0j) (nan-0j) +add (nan-0j) (-16+0j) (nan+0j) +add (nan-0j) (-16+2j) (nan+2j) +add (nan-0j) (-16+16j) (nan+16j) +add (nan-0j) (-16+infj) (nan+infj) +add (nan-0j) (-16+nanj) (nan+nanj) +add (nan-0j) (-2-infj) (nan-infj) +add (nan-0j) (-2-16j) (nan-16j) +add (nan-0j) (-2-2j) (nan-2j) +add (nan-0j) (-2-0j) (nan-0j) +add (nan-0j) (-2+0j) (nan+0j) +add (nan-0j) (-2+2j) (nan+2j) +add (nan-0j) (-2+16j) (nan+16j) +add (nan-0j) (-2+infj) (nan+infj) +add (nan-0j) (-2+nanj) (nan+nanj) +add (nan-0j) (-0-infj) (nan-infj) +add (nan-0j) (-0-16j) (nan-16j) +add (nan-0j) (-0-2j) (nan-2j) +add (nan-0j) (-0-0j) (nan-0j) +add (nan-0j) (-0+0j) (nan+0j) +add (nan-0j) (-0+2j) (nan+2j) +add (nan-0j) (-0+16j) (nan+16j) +add (nan-0j) (-0+infj) (nan+infj) +add (nan-0j) (-0+nanj) (nan+nanj) +add (nan-0j) -infj (nan-infj) +add (nan-0j) -16j (nan-16j) +add (nan-0j) -2j (nan-2j) +add (nan-0j) -0j (nan-0j) +add (nan-0j) 0j (nan+0j) +add (nan-0j) 2j (nan+2j) +add (nan-0j) 16j (nan+16j) +add (nan-0j) infj (nan+infj) +add (nan-0j) nanj (nan+nanj) +add (nan-0j) (2-infj) (nan-infj) +add (nan-0j) (2-16j) (nan-16j) +add (nan-0j) (2-2j) (nan-2j) +add (nan-0j) (2-0j) (nan-0j) +add (nan-0j) (2+0j) (nan+0j) +add (nan-0j) (2+2j) (nan+2j) +add (nan-0j) (2+16j) (nan+16j) +add (nan-0j) (2+infj) (nan+infj) +add (nan-0j) (2+nanj) (nan+nanj) +add (nan-0j) (16-infj) (nan-infj) +add (nan-0j) (16-16j) (nan-16j) +add (nan-0j) (16-2j) (nan-2j) +add (nan-0j) (16-0j) (nan-0j) +add (nan-0j) (16+0j) (nan+0j) +add (nan-0j) (16+2j) (nan+2j) +add (nan-0j) (16+16j) (nan+16j) +add (nan-0j) (16+infj) (nan+infj) +add (nan-0j) (16+nanj) (nan+nanj) +add (nan-0j) (inf-infj) (nan-infj) +add (nan-0j) (inf-16j) (nan-16j) +add (nan-0j) (inf-2j) (nan-2j) +add (nan-0j) (inf-0j) (nan-0j) +add (nan-0j) (inf+0j) (nan+0j) +add (nan-0j) (inf+2j) (nan+2j) +add (nan-0j) (inf+16j) (nan+16j) +add (nan-0j) (inf+infj) (nan+infj) +add (nan-0j) (inf+nanj) (nan+nanj) +add (nan-0j) (nan-infj) (nan-infj) +add (nan-0j) (nan-16j) (nan-16j) +add (nan-0j) (nan-2j) (nan-2j) +add (nan-0j) (nan-0j) (nan-0j) +add (nan-0j) (nan+0j) (nan+0j) +add (nan-0j) (nan+2j) (nan+2j) +add (nan-0j) (nan+16j) (nan+16j) +add (nan-0j) (nan+infj) (nan+infj) +add (nan-0j) (nan+nanj) (nan+nanj) +add (nan+0j) (-inf-infj) (nan-infj) +add (nan+0j) (-inf-16j) (nan-16j) +add (nan+0j) (-inf-2j) (nan-2j) +add (nan+0j) (-inf-0j) (nan+0j) +add (nan+0j) (-inf+0j) (nan+0j) +add (nan+0j) (-inf+2j) (nan+2j) +add (nan+0j) (-inf+16j) (nan+16j) +add (nan+0j) (-inf+infj) (nan+infj) +add (nan+0j) (-inf+nanj) (nan+nanj) +add (nan+0j) (-16-infj) (nan-infj) +add (nan+0j) (-16-16j) (nan-16j) +add (nan+0j) (-16-2j) (nan-2j) +add (nan+0j) (-16-0j) (nan+0j) +add (nan+0j) (-16+0j) (nan+0j) +add (nan+0j) (-16+2j) (nan+2j) +add (nan+0j) (-16+16j) (nan+16j) +add (nan+0j) (-16+infj) (nan+infj) +add (nan+0j) (-16+nanj) (nan+nanj) +add (nan+0j) (-2-infj) (nan-infj) +add (nan+0j) (-2-16j) (nan-16j) +add (nan+0j) (-2-2j) (nan-2j) +add (nan+0j) (-2-0j) (nan+0j) +add (nan+0j) (-2+0j) (nan+0j) +add (nan+0j) (-2+2j) (nan+2j) +add (nan+0j) (-2+16j) (nan+16j) +add (nan+0j) (-2+infj) (nan+infj) +add (nan+0j) (-2+nanj) (nan+nanj) +add (nan+0j) (-0-infj) (nan-infj) +add (nan+0j) (-0-16j) (nan-16j) +add (nan+0j) (-0-2j) (nan-2j) +add (nan+0j) (-0-0j) (nan+0j) +add (nan+0j) (-0+0j) (nan+0j) +add (nan+0j) (-0+2j) (nan+2j) +add (nan+0j) (-0+16j) (nan+16j) +add (nan+0j) (-0+infj) (nan+infj) +add (nan+0j) (-0+nanj) (nan+nanj) +add (nan+0j) -infj (nan-infj) +add (nan+0j) -16j (nan-16j) +add (nan+0j) -2j (nan-2j) +add (nan+0j) -0j (nan+0j) +add (nan+0j) 0j (nan+0j) +add (nan+0j) 2j (nan+2j) +add (nan+0j) 16j (nan+16j) +add (nan+0j) infj (nan+infj) +add (nan+0j) nanj (nan+nanj) +add (nan+0j) (2-infj) (nan-infj) +add (nan+0j) (2-16j) (nan-16j) +add (nan+0j) (2-2j) (nan-2j) +add (nan+0j) (2-0j) (nan+0j) +add (nan+0j) (2+0j) (nan+0j) +add (nan+0j) (2+2j) (nan+2j) +add (nan+0j) (2+16j) (nan+16j) +add (nan+0j) (2+infj) (nan+infj) +add (nan+0j) (2+nanj) (nan+nanj) +add (nan+0j) (16-infj) (nan-infj) +add (nan+0j) (16-16j) (nan-16j) +add (nan+0j) (16-2j) (nan-2j) +add (nan+0j) (16-0j) (nan+0j) +add (nan+0j) (16+0j) (nan+0j) +add (nan+0j) (16+2j) (nan+2j) +add (nan+0j) (16+16j) (nan+16j) +add (nan+0j) (16+infj) (nan+infj) +add (nan+0j) (16+nanj) (nan+nanj) +add (nan+0j) (inf-infj) (nan-infj) +add (nan+0j) (inf-16j) (nan-16j) +add (nan+0j) (inf-2j) (nan-2j) +add (nan+0j) (inf-0j) (nan+0j) +add (nan+0j) (inf+0j) (nan+0j) +add (nan+0j) (inf+2j) (nan+2j) +add (nan+0j) (inf+16j) (nan+16j) +add (nan+0j) (inf+infj) (nan+infj) +add (nan+0j) (inf+nanj) (nan+nanj) +add (nan+0j) (nan-infj) (nan-infj) +add (nan+0j) (nan-16j) (nan-16j) +add (nan+0j) (nan-2j) (nan-2j) +add (nan+0j) (nan-0j) (nan+0j) +add (nan+0j) (nan+0j) (nan+0j) +add (nan+0j) (nan+2j) (nan+2j) +add (nan+0j) (nan+16j) (nan+16j) +add (nan+0j) (nan+infj) (nan+infj) +add (nan+0j) (nan+nanj) (nan+nanj) +add (nan+2j) (-inf-infj) (nan-infj) +add (nan+2j) (-inf-16j) (nan-14j) +add (nan+2j) (-inf-2j) (nan+0j) +add (nan+2j) (-inf-0j) (nan+2j) +add (nan+2j) (-inf+0j) (nan+2j) +add (nan+2j) (-inf+2j) (nan+4j) +add (nan+2j) (-inf+16j) (nan+18j) +add (nan+2j) (-inf+infj) (nan+infj) +add (nan+2j) (-inf+nanj) (nan+nanj) +add (nan+2j) (-16-infj) (nan-infj) +add (nan+2j) (-16-16j) (nan-14j) +add (nan+2j) (-16-2j) (nan+0j) +add (nan+2j) (-16-0j) (nan+2j) +add (nan+2j) (-16+0j) (nan+2j) +add (nan+2j) (-16+2j) (nan+4j) +add (nan+2j) (-16+16j) (nan+18j) +add (nan+2j) (-16+infj) (nan+infj) +add (nan+2j) (-16+nanj) (nan+nanj) +add (nan+2j) (-2-infj) (nan-infj) +add (nan+2j) (-2-16j) (nan-14j) +add (nan+2j) (-2-2j) (nan+0j) +add (nan+2j) (-2-0j) (nan+2j) +add (nan+2j) (-2+0j) (nan+2j) +add (nan+2j) (-2+2j) (nan+4j) +add (nan+2j) (-2+16j) (nan+18j) +add (nan+2j) (-2+infj) (nan+infj) +add (nan+2j) (-2+nanj) (nan+nanj) +add (nan+2j) (-0-infj) (nan-infj) +add (nan+2j) (-0-16j) (nan-14j) +add (nan+2j) (-0-2j) (nan+0j) +add (nan+2j) (-0-0j) (nan+2j) +add (nan+2j) (-0+0j) (nan+2j) +add (nan+2j) (-0+2j) (nan+4j) +add (nan+2j) (-0+16j) (nan+18j) +add (nan+2j) (-0+infj) (nan+infj) +add (nan+2j) (-0+nanj) (nan+nanj) +add (nan+2j) -infj (nan-infj) +add (nan+2j) -16j (nan-14j) +add (nan+2j) -2j (nan+0j) +add (nan+2j) -0j (nan+2j) +add (nan+2j) 0j (nan+2j) +add (nan+2j) 2j (nan+4j) +add (nan+2j) 16j (nan+18j) +add (nan+2j) infj (nan+infj) +add (nan+2j) nanj (nan+nanj) +add (nan+2j) (2-infj) (nan-infj) +add (nan+2j) (2-16j) (nan-14j) +add (nan+2j) (2-2j) (nan+0j) +add (nan+2j) (2-0j) (nan+2j) +add (nan+2j) (2+0j) (nan+2j) +add (nan+2j) (2+2j) (nan+4j) +add (nan+2j) (2+16j) (nan+18j) +add (nan+2j) (2+infj) (nan+infj) +add (nan+2j) (2+nanj) (nan+nanj) +add (nan+2j) (16-infj) (nan-infj) +add (nan+2j) (16-16j) (nan-14j) +add (nan+2j) (16-2j) (nan+0j) +add (nan+2j) (16-0j) (nan+2j) +add (nan+2j) (16+0j) (nan+2j) +add (nan+2j) (16+2j) (nan+4j) +add (nan+2j) (16+16j) (nan+18j) +add (nan+2j) (16+infj) (nan+infj) +add (nan+2j) (16+nanj) (nan+nanj) +add (nan+2j) (inf-infj) (nan-infj) +add (nan+2j) (inf-16j) (nan-14j) +add (nan+2j) (inf-2j) (nan+0j) +add (nan+2j) (inf-0j) (nan+2j) +add (nan+2j) (inf+0j) (nan+2j) +add (nan+2j) (inf+2j) (nan+4j) +add (nan+2j) (inf+16j) (nan+18j) +add (nan+2j) (inf+infj) (nan+infj) +add (nan+2j) (inf+nanj) (nan+nanj) +add (nan+2j) (nan-infj) (nan-infj) +add (nan+2j) (nan-16j) (nan-14j) +add (nan+2j) (nan-2j) (nan+0j) +add (nan+2j) (nan-0j) (nan+2j) +add (nan+2j) (nan+0j) (nan+2j) +add (nan+2j) (nan+2j) (nan+4j) +add (nan+2j) (nan+16j) (nan+18j) +add (nan+2j) (nan+infj) (nan+infj) +add (nan+2j) (nan+nanj) (nan+nanj) +add (nan+16j) (-inf-infj) (nan-infj) +add (nan+16j) (-inf-16j) (nan+0j) +add (nan+16j) (-inf-2j) (nan+14j) +add (nan+16j) (-inf-0j) (nan+16j) +add (nan+16j) (-inf+0j) (nan+16j) +add (nan+16j) (-inf+2j) (nan+18j) +add (nan+16j) (-inf+16j) (nan+32j) +add (nan+16j) (-inf+infj) (nan+infj) +add (nan+16j) (-inf+nanj) (nan+nanj) +add (nan+16j) (-16-infj) (nan-infj) +add (nan+16j) (-16-16j) (nan+0j) +add (nan+16j) (-16-2j) (nan+14j) +add (nan+16j) (-16-0j) (nan+16j) +add (nan+16j) (-16+0j) (nan+16j) +add (nan+16j) (-16+2j) (nan+18j) +add (nan+16j) (-16+16j) (nan+32j) +add (nan+16j) (-16+infj) (nan+infj) +add (nan+16j) (-16+nanj) (nan+nanj) +add (nan+16j) (-2-infj) (nan-infj) +add (nan+16j) (-2-16j) (nan+0j) +add (nan+16j) (-2-2j) (nan+14j) +add (nan+16j) (-2-0j) (nan+16j) +add (nan+16j) (-2+0j) (nan+16j) +add (nan+16j) (-2+2j) (nan+18j) +add (nan+16j) (-2+16j) (nan+32j) +add (nan+16j) (-2+infj) (nan+infj) +add (nan+16j) (-2+nanj) (nan+nanj) +add (nan+16j) (-0-infj) (nan-infj) +add (nan+16j) (-0-16j) (nan+0j) +add (nan+16j) (-0-2j) (nan+14j) +add (nan+16j) (-0-0j) (nan+16j) +add (nan+16j) (-0+0j) (nan+16j) +add (nan+16j) (-0+2j) (nan+18j) +add (nan+16j) (-0+16j) (nan+32j) +add (nan+16j) (-0+infj) (nan+infj) +add (nan+16j) (-0+nanj) (nan+nanj) +add (nan+16j) -infj (nan-infj) +add (nan+16j) -16j (nan+0j) +add (nan+16j) -2j (nan+14j) +add (nan+16j) -0j (nan+16j) +add (nan+16j) 0j (nan+16j) +add (nan+16j) 2j (nan+18j) +add (nan+16j) 16j (nan+32j) +add (nan+16j) infj (nan+infj) +add (nan+16j) nanj (nan+nanj) +add (nan+16j) (2-infj) (nan-infj) +add (nan+16j) (2-16j) (nan+0j) +add (nan+16j) (2-2j) (nan+14j) +add (nan+16j) (2-0j) (nan+16j) +add (nan+16j) (2+0j) (nan+16j) +add (nan+16j) (2+2j) (nan+18j) +add (nan+16j) (2+16j) (nan+32j) +add (nan+16j) (2+infj) (nan+infj) +add (nan+16j) (2+nanj) (nan+nanj) +add (nan+16j) (16-infj) (nan-infj) +add (nan+16j) (16-16j) (nan+0j) +add (nan+16j) (16-2j) (nan+14j) +add (nan+16j) (16-0j) (nan+16j) +add (nan+16j) (16+0j) (nan+16j) +add (nan+16j) (16+2j) (nan+18j) +add (nan+16j) (16+16j) (nan+32j) +add (nan+16j) (16+infj) (nan+infj) +add (nan+16j) (16+nanj) (nan+nanj) +add (nan+16j) (inf-infj) (nan-infj) +add (nan+16j) (inf-16j) (nan+0j) +add (nan+16j) (inf-2j) (nan+14j) +add (nan+16j) (inf-0j) (nan+16j) +add (nan+16j) (inf+0j) (nan+16j) +add (nan+16j) (inf+2j) (nan+18j) +add (nan+16j) (inf+16j) (nan+32j) +add (nan+16j) (inf+infj) (nan+infj) +add (nan+16j) (inf+nanj) (nan+nanj) +add (nan+16j) (nan-infj) (nan-infj) +add (nan+16j) (nan-16j) (nan+0j) +add (nan+16j) (nan-2j) (nan+14j) +add (nan+16j) (nan-0j) (nan+16j) +add (nan+16j) (nan+0j) (nan+16j) +add (nan+16j) (nan+2j) (nan+18j) +add (nan+16j) (nan+16j) (nan+32j) +add (nan+16j) (nan+infj) (nan+infj) +add (nan+16j) (nan+nanj) (nan+nanj) +add (nan+infj) (-inf-infj) (nan+nanj) +add (nan+infj) (-inf-16j) (nan+infj) +add (nan+infj) (-inf-2j) (nan+infj) +add (nan+infj) (-inf-0j) (nan+infj) +add (nan+infj) (-inf+0j) (nan+infj) +add (nan+infj) (-inf+2j) (nan+infj) +add (nan+infj) (-inf+16j) (nan+infj) +add (nan+infj) (-inf+infj) (nan+infj) +add (nan+infj) (-inf+nanj) (nan+nanj) +add (nan+infj) (-16-infj) (nan+nanj) +add (nan+infj) (-16-16j) (nan+infj) +add (nan+infj) (-16-2j) (nan+infj) +add (nan+infj) (-16-0j) (nan+infj) +add (nan+infj) (-16+0j) (nan+infj) +add (nan+infj) (-16+2j) (nan+infj) +add (nan+infj) (-16+16j) (nan+infj) +add (nan+infj) (-16+infj) (nan+infj) +add (nan+infj) (-16+nanj) (nan+nanj) +add (nan+infj) (-2-infj) (nan+nanj) +add (nan+infj) (-2-16j) (nan+infj) +add (nan+infj) (-2-2j) (nan+infj) +add (nan+infj) (-2-0j) (nan+infj) +add (nan+infj) (-2+0j) (nan+infj) +add (nan+infj) (-2+2j) (nan+infj) +add (nan+infj) (-2+16j) (nan+infj) +add (nan+infj) (-2+infj) (nan+infj) +add (nan+infj) (-2+nanj) (nan+nanj) +add (nan+infj) (-0-infj) (nan+nanj) +add (nan+infj) (-0-16j) (nan+infj) +add (nan+infj) (-0-2j) (nan+infj) +add (nan+infj) (-0-0j) (nan+infj) +add (nan+infj) (-0+0j) (nan+infj) +add (nan+infj) (-0+2j) (nan+infj) +add (nan+infj) (-0+16j) (nan+infj) +add (nan+infj) (-0+infj) (nan+infj) +add (nan+infj) (-0+nanj) (nan+nanj) +add (nan+infj) -infj (nan+nanj) +add (nan+infj) -16j (nan+infj) +add (nan+infj) -2j (nan+infj) +add (nan+infj) -0j (nan+infj) +add (nan+infj) 0j (nan+infj) +add (nan+infj) 2j (nan+infj) +add (nan+infj) 16j (nan+infj) +add (nan+infj) infj (nan+infj) +add (nan+infj) nanj (nan+nanj) +add (nan+infj) (2-infj) (nan+nanj) +add (nan+infj) (2-16j) (nan+infj) +add (nan+infj) (2-2j) (nan+infj) +add (nan+infj) (2-0j) (nan+infj) +add (nan+infj) (2+0j) (nan+infj) +add (nan+infj) (2+2j) (nan+infj) +add (nan+infj) (2+16j) (nan+infj) +add (nan+infj) (2+infj) (nan+infj) +add (nan+infj) (2+nanj) (nan+nanj) +add (nan+infj) (16-infj) (nan+nanj) +add (nan+infj) (16-16j) (nan+infj) +add (nan+infj) (16-2j) (nan+infj) +add (nan+infj) (16-0j) (nan+infj) +add (nan+infj) (16+0j) (nan+infj) +add (nan+infj) (16+2j) (nan+infj) +add (nan+infj) (16+16j) (nan+infj) +add (nan+infj) (16+infj) (nan+infj) +add (nan+infj) (16+nanj) (nan+nanj) +add (nan+infj) (inf-infj) (nan+nanj) +add (nan+infj) (inf-16j) (nan+infj) +add (nan+infj) (inf-2j) (nan+infj) +add (nan+infj) (inf-0j) (nan+infj) +add (nan+infj) (inf+0j) (nan+infj) +add (nan+infj) (inf+2j) (nan+infj) +add (nan+infj) (inf+16j) (nan+infj) +add (nan+infj) (inf+infj) (nan+infj) +add (nan+infj) (inf+nanj) (nan+nanj) +add (nan+infj) (nan-infj) (nan+nanj) +add (nan+infj) (nan-16j) (nan+infj) +add (nan+infj) (nan-2j) (nan+infj) +add (nan+infj) (nan-0j) (nan+infj) +add (nan+infj) (nan+0j) (nan+infj) +add (nan+infj) (nan+2j) (nan+infj) +add (nan+infj) (nan+16j) (nan+infj) +add (nan+infj) (nan+infj) (nan+infj) +add (nan+infj) (nan+nanj) (nan+nanj) +add (nan+nanj) (-inf-infj) (nan+nanj) +add (nan+nanj) (-inf-16j) (nan+nanj) +add (nan+nanj) (-inf-2j) (nan+nanj) +add (nan+nanj) (-inf-0j) (nan+nanj) +add (nan+nanj) (-inf+0j) (nan+nanj) +add (nan+nanj) (-inf+2j) (nan+nanj) +add (nan+nanj) (-inf+16j) (nan+nanj) +add (nan+nanj) (-inf+infj) (nan+nanj) +add (nan+nanj) (-inf+nanj) (nan+nanj) +add (nan+nanj) (-16-infj) (nan+nanj) +add (nan+nanj) (-16-16j) (nan+nanj) +add (nan+nanj) (-16-2j) (nan+nanj) +add (nan+nanj) (-16-0j) (nan+nanj) +add (nan+nanj) (-16+0j) (nan+nanj) +add (nan+nanj) (-16+2j) (nan+nanj) +add (nan+nanj) (-16+16j) (nan+nanj) +add (nan+nanj) (-16+infj) (nan+nanj) +add (nan+nanj) (-16+nanj) (nan+nanj) +add (nan+nanj) (-2-infj) (nan+nanj) +add (nan+nanj) (-2-16j) (nan+nanj) +add (nan+nanj) (-2-2j) (nan+nanj) +add (nan+nanj) (-2-0j) (nan+nanj) +add (nan+nanj) (-2+0j) (nan+nanj) +add (nan+nanj) (-2+2j) (nan+nanj) +add (nan+nanj) (-2+16j) (nan+nanj) +add (nan+nanj) (-2+infj) (nan+nanj) +add (nan+nanj) (-2+nanj) (nan+nanj) +add (nan+nanj) (-0-infj) (nan+nanj) +add (nan+nanj) (-0-16j) (nan+nanj) +add (nan+nanj) (-0-2j) (nan+nanj) +add (nan+nanj) (-0-0j) (nan+nanj) +add (nan+nanj) (-0+0j) (nan+nanj) +add (nan+nanj) (-0+2j) (nan+nanj) +add (nan+nanj) (-0+16j) (nan+nanj) +add (nan+nanj) (-0+infj) (nan+nanj) +add (nan+nanj) (-0+nanj) (nan+nanj) +add (nan+nanj) -infj (nan+nanj) +add (nan+nanj) -16j (nan+nanj) +add (nan+nanj) -2j (nan+nanj) +add (nan+nanj) -0j (nan+nanj) +add (nan+nanj) 0j (nan+nanj) +add (nan+nanj) 2j (nan+nanj) +add (nan+nanj) 16j (nan+nanj) +add (nan+nanj) infj (nan+nanj) +add (nan+nanj) nanj (nan+nanj) +add (nan+nanj) (2-infj) (nan+nanj) +add (nan+nanj) (2-16j) (nan+nanj) +add (nan+nanj) (2-2j) (nan+nanj) +add (nan+nanj) (2-0j) (nan+nanj) +add (nan+nanj) (2+0j) (nan+nanj) +add (nan+nanj) (2+2j) (nan+nanj) +add (nan+nanj) (2+16j) (nan+nanj) +add (nan+nanj) (2+infj) (nan+nanj) +add (nan+nanj) (2+nanj) (nan+nanj) +add (nan+nanj) (16-infj) (nan+nanj) +add (nan+nanj) (16-16j) (nan+nanj) +add (nan+nanj) (16-2j) (nan+nanj) +add (nan+nanj) (16-0j) (nan+nanj) +add (nan+nanj) (16+0j) (nan+nanj) +add (nan+nanj) (16+2j) (nan+nanj) +add (nan+nanj) (16+16j) (nan+nanj) +add (nan+nanj) (16+infj) (nan+nanj) +add (nan+nanj) (16+nanj) (nan+nanj) +add (nan+nanj) (inf-infj) (nan+nanj) +add (nan+nanj) (inf-16j) (nan+nanj) +add (nan+nanj) (inf-2j) (nan+nanj) +add (nan+nanj) (inf-0j) (nan+nanj) +add (nan+nanj) (inf+0j) (nan+nanj) +add (nan+nanj) (inf+2j) (nan+nanj) +add (nan+nanj) (inf+16j) (nan+nanj) +add (nan+nanj) (inf+infj) (nan+nanj) +add (nan+nanj) (inf+nanj) (nan+nanj) +add (nan+nanj) (nan-infj) (nan+nanj) +add (nan+nanj) (nan-16j) (nan+nanj) +add (nan+nanj) (nan-2j) (nan+nanj) +add (nan+nanj) (nan-0j) (nan+nanj) +add (nan+nanj) (nan+0j) (nan+nanj) +add (nan+nanj) (nan+2j) (nan+nanj) +add (nan+nanj) (nan+16j) (nan+nanj) +add (nan+nanj) (nan+infj) (nan+nanj) +add (nan+nanj) (nan+nanj) (nan+nanj) +div (-inf-infj) (-inf-infj) (nan+nanj) +div (-inf-infj) (-inf-16j) (nan+nanj) +div (-inf-infj) (-inf-2j) (nan+nanj) +div (-inf-infj) (-inf-0j) (nan+nanj) +div (-inf-infj) (-inf+0j) (nan+nanj) +div (-inf-infj) (-inf+2j) (nan+nanj) +div (-inf-infj) (-inf+16j) (nan+nanj) +div (-inf-infj) (-inf+infj) (nan+nanj) +div (-inf-infj) (-inf+nanj) (nan+nanj) +div (-inf-infj) (-16-infj) (nan+nanj) +div (-inf-infj) (-16-16j) (inf+nanj) +div (-inf-infj) (-16-2j) (inf+nanj) +div (-inf-infj) (-16-0j) (nan+nanj) +div (-inf-infj) (-16+0j) (nan+nanj) +div (-inf-infj) (-16+2j) (nan+infj) +div (-inf-infj) (-16+16j) (nan+infj) +div (-inf-infj) (-16+infj) (nan+nanj) +div (-inf-infj) (-16+nanj) (nan+nanj) +div (-inf-infj) (-2-infj) (nan+nanj) +div (-inf-infj) (-2-16j) (inf+nanj) +div (-inf-infj) (-2-2j) (inf+nanj) +div (-inf-infj) (-2-0j) (nan+nanj) +div (-inf-infj) (-2+0j) (nan+nanj) +div (-inf-infj) (-2+2j) (nan+infj) +div (-inf-infj) (-2+16j) (nan+infj) +div (-inf-infj) (-2+infj) (nan+nanj) +div (-inf-infj) (-2+nanj) (nan+nanj) +div (-inf-infj) (-0-infj) (nan+nanj) +div (-inf-infj) (-0-16j) (nan+nanj) +div (-inf-infj) (-0-2j) (nan+nanj) +div (-inf-infj) (-0-0j) ZeroDivisionError +div (-inf-infj) (-0+0j) ZeroDivisionError +div (-inf-infj) (-0+2j) (nan+nanj) +div (-inf-infj) (-0+16j) (nan+nanj) +div (-inf-infj) (-0+infj) (nan+nanj) +div (-inf-infj) (-0+nanj) (nan+nanj) +div (-inf-infj) -infj (nan+nanj) +div (-inf-infj) -16j (nan+nanj) +div (-inf-infj) -2j (nan+nanj) +div (-inf-infj) -0j ZeroDivisionError +div (-inf-infj) 0j ZeroDivisionError +div (-inf-infj) 2j (nan+nanj) +div (-inf-infj) 16j (nan+nanj) +div (-inf-infj) infj (nan+nanj) +div (-inf-infj) nanj (nan+nanj) +div (-inf-infj) (2-infj) (nan+nanj) +div (-inf-infj) (2-16j) (nan-infj) +div (-inf-infj) (2-2j) (nan-infj) +div (-inf-infj) (2-0j) (nan+nanj) +div (-inf-infj) (2+0j) (nan+nanj) +div (-inf-infj) (2+2j) (-inf+nanj) +div (-inf-infj) (2+16j) (-inf+nanj) +div (-inf-infj) (2+infj) (nan+nanj) +div (-inf-infj) (2+nanj) (nan+nanj) +div (-inf-infj) (16-infj) (nan+nanj) +div (-inf-infj) (16-16j) (nan-infj) +div (-inf-infj) (16-2j) (nan-infj) +div (-inf-infj) (16-0j) (nan+nanj) +div (-inf-infj) (16+0j) (nan+nanj) +div (-inf-infj) (16+2j) (-inf+nanj) +div (-inf-infj) (16+16j) (-inf+nanj) +div (-inf-infj) (16+infj) (nan+nanj) +div (-inf-infj) (16+nanj) (nan+nanj) +div (-inf-infj) (inf-infj) (nan+nanj) +div (-inf-infj) (inf-16j) (nan+nanj) +div (-inf-infj) (inf-2j) (nan+nanj) +div (-inf-infj) (inf-0j) (nan+nanj) +div (-inf-infj) (inf+0j) (nan+nanj) +div (-inf-infj) (inf+2j) (nan+nanj) +div (-inf-infj) (inf+16j) (nan+nanj) +div (-inf-infj) (inf+infj) (nan+nanj) +div (-inf-infj) (inf+nanj) (nan+nanj) +div (-inf-infj) (nan-infj) (nan+nanj) +div (-inf-infj) (nan-16j) (nan+nanj) +div (-inf-infj) (nan-2j) (nan+nanj) +div (-inf-infj) (nan-0j) (nan+nanj) +div (-inf-infj) (nan+0j) (nan+nanj) +div (-inf-infj) (nan+2j) (nan+nanj) +div (-inf-infj) (nan+16j) (nan+nanj) +div (-inf-infj) (nan+infj) (nan+nanj) +div (-inf-infj) (nan+nanj) (nan+nanj) +div (-inf-16j) (-inf-infj) (nan+nanj) +div (-inf-16j) (-inf-16j) (nan+nanj) +div (-inf-16j) (-inf-2j) (nan+nanj) +div (-inf-16j) (-inf-0j) (nan+nanj) +div (-inf-16j) (-inf+0j) (nan+nanj) +div (-inf-16j) (-inf+2j) (nan+nanj) +div (-inf-16j) (-inf+16j) (nan+nanj) +div (-inf-16j) (-inf+infj) (nan+nanj) +div (-inf-16j) (-inf+nanj) (nan+nanj) +div (-inf-16j) (-16-infj) (nan+nanj) +div (-inf-16j) (-16-16j) (inf-infj) +div (-inf-16j) (-16-2j) (inf-infj) +div (-inf-16j) (-16-0j) (inf+nanj) +div (-inf-16j) (-16+0j) (inf+nanj) +div (-inf-16j) (-16+2j) (inf+infj) +div (-inf-16j) (-16+16j) (inf+infj) +div (-inf-16j) (-16+infj) (nan+nanj) +div (-inf-16j) (-16+nanj) (nan+nanj) +div (-inf-16j) (-2-infj) (nan+nanj) +div (-inf-16j) (-2-16j) (inf-infj) +div (-inf-16j) (-2-2j) (inf-infj) +div (-inf-16j) (-2-0j) (inf+nanj) +div (-inf-16j) (-2+0j) (inf+nanj) +div (-inf-16j) (-2+2j) (inf+infj) +div (-inf-16j) (-2+16j) (inf+infj) +div (-inf-16j) (-2+infj) (nan+nanj) +div (-inf-16j) (-2+nanj) (nan+nanj) +div (-inf-16j) (-0-infj) (nan+nanj) +div (-inf-16j) (-0-16j) (nan-infj) +div (-inf-16j) (-0-2j) (nan-infj) +div (-inf-16j) (-0-0j) ZeroDivisionError +div (-inf-16j) (-0+0j) ZeroDivisionError +div (-inf-16j) (-0+2j) (nan+infj) +div (-inf-16j) (-0+16j) (nan+infj) +div (-inf-16j) (-0+infj) (nan+nanj) +div (-inf-16j) (-0+nanj) (nan+nanj) +div (-inf-16j) -infj (nan+nanj) +div (-inf-16j) -16j (nan-infj) +div (-inf-16j) -2j (nan-infj) +div (-inf-16j) -0j ZeroDivisionError +div (-inf-16j) 0j ZeroDivisionError +div (-inf-16j) 2j (nan+infj) +div (-inf-16j) 16j (nan+infj) +div (-inf-16j) infj (nan+nanj) +div (-inf-16j) nanj (nan+nanj) +div (-inf-16j) (2-infj) (nan+nanj) +div (-inf-16j) (2-16j) (-inf-infj) +div (-inf-16j) (2-2j) (-inf-infj) +div (-inf-16j) (2-0j) (-inf+nanj) +div (-inf-16j) (2+0j) (-inf+nanj) +div (-inf-16j) (2+2j) (-inf+infj) +div (-inf-16j) (2+16j) (-inf+infj) +div (-inf-16j) (2+infj) (nan+nanj) +div (-inf-16j) (2+nanj) (nan+nanj) +div (-inf-16j) (16-infj) (nan+nanj) +div (-inf-16j) (16-16j) (-inf-infj) +div (-inf-16j) (16-2j) (-inf-infj) +div (-inf-16j) (16-0j) (-inf+nanj) +div (-inf-16j) (16+0j) (-inf+nanj) +div (-inf-16j) (16+2j) (-inf+infj) +div (-inf-16j) (16+16j) (-inf+infj) +div (-inf-16j) (16+infj) (nan+nanj) +div (-inf-16j) (16+nanj) (nan+nanj) +div (-inf-16j) (inf-infj) (nan+nanj) +div (-inf-16j) (inf-16j) (nan+nanj) +div (-inf-16j) (inf-2j) (nan+nanj) +div (-inf-16j) (inf-0j) (nan+nanj) +div (-inf-16j) (inf+0j) (nan+nanj) +div (-inf-16j) (inf+2j) (nan+nanj) +div (-inf-16j) (inf+16j) (nan+nanj) +div (-inf-16j) (inf+infj) (nan+nanj) +div (-inf-16j) (inf+nanj) (nan+nanj) +div (-inf-16j) (nan-infj) (nan+nanj) +div (-inf-16j) (nan-16j) (nan+nanj) +div (-inf-16j) (nan-2j) (nan+nanj) +div (-inf-16j) (nan-0j) (nan+nanj) +div (-inf-16j) (nan+0j) (nan+nanj) +div (-inf-16j) (nan+2j) (nan+nanj) +div (-inf-16j) (nan+16j) (nan+nanj) +div (-inf-16j) (nan+infj) (nan+nanj) +div (-inf-16j) (nan+nanj) (nan+nanj) +div (-inf-2j) (-inf-infj) (nan+nanj) +div (-inf-2j) (-inf-16j) (nan+nanj) +div (-inf-2j) (-inf-2j) (nan+nanj) +div (-inf-2j) (-inf-0j) (nan+nanj) +div (-inf-2j) (-inf+0j) (nan+nanj) +div (-inf-2j) (-inf+2j) (nan+nanj) +div (-inf-2j) (-inf+16j) (nan+nanj) +div (-inf-2j) (-inf+infj) (nan+nanj) +div (-inf-2j) (-inf+nanj) (nan+nanj) +div (-inf-2j) (-16-infj) (nan+nanj) +div (-inf-2j) (-16-16j) (inf-infj) +div (-inf-2j) (-16-2j) (inf-infj) +div (-inf-2j) (-16-0j) (inf+nanj) +div (-inf-2j) (-16+0j) (inf+nanj) +div (-inf-2j) (-16+2j) (inf+infj) +div (-inf-2j) (-16+16j) (inf+infj) +div (-inf-2j) (-16+infj) (nan+nanj) +div (-inf-2j) (-16+nanj) (nan+nanj) +div (-inf-2j) (-2-infj) (nan+nanj) +div (-inf-2j) (-2-16j) (inf-infj) +div (-inf-2j) (-2-2j) (inf-infj) +div (-inf-2j) (-2-0j) (inf+nanj) +div (-inf-2j) (-2+0j) (inf+nanj) +div (-inf-2j) (-2+2j) (inf+infj) +div (-inf-2j) (-2+16j) (inf+infj) +div (-inf-2j) (-2+infj) (nan+nanj) +div (-inf-2j) (-2+nanj) (nan+nanj) +div (-inf-2j) (-0-infj) (nan+nanj) +div (-inf-2j) (-0-16j) (nan-infj) +div (-inf-2j) (-0-2j) (nan-infj) +div (-inf-2j) (-0-0j) ZeroDivisionError +div (-inf-2j) (-0+0j) ZeroDivisionError +div (-inf-2j) (-0+2j) (nan+infj) +div (-inf-2j) (-0+16j) (nan+infj) +div (-inf-2j) (-0+infj) (nan+nanj) +div (-inf-2j) (-0+nanj) (nan+nanj) +div (-inf-2j) -infj (nan+nanj) +div (-inf-2j) -16j (nan-infj) +div (-inf-2j) -2j (nan-infj) +div (-inf-2j) -0j ZeroDivisionError +div (-inf-2j) 0j ZeroDivisionError +div (-inf-2j) 2j (nan+infj) +div (-inf-2j) 16j (nan+infj) +div (-inf-2j) infj (nan+nanj) +div (-inf-2j) nanj (nan+nanj) +div (-inf-2j) (2-infj) (nan+nanj) +div (-inf-2j) (2-16j) (-inf-infj) +div (-inf-2j) (2-2j) (-inf-infj) +div (-inf-2j) (2-0j) (-inf+nanj) +div (-inf-2j) (2+0j) (-inf+nanj) +div (-inf-2j) (2+2j) (-inf+infj) +div (-inf-2j) (2+16j) (-inf+infj) +div (-inf-2j) (2+infj) (nan+nanj) +div (-inf-2j) (2+nanj) (nan+nanj) +div (-inf-2j) (16-infj) (nan+nanj) +div (-inf-2j) (16-16j) (-inf-infj) +div (-inf-2j) (16-2j) (-inf-infj) +div (-inf-2j) (16-0j) (-inf+nanj) +div (-inf-2j) (16+0j) (-inf+nanj) +div (-inf-2j) (16+2j) (-inf+infj) +div (-inf-2j) (16+16j) (-inf+infj) +div (-inf-2j) (16+infj) (nan+nanj) +div (-inf-2j) (16+nanj) (nan+nanj) +div (-inf-2j) (inf-infj) (nan+nanj) +div (-inf-2j) (inf-16j) (nan+nanj) +div (-inf-2j) (inf-2j) (nan+nanj) +div (-inf-2j) (inf-0j) (nan+nanj) +div (-inf-2j) (inf+0j) (nan+nanj) +div (-inf-2j) (inf+2j) (nan+nanj) +div (-inf-2j) (inf+16j) (nan+nanj) +div (-inf-2j) (inf+infj) (nan+nanj) +div (-inf-2j) (inf+nanj) (nan+nanj) +div (-inf-2j) (nan-infj) (nan+nanj) +div (-inf-2j) (nan-16j) (nan+nanj) +div (-inf-2j) (nan-2j) (nan+nanj) +div (-inf-2j) (nan-0j) (nan+nanj) +div (-inf-2j) (nan+0j) (nan+nanj) +div (-inf-2j) (nan+2j) (nan+nanj) +div (-inf-2j) (nan+16j) (nan+nanj) +div (-inf-2j) (nan+infj) (nan+nanj) +div (-inf-2j) (nan+nanj) (nan+nanj) +div (-inf-0j) (-inf-infj) (nan+nanj) +div (-inf-0j) (-inf-16j) (nan+nanj) +div (-inf-0j) (-inf-2j) (nan+nanj) +div (-inf-0j) (-inf-0j) (nan+nanj) +div (-inf-0j) (-inf+0j) (nan+nanj) +div (-inf-0j) (-inf+2j) (nan+nanj) +div (-inf-0j) (-inf+16j) (nan+nanj) +div (-inf-0j) (-inf+infj) (nan+nanj) +div (-inf-0j) (-inf+nanj) (nan+nanj) +div (-inf-0j) (-16-infj) (nan+nanj) +div (-inf-0j) (-16-16j) (inf-infj) +div (-inf-0j) (-16-2j) (inf-infj) +div (-inf-0j) (-16-0j) (inf+nanj) +div (-inf-0j) (-16+0j) (inf+nanj) +div (-inf-0j) (-16+2j) (inf+infj) +div (-inf-0j) (-16+16j) (inf+infj) +div (-inf-0j) (-16+infj) (nan+nanj) +div (-inf-0j) (-16+nanj) (nan+nanj) +div (-inf-0j) (-2-infj) (nan+nanj) +div (-inf-0j) (-2-16j) (inf-infj) +div (-inf-0j) (-2-2j) (inf-infj) +div (-inf-0j) (-2-0j) (inf+nanj) +div (-inf-0j) (-2+0j) (inf+nanj) +div (-inf-0j) (-2+2j) (inf+infj) +div (-inf-0j) (-2+16j) (inf+infj) +div (-inf-0j) (-2+infj) (nan+nanj) +div (-inf-0j) (-2+nanj) (nan+nanj) +div (-inf-0j) (-0-infj) (nan+nanj) +div (-inf-0j) (-0-16j) (nan-infj) +div (-inf-0j) (-0-2j) (nan-infj) +div (-inf-0j) (-0-0j) ZeroDivisionError +div (-inf-0j) (-0+0j) ZeroDivisionError +div (-inf-0j) (-0+2j) (nan+infj) +div (-inf-0j) (-0+16j) (nan+infj) +div (-inf-0j) (-0+infj) (nan+nanj) +div (-inf-0j) (-0+nanj) (nan+nanj) +div (-inf-0j) -infj (nan+nanj) +div (-inf-0j) -16j (nan-infj) +div (-inf-0j) -2j (nan-infj) +div (-inf-0j) -0j ZeroDivisionError +div (-inf-0j) 0j ZeroDivisionError +div (-inf-0j) 2j (nan+infj) +div (-inf-0j) 16j (nan+infj) +div (-inf-0j) infj (nan+nanj) +div (-inf-0j) nanj (nan+nanj) +div (-inf-0j) (2-infj) (nan+nanj) +div (-inf-0j) (2-16j) (-inf-infj) +div (-inf-0j) (2-2j) (-inf-infj) +div (-inf-0j) (2-0j) (-inf+nanj) +div (-inf-0j) (2+0j) (-inf+nanj) +div (-inf-0j) (2+2j) (-inf+infj) +div (-inf-0j) (2+16j) (-inf+infj) +div (-inf-0j) (2+infj) (nan+nanj) +div (-inf-0j) (2+nanj) (nan+nanj) +div (-inf-0j) (16-infj) (nan+nanj) +div (-inf-0j) (16-16j) (-inf-infj) +div (-inf-0j) (16-2j) (-inf-infj) +div (-inf-0j) (16-0j) (-inf+nanj) +div (-inf-0j) (16+0j) (-inf+nanj) +div (-inf-0j) (16+2j) (-inf+infj) +div (-inf-0j) (16+16j) (-inf+infj) +div (-inf-0j) (16+infj) (nan+nanj) +div (-inf-0j) (16+nanj) (nan+nanj) +div (-inf-0j) (inf-infj) (nan+nanj) +div (-inf-0j) (inf-16j) (nan+nanj) +div (-inf-0j) (inf-2j) (nan+nanj) +div (-inf-0j) (inf-0j) (nan+nanj) +div (-inf-0j) (inf+0j) (nan+nanj) +div (-inf-0j) (inf+2j) (nan+nanj) +div (-inf-0j) (inf+16j) (nan+nanj) +div (-inf-0j) (inf+infj) (nan+nanj) +div (-inf-0j) (inf+nanj) (nan+nanj) +div (-inf-0j) (nan-infj) (nan+nanj) +div (-inf-0j) (nan-16j) (nan+nanj) +div (-inf-0j) (nan-2j) (nan+nanj) +div (-inf-0j) (nan-0j) (nan+nanj) +div (-inf-0j) (nan+0j) (nan+nanj) +div (-inf-0j) (nan+2j) (nan+nanj) +div (-inf-0j) (nan+16j) (nan+nanj) +div (-inf-0j) (nan+infj) (nan+nanj) +div (-inf-0j) (nan+nanj) (nan+nanj) +div (-inf+0j) (-inf-infj) (nan+nanj) +div (-inf+0j) (-inf-16j) (nan+nanj) +div (-inf+0j) (-inf-2j) (nan+nanj) +div (-inf+0j) (-inf-0j) (nan+nanj) +div (-inf+0j) (-inf+0j) (nan+nanj) +div (-inf+0j) (-inf+2j) (nan+nanj) +div (-inf+0j) (-inf+16j) (nan+nanj) +div (-inf+0j) (-inf+infj) (nan+nanj) +div (-inf+0j) (-inf+nanj) (nan+nanj) +div (-inf+0j) (-16-infj) (nan+nanj) +div (-inf+0j) (-16-16j) (inf-infj) +div (-inf+0j) (-16-2j) (inf-infj) +div (-inf+0j) (-16-0j) (inf+nanj) +div (-inf+0j) (-16+0j) (inf+nanj) +div (-inf+0j) (-16+2j) (inf+infj) +div (-inf+0j) (-16+16j) (inf+infj) +div (-inf+0j) (-16+infj) (nan+nanj) +div (-inf+0j) (-16+nanj) (nan+nanj) +div (-inf+0j) (-2-infj) (nan+nanj) +div (-inf+0j) (-2-16j) (inf-infj) +div (-inf+0j) (-2-2j) (inf-infj) +div (-inf+0j) (-2-0j) (inf+nanj) +div (-inf+0j) (-2+0j) (inf+nanj) +div (-inf+0j) (-2+2j) (inf+infj) +div (-inf+0j) (-2+16j) (inf+infj) +div (-inf+0j) (-2+infj) (nan+nanj) +div (-inf+0j) (-2+nanj) (nan+nanj) +div (-inf+0j) (-0-infj) (nan+nanj) +div (-inf+0j) (-0-16j) (nan-infj) +div (-inf+0j) (-0-2j) (nan-infj) +div (-inf+0j) (-0-0j) ZeroDivisionError +div (-inf+0j) (-0+0j) ZeroDivisionError +div (-inf+0j) (-0+2j) (nan+infj) +div (-inf+0j) (-0+16j) (nan+infj) +div (-inf+0j) (-0+infj) (nan+nanj) +div (-inf+0j) (-0+nanj) (nan+nanj) +div (-inf+0j) -infj (nan+nanj) +div (-inf+0j) -16j (nan-infj) +div (-inf+0j) -2j (nan-infj) +div (-inf+0j) -0j ZeroDivisionError +div (-inf+0j) 0j ZeroDivisionError +div (-inf+0j) 2j (nan+infj) +div (-inf+0j) 16j (nan+infj) +div (-inf+0j) infj (nan+nanj) +div (-inf+0j) nanj (nan+nanj) +div (-inf+0j) (2-infj) (nan+nanj) +div (-inf+0j) (2-16j) (-inf-infj) +div (-inf+0j) (2-2j) (-inf-infj) +div (-inf+0j) (2-0j) (-inf+nanj) +div (-inf+0j) (2+0j) (-inf+nanj) +div (-inf+0j) (2+2j) (-inf+infj) +div (-inf+0j) (2+16j) (-inf+infj) +div (-inf+0j) (2+infj) (nan+nanj) +div (-inf+0j) (2+nanj) (nan+nanj) +div (-inf+0j) (16-infj) (nan+nanj) +div (-inf+0j) (16-16j) (-inf-infj) +div (-inf+0j) (16-2j) (-inf-infj) +div (-inf+0j) (16-0j) (-inf+nanj) +div (-inf+0j) (16+0j) (-inf+nanj) +div (-inf+0j) (16+2j) (-inf+infj) +div (-inf+0j) (16+16j) (-inf+infj) +div (-inf+0j) (16+infj) (nan+nanj) +div (-inf+0j) (16+nanj) (nan+nanj) +div (-inf+0j) (inf-infj) (nan+nanj) +div (-inf+0j) (inf-16j) (nan+nanj) +div (-inf+0j) (inf-2j) (nan+nanj) +div (-inf+0j) (inf-0j) (nan+nanj) +div (-inf+0j) (inf+0j) (nan+nanj) +div (-inf+0j) (inf+2j) (nan+nanj) +div (-inf+0j) (inf+16j) (nan+nanj) +div (-inf+0j) (inf+infj) (nan+nanj) +div (-inf+0j) (inf+nanj) (nan+nanj) +div (-inf+0j) (nan-infj) (nan+nanj) +div (-inf+0j) (nan-16j) (nan+nanj) +div (-inf+0j) (nan-2j) (nan+nanj) +div (-inf+0j) (nan-0j) (nan+nanj) +div (-inf+0j) (nan+0j) (nan+nanj) +div (-inf+0j) (nan+2j) (nan+nanj) +div (-inf+0j) (nan+16j) (nan+nanj) +div (-inf+0j) (nan+infj) (nan+nanj) +div (-inf+0j) (nan+nanj) (nan+nanj) +div (-inf+2j) (-inf-infj) (nan+nanj) +div (-inf+2j) (-inf-16j) (nan+nanj) +div (-inf+2j) (-inf-2j) (nan+nanj) +div (-inf+2j) (-inf-0j) (nan+nanj) +div (-inf+2j) (-inf+0j) (nan+nanj) +div (-inf+2j) (-inf+2j) (nan+nanj) +div (-inf+2j) (-inf+16j) (nan+nanj) +div (-inf+2j) (-inf+infj) (nan+nanj) +div (-inf+2j) (-inf+nanj) (nan+nanj) +div (-inf+2j) (-16-infj) (nan+nanj) +div (-inf+2j) (-16-16j) (inf-infj) +div (-inf+2j) (-16-2j) (inf-infj) +div (-inf+2j) (-16-0j) (inf+nanj) +div (-inf+2j) (-16+0j) (inf+nanj) +div (-inf+2j) (-16+2j) (inf+infj) +div (-inf+2j) (-16+16j) (inf+infj) +div (-inf+2j) (-16+infj) (nan+nanj) +div (-inf+2j) (-16+nanj) (nan+nanj) +div (-inf+2j) (-2-infj) (nan+nanj) +div (-inf+2j) (-2-16j) (inf-infj) +div (-inf+2j) (-2-2j) (inf-infj) +div (-inf+2j) (-2-0j) (inf+nanj) +div (-inf+2j) (-2+0j) (inf+nanj) +div (-inf+2j) (-2+2j) (inf+infj) +div (-inf+2j) (-2+16j) (inf+infj) +div (-inf+2j) (-2+infj) (nan+nanj) +div (-inf+2j) (-2+nanj) (nan+nanj) +div (-inf+2j) (-0-infj) (nan+nanj) +div (-inf+2j) (-0-16j) (nan-infj) +div (-inf+2j) (-0-2j) (nan-infj) +div (-inf+2j) (-0-0j) ZeroDivisionError +div (-inf+2j) (-0+0j) ZeroDivisionError +div (-inf+2j) (-0+2j) (nan+infj) +div (-inf+2j) (-0+16j) (nan+infj) +div (-inf+2j) (-0+infj) (nan+nanj) +div (-inf+2j) (-0+nanj) (nan+nanj) +div (-inf+2j) -infj (nan+nanj) +div (-inf+2j) -16j (nan-infj) +div (-inf+2j) -2j (nan-infj) +div (-inf+2j) -0j ZeroDivisionError +div (-inf+2j) 0j ZeroDivisionError +div (-inf+2j) 2j (nan+infj) +div (-inf+2j) 16j (nan+infj) +div (-inf+2j) infj (nan+nanj) +div (-inf+2j) nanj (nan+nanj) +div (-inf+2j) (2-infj) (nan+nanj) +div (-inf+2j) (2-16j) (-inf-infj) +div (-inf+2j) (2-2j) (-inf-infj) +div (-inf+2j) (2-0j) (-inf+nanj) +div (-inf+2j) (2+0j) (-inf+nanj) +div (-inf+2j) (2+2j) (-inf+infj) +div (-inf+2j) (2+16j) (-inf+infj) +div (-inf+2j) (2+infj) (nan+nanj) +div (-inf+2j) (2+nanj) (nan+nanj) +div (-inf+2j) (16-infj) (nan+nanj) +div (-inf+2j) (16-16j) (-inf-infj) +div (-inf+2j) (16-2j) (-inf-infj) +div (-inf+2j) (16-0j) (-inf+nanj) +div (-inf+2j) (16+0j) (-inf+nanj) +div (-inf+2j) (16+2j) (-inf+infj) +div (-inf+2j) (16+16j) (-inf+infj) +div (-inf+2j) (16+infj) (nan+nanj) +div (-inf+2j) (16+nanj) (nan+nanj) +div (-inf+2j) (inf-infj) (nan+nanj) +div (-inf+2j) (inf-16j) (nan+nanj) +div (-inf+2j) (inf-2j) (nan+nanj) +div (-inf+2j) (inf-0j) (nan+nanj) +div (-inf+2j) (inf+0j) (nan+nanj) +div (-inf+2j) (inf+2j) (nan+nanj) +div (-inf+2j) (inf+16j) (nan+nanj) +div (-inf+2j) (inf+infj) (nan+nanj) +div (-inf+2j) (inf+nanj) (nan+nanj) +div (-inf+2j) (nan-infj) (nan+nanj) +div (-inf+2j) (nan-16j) (nan+nanj) +div (-inf+2j) (nan-2j) (nan+nanj) +div (-inf+2j) (nan-0j) (nan+nanj) +div (-inf+2j) (nan+0j) (nan+nanj) +div (-inf+2j) (nan+2j) (nan+nanj) +div (-inf+2j) (nan+16j) (nan+nanj) +div (-inf+2j) (nan+infj) (nan+nanj) +div (-inf+2j) (nan+nanj) (nan+nanj) +div (-inf+16j) (-inf-infj) (nan+nanj) +div (-inf+16j) (-inf-16j) (nan+nanj) +div (-inf+16j) (-inf-2j) (nan+nanj) +div (-inf+16j) (-inf-0j) (nan+nanj) +div (-inf+16j) (-inf+0j) (nan+nanj) +div (-inf+16j) (-inf+2j) (nan+nanj) +div (-inf+16j) (-inf+16j) (nan+nanj) +div (-inf+16j) (-inf+infj) (nan+nanj) +div (-inf+16j) (-inf+nanj) (nan+nanj) +div (-inf+16j) (-16-infj) (nan+nanj) +div (-inf+16j) (-16-16j) (inf-infj) +div (-inf+16j) (-16-2j) (inf-infj) +div (-inf+16j) (-16-0j) (inf+nanj) +div (-inf+16j) (-16+0j) (inf+nanj) +div (-inf+16j) (-16+2j) (inf+infj) +div (-inf+16j) (-16+16j) (inf+infj) +div (-inf+16j) (-16+infj) (nan+nanj) +div (-inf+16j) (-16+nanj) (nan+nanj) +div (-inf+16j) (-2-infj) (nan+nanj) +div (-inf+16j) (-2-16j) (inf-infj) +div (-inf+16j) (-2-2j) (inf-infj) +div (-inf+16j) (-2-0j) (inf+nanj) +div (-inf+16j) (-2+0j) (inf+nanj) +div (-inf+16j) (-2+2j) (inf+infj) +div (-inf+16j) (-2+16j) (inf+infj) +div (-inf+16j) (-2+infj) (nan+nanj) +div (-inf+16j) (-2+nanj) (nan+nanj) +div (-inf+16j) (-0-infj) (nan+nanj) +div (-inf+16j) (-0-16j) (nan-infj) +div (-inf+16j) (-0-2j) (nan-infj) +div (-inf+16j) (-0-0j) ZeroDivisionError +div (-inf+16j) (-0+0j) ZeroDivisionError +div (-inf+16j) (-0+2j) (nan+infj) +div (-inf+16j) (-0+16j) (nan+infj) +div (-inf+16j) (-0+infj) (nan+nanj) +div (-inf+16j) (-0+nanj) (nan+nanj) +div (-inf+16j) -infj (nan+nanj) +div (-inf+16j) -16j (nan-infj) +div (-inf+16j) -2j (nan-infj) +div (-inf+16j) -0j ZeroDivisionError +div (-inf+16j) 0j ZeroDivisionError +div (-inf+16j) 2j (nan+infj) +div (-inf+16j) 16j (nan+infj) +div (-inf+16j) infj (nan+nanj) +div (-inf+16j) nanj (nan+nanj) +div (-inf+16j) (2-infj) (nan+nanj) +div (-inf+16j) (2-16j) (-inf-infj) +div (-inf+16j) (2-2j) (-inf-infj) +div (-inf+16j) (2-0j) (-inf+nanj) +div (-inf+16j) (2+0j) (-inf+nanj) +div (-inf+16j) (2+2j) (-inf+infj) +div (-inf+16j) (2+16j) (-inf+infj) +div (-inf+16j) (2+infj) (nan+nanj) +div (-inf+16j) (2+nanj) (nan+nanj) +div (-inf+16j) (16-infj) (nan+nanj) +div (-inf+16j) (16-16j) (-inf-infj) +div (-inf+16j) (16-2j) (-inf-infj) +div (-inf+16j) (16-0j) (-inf+nanj) +div (-inf+16j) (16+0j) (-inf+nanj) +div (-inf+16j) (16+2j) (-inf+infj) +div (-inf+16j) (16+16j) (-inf+infj) +div (-inf+16j) (16+infj) (nan+nanj) +div (-inf+16j) (16+nanj) (nan+nanj) +div (-inf+16j) (inf-infj) (nan+nanj) +div (-inf+16j) (inf-16j) (nan+nanj) +div (-inf+16j) (inf-2j) (nan+nanj) +div (-inf+16j) (inf-0j) (nan+nanj) +div (-inf+16j) (inf+0j) (nan+nanj) +div (-inf+16j) (inf+2j) (nan+nanj) +div (-inf+16j) (inf+16j) (nan+nanj) +div (-inf+16j) (inf+infj) (nan+nanj) +div (-inf+16j) (inf+nanj) (nan+nanj) +div (-inf+16j) (nan-infj) (nan+nanj) +div (-inf+16j) (nan-16j) (nan+nanj) +div (-inf+16j) (nan-2j) (nan+nanj) +div (-inf+16j) (nan-0j) (nan+nanj) +div (-inf+16j) (nan+0j) (nan+nanj) +div (-inf+16j) (nan+2j) (nan+nanj) +div (-inf+16j) (nan+16j) (nan+nanj) +div (-inf+16j) (nan+infj) (nan+nanj) +div (-inf+16j) (nan+nanj) (nan+nanj) +div (-inf+infj) (-inf-infj) (nan+nanj) +div (-inf+infj) (-inf-16j) (nan+nanj) +div (-inf+infj) (-inf-2j) (nan+nanj) +div (-inf+infj) (-inf-0j) (nan+nanj) +div (-inf+infj) (-inf+0j) (nan+nanj) +div (-inf+infj) (-inf+2j) (nan+nanj) +div (-inf+infj) (-inf+16j) (nan+nanj) +div (-inf+infj) (-inf+infj) (nan+nanj) +div (-inf+infj) (-inf+nanj) (nan+nanj) +div (-inf+infj) (-16-infj) (nan+nanj) +div (-inf+infj) (-16-16j) (nan-infj) +div (-inf+infj) (-16-2j) (nan-infj) +div (-inf+infj) (-16-0j) (nan+nanj) +div (-inf+infj) (-16+0j) (nan+nanj) +div (-inf+infj) (-16+2j) (inf+nanj) +div (-inf+infj) (-16+16j) (inf+nanj) +div (-inf+infj) (-16+infj) (nan+nanj) +div (-inf+infj) (-16+nanj) (nan+nanj) +div (-inf+infj) (-2-infj) (nan+nanj) +div (-inf+infj) (-2-16j) (nan-infj) +div (-inf+infj) (-2-2j) (nan-infj) +div (-inf+infj) (-2-0j) (nan+nanj) +div (-inf+infj) (-2+0j) (nan+nanj) +div (-inf+infj) (-2+2j) (inf+nanj) +div (-inf+infj) (-2+16j) (inf+nanj) +div (-inf+infj) (-2+infj) (nan+nanj) +div (-inf+infj) (-2+nanj) (nan+nanj) +div (-inf+infj) (-0-infj) (nan+nanj) +div (-inf+infj) (-0-16j) (nan+nanj) +div (-inf+infj) (-0-2j) (nan+nanj) +div (-inf+infj) (-0-0j) ZeroDivisionError +div (-inf+infj) (-0+0j) ZeroDivisionError +div (-inf+infj) (-0+2j) (nan+nanj) +div (-inf+infj) (-0+16j) (nan+nanj) +div (-inf+infj) (-0+infj) (nan+nanj) +div (-inf+infj) (-0+nanj) (nan+nanj) +div (-inf+infj) -infj (nan+nanj) +div (-inf+infj) -16j (nan+nanj) +div (-inf+infj) -2j (nan+nanj) +div (-inf+infj) -0j ZeroDivisionError +div (-inf+infj) 0j ZeroDivisionError +div (-inf+infj) 2j (nan+nanj) +div (-inf+infj) 16j (nan+nanj) +div (-inf+infj) infj (nan+nanj) +div (-inf+infj) nanj (nan+nanj) +div (-inf+infj) (2-infj) (nan+nanj) +div (-inf+infj) (2-16j) (-inf+nanj) +div (-inf+infj) (2-2j) (-inf+nanj) +div (-inf+infj) (2-0j) (nan+nanj) +div (-inf+infj) (2+0j) (nan+nanj) +div (-inf+infj) (2+2j) (nan+infj) +div (-inf+infj) (2+16j) (nan+infj) +div (-inf+infj) (2+infj) (nan+nanj) +div (-inf+infj) (2+nanj) (nan+nanj) +div (-inf+infj) (16-infj) (nan+nanj) +div (-inf+infj) (16-16j) (-inf+nanj) +div (-inf+infj) (16-2j) (-inf+nanj) +div (-inf+infj) (16-0j) (nan+nanj) +div (-inf+infj) (16+0j) (nan+nanj) +div (-inf+infj) (16+2j) (nan+infj) +div (-inf+infj) (16+16j) (nan+infj) +div (-inf+infj) (16+infj) (nan+nanj) +div (-inf+infj) (16+nanj) (nan+nanj) +div (-inf+infj) (inf-infj) (nan+nanj) +div (-inf+infj) (inf-16j) (nan+nanj) +div (-inf+infj) (inf-2j) (nan+nanj) +div (-inf+infj) (inf-0j) (nan+nanj) +div (-inf+infj) (inf+0j) (nan+nanj) +div (-inf+infj) (inf+2j) (nan+nanj) +div (-inf+infj) (inf+16j) (nan+nanj) +div (-inf+infj) (inf+infj) (nan+nanj) +div (-inf+infj) (inf+nanj) (nan+nanj) +div (-inf+infj) (nan-infj) (nan+nanj) +div (-inf+infj) (nan-16j) (nan+nanj) +div (-inf+infj) (nan-2j) (nan+nanj) +div (-inf+infj) (nan-0j) (nan+nanj) +div (-inf+infj) (nan+0j) (nan+nanj) +div (-inf+infj) (nan+2j) (nan+nanj) +div (-inf+infj) (nan+16j) (nan+nanj) +div (-inf+infj) (nan+infj) (nan+nanj) +div (-inf+infj) (nan+nanj) (nan+nanj) +div (-inf+nanj) (-inf-infj) (nan+nanj) +div (-inf+nanj) (-inf-16j) (nan+nanj) +div (-inf+nanj) (-inf-2j) (nan+nanj) +div (-inf+nanj) (-inf-0j) (nan+nanj) +div (-inf+nanj) (-inf+0j) (nan+nanj) +div (-inf+nanj) (-inf+2j) (nan+nanj) +div (-inf+nanj) (-inf+16j) (nan+nanj) +div (-inf+nanj) (-inf+infj) (nan+nanj) +div (-inf+nanj) (-inf+nanj) (nan+nanj) +div (-inf+nanj) (-16-infj) (nan+nanj) +div (-inf+nanj) (-16-16j) (nan+nanj) +div (-inf+nanj) (-16-2j) (nan+nanj) +div (-inf+nanj) (-16-0j) (nan+nanj) +div (-inf+nanj) (-16+0j) (nan+nanj) +div (-inf+nanj) (-16+2j) (nan+nanj) +div (-inf+nanj) (-16+16j) (nan+nanj) +div (-inf+nanj) (-16+infj) (nan+nanj) +div (-inf+nanj) (-16+nanj) (nan+nanj) +div (-inf+nanj) (-2-infj) (nan+nanj) +div (-inf+nanj) (-2-16j) (nan+nanj) +div (-inf+nanj) (-2-2j) (nan+nanj) +div (-inf+nanj) (-2-0j) (nan+nanj) +div (-inf+nanj) (-2+0j) (nan+nanj) +div (-inf+nanj) (-2+2j) (nan+nanj) +div (-inf+nanj) (-2+16j) (nan+nanj) +div (-inf+nanj) (-2+infj) (nan+nanj) +div (-inf+nanj) (-2+nanj) (nan+nanj) +div (-inf+nanj) (-0-infj) (nan+nanj) +div (-inf+nanj) (-0-16j) (nan+nanj) +div (-inf+nanj) (-0-2j) (nan+nanj) +div (-inf+nanj) (-0-0j) ZeroDivisionError +div (-inf+nanj) (-0+0j) ZeroDivisionError +div (-inf+nanj) (-0+2j) (nan+nanj) +div (-inf+nanj) (-0+16j) (nan+nanj) +div (-inf+nanj) (-0+infj) (nan+nanj) +div (-inf+nanj) (-0+nanj) (nan+nanj) +div (-inf+nanj) -infj (nan+nanj) +div (-inf+nanj) -16j (nan+nanj) +div (-inf+nanj) -2j (nan+nanj) +div (-inf+nanj) -0j ZeroDivisionError +div (-inf+nanj) 0j ZeroDivisionError +div (-inf+nanj) 2j (nan+nanj) +div (-inf+nanj) 16j (nan+nanj) +div (-inf+nanj) infj (nan+nanj) +div (-inf+nanj) nanj (nan+nanj) +div (-inf+nanj) (2-infj) (nan+nanj) +div (-inf+nanj) (2-16j) (nan+nanj) +div (-inf+nanj) (2-2j) (nan+nanj) +div (-inf+nanj) (2-0j) (nan+nanj) +div (-inf+nanj) (2+0j) (nan+nanj) +div (-inf+nanj) (2+2j) (nan+nanj) +div (-inf+nanj) (2+16j) (nan+nanj) +div (-inf+nanj) (2+infj) (nan+nanj) +div (-inf+nanj) (2+nanj) (nan+nanj) +div (-inf+nanj) (16-infj) (nan+nanj) +div (-inf+nanj) (16-16j) (nan+nanj) +div (-inf+nanj) (16-2j) (nan+nanj) +div (-inf+nanj) (16-0j) (nan+nanj) +div (-inf+nanj) (16+0j) (nan+nanj) +div (-inf+nanj) (16+2j) (nan+nanj) +div (-inf+nanj) (16+16j) (nan+nanj) +div (-inf+nanj) (16+infj) (nan+nanj) +div (-inf+nanj) (16+nanj) (nan+nanj) +div (-inf+nanj) (inf-infj) (nan+nanj) +div (-inf+nanj) (inf-16j) (nan+nanj) +div (-inf+nanj) (inf-2j) (nan+nanj) +div (-inf+nanj) (inf-0j) (nan+nanj) +div (-inf+nanj) (inf+0j) (nan+nanj) +div (-inf+nanj) (inf+2j) (nan+nanj) +div (-inf+nanj) (inf+16j) (nan+nanj) +div (-inf+nanj) (inf+infj) (nan+nanj) +div (-inf+nanj) (inf+nanj) (nan+nanj) +div (-inf+nanj) (nan-infj) (nan+nanj) +div (-inf+nanj) (nan-16j) (nan+nanj) +div (-inf+nanj) (nan-2j) (nan+nanj) +div (-inf+nanj) (nan-0j) (nan+nanj) +div (-inf+nanj) (nan+0j) (nan+nanj) +div (-inf+nanj) (nan+2j) (nan+nanj) +div (-inf+nanj) (nan+16j) (nan+nanj) +div (-inf+nanj) (nan+infj) (nan+nanj) +div (-inf+nanj) (nan+nanj) (nan+nanj) +div (-16-infj) (-inf-infj) (nan+nanj) +div (-16-infj) (-inf-16j) (nan+nanj) +div (-16-infj) (-inf-2j) (nan+nanj) +div (-16-infj) (-inf-0j) (nan+nanj) +div (-16-infj) (-inf+0j) (nan+nanj) +div (-16-infj) (-inf+2j) (nan+nanj) +div (-16-infj) (-inf+16j) (nan+nanj) +div (-16-infj) (-inf+infj) (nan+nanj) +div (-16-infj) (-inf+nanj) (nan+nanj) +div (-16-infj) (-16-infj) (nan+nanj) +div (-16-infj) (-16-16j) (inf+infj) +div (-16-infj) (-16-2j) (inf+infj) +div (-16-infj) (-16-0j) (nan+infj) +div (-16-infj) (-16+0j) (nan+infj) +div (-16-infj) (-16+2j) (-inf+infj) +div (-16-infj) (-16+16j) (-inf+infj) +div (-16-infj) (-16+infj) (nan+nanj) +div (-16-infj) (-16+nanj) (nan+nanj) +div (-16-infj) (-2-infj) (nan+nanj) +div (-16-infj) (-2-16j) (inf+infj) +div (-16-infj) (-2-2j) (inf+infj) +div (-16-infj) (-2-0j) (nan+infj) +div (-16-infj) (-2+0j) (nan+infj) +div (-16-infj) (-2+2j) (-inf+infj) +div (-16-infj) (-2+16j) (-inf+infj) +div (-16-infj) (-2+infj) (nan+nanj) +div (-16-infj) (-2+nanj) (nan+nanj) +div (-16-infj) (-0-infj) (nan+nanj) +div (-16-infj) (-0-16j) (inf+nanj) +div (-16-infj) (-0-2j) (inf+nanj) +div (-16-infj) (-0-0j) ZeroDivisionError +div (-16-infj) (-0+0j) ZeroDivisionError +div (-16-infj) (-0+2j) (-inf+nanj) +div (-16-infj) (-0+16j) (-inf+nanj) +div (-16-infj) (-0+infj) (nan+nanj) +div (-16-infj) (-0+nanj) (nan+nanj) +div (-16-infj) -infj (nan+nanj) +div (-16-infj) -16j (inf+nanj) +div (-16-infj) -2j (inf+nanj) +div (-16-infj) -0j ZeroDivisionError +div (-16-infj) 0j ZeroDivisionError +div (-16-infj) 2j (-inf+nanj) +div (-16-infj) 16j (-inf+nanj) +div (-16-infj) infj (nan+nanj) +div (-16-infj) nanj (nan+nanj) +div (-16-infj) (2-infj) (nan+nanj) +div (-16-infj) (2-16j) (inf-infj) +div (-16-infj) (2-2j) (inf-infj) +div (-16-infj) (2-0j) (nan-infj) +div (-16-infj) (2+0j) (nan-infj) +div (-16-infj) (2+2j) (-inf-infj) +div (-16-infj) (2+16j) (-inf-infj) +div (-16-infj) (2+infj) (nan+nanj) +div (-16-infj) (2+nanj) (nan+nanj) +div (-16-infj) (16-infj) (nan+nanj) +div (-16-infj) (16-16j) (inf-infj) +div (-16-infj) (16-2j) (inf-infj) +div (-16-infj) (16-0j) (nan-infj) +div (-16-infj) (16+0j) (nan-infj) +div (-16-infj) (16+2j) (-inf-infj) +div (-16-infj) (16+16j) (-inf-infj) +div (-16-infj) (16+infj) (nan+nanj) +div (-16-infj) (16+nanj) (nan+nanj) +div (-16-infj) (inf-infj) (nan+nanj) +div (-16-infj) (inf-16j) (nan+nanj) +div (-16-infj) (inf-2j) (nan+nanj) +div (-16-infj) (inf-0j) (nan+nanj) +div (-16-infj) (inf+0j) (nan+nanj) +div (-16-infj) (inf+2j) (nan+nanj) +div (-16-infj) (inf+16j) (nan+nanj) +div (-16-infj) (inf+infj) (nan+nanj) +div (-16-infj) (inf+nanj) (nan+nanj) +div (-16-infj) (nan-infj) (nan+nanj) +div (-16-infj) (nan-16j) (nan+nanj) +div (-16-infj) (nan-2j) (nan+nanj) +div (-16-infj) (nan-0j) (nan+nanj) +div (-16-infj) (nan+0j) (nan+nanj) +div (-16-infj) (nan+2j) (nan+nanj) +div (-16-infj) (nan+16j) (nan+nanj) +div (-16-infj) (nan+infj) (nan+nanj) +div (-16-infj) (nan+nanj) (nan+nanj) +div (-16-16j) (-inf-infj) (nan+nanj) +div (-16-16j) (-inf-16j) 0j +div (-16-16j) (-inf-2j) 0j +div (-16-16j) (-inf-0j) 0j +div (-16-16j) (-inf+0j) 0j +div (-16-16j) (-inf+2j) 0j +div (-16-16j) (-inf+16j) 0j +div (-16-16j) (-inf+infj) (nan+nanj) +div (-16-16j) (-inf+nanj) (nan+nanj) +div (-16-16j) (-16-infj) -0j +div (-16-16j) (-16-16j) (1-0j) +div (-16-16j) (-16-2j) (1.10769230769+0.861538461538j) +div (-16-16j) (-16-0j) (1+1j) +div (-16-16j) (-16+0j) (1+1j) +div (-16-16j) (-16+2j) (0.861538461538+1.10769230769j) +div (-16-16j) (-16+16j) (-0+1j) +div (-16-16j) (-16+infj) (-0+0j) +div (-16-16j) (-16+nanj) (nan+nanj) +div (-16-16j) (-2-infj) -0j +div (-16-16j) (-2-16j) (1.10769230769-0.861538461538j) +div (-16-16j) (-2-2j) (8-0j) +div (-16-16j) (-2-0j) (8+8j) +div (-16-16j) (-2+0j) (8+8j) +div (-16-16j) (-2+2j) (-0+8j) +div (-16-16j) (-2+16j) (-0.861538461538+1.10769230769j) +div (-16-16j) (-2+infj) (-0+0j) +div (-16-16j) (-2+nanj) (nan+nanj) +div (-16-16j) (-0-infj) -0j +div (-16-16j) (-0-16j) (1-1j) +div (-16-16j) (-0-2j) (8-8j) +div (-16-16j) (-0-0j) ZeroDivisionError +div (-16-16j) (-0+0j) ZeroDivisionError +div (-16-16j) (-0+2j) (-8+8j) +div (-16-16j) (-0+16j) (-1+1j) +div (-16-16j) (-0+infj) (-0+0j) +div (-16-16j) (-0+nanj) (nan+nanj) +div (-16-16j) -infj -0j +div (-16-16j) -16j (1-1j) +div (-16-16j) -2j (8-8j) +div (-16-16j) -0j ZeroDivisionError +div (-16-16j) 0j ZeroDivisionError +div (-16-16j) 2j (-8+8j) +div (-16-16j) 16j (-1+1j) +div (-16-16j) infj (-0+0j) +div (-16-16j) nanj (nan+nanj) +div (-16-16j) (2-infj) -0j +div (-16-16j) (2-16j) (0.861538461538-1.10769230769j) +div (-16-16j) (2-2j) -8j +div (-16-16j) (2-0j) (-8-8j) +div (-16-16j) (2+0j) (-8-8j) +div (-16-16j) (2+2j) (-8+0j) +div (-16-16j) (2+16j) (-1.10769230769+0.861538461538j) +div (-16-16j) (2+infj) (-0+0j) +div (-16-16j) (2+nanj) (nan+nanj) +div (-16-16j) (16-infj) -0j +div (-16-16j) (16-16j) -1j +div (-16-16j) (16-2j) (-0.861538461538-1.10769230769j) +div (-16-16j) (16-0j) (-1-1j) +div (-16-16j) (16+0j) (-1-1j) +div (-16-16j) (16+2j) (-1.10769230769-0.861538461538j) +div (-16-16j) (16+16j) (-1+0j) +div (-16-16j) (16+infj) (-0+0j) +div (-16-16j) (16+nanj) (nan+nanj) +div (-16-16j) (inf-infj) (nan+nanj) +div (-16-16j) (inf-16j) (-0-0j) +div (-16-16j) (inf-2j) (-0-0j) +div (-16-16j) (inf-0j) (-0-0j) +div (-16-16j) (inf+0j) (-0-0j) +div (-16-16j) (inf+2j) (-0-0j) +div (-16-16j) (inf+16j) (-0-0j) +div (-16-16j) (inf+infj) (nan+nanj) +div (-16-16j) (inf+nanj) (nan+nanj) +div (-16-16j) (nan-infj) (nan+nanj) +div (-16-16j) (nan-16j) (nan+nanj) +div (-16-16j) (nan-2j) (nan+nanj) +div (-16-16j) (nan-0j) (nan+nanj) +div (-16-16j) (nan+0j) (nan+nanj) +div (-16-16j) (nan+2j) (nan+nanj) +div (-16-16j) (nan+16j) (nan+nanj) +div (-16-16j) (nan+infj) (nan+nanj) +div (-16-16j) (nan+nanj) (nan+nanj) +div (-16-2j) (-inf-infj) (nan+nanj) +div (-16-2j) (-inf-16j) 0j +div (-16-2j) (-inf-2j) 0j +div (-16-2j) (-inf-0j) 0j +div (-16-2j) (-inf+0j) 0j +div (-16-2j) (-inf+2j) 0j +div (-16-2j) (-inf+16j) 0j +div (-16-2j) (-inf+infj) (nan+nanj) +div (-16-2j) (-inf+nanj) (nan+nanj) +div (-16-2j) (-16-infj) -0j +div (-16-2j) (-16-16j) (0.5625-0.4375j) +div (-16-2j) (-16-2j) (1-0j) +div (-16-2j) (-16-0j) (1+0.125j) +div (-16-2j) (-16+0j) (1+0.125j) +div (-16-2j) (-16+2j) (0.969230769231+0.246153846154j) +div (-16-2j) (-16+16j) (0.4375+0.5625j) +div (-16-2j) (-16+infj) (-0+0j) +div (-16-2j) (-16+nanj) (nan+nanj) +div (-16-2j) (-2-infj) -0j +div (-16-2j) (-2-16j) (0.246153846154-0.969230769231j) +div (-16-2j) (-2-2j) (4.5-3.5j) +div (-16-2j) (-2-0j) (8+1j) +div (-16-2j) (-2+0j) (8+1j) +div (-16-2j) (-2+2j) (3.5+4.5j) +div (-16-2j) (-2+16j) 1j +div (-16-2j) (-2+infj) (-0+0j) +div (-16-2j) (-2+nanj) (nan+nanj) +div (-16-2j) (-0-infj) -0j +div (-16-2j) (-0-16j) (0.125-1j) +div (-16-2j) (-0-2j) (1-8j) +div (-16-2j) (-0-0j) ZeroDivisionError +div (-16-2j) (-0+0j) ZeroDivisionError +div (-16-2j) (-0+2j) (-1+8j) +div (-16-2j) (-0+16j) (-0.125+1j) +div (-16-2j) (-0+infj) (-0+0j) +div (-16-2j) (-0+nanj) (nan+nanj) +div (-16-2j) -infj -0j +div (-16-2j) -16j (0.125-1j) +div (-16-2j) -2j (1-8j) +div (-16-2j) -0j ZeroDivisionError +div (-16-2j) 0j ZeroDivisionError +div (-16-2j) 2j (-1+8j) +div (-16-2j) 16j (-0.125+1j) +div (-16-2j) infj (-0+0j) +div (-16-2j) nanj (nan+nanj) +div (-16-2j) (2-infj) -0j +div (-16-2j) (2-16j) (-0-1j) +div (-16-2j) (2-2j) (-3.5-4.5j) +div (-16-2j) (2-0j) (-8-1j) +div (-16-2j) (2+0j) (-8-1j) +div (-16-2j) (2+2j) (-4.5+3.5j) +div (-16-2j) (2+16j) (-0.246153846154+0.969230769231j) +div (-16-2j) (2+infj) (-0+0j) +div (-16-2j) (2+nanj) (nan+nanj) +div (-16-2j) (16-infj) -0j +div (-16-2j) (16-16j) (-0.4375-0.5625j) +div (-16-2j) (16-2j) (-0.969230769231-0.246153846154j) +div (-16-2j) (16-0j) (-1-0.125j) +div (-16-2j) (16+0j) (-1-0.125j) +div (-16-2j) (16+2j) (-1+0j) +div (-16-2j) (16+16j) (-0.5625+0.4375j) +div (-16-2j) (16+infj) (-0+0j) +div (-16-2j) (16+nanj) (nan+nanj) +div (-16-2j) (inf-infj) (nan+nanj) +div (-16-2j) (inf-16j) (-0-0j) +div (-16-2j) (inf-2j) (-0-0j) +div (-16-2j) (inf-0j) (-0-0j) +div (-16-2j) (inf+0j) (-0-0j) +div (-16-2j) (inf+2j) (-0-0j) +div (-16-2j) (inf+16j) (-0-0j) +div (-16-2j) (inf+infj) (nan+nanj) +div (-16-2j) (inf+nanj) (nan+nanj) +div (-16-2j) (nan-infj) (nan+nanj) +div (-16-2j) (nan-16j) (nan+nanj) +div (-16-2j) (nan-2j) (nan+nanj) +div (-16-2j) (nan-0j) (nan+nanj) +div (-16-2j) (nan+0j) (nan+nanj) +div (-16-2j) (nan+2j) (nan+nanj) +div (-16-2j) (nan+16j) (nan+nanj) +div (-16-2j) (nan+infj) (nan+nanj) +div (-16-2j) (nan+nanj) (nan+nanj) +div (-16-0j) (-inf-infj) (nan+nanj) +div (-16-0j) (-inf-16j) -0j +div (-16-0j) (-inf-2j) -0j +div (-16-0j) (-inf-0j) -0j +div (-16-0j) (-inf+0j) 0j +div (-16-0j) (-inf+2j) 0j +div (-16-0j) (-inf+16j) 0j +div (-16-0j) (-inf+infj) (nan+nanj) +div (-16-0j) (-inf+nanj) (nan+nanj) +div (-16-0j) (-16-infj) -0j +div (-16-0j) (-16-16j) (0.5-0.5j) +div (-16-0j) (-16-2j) (0.984615384615-0.123076923077j) +div (-16-0j) (-16-0j) (1-0j) +div (-16-0j) (-16+0j) (1+0j) +div (-16-0j) (-16+2j) (0.984615384615+0.123076923077j) +div (-16-0j) (-16+16j) (0.5+0.5j) +div (-16-0j) (-16+infj) 0j +div (-16-0j) (-16+nanj) (nan+nanj) +div (-16-0j) (-2-infj) -0j +div (-16-0j) (-2-16j) (0.123076923077-0.984615384615j) +div (-16-0j) (-2-2j) (4-4j) +div (-16-0j) (-2-0j) (8-0j) +div (-16-0j) (-2+0j) (8+0j) +div (-16-0j) (-2+2j) (4+4j) +div (-16-0j) (-2+16j) (0.123076923077+0.984615384615j) +div (-16-0j) (-2+infj) 0j +div (-16-0j) (-2+nanj) (nan+nanj) +div (-16-0j) (-0-infj) -0j +div (-16-0j) (-0-16j) -1j +div (-16-0j) (-0-2j) -8j +div (-16-0j) (-0-0j) ZeroDivisionError +div (-16-0j) (-0+0j) ZeroDivisionError +div (-16-0j) (-0+2j) 8j +div (-16-0j) (-0+16j) 1j +div (-16-0j) (-0+infj) 0j +div (-16-0j) (-0+nanj) (nan+nanj) +div (-16-0j) -infj (-0-0j) +div (-16-0j) -16j (-0-1j) +div (-16-0j) -2j (-0-8j) +div (-16-0j) -0j ZeroDivisionError +div (-16-0j) 0j ZeroDivisionError +div (-16-0j) 2j (-0+8j) +div (-16-0j) 16j (-0+1j) +div (-16-0j) infj (-0+0j) +div (-16-0j) nanj (nan+nanj) +div (-16-0j) (2-infj) (-0-0j) +div (-16-0j) (2-16j) (-0.123076923077-0.984615384615j) +div (-16-0j) (2-2j) (-4-4j) +div (-16-0j) (2-0j) (-8-0j) +div (-16-0j) (2+0j) (-8+0j) +div (-16-0j) (2+2j) (-4+4j) +div (-16-0j) (2+16j) (-0.123076923077+0.984615384615j) +div (-16-0j) (2+infj) (-0+0j) +div (-16-0j) (2+nanj) (nan+nanj) +div (-16-0j) (16-infj) (-0-0j) +div (-16-0j) (16-16j) (-0.5-0.5j) +div (-16-0j) (16-2j) (-0.984615384615-0.123076923077j) +div (-16-0j) (16-0j) (-1-0j) +div (-16-0j) (16+0j) (-1+0j) +div (-16-0j) (16+2j) (-0.984615384615+0.123076923077j) +div (-16-0j) (16+16j) (-0.5+0.5j) +div (-16-0j) (16+infj) (-0+0j) +div (-16-0j) (16+nanj) (nan+nanj) +div (-16-0j) (inf-infj) (nan+nanj) +div (-16-0j) (inf-16j) (-0-0j) +div (-16-0j) (inf-2j) (-0-0j) +div (-16-0j) (inf-0j) (-0-0j) +div (-16-0j) (inf+0j) (-0+0j) +div (-16-0j) (inf+2j) (-0+0j) +div (-16-0j) (inf+16j) (-0+0j) +div (-16-0j) (inf+infj) (nan+nanj) +div (-16-0j) (inf+nanj) (nan+nanj) +div (-16-0j) (nan-infj) (nan+nanj) +div (-16-0j) (nan-16j) (nan+nanj) +div (-16-0j) (nan-2j) (nan+nanj) +div (-16-0j) (nan-0j) (nan+nanj) +div (-16-0j) (nan+0j) (nan+nanj) +div (-16-0j) (nan+2j) (nan+nanj) +div (-16-0j) (nan+16j) (nan+nanj) +div (-16-0j) (nan+infj) (nan+nanj) +div (-16-0j) (nan+nanj) (nan+nanj) +div (-16+0j) (-inf-infj) (nan+nanj) +div (-16+0j) (-inf-16j) -0j +div (-16+0j) (-inf-2j) -0j +div (-16+0j) (-inf-0j) -0j +div (-16+0j) (-inf+0j) -0j +div (-16+0j) (-inf+2j) -0j +div (-16+0j) (-inf+16j) -0j +div (-16+0j) (-inf+infj) (nan+nanj) +div (-16+0j) (-inf+nanj) (nan+nanj) +div (-16+0j) (-16-infj) (-0-0j) +div (-16+0j) (-16-16j) (0.5-0.5j) +div (-16+0j) (-16-2j) (0.984615384615-0.123076923077j) +div (-16+0j) (-16-0j) (1-0j) +div (-16+0j) (-16+0j) (1-0j) +div (-16+0j) (-16+2j) (0.984615384615+0.123076923077j) +div (-16+0j) (-16+16j) (0.5+0.5j) +div (-16+0j) (-16+infj) 0j +div (-16+0j) (-16+nanj) (nan+nanj) +div (-16+0j) (-2-infj) (-0-0j) +div (-16+0j) (-2-16j) (0.123076923077-0.984615384615j) +div (-16+0j) (-2-2j) (4-4j) +div (-16+0j) (-2-0j) (8-0j) +div (-16+0j) (-2+0j) (8-0j) +div (-16+0j) (-2+2j) (4+4j) +div (-16+0j) (-2+16j) (0.123076923077+0.984615384615j) +div (-16+0j) (-2+infj) 0j +div (-16+0j) (-2+nanj) (nan+nanj) +div (-16+0j) (-0-infj) (-0-0j) +div (-16+0j) (-0-16j) (-0-1j) +div (-16+0j) (-0-2j) (-0-8j) +div (-16+0j) (-0-0j) ZeroDivisionError +div (-16+0j) (-0+0j) ZeroDivisionError +div (-16+0j) (-0+2j) 8j +div (-16+0j) (-0+16j) 1j +div (-16+0j) (-0+infj) 0j +div (-16+0j) (-0+nanj) (nan+nanj) +div (-16+0j) -infj (-0-0j) +div (-16+0j) -16j (-0-1j) +div (-16+0j) -2j (-0-8j) +div (-16+0j) -0j ZeroDivisionError +div (-16+0j) 0j ZeroDivisionError +div (-16+0j) 2j 8j +div (-16+0j) 16j 1j +div (-16+0j) infj 0j +div (-16+0j) nanj (nan+nanj) +div (-16+0j) (2-infj) (-0-0j) +div (-16+0j) (2-16j) (-0.123076923077-0.984615384615j) +div (-16+0j) (2-2j) (-4-4j) +div (-16+0j) (2-0j) (-8+0j) +div (-16+0j) (2+0j) (-8+0j) +div (-16+0j) (2+2j) (-4+4j) +div (-16+0j) (2+16j) (-0.123076923077+0.984615384615j) +div (-16+0j) (2+infj) 0j +div (-16+0j) (2+nanj) (nan+nanj) +div (-16+0j) (16-infj) (-0-0j) +div (-16+0j) (16-16j) (-0.5-0.5j) +div (-16+0j) (16-2j) (-0.984615384615-0.123076923077j) +div (-16+0j) (16-0j) (-1+0j) +div (-16+0j) (16+0j) (-1+0j) +div (-16+0j) (16+2j) (-0.984615384615+0.123076923077j) +div (-16+0j) (16+16j) (-0.5+0.5j) +div (-16+0j) (16+infj) 0j +div (-16+0j) (16+nanj) (nan+nanj) +div (-16+0j) (inf-infj) (nan+nanj) +div (-16+0j) (inf-16j) (-0+0j) +div (-16+0j) (inf-2j) (-0+0j) +div (-16+0j) (inf-0j) (-0+0j) +div (-16+0j) (inf+0j) (-0+0j) +div (-16+0j) (inf+2j) (-0+0j) +div (-16+0j) (inf+16j) (-0+0j) +div (-16+0j) (inf+infj) (nan+nanj) +div (-16+0j) (inf+nanj) (nan+nanj) +div (-16+0j) (nan-infj) (nan+nanj) +div (-16+0j) (nan-16j) (nan+nanj) +div (-16+0j) (nan-2j) (nan+nanj) +div (-16+0j) (nan-0j) (nan+nanj) +div (-16+0j) (nan+0j) (nan+nanj) +div (-16+0j) (nan+2j) (nan+nanj) +div (-16+0j) (nan+16j) (nan+nanj) +div (-16+0j) (nan+infj) (nan+nanj) +div (-16+0j) (nan+nanj) (nan+nanj) +div (-16+2j) (-inf-infj) (nan+nanj) +div (-16+2j) (-inf-16j) -0j +div (-16+2j) (-inf-2j) -0j +div (-16+2j) (-inf-0j) -0j +div (-16+2j) (-inf+0j) -0j +div (-16+2j) (-inf+2j) -0j +div (-16+2j) (-inf+16j) -0j +div (-16+2j) (-inf+infj) (nan+nanj) +div (-16+2j) (-inf+nanj) (nan+nanj) +div (-16+2j) (-16-infj) (-0-0j) +div (-16+2j) (-16-16j) (0.4375-0.5625j) +div (-16+2j) (-16-2j) (0.969230769231-0.246153846154j) +div (-16+2j) (-16-0j) (1-0.125j) +div (-16+2j) (-16+0j) (1-0.125j) +div (-16+2j) (-16+2j) (1-0j) +div (-16+2j) (-16+16j) (0.5625+0.4375j) +div (-16+2j) (-16+infj) 0j +div (-16+2j) (-16+nanj) (nan+nanj) +div (-16+2j) (-2-infj) (-0-0j) +div (-16+2j) (-2-16j) (-0-1j) +div (-16+2j) (-2-2j) (3.5-4.5j) +div (-16+2j) (-2-0j) (8-1j) +div (-16+2j) (-2+0j) (8-1j) +div (-16+2j) (-2+2j) (4.5+3.5j) +div (-16+2j) (-2+16j) (0.246153846154+0.969230769231j) +div (-16+2j) (-2+infj) 0j +div (-16+2j) (-2+nanj) (nan+nanj) +div (-16+2j) (-0-infj) (-0-0j) +div (-16+2j) (-0-16j) (-0.125-1j) +div (-16+2j) (-0-2j) (-1-8j) +div (-16+2j) (-0-0j) ZeroDivisionError +div (-16+2j) (-0+0j) ZeroDivisionError +div (-16+2j) (-0+2j) (1+8j) +div (-16+2j) (-0+16j) (0.125+1j) +div (-16+2j) (-0+infj) 0j +div (-16+2j) (-0+nanj) (nan+nanj) +div (-16+2j) -infj (-0-0j) +div (-16+2j) -16j (-0.125-1j) +div (-16+2j) -2j (-1-8j) +div (-16+2j) -0j ZeroDivisionError +div (-16+2j) 0j ZeroDivisionError +div (-16+2j) 2j (1+8j) +div (-16+2j) 16j (0.125+1j) +div (-16+2j) infj 0j +div (-16+2j) nanj (nan+nanj) +div (-16+2j) (2-infj) (-0-0j) +div (-16+2j) (2-16j) (-0.246153846154-0.969230769231j) +div (-16+2j) (2-2j) (-4.5-3.5j) +div (-16+2j) (2-0j) (-8+1j) +div (-16+2j) (2+0j) (-8+1j) +div (-16+2j) (2+2j) (-3.5+4.5j) +div (-16+2j) (2+16j) 1j +div (-16+2j) (2+infj) 0j +div (-16+2j) (2+nanj) (nan+nanj) +div (-16+2j) (16-infj) (-0-0j) +div (-16+2j) (16-16j) (-0.5625-0.4375j) +div (-16+2j) (16-2j) (-1+0j) +div (-16+2j) (16-0j) (-1+0.125j) +div (-16+2j) (16+0j) (-1+0.125j) +div (-16+2j) (16+2j) (-0.969230769231+0.246153846154j) +div (-16+2j) (16+16j) (-0.4375+0.5625j) +div (-16+2j) (16+infj) 0j +div (-16+2j) (16+nanj) (nan+nanj) +div (-16+2j) (inf-infj) (nan+nanj) +div (-16+2j) (inf-16j) (-0+0j) +div (-16+2j) (inf-2j) (-0+0j) +div (-16+2j) (inf-0j) (-0+0j) +div (-16+2j) (inf+0j) (-0+0j) +div (-16+2j) (inf+2j) (-0+0j) +div (-16+2j) (inf+16j) (-0+0j) +div (-16+2j) (inf+infj) (nan+nanj) +div (-16+2j) (inf+nanj) (nan+nanj) +div (-16+2j) (nan-infj) (nan+nanj) +div (-16+2j) (nan-16j) (nan+nanj) +div (-16+2j) (nan-2j) (nan+nanj) +div (-16+2j) (nan-0j) (nan+nanj) +div (-16+2j) (nan+0j) (nan+nanj) +div (-16+2j) (nan+2j) (nan+nanj) +div (-16+2j) (nan+16j) (nan+nanj) +div (-16+2j) (nan+infj) (nan+nanj) +div (-16+2j) (nan+nanj) (nan+nanj) +div (-16+16j) (-inf-infj) (nan+nanj) +div (-16+16j) (-inf-16j) -0j +div (-16+16j) (-inf-2j) -0j +div (-16+16j) (-inf-0j) -0j +div (-16+16j) (-inf+0j) -0j +div (-16+16j) (-inf+2j) -0j +div (-16+16j) (-inf+16j) -0j +div (-16+16j) (-inf+infj) (nan+nanj) +div (-16+16j) (-inf+nanj) (nan+nanj) +div (-16+16j) (-16-infj) (-0-0j) +div (-16+16j) (-16-16j) (-0-1j) +div (-16+16j) (-16-2j) (0.861538461538-1.10769230769j) +div (-16+16j) (-16-0j) (1-1j) +div (-16+16j) (-16+0j) (1-1j) +div (-16+16j) (-16+2j) (1.10769230769-0.861538461538j) +div (-16+16j) (-16+16j) (1-0j) +div (-16+16j) (-16+infj) 0j +div (-16+16j) (-16+nanj) (nan+nanj) +div (-16+16j) (-2-infj) (-0-0j) +div (-16+16j) (-2-16j) (-0.861538461538-1.10769230769j) +div (-16+16j) (-2-2j) (-0-8j) +div (-16+16j) (-2-0j) (8-8j) +div (-16+16j) (-2+0j) (8-8j) +div (-16+16j) (-2+2j) (8-0j) +div (-16+16j) (-2+16j) (1.10769230769+0.861538461538j) +div (-16+16j) (-2+infj) 0j +div (-16+16j) (-2+nanj) (nan+nanj) +div (-16+16j) (-0-infj) (-0-0j) +div (-16+16j) (-0-16j) (-1-1j) +div (-16+16j) (-0-2j) (-8-8j) +div (-16+16j) (-0-0j) ZeroDivisionError +div (-16+16j) (-0+0j) ZeroDivisionError +div (-16+16j) (-0+2j) (8+8j) +div (-16+16j) (-0+16j) (1+1j) +div (-16+16j) (-0+infj) 0j +div (-16+16j) (-0+nanj) (nan+nanj) +div (-16+16j) -infj (-0-0j) +div (-16+16j) -16j (-1-1j) +div (-16+16j) -2j (-8-8j) +div (-16+16j) -0j ZeroDivisionError +div (-16+16j) 0j ZeroDivisionError +div (-16+16j) 2j (8+8j) +div (-16+16j) 16j (1+1j) +div (-16+16j) infj 0j +div (-16+16j) nanj (nan+nanj) +div (-16+16j) (2-infj) (-0-0j) +div (-16+16j) (2-16j) (-1.10769230769-0.861538461538j) +div (-16+16j) (2-2j) (-8+0j) +div (-16+16j) (2-0j) (-8+8j) +div (-16+16j) (2+0j) (-8+8j) +div (-16+16j) (2+2j) 8j +div (-16+16j) (2+16j) (0.861538461538+1.10769230769j) +div (-16+16j) (2+infj) 0j +div (-16+16j) (2+nanj) (nan+nanj) +div (-16+16j) (16-infj) (-0-0j) +div (-16+16j) (16-16j) (-1+0j) +div (-16+16j) (16-2j) (-1.10769230769+0.861538461538j) +div (-16+16j) (16-0j) (-1+1j) +div (-16+16j) (16+0j) (-1+1j) +div (-16+16j) (16+2j) (-0.861538461538+1.10769230769j) +div (-16+16j) (16+16j) 1j +div (-16+16j) (16+infj) 0j +div (-16+16j) (16+nanj) (nan+nanj) +div (-16+16j) (inf-infj) (nan+nanj) +div (-16+16j) (inf-16j) (-0+0j) +div (-16+16j) (inf-2j) (-0+0j) +div (-16+16j) (inf-0j) (-0+0j) +div (-16+16j) (inf+0j) (-0+0j) +div (-16+16j) (inf+2j) (-0+0j) +div (-16+16j) (inf+16j) (-0+0j) +div (-16+16j) (inf+infj) (nan+nanj) +div (-16+16j) (inf+nanj) (nan+nanj) +div (-16+16j) (nan-infj) (nan+nanj) +div (-16+16j) (nan-16j) (nan+nanj) +div (-16+16j) (nan-2j) (nan+nanj) +div (-16+16j) (nan-0j) (nan+nanj) +div (-16+16j) (nan+0j) (nan+nanj) +div (-16+16j) (nan+2j) (nan+nanj) +div (-16+16j) (nan+16j) (nan+nanj) +div (-16+16j) (nan+infj) (nan+nanj) +div (-16+16j) (nan+nanj) (nan+nanj) +div (-16+infj) (-inf-infj) (nan+nanj) +div (-16+infj) (-inf-16j) (nan+nanj) +div (-16+infj) (-inf-2j) (nan+nanj) +div (-16+infj) (-inf-0j) (nan+nanj) +div (-16+infj) (-inf+0j) (nan+nanj) +div (-16+infj) (-inf+2j) (nan+nanj) +div (-16+infj) (-inf+16j) (nan+nanj) +div (-16+infj) (-inf+infj) (nan+nanj) +div (-16+infj) (-inf+nanj) (nan+nanj) +div (-16+infj) (-16-infj) (nan+nanj) +div (-16+infj) (-16-16j) (-inf-infj) +div (-16+infj) (-16-2j) (-inf-infj) +div (-16+infj) (-16-0j) (nan-infj) +div (-16+infj) (-16+0j) (nan-infj) +div (-16+infj) (-16+2j) (inf-infj) +div (-16+infj) (-16+16j) (inf-infj) +div (-16+infj) (-16+infj) (nan+nanj) +div (-16+infj) (-16+nanj) (nan+nanj) +div (-16+infj) (-2-infj) (nan+nanj) +div (-16+infj) (-2-16j) (-inf-infj) +div (-16+infj) (-2-2j) (-inf-infj) +div (-16+infj) (-2-0j) (nan-infj) +div (-16+infj) (-2+0j) (nan-infj) +div (-16+infj) (-2+2j) (inf-infj) +div (-16+infj) (-2+16j) (inf-infj) +div (-16+infj) (-2+infj) (nan+nanj) +div (-16+infj) (-2+nanj) (nan+nanj) +div (-16+infj) (-0-infj) (nan+nanj) +div (-16+infj) (-0-16j) (-inf+nanj) +div (-16+infj) (-0-2j) (-inf+nanj) +div (-16+infj) (-0-0j) ZeroDivisionError +div (-16+infj) (-0+0j) ZeroDivisionError +div (-16+infj) (-0+2j) (inf+nanj) +div (-16+infj) (-0+16j) (inf+nanj) +div (-16+infj) (-0+infj) (nan+nanj) +div (-16+infj) (-0+nanj) (nan+nanj) +div (-16+infj) -infj (nan+nanj) +div (-16+infj) -16j (-inf+nanj) +div (-16+infj) -2j (-inf+nanj) +div (-16+infj) -0j ZeroDivisionError +div (-16+infj) 0j ZeroDivisionError +div (-16+infj) 2j (inf+nanj) +div (-16+infj) 16j (inf+nanj) +div (-16+infj) infj (nan+nanj) +div (-16+infj) nanj (nan+nanj) +div (-16+infj) (2-infj) (nan+nanj) +div (-16+infj) (2-16j) (-inf+infj) +div (-16+infj) (2-2j) (-inf+infj) +div (-16+infj) (2-0j) (nan+infj) +div (-16+infj) (2+0j) (nan+infj) +div (-16+infj) (2+2j) (inf+infj) +div (-16+infj) (2+16j) (inf+infj) +div (-16+infj) (2+infj) (nan+nanj) +div (-16+infj) (2+nanj) (nan+nanj) +div (-16+infj) (16-infj) (nan+nanj) +div (-16+infj) (16-16j) (-inf+infj) +div (-16+infj) (16-2j) (-inf+infj) +div (-16+infj) (16-0j) (nan+infj) +div (-16+infj) (16+0j) (nan+infj) +div (-16+infj) (16+2j) (inf+infj) +div (-16+infj) (16+16j) (inf+infj) +div (-16+infj) (16+infj) (nan+nanj) +div (-16+infj) (16+nanj) (nan+nanj) +div (-16+infj) (inf-infj) (nan+nanj) +div (-16+infj) (inf-16j) (nan+nanj) +div (-16+infj) (inf-2j) (nan+nanj) +div (-16+infj) (inf-0j) (nan+nanj) +div (-16+infj) (inf+0j) (nan+nanj) +div (-16+infj) (inf+2j) (nan+nanj) +div (-16+infj) (inf+16j) (nan+nanj) +div (-16+infj) (inf+infj) (nan+nanj) +div (-16+infj) (inf+nanj) (nan+nanj) +div (-16+infj) (nan-infj) (nan+nanj) +div (-16+infj) (nan-16j) (nan+nanj) +div (-16+infj) (nan-2j) (nan+nanj) +div (-16+infj) (nan-0j) (nan+nanj) +div (-16+infj) (nan+0j) (nan+nanj) +div (-16+infj) (nan+2j) (nan+nanj) +div (-16+infj) (nan+16j) (nan+nanj) +div (-16+infj) (nan+infj) (nan+nanj) +div (-16+infj) (nan+nanj) (nan+nanj) +div (-16+nanj) (-inf-infj) (nan+nanj) +div (-16+nanj) (-inf-16j) (nan+nanj) +div (-16+nanj) (-inf-2j) (nan+nanj) +div (-16+nanj) (-inf-0j) (nan+nanj) +div (-16+nanj) (-inf+0j) (nan+nanj) +div (-16+nanj) (-inf+2j) (nan+nanj) +div (-16+nanj) (-inf+16j) (nan+nanj) +div (-16+nanj) (-inf+infj) (nan+nanj) +div (-16+nanj) (-inf+nanj) (nan+nanj) +div (-16+nanj) (-16-infj) (nan+nanj) +div (-16+nanj) (-16-16j) (nan+nanj) +div (-16+nanj) (-16-2j) (nan+nanj) +div (-16+nanj) (-16-0j) (nan+nanj) +div (-16+nanj) (-16+0j) (nan+nanj) +div (-16+nanj) (-16+2j) (nan+nanj) +div (-16+nanj) (-16+16j) (nan+nanj) +div (-16+nanj) (-16+infj) (nan+nanj) +div (-16+nanj) (-16+nanj) (nan+nanj) +div (-16+nanj) (-2-infj) (nan+nanj) +div (-16+nanj) (-2-16j) (nan+nanj) +div (-16+nanj) (-2-2j) (nan+nanj) +div (-16+nanj) (-2-0j) (nan+nanj) +div (-16+nanj) (-2+0j) (nan+nanj) +div (-16+nanj) (-2+2j) (nan+nanj) +div (-16+nanj) (-2+16j) (nan+nanj) +div (-16+nanj) (-2+infj) (nan+nanj) +div (-16+nanj) (-2+nanj) (nan+nanj) +div (-16+nanj) (-0-infj) (nan+nanj) +div (-16+nanj) (-0-16j) (nan+nanj) +div (-16+nanj) (-0-2j) (nan+nanj) +div (-16+nanj) (-0-0j) ZeroDivisionError +div (-16+nanj) (-0+0j) ZeroDivisionError +div (-16+nanj) (-0+2j) (nan+nanj) +div (-16+nanj) (-0+16j) (nan+nanj) +div (-16+nanj) (-0+infj) (nan+nanj) +div (-16+nanj) (-0+nanj) (nan+nanj) +div (-16+nanj) -infj (nan+nanj) +div (-16+nanj) -16j (nan+nanj) +div (-16+nanj) -2j (nan+nanj) +div (-16+nanj) -0j ZeroDivisionError +div (-16+nanj) 0j ZeroDivisionError +div (-16+nanj) 2j (nan+nanj) +div (-16+nanj) 16j (nan+nanj) +div (-16+nanj) infj (nan+nanj) +div (-16+nanj) nanj (nan+nanj) +div (-16+nanj) (2-infj) (nan+nanj) +div (-16+nanj) (2-16j) (nan+nanj) +div (-16+nanj) (2-2j) (nan+nanj) +div (-16+nanj) (2-0j) (nan+nanj) +div (-16+nanj) (2+0j) (nan+nanj) +div (-16+nanj) (2+2j) (nan+nanj) +div (-16+nanj) (2+16j) (nan+nanj) +div (-16+nanj) (2+infj) (nan+nanj) +div (-16+nanj) (2+nanj) (nan+nanj) +div (-16+nanj) (16-infj) (nan+nanj) +div (-16+nanj) (16-16j) (nan+nanj) +div (-16+nanj) (16-2j) (nan+nanj) +div (-16+nanj) (16-0j) (nan+nanj) +div (-16+nanj) (16+0j) (nan+nanj) +div (-16+nanj) (16+2j) (nan+nanj) +div (-16+nanj) (16+16j) (nan+nanj) +div (-16+nanj) (16+infj) (nan+nanj) +div (-16+nanj) (16+nanj) (nan+nanj) +div (-16+nanj) (inf-infj) (nan+nanj) +div (-16+nanj) (inf-16j) (nan+nanj) +div (-16+nanj) (inf-2j) (nan+nanj) +div (-16+nanj) (inf-0j) (nan+nanj) +div (-16+nanj) (inf+0j) (nan+nanj) +div (-16+nanj) (inf+2j) (nan+nanj) +div (-16+nanj) (inf+16j) (nan+nanj) +div (-16+nanj) (inf+infj) (nan+nanj) +div (-16+nanj) (inf+nanj) (nan+nanj) +div (-16+nanj) (nan-infj) (nan+nanj) +div (-16+nanj) (nan-16j) (nan+nanj) +div (-16+nanj) (nan-2j) (nan+nanj) +div (-16+nanj) (nan-0j) (nan+nanj) +div (-16+nanj) (nan+0j) (nan+nanj) +div (-16+nanj) (nan+2j) (nan+nanj) +div (-16+nanj) (nan+16j) (nan+nanj) +div (-16+nanj) (nan+infj) (nan+nanj) +div (-16+nanj) (nan+nanj) (nan+nanj) +div (-2-infj) (-inf-infj) (nan+nanj) +div (-2-infj) (-inf-16j) (nan+nanj) +div (-2-infj) (-inf-2j) (nan+nanj) +div (-2-infj) (-inf-0j) (nan+nanj) +div (-2-infj) (-inf+0j) (nan+nanj) +div (-2-infj) (-inf+2j) (nan+nanj) +div (-2-infj) (-inf+16j) (nan+nanj) +div (-2-infj) (-inf+infj) (nan+nanj) +div (-2-infj) (-inf+nanj) (nan+nanj) +div (-2-infj) (-16-infj) (nan+nanj) +div (-2-infj) (-16-16j) (inf+infj) +div (-2-infj) (-16-2j) (inf+infj) +div (-2-infj) (-16-0j) (nan+infj) +div (-2-infj) (-16+0j) (nan+infj) +div (-2-infj) (-16+2j) (-inf+infj) +div (-2-infj) (-16+16j) (-inf+infj) +div (-2-infj) (-16+infj) (nan+nanj) +div (-2-infj) (-16+nanj) (nan+nanj) +div (-2-infj) (-2-infj) (nan+nanj) +div (-2-infj) (-2-16j) (inf+infj) +div (-2-infj) (-2-2j) (inf+infj) +div (-2-infj) (-2-0j) (nan+infj) +div (-2-infj) (-2+0j) (nan+infj) +div (-2-infj) (-2+2j) (-inf+infj) +div (-2-infj) (-2+16j) (-inf+infj) +div (-2-infj) (-2+infj) (nan+nanj) +div (-2-infj) (-2+nanj) (nan+nanj) +div (-2-infj) (-0-infj) (nan+nanj) +div (-2-infj) (-0-16j) (inf+nanj) +div (-2-infj) (-0-2j) (inf+nanj) +div (-2-infj) (-0-0j) ZeroDivisionError +div (-2-infj) (-0+0j) ZeroDivisionError +div (-2-infj) (-0+2j) (-inf+nanj) +div (-2-infj) (-0+16j) (-inf+nanj) +div (-2-infj) (-0+infj) (nan+nanj) +div (-2-infj) (-0+nanj) (nan+nanj) +div (-2-infj) -infj (nan+nanj) +div (-2-infj) -16j (inf+nanj) +div (-2-infj) -2j (inf+nanj) +div (-2-infj) -0j ZeroDivisionError +div (-2-infj) 0j ZeroDivisionError +div (-2-infj) 2j (-inf+nanj) +div (-2-infj) 16j (-inf+nanj) +div (-2-infj) infj (nan+nanj) +div (-2-infj) nanj (nan+nanj) +div (-2-infj) (2-infj) (nan+nanj) +div (-2-infj) (2-16j) (inf-infj) +div (-2-infj) (2-2j) (inf-infj) +div (-2-infj) (2-0j) (nan-infj) +div (-2-infj) (2+0j) (nan-infj) +div (-2-infj) (2+2j) (-inf-infj) +div (-2-infj) (2+16j) (-inf-infj) +div (-2-infj) (2+infj) (nan+nanj) +div (-2-infj) (2+nanj) (nan+nanj) +div (-2-infj) (16-infj) (nan+nanj) +div (-2-infj) (16-16j) (inf-infj) +div (-2-infj) (16-2j) (inf-infj) +div (-2-infj) (16-0j) (nan-infj) +div (-2-infj) (16+0j) (nan-infj) +div (-2-infj) (16+2j) (-inf-infj) +div (-2-infj) (16+16j) (-inf-infj) +div (-2-infj) (16+infj) (nan+nanj) +div (-2-infj) (16+nanj) (nan+nanj) +div (-2-infj) (inf-infj) (nan+nanj) +div (-2-infj) (inf-16j) (nan+nanj) +div (-2-infj) (inf-2j) (nan+nanj) +div (-2-infj) (inf-0j) (nan+nanj) +div (-2-infj) (inf+0j) (nan+nanj) +div (-2-infj) (inf+2j) (nan+nanj) +div (-2-infj) (inf+16j) (nan+nanj) +div (-2-infj) (inf+infj) (nan+nanj) +div (-2-infj) (inf+nanj) (nan+nanj) +div (-2-infj) (nan-infj) (nan+nanj) +div (-2-infj) (nan-16j) (nan+nanj) +div (-2-infj) (nan-2j) (nan+nanj) +div (-2-infj) (nan-0j) (nan+nanj) +div (-2-infj) (nan+0j) (nan+nanj) +div (-2-infj) (nan+2j) (nan+nanj) +div (-2-infj) (nan+16j) (nan+nanj) +div (-2-infj) (nan+infj) (nan+nanj) +div (-2-infj) (nan+nanj) (nan+nanj) +div (-2-16j) (-inf-infj) (nan+nanj) +div (-2-16j) (-inf-16j) 0j +div (-2-16j) (-inf-2j) 0j +div (-2-16j) (-inf-0j) 0j +div (-2-16j) (-inf+0j) 0j +div (-2-16j) (-inf+2j) 0j +div (-2-16j) (-inf+16j) 0j +div (-2-16j) (-inf+infj) (nan+nanj) +div (-2-16j) (-inf+nanj) (nan+nanj) +div (-2-16j) (-16-infj) -0j +div (-2-16j) (-16-16j) (0.5625+0.4375j) +div (-2-16j) (-16-2j) (0.246153846154+0.969230769231j) +div (-2-16j) (-16-0j) (0.125+1j) +div (-2-16j) (-16+0j) (0.125+1j) +div (-2-16j) (-16+2j) (-0+1j) +div (-2-16j) (-16+16j) (-0.4375+0.5625j) +div (-2-16j) (-16+infj) (-0+0j) +div (-2-16j) (-16+nanj) (nan+nanj) +div (-2-16j) (-2-infj) -0j +div (-2-16j) (-2-16j) (1-0j) +div (-2-16j) (-2-2j) (4.5+3.5j) +div (-2-16j) (-2-0j) (1+8j) +div (-2-16j) (-2+0j) (1+8j) +div (-2-16j) (-2+2j) (-3.5+4.5j) +div (-2-16j) (-2+16j) (-0.969230769231+0.246153846154j) +div (-2-16j) (-2+infj) (-0+0j) +div (-2-16j) (-2+nanj) (nan+nanj) +div (-2-16j) (-0-infj) -0j +div (-2-16j) (-0-16j) (1-0.125j) +div (-2-16j) (-0-2j) (8-1j) +div (-2-16j) (-0-0j) ZeroDivisionError +div (-2-16j) (-0+0j) ZeroDivisionError +div (-2-16j) (-0+2j) (-8+1j) +div (-2-16j) (-0+16j) (-1+0.125j) +div (-2-16j) (-0+infj) (-0+0j) +div (-2-16j) (-0+nanj) (nan+nanj) +div (-2-16j) -infj -0j +div (-2-16j) -16j (1-0.125j) +div (-2-16j) -2j (8-1j) +div (-2-16j) -0j ZeroDivisionError +div (-2-16j) 0j ZeroDivisionError +div (-2-16j) 2j (-8+1j) +div (-2-16j) 16j (-1+0.125j) +div (-2-16j) infj (-0+0j) +div (-2-16j) nanj (nan+nanj) +div (-2-16j) (2-infj) -0j +div (-2-16j) (2-16j) (0.969230769231-0.246153846154j) +div (-2-16j) (2-2j) (3.5-4.5j) +div (-2-16j) (2-0j) (-1-8j) +div (-2-16j) (2+0j) (-1-8j) +div (-2-16j) (2+2j) (-4.5-3.5j) +div (-2-16j) (2+16j) (-1+0j) +div (-2-16j) (2+infj) (-0+0j) +div (-2-16j) (2+nanj) (nan+nanj) +div (-2-16j) (16-infj) -0j +div (-2-16j) (16-16j) (0.4375-0.5625j) +div (-2-16j) (16-2j) -1j +div (-2-16j) (16-0j) (-0.125-1j) +div (-2-16j) (16+0j) (-0.125-1j) +div (-2-16j) (16+2j) (-0.246153846154-0.969230769231j) +div (-2-16j) (16+16j) (-0.5625-0.4375j) +div (-2-16j) (16+infj) (-0+0j) +div (-2-16j) (16+nanj) (nan+nanj) +div (-2-16j) (inf-infj) (nan+nanj) +div (-2-16j) (inf-16j) (-0-0j) +div (-2-16j) (inf-2j) (-0-0j) +div (-2-16j) (inf-0j) (-0-0j) +div (-2-16j) (inf+0j) (-0-0j) +div (-2-16j) (inf+2j) (-0-0j) +div (-2-16j) (inf+16j) (-0-0j) +div (-2-16j) (inf+infj) (nan+nanj) +div (-2-16j) (inf+nanj) (nan+nanj) +div (-2-16j) (nan-infj) (nan+nanj) +div (-2-16j) (nan-16j) (nan+nanj) +div (-2-16j) (nan-2j) (nan+nanj) +div (-2-16j) (nan-0j) (nan+nanj) +div (-2-16j) (nan+0j) (nan+nanj) +div (-2-16j) (nan+2j) (nan+nanj) +div (-2-16j) (nan+16j) (nan+nanj) +div (-2-16j) (nan+infj) (nan+nanj) +div (-2-16j) (nan+nanj) (nan+nanj) +div (-2-2j) (-inf-infj) (nan+nanj) +div (-2-2j) (-inf-16j) 0j +div (-2-2j) (-inf-2j) 0j +div (-2-2j) (-inf-0j) 0j +div (-2-2j) (-inf+0j) 0j +div (-2-2j) (-inf+2j) 0j +div (-2-2j) (-inf+16j) 0j +div (-2-2j) (-inf+infj) (nan+nanj) +div (-2-2j) (-inf+nanj) (nan+nanj) +div (-2-2j) (-16-infj) -0j +div (-2-2j) (-16-16j) (0.125-0j) +div (-2-2j) (-16-2j) (0.138461538462+0.107692307692j) +div (-2-2j) (-16-0j) (0.125+0.125j) +div (-2-2j) (-16+0j) (0.125+0.125j) +div (-2-2j) (-16+2j) (0.107692307692+0.138461538462j) +div (-2-2j) (-16+16j) (-0+0.125j) +div (-2-2j) (-16+infj) (-0+0j) +div (-2-2j) (-16+nanj) (nan+nanj) +div (-2-2j) (-2-infj) -0j +div (-2-2j) (-2-16j) (0.138461538462-0.107692307692j) +div (-2-2j) (-2-2j) (1-0j) +div (-2-2j) (-2-0j) (1+1j) +div (-2-2j) (-2+0j) (1+1j) +div (-2-2j) (-2+2j) (-0+1j) +div (-2-2j) (-2+16j) (-0.107692307692+0.138461538462j) +div (-2-2j) (-2+infj) (-0+0j) +div (-2-2j) (-2+nanj) (nan+nanj) +div (-2-2j) (-0-infj) -0j +div (-2-2j) (-0-16j) (0.125-0.125j) +div (-2-2j) (-0-2j) (1-1j) +div (-2-2j) (-0-0j) ZeroDivisionError +div (-2-2j) (-0+0j) ZeroDivisionError +div (-2-2j) (-0+2j) (-1+1j) +div (-2-2j) (-0+16j) (-0.125+0.125j) +div (-2-2j) (-0+infj) (-0+0j) +div (-2-2j) (-0+nanj) (nan+nanj) +div (-2-2j) -infj -0j +div (-2-2j) -16j (0.125-0.125j) +div (-2-2j) -2j (1-1j) +div (-2-2j) -0j ZeroDivisionError +div (-2-2j) 0j ZeroDivisionError +div (-2-2j) 2j (-1+1j) +div (-2-2j) 16j (-0.125+0.125j) +div (-2-2j) infj (-0+0j) +div (-2-2j) nanj (nan+nanj) +div (-2-2j) (2-infj) -0j +div (-2-2j) (2-16j) (0.107692307692-0.138461538462j) +div (-2-2j) (2-2j) -1j +div (-2-2j) (2-0j) (-1-1j) +div (-2-2j) (2+0j) (-1-1j) +div (-2-2j) (2+2j) (-1+0j) +div (-2-2j) (2+16j) (-0.138461538462+0.107692307692j) +div (-2-2j) (2+infj) (-0+0j) +div (-2-2j) (2+nanj) (nan+nanj) +div (-2-2j) (16-infj) -0j +div (-2-2j) (16-16j) -0.125j +div (-2-2j) (16-2j) (-0.107692307692-0.138461538462j) +div (-2-2j) (16-0j) (-0.125-0.125j) +div (-2-2j) (16+0j) (-0.125-0.125j) +div (-2-2j) (16+2j) (-0.138461538462-0.107692307692j) +div (-2-2j) (16+16j) (-0.125+0j) +div (-2-2j) (16+infj) (-0+0j) +div (-2-2j) (16+nanj) (nan+nanj) +div (-2-2j) (inf-infj) (nan+nanj) +div (-2-2j) (inf-16j) (-0-0j) +div (-2-2j) (inf-2j) (-0-0j) +div (-2-2j) (inf-0j) (-0-0j) +div (-2-2j) (inf+0j) (-0-0j) +div (-2-2j) (inf+2j) (-0-0j) +div (-2-2j) (inf+16j) (-0-0j) +div (-2-2j) (inf+infj) (nan+nanj) +div (-2-2j) (inf+nanj) (nan+nanj) +div (-2-2j) (nan-infj) (nan+nanj) +div (-2-2j) (nan-16j) (nan+nanj) +div (-2-2j) (nan-2j) (nan+nanj) +div (-2-2j) (nan-0j) (nan+nanj) +div (-2-2j) (nan+0j) (nan+nanj) +div (-2-2j) (nan+2j) (nan+nanj) +div (-2-2j) (nan+16j) (nan+nanj) +div (-2-2j) (nan+infj) (nan+nanj) +div (-2-2j) (nan+nanj) (nan+nanj) +div (-2-0j) (-inf-infj) (nan+nanj) +div (-2-0j) (-inf-16j) -0j +div (-2-0j) (-inf-2j) -0j +div (-2-0j) (-inf-0j) -0j +div (-2-0j) (-inf+0j) 0j +div (-2-0j) (-inf+2j) 0j +div (-2-0j) (-inf+16j) 0j +div (-2-0j) (-inf+infj) (nan+nanj) +div (-2-0j) (-inf+nanj) (nan+nanj) +div (-2-0j) (-16-infj) -0j +div (-2-0j) (-16-16j) (0.0625-0.0625j) +div (-2-0j) (-16-2j) (0.123076923077-0.0153846153846j) +div (-2-0j) (-16-0j) (0.125-0j) +div (-2-0j) (-16+0j) (0.125+0j) +div (-2-0j) (-16+2j) (0.123076923077+0.0153846153846j) +div (-2-0j) (-16+16j) (0.0625+0.0625j) +div (-2-0j) (-16+infj) 0j +div (-2-0j) (-16+nanj) (nan+nanj) +div (-2-0j) (-2-infj) -0j +div (-2-0j) (-2-16j) (0.0153846153846-0.123076923077j) +div (-2-0j) (-2-2j) (0.5-0.5j) +div (-2-0j) (-2-0j) (1-0j) +div (-2-0j) (-2+0j) (1+0j) +div (-2-0j) (-2+2j) (0.5+0.5j) +div (-2-0j) (-2+16j) (0.0153846153846+0.123076923077j) +div (-2-0j) (-2+infj) 0j +div (-2-0j) (-2+nanj) (nan+nanj) +div (-2-0j) (-0-infj) -0j +div (-2-0j) (-0-16j) -0.125j +div (-2-0j) (-0-2j) -1j +div (-2-0j) (-0-0j) ZeroDivisionError +div (-2-0j) (-0+0j) ZeroDivisionError +div (-2-0j) (-0+2j) 1j +div (-2-0j) (-0+16j) 0.125j +div (-2-0j) (-0+infj) 0j +div (-2-0j) (-0+nanj) (nan+nanj) +div (-2-0j) -infj (-0-0j) +div (-2-0j) -16j (-0-0.125j) +div (-2-0j) -2j (-0-1j) +div (-2-0j) -0j ZeroDivisionError +div (-2-0j) 0j ZeroDivisionError +div (-2-0j) 2j (-0+1j) +div (-2-0j) 16j (-0+0.125j) +div (-2-0j) infj (-0+0j) +div (-2-0j) nanj (nan+nanj) +div (-2-0j) (2-infj) (-0-0j) +div (-2-0j) (2-16j) (-0.0153846153846-0.123076923077j) +div (-2-0j) (2-2j) (-0.5-0.5j) +div (-2-0j) (2-0j) (-1-0j) +div (-2-0j) (2+0j) (-1+0j) +div (-2-0j) (2+2j) (-0.5+0.5j) +div (-2-0j) (2+16j) (-0.0153846153846+0.123076923077j) +div (-2-0j) (2+infj) (-0+0j) +div (-2-0j) (2+nanj) (nan+nanj) +div (-2-0j) (16-infj) (-0-0j) +div (-2-0j) (16-16j) (-0.0625-0.0625j) +div (-2-0j) (16-2j) (-0.123076923077-0.0153846153846j) +div (-2-0j) (16-0j) (-0.125-0j) +div (-2-0j) (16+0j) (-0.125+0j) +div (-2-0j) (16+2j) (-0.123076923077+0.0153846153846j) +div (-2-0j) (16+16j) (-0.0625+0.0625j) +div (-2-0j) (16+infj) (-0+0j) +div (-2-0j) (16+nanj) (nan+nanj) +div (-2-0j) (inf-infj) (nan+nanj) +div (-2-0j) (inf-16j) (-0-0j) +div (-2-0j) (inf-2j) (-0-0j) +div (-2-0j) (inf-0j) (-0-0j) +div (-2-0j) (inf+0j) (-0+0j) +div (-2-0j) (inf+2j) (-0+0j) +div (-2-0j) (inf+16j) (-0+0j) +div (-2-0j) (inf+infj) (nan+nanj) +div (-2-0j) (inf+nanj) (nan+nanj) +div (-2-0j) (nan-infj) (nan+nanj) +div (-2-0j) (nan-16j) (nan+nanj) +div (-2-0j) (nan-2j) (nan+nanj) +div (-2-0j) (nan-0j) (nan+nanj) +div (-2-0j) (nan+0j) (nan+nanj) +div (-2-0j) (nan+2j) (nan+nanj) +div (-2-0j) (nan+16j) (nan+nanj) +div (-2-0j) (nan+infj) (nan+nanj) +div (-2-0j) (nan+nanj) (nan+nanj) +div (-2+0j) (-inf-infj) (nan+nanj) +div (-2+0j) (-inf-16j) -0j +div (-2+0j) (-inf-2j) -0j +div (-2+0j) (-inf-0j) -0j +div (-2+0j) (-inf+0j) -0j +div (-2+0j) (-inf+2j) -0j +div (-2+0j) (-inf+16j) -0j +div (-2+0j) (-inf+infj) (nan+nanj) +div (-2+0j) (-inf+nanj) (nan+nanj) +div (-2+0j) (-16-infj) (-0-0j) +div (-2+0j) (-16-16j) (0.0625-0.0625j) +div (-2+0j) (-16-2j) (0.123076923077-0.0153846153846j) +div (-2+0j) (-16-0j) (0.125-0j) +div (-2+0j) (-16+0j) (0.125-0j) +div (-2+0j) (-16+2j) (0.123076923077+0.0153846153846j) +div (-2+0j) (-16+16j) (0.0625+0.0625j) +div (-2+0j) (-16+infj) 0j +div (-2+0j) (-16+nanj) (nan+nanj) +div (-2+0j) (-2-infj) (-0-0j) +div (-2+0j) (-2-16j) (0.0153846153846-0.123076923077j) +div (-2+0j) (-2-2j) (0.5-0.5j) +div (-2+0j) (-2-0j) (1-0j) +div (-2+0j) (-2+0j) (1-0j) +div (-2+0j) (-2+2j) (0.5+0.5j) +div (-2+0j) (-2+16j) (0.0153846153846+0.123076923077j) +div (-2+0j) (-2+infj) 0j +div (-2+0j) (-2+nanj) (nan+nanj) +div (-2+0j) (-0-infj) (-0-0j) +div (-2+0j) (-0-16j) (-0-0.125j) +div (-2+0j) (-0-2j) (-0-1j) +div (-2+0j) (-0-0j) ZeroDivisionError +div (-2+0j) (-0+0j) ZeroDivisionError +div (-2+0j) (-0+2j) 1j +div (-2+0j) (-0+16j) 0.125j +div (-2+0j) (-0+infj) 0j +div (-2+0j) (-0+nanj) (nan+nanj) +div (-2+0j) -infj (-0-0j) +div (-2+0j) -16j (-0-0.125j) +div (-2+0j) -2j (-0-1j) +div (-2+0j) -0j ZeroDivisionError +div (-2+0j) 0j ZeroDivisionError +div (-2+0j) 2j 1j +div (-2+0j) 16j 0.125j +div (-2+0j) infj 0j +div (-2+0j) nanj (nan+nanj) +div (-2+0j) (2-infj) (-0-0j) +div (-2+0j) (2-16j) (-0.0153846153846-0.123076923077j) +div (-2+0j) (2-2j) (-0.5-0.5j) +div (-2+0j) (2-0j) (-1+0j) +div (-2+0j) (2+0j) (-1+0j) +div (-2+0j) (2+2j) (-0.5+0.5j) +div (-2+0j) (2+16j) (-0.0153846153846+0.123076923077j) +div (-2+0j) (2+infj) 0j +div (-2+0j) (2+nanj) (nan+nanj) +div (-2+0j) (16-infj) (-0-0j) +div (-2+0j) (16-16j) (-0.0625-0.0625j) +div (-2+0j) (16-2j) (-0.123076923077-0.0153846153846j) +div (-2+0j) (16-0j) (-0.125+0j) +div (-2+0j) (16+0j) (-0.125+0j) +div (-2+0j) (16+2j) (-0.123076923077+0.0153846153846j) +div (-2+0j) (16+16j) (-0.0625+0.0625j) +div (-2+0j) (16+infj) 0j +div (-2+0j) (16+nanj) (nan+nanj) +div (-2+0j) (inf-infj) (nan+nanj) +div (-2+0j) (inf-16j) (-0+0j) +div (-2+0j) (inf-2j) (-0+0j) +div (-2+0j) (inf-0j) (-0+0j) +div (-2+0j) (inf+0j) (-0+0j) +div (-2+0j) (inf+2j) (-0+0j) +div (-2+0j) (inf+16j) (-0+0j) +div (-2+0j) (inf+infj) (nan+nanj) +div (-2+0j) (inf+nanj) (nan+nanj) +div (-2+0j) (nan-infj) (nan+nanj) +div (-2+0j) (nan-16j) (nan+nanj) +div (-2+0j) (nan-2j) (nan+nanj) +div (-2+0j) (nan-0j) (nan+nanj) +div (-2+0j) (nan+0j) (nan+nanj) +div (-2+0j) (nan+2j) (nan+nanj) +div (-2+0j) (nan+16j) (nan+nanj) +div (-2+0j) (nan+infj) (nan+nanj) +div (-2+0j) (nan+nanj) (nan+nanj) +div (-2+2j) (-inf-infj) (nan+nanj) +div (-2+2j) (-inf-16j) -0j +div (-2+2j) (-inf-2j) -0j +div (-2+2j) (-inf-0j) -0j +div (-2+2j) (-inf+0j) -0j +div (-2+2j) (-inf+2j) -0j +div (-2+2j) (-inf+16j) -0j +div (-2+2j) (-inf+infj) (nan+nanj) +div (-2+2j) (-inf+nanj) (nan+nanj) +div (-2+2j) (-16-infj) (-0-0j) +div (-2+2j) (-16-16j) (-0-0.125j) +div (-2+2j) (-16-2j) (0.107692307692-0.138461538462j) +div (-2+2j) (-16-0j) (0.125-0.125j) +div (-2+2j) (-16+0j) (0.125-0.125j) +div (-2+2j) (-16+2j) (0.138461538462-0.107692307692j) +div (-2+2j) (-16+16j) (0.125-0j) +div (-2+2j) (-16+infj) 0j +div (-2+2j) (-16+nanj) (nan+nanj) +div (-2+2j) (-2-infj) (-0-0j) +div (-2+2j) (-2-16j) (-0.107692307692-0.138461538462j) +div (-2+2j) (-2-2j) (-0-1j) +div (-2+2j) (-2-0j) (1-1j) +div (-2+2j) (-2+0j) (1-1j) +div (-2+2j) (-2+2j) (1-0j) +div (-2+2j) (-2+16j) (0.138461538462+0.107692307692j) +div (-2+2j) (-2+infj) 0j +div (-2+2j) (-2+nanj) (nan+nanj) +div (-2+2j) (-0-infj) (-0-0j) +div (-2+2j) (-0-16j) (-0.125-0.125j) +div (-2+2j) (-0-2j) (-1-1j) +div (-2+2j) (-0-0j) ZeroDivisionError +div (-2+2j) (-0+0j) ZeroDivisionError +div (-2+2j) (-0+2j) (1+1j) +div (-2+2j) (-0+16j) (0.125+0.125j) +div (-2+2j) (-0+infj) 0j +div (-2+2j) (-0+nanj) (nan+nanj) +div (-2+2j) -infj (-0-0j) +div (-2+2j) -16j (-0.125-0.125j) +div (-2+2j) -2j (-1-1j) +div (-2+2j) -0j ZeroDivisionError +div (-2+2j) 0j ZeroDivisionError +div (-2+2j) 2j (1+1j) +div (-2+2j) 16j (0.125+0.125j) +div (-2+2j) infj 0j +div (-2+2j) nanj (nan+nanj) +div (-2+2j) (2-infj) (-0-0j) +div (-2+2j) (2-16j) (-0.138461538462-0.107692307692j) +div (-2+2j) (2-2j) (-1+0j) +div (-2+2j) (2-0j) (-1+1j) +div (-2+2j) (2+0j) (-1+1j) +div (-2+2j) (2+2j) 1j +div (-2+2j) (2+16j) (0.107692307692+0.138461538462j) +div (-2+2j) (2+infj) 0j +div (-2+2j) (2+nanj) (nan+nanj) +div (-2+2j) (16-infj) (-0-0j) +div (-2+2j) (16-16j) (-0.125+0j) +div (-2+2j) (16-2j) (-0.138461538462+0.107692307692j) +div (-2+2j) (16-0j) (-0.125+0.125j) +div (-2+2j) (16+0j) (-0.125+0.125j) +div (-2+2j) (16+2j) (-0.107692307692+0.138461538462j) +div (-2+2j) (16+16j) 0.125j +div (-2+2j) (16+infj) 0j +div (-2+2j) (16+nanj) (nan+nanj) +div (-2+2j) (inf-infj) (nan+nanj) +div (-2+2j) (inf-16j) (-0+0j) +div (-2+2j) (inf-2j) (-0+0j) +div (-2+2j) (inf-0j) (-0+0j) +div (-2+2j) (inf+0j) (-0+0j) +div (-2+2j) (inf+2j) (-0+0j) +div (-2+2j) (inf+16j) (-0+0j) +div (-2+2j) (inf+infj) (nan+nanj) +div (-2+2j) (inf+nanj) (nan+nanj) +div (-2+2j) (nan-infj) (nan+nanj) +div (-2+2j) (nan-16j) (nan+nanj) +div (-2+2j) (nan-2j) (nan+nanj) +div (-2+2j) (nan-0j) (nan+nanj) +div (-2+2j) (nan+0j) (nan+nanj) +div (-2+2j) (nan+2j) (nan+nanj) +div (-2+2j) (nan+16j) (nan+nanj) +div (-2+2j) (nan+infj) (nan+nanj) +div (-2+2j) (nan+nanj) (nan+nanj) +div (-2+16j) (-inf-infj) (nan+nanj) +div (-2+16j) (-inf-16j) -0j +div (-2+16j) (-inf-2j) -0j +div (-2+16j) (-inf-0j) -0j +div (-2+16j) (-inf+0j) -0j +div (-2+16j) (-inf+2j) -0j +div (-2+16j) (-inf+16j) -0j +div (-2+16j) (-inf+infj) (nan+nanj) +div (-2+16j) (-inf+nanj) (nan+nanj) +div (-2+16j) (-16-infj) (-0-0j) +div (-2+16j) (-16-16j) (-0.4375-0.5625j) +div (-2+16j) (-16-2j) (-0-1j) +div (-2+16j) (-16-0j) (0.125-1j) +div (-2+16j) (-16+0j) (0.125-1j) +div (-2+16j) (-16+2j) (0.246153846154-0.969230769231j) +div (-2+16j) (-16+16j) (0.5625-0.4375j) +div (-2+16j) (-16+infj) 0j +div (-2+16j) (-16+nanj) (nan+nanj) +div (-2+16j) (-2-infj) (-0-0j) +div (-2+16j) (-2-16j) (-0.969230769231-0.246153846154j) +div (-2+16j) (-2-2j) (-3.5-4.5j) +div (-2+16j) (-2-0j) (1-8j) +div (-2+16j) (-2+0j) (1-8j) +div (-2+16j) (-2+2j) (4.5-3.5j) +div (-2+16j) (-2+16j) (1+0j) +div (-2+16j) (-2+infj) 0j +div (-2+16j) (-2+nanj) (nan+nanj) +div (-2+16j) (-0-infj) (-0-0j) +div (-2+16j) (-0-16j) (-1-0.125j) +div (-2+16j) (-0-2j) (-8-1j) +div (-2+16j) (-0-0j) ZeroDivisionError +div (-2+16j) (-0+0j) ZeroDivisionError +div (-2+16j) (-0+2j) (8+1j) +div (-2+16j) (-0+16j) (1+0.125j) +div (-2+16j) (-0+infj) 0j +div (-2+16j) (-0+nanj) (nan+nanj) +div (-2+16j) -infj (-0-0j) +div (-2+16j) -16j (-1-0.125j) +div (-2+16j) -2j (-8-1j) +div (-2+16j) -0j ZeroDivisionError +div (-2+16j) 0j ZeroDivisionError +div (-2+16j) 2j (8+1j) +div (-2+16j) 16j (1+0.125j) +div (-2+16j) infj 0j +div (-2+16j) nanj (nan+nanj) +div (-2+16j) (2-infj) (-0-0j) +div (-2+16j) (2-16j) (-1-0j) +div (-2+16j) (2-2j) (-4.5+3.5j) +div (-2+16j) (2-0j) (-1+8j) +div (-2+16j) (2+0j) (-1+8j) +div (-2+16j) (2+2j) (3.5+4.5j) +div (-2+16j) (2+16j) (0.969230769231+0.246153846154j) +div (-2+16j) (2+infj) 0j +div (-2+16j) (2+nanj) (nan+nanj) +div (-2+16j) (16-infj) (-0-0j) +div (-2+16j) (16-16j) (-0.5625+0.4375j) +div (-2+16j) (16-2j) (-0.246153846154+0.969230769231j) +div (-2+16j) (16-0j) (-0.125+1j) +div (-2+16j) (16+0j) (-0.125+1j) +div (-2+16j) (16+2j) 1j +div (-2+16j) (16+16j) (0.4375+0.5625j) +div (-2+16j) (16+infj) 0j +div (-2+16j) (16+nanj) (nan+nanj) +div (-2+16j) (inf-infj) (nan+nanj) +div (-2+16j) (inf-16j) (-0+0j) +div (-2+16j) (inf-2j) (-0+0j) +div (-2+16j) (inf-0j) (-0+0j) +div (-2+16j) (inf+0j) (-0+0j) +div (-2+16j) (inf+2j) (-0+0j) +div (-2+16j) (inf+16j) (-0+0j) +div (-2+16j) (inf+infj) (nan+nanj) +div (-2+16j) (inf+nanj) (nan+nanj) +div (-2+16j) (nan-infj) (nan+nanj) +div (-2+16j) (nan-16j) (nan+nanj) +div (-2+16j) (nan-2j) (nan+nanj) +div (-2+16j) (nan-0j) (nan+nanj) +div (-2+16j) (nan+0j) (nan+nanj) +div (-2+16j) (nan+2j) (nan+nanj) +div (-2+16j) (nan+16j) (nan+nanj) +div (-2+16j) (nan+infj) (nan+nanj) +div (-2+16j) (nan+nanj) (nan+nanj) +div (-2+infj) (-inf-infj) (nan+nanj) +div (-2+infj) (-inf-16j) (nan+nanj) +div (-2+infj) (-inf-2j) (nan+nanj) +div (-2+infj) (-inf-0j) (nan+nanj) +div (-2+infj) (-inf+0j) (nan+nanj) +div (-2+infj) (-inf+2j) (nan+nanj) +div (-2+infj) (-inf+16j) (nan+nanj) +div (-2+infj) (-inf+infj) (nan+nanj) +div (-2+infj) (-inf+nanj) (nan+nanj) +div (-2+infj) (-16-infj) (nan+nanj) +div (-2+infj) (-16-16j) (-inf-infj) +div (-2+infj) (-16-2j) (-inf-infj) +div (-2+infj) (-16-0j) (nan-infj) +div (-2+infj) (-16+0j) (nan-infj) +div (-2+infj) (-16+2j) (inf-infj) +div (-2+infj) (-16+16j) (inf-infj) +div (-2+infj) (-16+infj) (nan+nanj) +div (-2+infj) (-16+nanj) (nan+nanj) +div (-2+infj) (-2-infj) (nan+nanj) +div (-2+infj) (-2-16j) (-inf-infj) +div (-2+infj) (-2-2j) (-inf-infj) +div (-2+infj) (-2-0j) (nan-infj) +div (-2+infj) (-2+0j) (nan-infj) +div (-2+infj) (-2+2j) (inf-infj) +div (-2+infj) (-2+16j) (inf-infj) +div (-2+infj) (-2+infj) (nan+nanj) +div (-2+infj) (-2+nanj) (nan+nanj) +div (-2+infj) (-0-infj) (nan+nanj) +div (-2+infj) (-0-16j) (-inf+nanj) +div (-2+infj) (-0-2j) (-inf+nanj) +div (-2+infj) (-0-0j) ZeroDivisionError +div (-2+infj) (-0+0j) ZeroDivisionError +div (-2+infj) (-0+2j) (inf+nanj) +div (-2+infj) (-0+16j) (inf+nanj) +div (-2+infj) (-0+infj) (nan+nanj) +div (-2+infj) (-0+nanj) (nan+nanj) +div (-2+infj) -infj (nan+nanj) +div (-2+infj) -16j (-inf+nanj) +div (-2+infj) -2j (-inf+nanj) +div (-2+infj) -0j ZeroDivisionError +div (-2+infj) 0j ZeroDivisionError +div (-2+infj) 2j (inf+nanj) +div (-2+infj) 16j (inf+nanj) +div (-2+infj) infj (nan+nanj) +div (-2+infj) nanj (nan+nanj) +div (-2+infj) (2-infj) (nan+nanj) +div (-2+infj) (2-16j) (-inf+infj) +div (-2+infj) (2-2j) (-inf+infj) +div (-2+infj) (2-0j) (nan+infj) +div (-2+infj) (2+0j) (nan+infj) +div (-2+infj) (2+2j) (inf+infj) +div (-2+infj) (2+16j) (inf+infj) +div (-2+infj) (2+infj) (nan+nanj) +div (-2+infj) (2+nanj) (nan+nanj) +div (-2+infj) (16-infj) (nan+nanj) +div (-2+infj) (16-16j) (-inf+infj) +div (-2+infj) (16-2j) (-inf+infj) +div (-2+infj) (16-0j) (nan+infj) +div (-2+infj) (16+0j) (nan+infj) +div (-2+infj) (16+2j) (inf+infj) +div (-2+infj) (16+16j) (inf+infj) +div (-2+infj) (16+infj) (nan+nanj) +div (-2+infj) (16+nanj) (nan+nanj) +div (-2+infj) (inf-infj) (nan+nanj) +div (-2+infj) (inf-16j) (nan+nanj) +div (-2+infj) (inf-2j) (nan+nanj) +div (-2+infj) (inf-0j) (nan+nanj) +div (-2+infj) (inf+0j) (nan+nanj) +div (-2+infj) (inf+2j) (nan+nanj) +div (-2+infj) (inf+16j) (nan+nanj) +div (-2+infj) (inf+infj) (nan+nanj) +div (-2+infj) (inf+nanj) (nan+nanj) +div (-2+infj) (nan-infj) (nan+nanj) +div (-2+infj) (nan-16j) (nan+nanj) +div (-2+infj) (nan-2j) (nan+nanj) +div (-2+infj) (nan-0j) (nan+nanj) +div (-2+infj) (nan+0j) (nan+nanj) +div (-2+infj) (nan+2j) (nan+nanj) +div (-2+infj) (nan+16j) (nan+nanj) +div (-2+infj) (nan+infj) (nan+nanj) +div (-2+infj) (nan+nanj) (nan+nanj) +div (-2+nanj) (-inf-infj) (nan+nanj) +div (-2+nanj) (-inf-16j) (nan+nanj) +div (-2+nanj) (-inf-2j) (nan+nanj) +div (-2+nanj) (-inf-0j) (nan+nanj) +div (-2+nanj) (-inf+0j) (nan+nanj) +div (-2+nanj) (-inf+2j) (nan+nanj) +div (-2+nanj) (-inf+16j) (nan+nanj) +div (-2+nanj) (-inf+infj) (nan+nanj) +div (-2+nanj) (-inf+nanj) (nan+nanj) +div (-2+nanj) (-16-infj) (nan+nanj) +div (-2+nanj) (-16-16j) (nan+nanj) +div (-2+nanj) (-16-2j) (nan+nanj) +div (-2+nanj) (-16-0j) (nan+nanj) +div (-2+nanj) (-16+0j) (nan+nanj) +div (-2+nanj) (-16+2j) (nan+nanj) +div (-2+nanj) (-16+16j) (nan+nanj) +div (-2+nanj) (-16+infj) (nan+nanj) +div (-2+nanj) (-16+nanj) (nan+nanj) +div (-2+nanj) (-2-infj) (nan+nanj) +div (-2+nanj) (-2-16j) (nan+nanj) +div (-2+nanj) (-2-2j) (nan+nanj) +div (-2+nanj) (-2-0j) (nan+nanj) +div (-2+nanj) (-2+0j) (nan+nanj) +div (-2+nanj) (-2+2j) (nan+nanj) +div (-2+nanj) (-2+16j) (nan+nanj) +div (-2+nanj) (-2+infj) (nan+nanj) +div (-2+nanj) (-2+nanj) (nan+nanj) +div (-2+nanj) (-0-infj) (nan+nanj) +div (-2+nanj) (-0-16j) (nan+nanj) +div (-2+nanj) (-0-2j) (nan+nanj) +div (-2+nanj) (-0-0j) ZeroDivisionError +div (-2+nanj) (-0+0j) ZeroDivisionError +div (-2+nanj) (-0+2j) (nan+nanj) +div (-2+nanj) (-0+16j) (nan+nanj) +div (-2+nanj) (-0+infj) (nan+nanj) +div (-2+nanj) (-0+nanj) (nan+nanj) +div (-2+nanj) -infj (nan+nanj) +div (-2+nanj) -16j (nan+nanj) +div (-2+nanj) -2j (nan+nanj) +div (-2+nanj) -0j ZeroDivisionError +div (-2+nanj) 0j ZeroDivisionError +div (-2+nanj) 2j (nan+nanj) +div (-2+nanj) 16j (nan+nanj) +div (-2+nanj) infj (nan+nanj) +div (-2+nanj) nanj (nan+nanj) +div (-2+nanj) (2-infj) (nan+nanj) +div (-2+nanj) (2-16j) (nan+nanj) +div (-2+nanj) (2-2j) (nan+nanj) +div (-2+nanj) (2-0j) (nan+nanj) +div (-2+nanj) (2+0j) (nan+nanj) +div (-2+nanj) (2+2j) (nan+nanj) +div (-2+nanj) (2+16j) (nan+nanj) +div (-2+nanj) (2+infj) (nan+nanj) +div (-2+nanj) (2+nanj) (nan+nanj) +div (-2+nanj) (16-infj) (nan+nanj) +div (-2+nanj) (16-16j) (nan+nanj) +div (-2+nanj) (16-2j) (nan+nanj) +div (-2+nanj) (16-0j) (nan+nanj) +div (-2+nanj) (16+0j) (nan+nanj) +div (-2+nanj) (16+2j) (nan+nanj) +div (-2+nanj) (16+16j) (nan+nanj) +div (-2+nanj) (16+infj) (nan+nanj) +div (-2+nanj) (16+nanj) (nan+nanj) +div (-2+nanj) (inf-infj) (nan+nanj) +div (-2+nanj) (inf-16j) (nan+nanj) +div (-2+nanj) (inf-2j) (nan+nanj) +div (-2+nanj) (inf-0j) (nan+nanj) +div (-2+nanj) (inf+0j) (nan+nanj) +div (-2+nanj) (inf+2j) (nan+nanj) +div (-2+nanj) (inf+16j) (nan+nanj) +div (-2+nanj) (inf+infj) (nan+nanj) +div (-2+nanj) (inf+nanj) (nan+nanj) +div (-2+nanj) (nan-infj) (nan+nanj) +div (-2+nanj) (nan-16j) (nan+nanj) +div (-2+nanj) (nan-2j) (nan+nanj) +div (-2+nanj) (nan-0j) (nan+nanj) +div (-2+nanj) (nan+0j) (nan+nanj) +div (-2+nanj) (nan+2j) (nan+nanj) +div (-2+nanj) (nan+16j) (nan+nanj) +div (-2+nanj) (nan+infj) (nan+nanj) +div (-2+nanj) (nan+nanj) (nan+nanj) +div (-0-infj) (-inf-infj) (nan+nanj) +div (-0-infj) (-inf-16j) (nan+nanj) +div (-0-infj) (-inf-2j) (nan+nanj) +div (-0-infj) (-inf-0j) (nan+nanj) +div (-0-infj) (-inf+0j) (nan+nanj) +div (-0-infj) (-inf+2j) (nan+nanj) +div (-0-infj) (-inf+16j) (nan+nanj) +div (-0-infj) (-inf+infj) (nan+nanj) +div (-0-infj) (-inf+nanj) (nan+nanj) +div (-0-infj) (-16-infj) (nan+nanj) +div (-0-infj) (-16-16j) (inf+infj) +div (-0-infj) (-16-2j) (inf+infj) +div (-0-infj) (-16-0j) (nan+infj) +div (-0-infj) (-16+0j) (nan+infj) +div (-0-infj) (-16+2j) (-inf+infj) +div (-0-infj) (-16+16j) (-inf+infj) +div (-0-infj) (-16+infj) (nan+nanj) +div (-0-infj) (-16+nanj) (nan+nanj) +div (-0-infj) (-2-infj) (nan+nanj) +div (-0-infj) (-2-16j) (inf+infj) +div (-0-infj) (-2-2j) (inf+infj) +div (-0-infj) (-2-0j) (nan+infj) +div (-0-infj) (-2+0j) (nan+infj) +div (-0-infj) (-2+2j) (-inf+infj) +div (-0-infj) (-2+16j) (-inf+infj) +div (-0-infj) (-2+infj) (nan+nanj) +div (-0-infj) (-2+nanj) (nan+nanj) +div (-0-infj) (-0-infj) (nan+nanj) +div (-0-infj) (-0-16j) (inf+nanj) +div (-0-infj) (-0-2j) (inf+nanj) +div (-0-infj) (-0-0j) ZeroDivisionError +div (-0-infj) (-0+0j) ZeroDivisionError +div (-0-infj) (-0+2j) (-inf+nanj) +div (-0-infj) (-0+16j) (-inf+nanj) +div (-0-infj) (-0+infj) (nan+nanj) +div (-0-infj) (-0+nanj) (nan+nanj) +div (-0-infj) -infj (nan+nanj) +div (-0-infj) -16j (inf+nanj) +div (-0-infj) -2j (inf+nanj) +div (-0-infj) -0j ZeroDivisionError +div (-0-infj) 0j ZeroDivisionError +div (-0-infj) 2j (-inf+nanj) +div (-0-infj) 16j (-inf+nanj) +div (-0-infj) infj (nan+nanj) +div (-0-infj) nanj (nan+nanj) +div (-0-infj) (2-infj) (nan+nanj) +div (-0-infj) (2-16j) (inf-infj) +div (-0-infj) (2-2j) (inf-infj) +div (-0-infj) (2-0j) (nan-infj) +div (-0-infj) (2+0j) (nan-infj) +div (-0-infj) (2+2j) (-inf-infj) +div (-0-infj) (2+16j) (-inf-infj) +div (-0-infj) (2+infj) (nan+nanj) +div (-0-infj) (2+nanj) (nan+nanj) +div (-0-infj) (16-infj) (nan+nanj) +div (-0-infj) (16-16j) (inf-infj) +div (-0-infj) (16-2j) (inf-infj) +div (-0-infj) (16-0j) (nan-infj) +div (-0-infj) (16+0j) (nan-infj) +div (-0-infj) (16+2j) (-inf-infj) +div (-0-infj) (16+16j) (-inf-infj) +div (-0-infj) (16+infj) (nan+nanj) +div (-0-infj) (16+nanj) (nan+nanj) +div (-0-infj) (inf-infj) (nan+nanj) +div (-0-infj) (inf-16j) (nan+nanj) +div (-0-infj) (inf-2j) (nan+nanj) +div (-0-infj) (inf-0j) (nan+nanj) +div (-0-infj) (inf+0j) (nan+nanj) +div (-0-infj) (inf+2j) (nan+nanj) +div (-0-infj) (inf+16j) (nan+nanj) +div (-0-infj) (inf+infj) (nan+nanj) +div (-0-infj) (inf+nanj) (nan+nanj) +div (-0-infj) (nan-infj) (nan+nanj) +div (-0-infj) (nan-16j) (nan+nanj) +div (-0-infj) (nan-2j) (nan+nanj) +div (-0-infj) (nan-0j) (nan+nanj) +div (-0-infj) (nan+0j) (nan+nanj) +div (-0-infj) (nan+2j) (nan+nanj) +div (-0-infj) (nan+16j) (nan+nanj) +div (-0-infj) (nan+infj) (nan+nanj) +div (-0-infj) (nan+nanj) (nan+nanj) +div (-0-16j) (-inf-infj) (nan+nanj) +div (-0-16j) (-inf-16j) 0j +div (-0-16j) (-inf-2j) 0j +div (-0-16j) (-inf-0j) 0j +div (-0-16j) (-inf+0j) (-0+0j) +div (-0-16j) (-inf+2j) (-0+0j) +div (-0-16j) (-inf+16j) (-0+0j) +div (-0-16j) (-inf+infj) (nan+nanj) +div (-0-16j) (-inf+nanj) (nan+nanj) +div (-0-16j) (-16-infj) -0j +div (-0-16j) (-16-16j) (0.5+0.5j) +div (-0-16j) (-16-2j) (0.123076923077+0.984615384615j) +div (-0-16j) (-16-0j) 1j +div (-0-16j) (-16+0j) (-0+1j) +div (-0-16j) (-16+2j) (-0.123076923077+0.984615384615j) +div (-0-16j) (-16+16j) (-0.5+0.5j) +div (-0-16j) (-16+infj) (-0+0j) +div (-0-16j) (-16+nanj) (nan+nanj) +div (-0-16j) (-2-infj) -0j +div (-0-16j) (-2-16j) (0.984615384615+0.123076923077j) +div (-0-16j) (-2-2j) (4+4j) +div (-0-16j) (-2-0j) 8j +div (-0-16j) (-2+0j) (-0+8j) +div (-0-16j) (-2+2j) (-4+4j) +div (-0-16j) (-2+16j) (-0.984615384615+0.123076923077j) +div (-0-16j) (-2+infj) (-0+0j) +div (-0-16j) (-2+nanj) (nan+nanj) +div (-0-16j) (-0-infj) -0j +div (-0-16j) (-0-16j) (1-0j) +div (-0-16j) (-0-2j) (8-0j) +div (-0-16j) (-0-0j) ZeroDivisionError +div (-0-16j) (-0+0j) ZeroDivisionError +div (-0-16j) (-0+2j) (-8+0j) +div (-0-16j) (-0+16j) (-1+0j) +div (-0-16j) (-0+infj) (-0+0j) +div (-0-16j) (-0+nanj) (nan+nanj) +div (-0-16j) -infj -0j +div (-0-16j) -16j (1-0j) +div (-0-16j) -2j (8-0j) +div (-0-16j) -0j ZeroDivisionError +div (-0-16j) 0j ZeroDivisionError +div (-0-16j) 2j (-8+0j) +div (-0-16j) 16j (-1+0j) +div (-0-16j) infj (-0+0j) +div (-0-16j) nanj (nan+nanj) +div (-0-16j) (2-infj) -0j +div (-0-16j) (2-16j) (0.984615384615-0.123076923077j) +div (-0-16j) (2-2j) (4-4j) +div (-0-16j) (2-0j) -8j +div (-0-16j) (2+0j) (-0-8j) +div (-0-16j) (2+2j) (-4-4j) +div (-0-16j) (2+16j) (-0.984615384615-0.123076923077j) +div (-0-16j) (2+infj) (-0+0j) +div (-0-16j) (2+nanj) (nan+nanj) +div (-0-16j) (16-infj) -0j +div (-0-16j) (16-16j) (0.5-0.5j) +div (-0-16j) (16-2j) (0.123076923077-0.984615384615j) +div (-0-16j) (16-0j) -1j +div (-0-16j) (16+0j) (-0-1j) +div (-0-16j) (16+2j) (-0.123076923077-0.984615384615j) +div (-0-16j) (16+16j) (-0.5-0.5j) +div (-0-16j) (16+infj) (-0+0j) +div (-0-16j) (16+nanj) (nan+nanj) +div (-0-16j) (inf-infj) (nan+nanj) +div (-0-16j) (inf-16j) -0j +div (-0-16j) (inf-2j) -0j +div (-0-16j) (inf-0j) -0j +div (-0-16j) (inf+0j) (-0-0j) +div (-0-16j) (inf+2j) (-0-0j) +div (-0-16j) (inf+16j) (-0-0j) +div (-0-16j) (inf+infj) (nan+nanj) +div (-0-16j) (inf+nanj) (nan+nanj) +div (-0-16j) (nan-infj) (nan+nanj) +div (-0-16j) (nan-16j) (nan+nanj) +div (-0-16j) (nan-2j) (nan+nanj) +div (-0-16j) (nan-0j) (nan+nanj) +div (-0-16j) (nan+0j) (nan+nanj) +div (-0-16j) (nan+2j) (nan+nanj) +div (-0-16j) (nan+16j) (nan+nanj) +div (-0-16j) (nan+infj) (nan+nanj) +div (-0-16j) (nan+nanj) (nan+nanj) +div (-0-2j) (-inf-infj) (nan+nanj) +div (-0-2j) (-inf-16j) 0j +div (-0-2j) (-inf-2j) 0j +div (-0-2j) (-inf-0j) 0j +div (-0-2j) (-inf+0j) (-0+0j) +div (-0-2j) (-inf+2j) (-0+0j) +div (-0-2j) (-inf+16j) (-0+0j) +div (-0-2j) (-inf+infj) (nan+nanj) +div (-0-2j) (-inf+nanj) (nan+nanj) +div (-0-2j) (-16-infj) -0j +div (-0-2j) (-16-16j) (0.0625+0.0625j) +div (-0-2j) (-16-2j) (0.0153846153846+0.123076923077j) +div (-0-2j) (-16-0j) 0.125j +div (-0-2j) (-16+0j) (-0+0.125j) +div (-0-2j) (-16+2j) (-0.0153846153846+0.123076923077j) +div (-0-2j) (-16+16j) (-0.0625+0.0625j) +div (-0-2j) (-16+infj) (-0+0j) +div (-0-2j) (-16+nanj) (nan+nanj) +div (-0-2j) (-2-infj) -0j +div (-0-2j) (-2-16j) (0.123076923077+0.0153846153846j) +div (-0-2j) (-2-2j) (0.5+0.5j) +div (-0-2j) (-2-0j) 1j +div (-0-2j) (-2+0j) (-0+1j) +div (-0-2j) (-2+2j) (-0.5+0.5j) +div (-0-2j) (-2+16j) (-0.123076923077+0.0153846153846j) +div (-0-2j) (-2+infj) (-0+0j) +div (-0-2j) (-2+nanj) (nan+nanj) +div (-0-2j) (-0-infj) -0j +div (-0-2j) (-0-16j) (0.125-0j) +div (-0-2j) (-0-2j) (1-0j) +div (-0-2j) (-0-0j) ZeroDivisionError +div (-0-2j) (-0+0j) ZeroDivisionError +div (-0-2j) (-0+2j) (-1+0j) +div (-0-2j) (-0+16j) (-0.125+0j) +div (-0-2j) (-0+infj) (-0+0j) +div (-0-2j) (-0+nanj) (nan+nanj) +div (-0-2j) -infj -0j +div (-0-2j) -16j (0.125-0j) +div (-0-2j) -2j (1-0j) +div (-0-2j) -0j ZeroDivisionError +div (-0-2j) 0j ZeroDivisionError +div (-0-2j) 2j (-1+0j) +div (-0-2j) 16j (-0.125+0j) +div (-0-2j) infj (-0+0j) +div (-0-2j) nanj (nan+nanj) +div (-0-2j) (2-infj) -0j +div (-0-2j) (2-16j) (0.123076923077-0.0153846153846j) +div (-0-2j) (2-2j) (0.5-0.5j) +div (-0-2j) (2-0j) -1j +div (-0-2j) (2+0j) (-0-1j) +div (-0-2j) (2+2j) (-0.5-0.5j) +div (-0-2j) (2+16j) (-0.123076923077-0.0153846153846j) +div (-0-2j) (2+infj) (-0+0j) +div (-0-2j) (2+nanj) (nan+nanj) +div (-0-2j) (16-infj) -0j +div (-0-2j) (16-16j) (0.0625-0.0625j) +div (-0-2j) (16-2j) (0.0153846153846-0.123076923077j) +div (-0-2j) (16-0j) -0.125j +div (-0-2j) (16+0j) (-0-0.125j) +div (-0-2j) (16+2j) (-0.0153846153846-0.123076923077j) +div (-0-2j) (16+16j) (-0.0625-0.0625j) +div (-0-2j) (16+infj) (-0+0j) +div (-0-2j) (16+nanj) (nan+nanj) +div (-0-2j) (inf-infj) (nan+nanj) +div (-0-2j) (inf-16j) -0j +div (-0-2j) (inf-2j) -0j +div (-0-2j) (inf-0j) -0j +div (-0-2j) (inf+0j) (-0-0j) +div (-0-2j) (inf+2j) (-0-0j) +div (-0-2j) (inf+16j) (-0-0j) +div (-0-2j) (inf+infj) (nan+nanj) +div (-0-2j) (inf+nanj) (nan+nanj) +div (-0-2j) (nan-infj) (nan+nanj) +div (-0-2j) (nan-16j) (nan+nanj) +div (-0-2j) (nan-2j) (nan+nanj) +div (-0-2j) (nan-0j) (nan+nanj) +div (-0-2j) (nan+0j) (nan+nanj) +div (-0-2j) (nan+2j) (nan+nanj) +div (-0-2j) (nan+16j) (nan+nanj) +div (-0-2j) (nan+infj) (nan+nanj) +div (-0-2j) (nan+nanj) (nan+nanj) +div (-0-0j) (-inf-infj) (nan+nanj) +div (-0-0j) (-inf-16j) -0j +div (-0-0j) (-inf-2j) -0j +div (-0-0j) (-inf-0j) -0j +div (-0-0j) (-inf+0j) (-0+0j) +div (-0-0j) (-inf+2j) (-0+0j) +div (-0-0j) (-inf+16j) (-0+0j) +div (-0-0j) (-inf+infj) (nan+nanj) +div (-0-0j) (-inf+nanj) (nan+nanj) +div (-0-0j) (-16-infj) -0j +div (-0-0j) (-16-16j) -0j +div (-0-0j) (-16-2j) -0j +div (-0-0j) (-16-0j) -0j +div (-0-0j) (-16+0j) (-0+0j) +div (-0-0j) (-16+2j) (-0+0j) +div (-0-0j) (-16+16j) (-0+0j) +div (-0-0j) (-16+infj) 0j +div (-0-0j) (-16+nanj) (nan+nanj) +div (-0-0j) (-2-infj) -0j +div (-0-0j) (-2-16j) -0j +div (-0-0j) (-2-2j) -0j +div (-0-0j) (-2-0j) -0j +div (-0-0j) (-2+0j) (-0+0j) +div (-0-0j) (-2+2j) (-0+0j) +div (-0-0j) (-2+16j) 0j +div (-0-0j) (-2+infj) 0j +div (-0-0j) (-2+nanj) (nan+nanj) +div (-0-0j) (-0-infj) -0j +div (-0-0j) (-0-16j) -0j +div (-0-0j) (-0-2j) -0j +div (-0-0j) (-0-0j) ZeroDivisionError +div (-0-0j) (-0+0j) ZeroDivisionError +div (-0-0j) (-0+2j) 0j +div (-0-0j) (-0+16j) 0j +div (-0-0j) (-0+infj) 0j +div (-0-0j) (-0+nanj) (nan+nanj) +div (-0-0j) -infj (-0-0j) +div (-0-0j) -16j (-0-0j) +div (-0-0j) -2j (-0-0j) +div (-0-0j) -0j ZeroDivisionError +div (-0-0j) 0j ZeroDivisionError +div (-0-0j) 2j (-0+0j) +div (-0-0j) 16j (-0+0j) +div (-0-0j) infj (-0+0j) +div (-0-0j) nanj (nan+nanj) +div (-0-0j) (2-infj) (-0-0j) +div (-0-0j) (2-16j) (-0-0j) +div (-0-0j) (2-2j) -0j +div (-0-0j) (2-0j) -0j +div (-0-0j) (2+0j) (-0+0j) +div (-0-0j) (2+2j) (-0+0j) +div (-0-0j) (2+16j) (-0+0j) +div (-0-0j) (2+infj) (-0+0j) +div (-0-0j) (2+nanj) (nan+nanj) +div (-0-0j) (16-infj) (-0-0j) +div (-0-0j) (16-16j) -0j +div (-0-0j) (16-2j) -0j +div (-0-0j) (16-0j) -0j +div (-0-0j) (16+0j) (-0+0j) +div (-0-0j) (16+2j) (-0+0j) +div (-0-0j) (16+16j) (-0+0j) +div (-0-0j) (16+infj) (-0+0j) +div (-0-0j) (16+nanj) (nan+nanj) +div (-0-0j) (inf-infj) (nan+nanj) +div (-0-0j) (inf-16j) -0j +div (-0-0j) (inf-2j) -0j +div (-0-0j) (inf-0j) -0j +div (-0-0j) (inf+0j) (-0+0j) +div (-0-0j) (inf+2j) (-0+0j) +div (-0-0j) (inf+16j) (-0+0j) +div (-0-0j) (inf+infj) (nan+nanj) +div (-0-0j) (inf+nanj) (nan+nanj) +div (-0-0j) (nan-infj) (nan+nanj) +div (-0-0j) (nan-16j) (nan+nanj) +div (-0-0j) (nan-2j) (nan+nanj) +div (-0-0j) (nan-0j) (nan+nanj) +div (-0-0j) (nan+0j) (nan+nanj) +div (-0-0j) (nan+2j) (nan+nanj) +div (-0-0j) (nan+16j) (nan+nanj) +div (-0-0j) (nan+infj) (nan+nanj) +div (-0-0j) (nan+nanj) (nan+nanj) +div (-0+0j) (-inf-infj) (nan+nanj) +div (-0+0j) (-inf-16j) (-0-0j) +div (-0+0j) (-inf-2j) (-0-0j) +div (-0+0j) (-inf-0j) (-0-0j) +div (-0+0j) (-inf+0j) -0j +div (-0+0j) (-inf+2j) -0j +div (-0+0j) (-inf+16j) -0j +div (-0+0j) (-inf+infj) (nan+nanj) +div (-0+0j) (-inf+nanj) (nan+nanj) +div (-0+0j) (-16-infj) (-0-0j) +div (-0+0j) (-16-16j) (-0-0j) +div (-0+0j) (-16-2j) (-0-0j) +div (-0+0j) (-16-0j) (-0-0j) +div (-0+0j) (-16+0j) -0j +div (-0+0j) (-16+2j) -0j +div (-0+0j) (-16+16j) -0j +div (-0+0j) (-16+infj) 0j +div (-0+0j) (-16+nanj) (nan+nanj) +div (-0+0j) (-2-infj) (-0-0j) +div (-0+0j) (-2-16j) (-0-0j) +div (-0+0j) (-2-2j) (-0-0j) +div (-0+0j) (-2-0j) (-0-0j) +div (-0+0j) (-2+0j) -0j +div (-0+0j) (-2+2j) -0j +div (-0+0j) (-2+16j) 0j +div (-0+0j) (-2+infj) 0j +div (-0+0j) (-2+nanj) (nan+nanj) +div (-0+0j) (-0-infj) (-0-0j) +div (-0+0j) (-0-16j) (-0-0j) +div (-0+0j) (-0-2j) (-0-0j) +div (-0+0j) (-0-0j) ZeroDivisionError +div (-0+0j) (-0+0j) ZeroDivisionError +div (-0+0j) (-0+2j) 0j +div (-0+0j) (-0+16j) 0j +div (-0+0j) (-0+infj) 0j +div (-0+0j) (-0+nanj) (nan+nanj) +div (-0+0j) -infj (-0-0j) +div (-0+0j) -16j (-0-0j) +div (-0+0j) -2j (-0-0j) +div (-0+0j) -0j ZeroDivisionError +div (-0+0j) 0j ZeroDivisionError +div (-0+0j) 2j 0j +div (-0+0j) 16j 0j +div (-0+0j) infj 0j +div (-0+0j) nanj (nan+nanj) +div (-0+0j) (2-infj) (-0-0j) +div (-0+0j) (2-16j) (-0-0j) +div (-0+0j) (2-2j) (-0+0j) +div (-0+0j) (2-0j) (-0+0j) +div (-0+0j) (2+0j) 0j +div (-0+0j) (2+2j) 0j +div (-0+0j) (2+16j) 0j +div (-0+0j) (2+infj) 0j +div (-0+0j) (2+nanj) (nan+nanj) +div (-0+0j) (16-infj) (-0-0j) +div (-0+0j) (16-16j) (-0+0j) +div (-0+0j) (16-2j) (-0+0j) +div (-0+0j) (16-0j) (-0+0j) +div (-0+0j) (16+0j) 0j +div (-0+0j) (16+2j) 0j +div (-0+0j) (16+16j) 0j +div (-0+0j) (16+infj) 0j +div (-0+0j) (16+nanj) (nan+nanj) +div (-0+0j) (inf-infj) (nan+nanj) +div (-0+0j) (inf-16j) (-0+0j) +div (-0+0j) (inf-2j) (-0+0j) +div (-0+0j) (inf-0j) (-0+0j) +div (-0+0j) (inf+0j) 0j +div (-0+0j) (inf+2j) 0j +div (-0+0j) (inf+16j) 0j +div (-0+0j) (inf+infj) (nan+nanj) +div (-0+0j) (inf+nanj) (nan+nanj) +div (-0+0j) (nan-infj) (nan+nanj) +div (-0+0j) (nan-16j) (nan+nanj) +div (-0+0j) (nan-2j) (nan+nanj) +div (-0+0j) (nan-0j) (nan+nanj) +div (-0+0j) (nan+0j) (nan+nanj) +div (-0+0j) (nan+2j) (nan+nanj) +div (-0+0j) (nan+16j) (nan+nanj) +div (-0+0j) (nan+infj) (nan+nanj) +div (-0+0j) (nan+nanj) (nan+nanj) +div (-0+2j) (-inf-infj) (nan+nanj) +div (-0+2j) (-inf-16j) (-0-0j) +div (-0+2j) (-inf-2j) (-0-0j) +div (-0+2j) (-inf-0j) (-0-0j) +div (-0+2j) (-inf+0j) -0j +div (-0+2j) (-inf+2j) -0j +div (-0+2j) (-inf+16j) -0j +div (-0+2j) (-inf+infj) (nan+nanj) +div (-0+2j) (-inf+nanj) (nan+nanj) +div (-0+2j) (-16-infj) (-0-0j) +div (-0+2j) (-16-16j) (-0.0625-0.0625j) +div (-0+2j) (-16-2j) (-0.0153846153846-0.123076923077j) +div (-0+2j) (-16-0j) (-0-0.125j) +div (-0+2j) (-16+0j) -0.125j +div (-0+2j) (-16+2j) (0.0153846153846-0.123076923077j) +div (-0+2j) (-16+16j) (0.0625-0.0625j) +div (-0+2j) (-16+infj) 0j +div (-0+2j) (-16+nanj) (nan+nanj) +div (-0+2j) (-2-infj) (-0-0j) +div (-0+2j) (-2-16j) (-0.123076923077-0.0153846153846j) +div (-0+2j) (-2-2j) (-0.5-0.5j) +div (-0+2j) (-2-0j) (-0-1j) +div (-0+2j) (-2+0j) -1j +div (-0+2j) (-2+2j) (0.5-0.5j) +div (-0+2j) (-2+16j) (0.123076923077-0.0153846153846j) +div (-0+2j) (-2+infj) 0j +div (-0+2j) (-2+nanj) (nan+nanj) +div (-0+2j) (-0-infj) (-0-0j) +div (-0+2j) (-0-16j) (-0.125-0j) +div (-0+2j) (-0-2j) (-1-0j) +div (-0+2j) (-0-0j) ZeroDivisionError +div (-0+2j) (-0+0j) ZeroDivisionError +div (-0+2j) (-0+2j) (1+0j) +div (-0+2j) (-0+16j) (0.125+0j) +div (-0+2j) (-0+infj) 0j +div (-0+2j) (-0+nanj) (nan+nanj) +div (-0+2j) -infj (-0-0j) +div (-0+2j) -16j (-0.125-0j) +div (-0+2j) -2j (-1-0j) +div (-0+2j) -0j ZeroDivisionError +div (-0+2j) 0j ZeroDivisionError +div (-0+2j) 2j (1+0j) +div (-0+2j) 16j (0.125+0j) +div (-0+2j) infj 0j +div (-0+2j) nanj (nan+nanj) +div (-0+2j) (2-infj) (-0-0j) +div (-0+2j) (2-16j) (-0.123076923077+0.0153846153846j) +div (-0+2j) (2-2j) (-0.5+0.5j) +div (-0+2j) (2-0j) (-0+1j) +div (-0+2j) (2+0j) 1j +div (-0+2j) (2+2j) (0.5+0.5j) +div (-0+2j) (2+16j) (0.123076923077+0.0153846153846j) +div (-0+2j) (2+infj) 0j +div (-0+2j) (2+nanj) (nan+nanj) +div (-0+2j) (16-infj) (-0-0j) +div (-0+2j) (16-16j) (-0.0625+0.0625j) +div (-0+2j) (16-2j) (-0.0153846153846+0.123076923077j) +div (-0+2j) (16-0j) (-0+0.125j) +div (-0+2j) (16+0j) 0.125j +div (-0+2j) (16+2j) (0.0153846153846+0.123076923077j) +div (-0+2j) (16+16j) (0.0625+0.0625j) +div (-0+2j) (16+infj) 0j +div (-0+2j) (16+nanj) (nan+nanj) +div (-0+2j) (inf-infj) (nan+nanj) +div (-0+2j) (inf-16j) (-0+0j) +div (-0+2j) (inf-2j) (-0+0j) +div (-0+2j) (inf-0j) (-0+0j) +div (-0+2j) (inf+0j) 0j +div (-0+2j) (inf+2j) 0j +div (-0+2j) (inf+16j) 0j +div (-0+2j) (inf+infj) (nan+nanj) +div (-0+2j) (inf+nanj) (nan+nanj) +div (-0+2j) (nan-infj) (nan+nanj) +div (-0+2j) (nan-16j) (nan+nanj) +div (-0+2j) (nan-2j) (nan+nanj) +div (-0+2j) (nan-0j) (nan+nanj) +div (-0+2j) (nan+0j) (nan+nanj) +div (-0+2j) (nan+2j) (nan+nanj) +div (-0+2j) (nan+16j) (nan+nanj) +div (-0+2j) (nan+infj) (nan+nanj) +div (-0+2j) (nan+nanj) (nan+nanj) +div (-0+16j) (-inf-infj) (nan+nanj) +div (-0+16j) (-inf-16j) (-0-0j) +div (-0+16j) (-inf-2j) (-0-0j) +div (-0+16j) (-inf-0j) (-0-0j) +div (-0+16j) (-inf+0j) -0j +div (-0+16j) (-inf+2j) -0j +div (-0+16j) (-inf+16j) -0j +div (-0+16j) (-inf+infj) (nan+nanj) +div (-0+16j) (-inf+nanj) (nan+nanj) +div (-0+16j) (-16-infj) (-0-0j) +div (-0+16j) (-16-16j) (-0.5-0.5j) +div (-0+16j) (-16-2j) (-0.123076923077-0.984615384615j) +div (-0+16j) (-16-0j) (-0-1j) +div (-0+16j) (-16+0j) -1j +div (-0+16j) (-16+2j) (0.123076923077-0.984615384615j) +div (-0+16j) (-16+16j) (0.5-0.5j) +div (-0+16j) (-16+infj) 0j +div (-0+16j) (-16+nanj) (nan+nanj) +div (-0+16j) (-2-infj) (-0-0j) +div (-0+16j) (-2-16j) (-0.984615384615-0.123076923077j) +div (-0+16j) (-2-2j) (-4-4j) +div (-0+16j) (-2-0j) (-0-8j) +div (-0+16j) (-2+0j) -8j +div (-0+16j) (-2+2j) (4-4j) +div (-0+16j) (-2+16j) (0.984615384615-0.123076923077j) +div (-0+16j) (-2+infj) 0j +div (-0+16j) (-2+nanj) (nan+nanj) +div (-0+16j) (-0-infj) (-0-0j) +div (-0+16j) (-0-16j) (-1-0j) +div (-0+16j) (-0-2j) (-8-0j) +div (-0+16j) (-0-0j) ZeroDivisionError +div (-0+16j) (-0+0j) ZeroDivisionError +div (-0+16j) (-0+2j) (8+0j) +div (-0+16j) (-0+16j) (1+0j) +div (-0+16j) (-0+infj) 0j +div (-0+16j) (-0+nanj) (nan+nanj) +div (-0+16j) -infj (-0-0j) +div (-0+16j) -16j (-1-0j) +div (-0+16j) -2j (-8-0j) +div (-0+16j) -0j ZeroDivisionError +div (-0+16j) 0j ZeroDivisionError +div (-0+16j) 2j (8+0j) +div (-0+16j) 16j (1+0j) +div (-0+16j) infj 0j +div (-0+16j) nanj (nan+nanj) +div (-0+16j) (2-infj) (-0-0j) +div (-0+16j) (2-16j) (-0.984615384615+0.123076923077j) +div (-0+16j) (2-2j) (-4+4j) +div (-0+16j) (2-0j) (-0+8j) +div (-0+16j) (2+0j) 8j +div (-0+16j) (2+2j) (4+4j) +div (-0+16j) (2+16j) (0.984615384615+0.123076923077j) +div (-0+16j) (2+infj) 0j +div (-0+16j) (2+nanj) (nan+nanj) +div (-0+16j) (16-infj) (-0-0j) +div (-0+16j) (16-16j) (-0.5+0.5j) +div (-0+16j) (16-2j) (-0.123076923077+0.984615384615j) +div (-0+16j) (16-0j) (-0+1j) +div (-0+16j) (16+0j) 1j +div (-0+16j) (16+2j) (0.123076923077+0.984615384615j) +div (-0+16j) (16+16j) (0.5+0.5j) +div (-0+16j) (16+infj) 0j +div (-0+16j) (16+nanj) (nan+nanj) +div (-0+16j) (inf-infj) (nan+nanj) +div (-0+16j) (inf-16j) (-0+0j) +div (-0+16j) (inf-2j) (-0+0j) +div (-0+16j) (inf-0j) (-0+0j) +div (-0+16j) (inf+0j) 0j +div (-0+16j) (inf+2j) 0j +div (-0+16j) (inf+16j) 0j +div (-0+16j) (inf+infj) (nan+nanj) +div (-0+16j) (inf+nanj) (nan+nanj) +div (-0+16j) (nan-infj) (nan+nanj) +div (-0+16j) (nan-16j) (nan+nanj) +div (-0+16j) (nan-2j) (nan+nanj) +div (-0+16j) (nan-0j) (nan+nanj) +div (-0+16j) (nan+0j) (nan+nanj) +div (-0+16j) (nan+2j) (nan+nanj) +div (-0+16j) (nan+16j) (nan+nanj) +div (-0+16j) (nan+infj) (nan+nanj) +div (-0+16j) (nan+nanj) (nan+nanj) +div (-0+infj) (-inf-infj) (nan+nanj) +div (-0+infj) (-inf-16j) (nan+nanj) +div (-0+infj) (-inf-2j) (nan+nanj) +div (-0+infj) (-inf-0j) (nan+nanj) +div (-0+infj) (-inf+0j) (nan+nanj) +div (-0+infj) (-inf+2j) (nan+nanj) +div (-0+infj) (-inf+16j) (nan+nanj) +div (-0+infj) (-inf+infj) (nan+nanj) +div (-0+infj) (-inf+nanj) (nan+nanj) +div (-0+infj) (-16-infj) (nan+nanj) +div (-0+infj) (-16-16j) (-inf-infj) +div (-0+infj) (-16-2j) (-inf-infj) +div (-0+infj) (-16-0j) (nan-infj) +div (-0+infj) (-16+0j) (nan-infj) +div (-0+infj) (-16+2j) (inf-infj) +div (-0+infj) (-16+16j) (inf-infj) +div (-0+infj) (-16+infj) (nan+nanj) +div (-0+infj) (-16+nanj) (nan+nanj) +div (-0+infj) (-2-infj) (nan+nanj) +div (-0+infj) (-2-16j) (-inf-infj) +div (-0+infj) (-2-2j) (-inf-infj) +div (-0+infj) (-2-0j) (nan-infj) +div (-0+infj) (-2+0j) (nan-infj) +div (-0+infj) (-2+2j) (inf-infj) +div (-0+infj) (-2+16j) (inf-infj) +div (-0+infj) (-2+infj) (nan+nanj) +div (-0+infj) (-2+nanj) (nan+nanj) +div (-0+infj) (-0-infj) (nan+nanj) +div (-0+infj) (-0-16j) (-inf+nanj) +div (-0+infj) (-0-2j) (-inf+nanj) +div (-0+infj) (-0-0j) ZeroDivisionError +div (-0+infj) (-0+0j) ZeroDivisionError +div (-0+infj) (-0+2j) (inf+nanj) +div (-0+infj) (-0+16j) (inf+nanj) +div (-0+infj) (-0+infj) (nan+nanj) +div (-0+infj) (-0+nanj) (nan+nanj) +div (-0+infj) -infj (nan+nanj) +div (-0+infj) -16j (-inf+nanj) +div (-0+infj) -2j (-inf+nanj) +div (-0+infj) -0j ZeroDivisionError +div (-0+infj) 0j ZeroDivisionError +div (-0+infj) 2j (inf+nanj) +div (-0+infj) 16j (inf+nanj) +div (-0+infj) infj (nan+nanj) +div (-0+infj) nanj (nan+nanj) +div (-0+infj) (2-infj) (nan+nanj) +div (-0+infj) (2-16j) (-inf+infj) +div (-0+infj) (2-2j) (-inf+infj) +div (-0+infj) (2-0j) (nan+infj) +div (-0+infj) (2+0j) (nan+infj) +div (-0+infj) (2+2j) (inf+infj) +div (-0+infj) (2+16j) (inf+infj) +div (-0+infj) (2+infj) (nan+nanj) +div (-0+infj) (2+nanj) (nan+nanj) +div (-0+infj) (16-infj) (nan+nanj) +div (-0+infj) (16-16j) (-inf+infj) +div (-0+infj) (16-2j) (-inf+infj) +div (-0+infj) (16-0j) (nan+infj) +div (-0+infj) (16+0j) (nan+infj) +div (-0+infj) (16+2j) (inf+infj) +div (-0+infj) (16+16j) (inf+infj) +div (-0+infj) (16+infj) (nan+nanj) +div (-0+infj) (16+nanj) (nan+nanj) +div (-0+infj) (inf-infj) (nan+nanj) +div (-0+infj) (inf-16j) (nan+nanj) +div (-0+infj) (inf-2j) (nan+nanj) +div (-0+infj) (inf-0j) (nan+nanj) +div (-0+infj) (inf+0j) (nan+nanj) +div (-0+infj) (inf+2j) (nan+nanj) +div (-0+infj) (inf+16j) (nan+nanj) +div (-0+infj) (inf+infj) (nan+nanj) +div (-0+infj) (inf+nanj) (nan+nanj) +div (-0+infj) (nan-infj) (nan+nanj) +div (-0+infj) (nan-16j) (nan+nanj) +div (-0+infj) (nan-2j) (nan+nanj) +div (-0+infj) (nan-0j) (nan+nanj) +div (-0+infj) (nan+0j) (nan+nanj) +div (-0+infj) (nan+2j) (nan+nanj) +div (-0+infj) (nan+16j) (nan+nanj) +div (-0+infj) (nan+infj) (nan+nanj) +div (-0+infj) (nan+nanj) (nan+nanj) +div (-0+nanj) (-inf-infj) (nan+nanj) +div (-0+nanj) (-inf-16j) (nan+nanj) +div (-0+nanj) (-inf-2j) (nan+nanj) +div (-0+nanj) (-inf-0j) (nan+nanj) +div (-0+nanj) (-inf+0j) (nan+nanj) +div (-0+nanj) (-inf+2j) (nan+nanj) +div (-0+nanj) (-inf+16j) (nan+nanj) +div (-0+nanj) (-inf+infj) (nan+nanj) +div (-0+nanj) (-inf+nanj) (nan+nanj) +div (-0+nanj) (-16-infj) (nan+nanj) +div (-0+nanj) (-16-16j) (nan+nanj) +div (-0+nanj) (-16-2j) (nan+nanj) +div (-0+nanj) (-16-0j) (nan+nanj) +div (-0+nanj) (-16+0j) (nan+nanj) +div (-0+nanj) (-16+2j) (nan+nanj) +div (-0+nanj) (-16+16j) (nan+nanj) +div (-0+nanj) (-16+infj) (nan+nanj) +div (-0+nanj) (-16+nanj) (nan+nanj) +div (-0+nanj) (-2-infj) (nan+nanj) +div (-0+nanj) (-2-16j) (nan+nanj) +div (-0+nanj) (-2-2j) (nan+nanj) +div (-0+nanj) (-2-0j) (nan+nanj) +div (-0+nanj) (-2+0j) (nan+nanj) +div (-0+nanj) (-2+2j) (nan+nanj) +div (-0+nanj) (-2+16j) (nan+nanj) +div (-0+nanj) (-2+infj) (nan+nanj) +div (-0+nanj) (-2+nanj) (nan+nanj) +div (-0+nanj) (-0-infj) (nan+nanj) +div (-0+nanj) (-0-16j) (nan+nanj) +div (-0+nanj) (-0-2j) (nan+nanj) +div (-0+nanj) (-0-0j) ZeroDivisionError +div (-0+nanj) (-0+0j) ZeroDivisionError +div (-0+nanj) (-0+2j) (nan+nanj) +div (-0+nanj) (-0+16j) (nan+nanj) +div (-0+nanj) (-0+infj) (nan+nanj) +div (-0+nanj) (-0+nanj) (nan+nanj) +div (-0+nanj) -infj (nan+nanj) +div (-0+nanj) -16j (nan+nanj) +div (-0+nanj) -2j (nan+nanj) +div (-0+nanj) -0j ZeroDivisionError +div (-0+nanj) 0j ZeroDivisionError +div (-0+nanj) 2j (nan+nanj) +div (-0+nanj) 16j (nan+nanj) +div (-0+nanj) infj (nan+nanj) +div (-0+nanj) nanj (nan+nanj) +div (-0+nanj) (2-infj) (nan+nanj) +div (-0+nanj) (2-16j) (nan+nanj) +div (-0+nanj) (2-2j) (nan+nanj) +div (-0+nanj) (2-0j) (nan+nanj) +div (-0+nanj) (2+0j) (nan+nanj) +div (-0+nanj) (2+2j) (nan+nanj) +div (-0+nanj) (2+16j) (nan+nanj) +div (-0+nanj) (2+infj) (nan+nanj) +div (-0+nanj) (2+nanj) (nan+nanj) +div (-0+nanj) (16-infj) (nan+nanj) +div (-0+nanj) (16-16j) (nan+nanj) +div (-0+nanj) (16-2j) (nan+nanj) +div (-0+nanj) (16-0j) (nan+nanj) +div (-0+nanj) (16+0j) (nan+nanj) +div (-0+nanj) (16+2j) (nan+nanj) +div (-0+nanj) (16+16j) (nan+nanj) +div (-0+nanj) (16+infj) (nan+nanj) +div (-0+nanj) (16+nanj) (nan+nanj) +div (-0+nanj) (inf-infj) (nan+nanj) +div (-0+nanj) (inf-16j) (nan+nanj) +div (-0+nanj) (inf-2j) (nan+nanj) +div (-0+nanj) (inf-0j) (nan+nanj) +div (-0+nanj) (inf+0j) (nan+nanj) +div (-0+nanj) (inf+2j) (nan+nanj) +div (-0+nanj) (inf+16j) (nan+nanj) +div (-0+nanj) (inf+infj) (nan+nanj) +div (-0+nanj) (inf+nanj) (nan+nanj) +div (-0+nanj) (nan-infj) (nan+nanj) +div (-0+nanj) (nan-16j) (nan+nanj) +div (-0+nanj) (nan-2j) (nan+nanj) +div (-0+nanj) (nan-0j) (nan+nanj) +div (-0+nanj) (nan+0j) (nan+nanj) +div (-0+nanj) (nan+2j) (nan+nanj) +div (-0+nanj) (nan+16j) (nan+nanj) +div (-0+nanj) (nan+infj) (nan+nanj) +div (-0+nanj) (nan+nanj) (nan+nanj) +div -infj (-inf-infj) (nan+nanj) +div -infj (-inf-16j) (nan+nanj) +div -infj (-inf-2j) (nan+nanj) +div -infj (-inf-0j) (nan+nanj) +div -infj (-inf+0j) (nan+nanj) +div -infj (-inf+2j) (nan+nanj) +div -infj (-inf+16j) (nan+nanj) +div -infj (-inf+infj) (nan+nanj) +div -infj (-inf+nanj) (nan+nanj) +div -infj (-16-infj) (nan+nanj) +div -infj (-16-16j) (inf+infj) +div -infj (-16-2j) (inf+infj) +div -infj (-16-0j) (nan+infj) +div -infj (-16+0j) (nan+infj) +div -infj (-16+2j) (-inf+infj) +div -infj (-16+16j) (-inf+infj) +div -infj (-16+infj) (nan+nanj) +div -infj (-16+nanj) (nan+nanj) +div -infj (-2-infj) (nan+nanj) +div -infj (-2-16j) (inf+infj) +div -infj (-2-2j) (inf+infj) +div -infj (-2-0j) (nan+infj) +div -infj (-2+0j) (nan+infj) +div -infj (-2+2j) (-inf+infj) +div -infj (-2+16j) (-inf+infj) +div -infj (-2+infj) (nan+nanj) +div -infj (-2+nanj) (nan+nanj) +div -infj (-0-infj) (nan+nanj) +div -infj (-0-16j) (inf+nanj) +div -infj (-0-2j) (inf+nanj) +div -infj (-0-0j) ZeroDivisionError +div -infj (-0+0j) ZeroDivisionError +div -infj (-0+2j) (-inf+nanj) +div -infj (-0+16j) (-inf+nanj) +div -infj (-0+infj) (nan+nanj) +div -infj (-0+nanj) (nan+nanj) +div -infj -infj (nan+nanj) +div -infj -16j (inf+nanj) +div -infj -2j (inf+nanj) +div -infj -0j ZeroDivisionError +div -infj 0j ZeroDivisionError +div -infj 2j (-inf+nanj) +div -infj 16j (-inf+nanj) +div -infj infj (nan+nanj) +div -infj nanj (nan+nanj) +div -infj (2-infj) (nan+nanj) +div -infj (2-16j) (inf-infj) +div -infj (2-2j) (inf-infj) +div -infj (2-0j) (nan-infj) +div -infj (2+0j) (nan-infj) +div -infj (2+2j) (-inf-infj) +div -infj (2+16j) (-inf-infj) +div -infj (2+infj) (nan+nanj) +div -infj (2+nanj) (nan+nanj) +div -infj (16-infj) (nan+nanj) +div -infj (16-16j) (inf-infj) +div -infj (16-2j) (inf-infj) +div -infj (16-0j) (nan-infj) +div -infj (16+0j) (nan-infj) +div -infj (16+2j) (-inf-infj) +div -infj (16+16j) (-inf-infj) +div -infj (16+infj) (nan+nanj) +div -infj (16+nanj) (nan+nanj) +div -infj (inf-infj) (nan+nanj) +div -infj (inf-16j) (nan+nanj) +div -infj (inf-2j) (nan+nanj) +div -infj (inf-0j) (nan+nanj) +div -infj (inf+0j) (nan+nanj) +div -infj (inf+2j) (nan+nanj) +div -infj (inf+16j) (nan+nanj) +div -infj (inf+infj) (nan+nanj) +div -infj (inf+nanj) (nan+nanj) +div -infj (nan-infj) (nan+nanj) +div -infj (nan-16j) (nan+nanj) +div -infj (nan-2j) (nan+nanj) +div -infj (nan-0j) (nan+nanj) +div -infj (nan+0j) (nan+nanj) +div -infj (nan+2j) (nan+nanj) +div -infj (nan+16j) (nan+nanj) +div -infj (nan+infj) (nan+nanj) +div -infj (nan+nanj) (nan+nanj) +div -16j (-inf-infj) (nan+nanj) +div -16j (-inf-16j) (-0+0j) +div -16j (-inf-2j) (-0+0j) +div -16j (-inf-0j) (-0+0j) +div -16j (-inf+0j) (-0+0j) +div -16j (-inf+2j) (-0+0j) +div -16j (-inf+16j) (-0+0j) +div -16j (-inf+infj) (nan+nanj) +div -16j (-inf+nanj) (nan+nanj) +div -16j (-16-infj) 0j +div -16j (-16-16j) (0.5+0.5j) +div -16j (-16-2j) (0.123076923077+0.984615384615j) +div -16j (-16-0j) (-0+1j) +div -16j (-16+0j) (-0+1j) +div -16j (-16+2j) (-0.123076923077+0.984615384615j) +div -16j (-16+16j) (-0.5+0.5j) +div -16j (-16+infj) (-0+0j) +div -16j (-16+nanj) (nan+nanj) +div -16j (-2-infj) 0j +div -16j (-2-16j) (0.984615384615+0.123076923077j) +div -16j (-2-2j) (4+4j) +div -16j (-2-0j) (-0+8j) +div -16j (-2+0j) (-0+8j) +div -16j (-2+2j) (-4+4j) +div -16j (-2+16j) (-0.984615384615+0.123076923077j) +div -16j (-2+infj) (-0+0j) +div -16j (-2+nanj) (nan+nanj) +div -16j (-0-infj) 0j +div -16j (-0-16j) (1+0j) +div -16j (-0-2j) (8+0j) +div -16j (-0-0j) ZeroDivisionError +div -16j (-0+0j) ZeroDivisionError +div -16j (-0+2j) (-8+0j) +div -16j (-0+16j) (-1+0j) +div -16j (-0+infj) (-0+0j) +div -16j (-0+nanj) (nan+nanj) +div -16j -infj -0j +div -16j -16j (1-0j) +div -16j -2j (8-0j) +div -16j -0j ZeroDivisionError +div -16j 0j ZeroDivisionError +div -16j 2j (-8-0j) +div -16j 16j (-1-0j) +div -16j infj (-0-0j) +div -16j nanj (nan+nanj) +div -16j (2-infj) -0j +div -16j (2-16j) (0.984615384615-0.123076923077j) +div -16j (2-2j) (4-4j) +div -16j (2-0j) -8j +div -16j (2+0j) -8j +div -16j (2+2j) (-4-4j) +div -16j (2+16j) (-0.984615384615-0.123076923077j) +div -16j (2+infj) (-0-0j) +div -16j (2+nanj) (nan+nanj) +div -16j (16-infj) -0j +div -16j (16-16j) (0.5-0.5j) +div -16j (16-2j) (0.123076923077-0.984615384615j) +div -16j (16-0j) -1j +div -16j (16+0j) -1j +div -16j (16+2j) (-0.123076923077-0.984615384615j) +div -16j (16+16j) (-0.5-0.5j) +div -16j (16+infj) (-0-0j) +div -16j (16+nanj) (nan+nanj) +div -16j (inf-infj) (nan+nanj) +div -16j (inf-16j) -0j +div -16j (inf-2j) -0j +div -16j (inf-0j) -0j +div -16j (inf+0j) -0j +div -16j (inf+2j) -0j +div -16j (inf+16j) -0j +div -16j (inf+infj) (nan+nanj) +div -16j (inf+nanj) (nan+nanj) +div -16j (nan-infj) (nan+nanj) +div -16j (nan-16j) (nan+nanj) +div -16j (nan-2j) (nan+nanj) +div -16j (nan-0j) (nan+nanj) +div -16j (nan+0j) (nan+nanj) +div -16j (nan+2j) (nan+nanj) +div -16j (nan+16j) (nan+nanj) +div -16j (nan+infj) (nan+nanj) +div -16j (nan+nanj) (nan+nanj) +div -2j (-inf-infj) (nan+nanj) +div -2j (-inf-16j) (-0+0j) +div -2j (-inf-2j) (-0+0j) +div -2j (-inf-0j) (-0+0j) +div -2j (-inf+0j) (-0+0j) +div -2j (-inf+2j) (-0+0j) +div -2j (-inf+16j) (-0+0j) +div -2j (-inf+infj) (nan+nanj) +div -2j (-inf+nanj) (nan+nanj) +div -2j (-16-infj) 0j +div -2j (-16-16j) (0.0625+0.0625j) +div -2j (-16-2j) (0.0153846153846+0.123076923077j) +div -2j (-16-0j) (-0+0.125j) +div -2j (-16+0j) (-0+0.125j) +div -2j (-16+2j) (-0.0153846153846+0.123076923077j) +div -2j (-16+16j) (-0.0625+0.0625j) +div -2j (-16+infj) (-0+0j) +div -2j (-16+nanj) (nan+nanj) +div -2j (-2-infj) 0j +div -2j (-2-16j) (0.123076923077+0.0153846153846j) +div -2j (-2-2j) (0.5+0.5j) +div -2j (-2-0j) (-0+1j) +div -2j (-2+0j) (-0+1j) +div -2j (-2+2j) (-0.5+0.5j) +div -2j (-2+16j) (-0.123076923077+0.0153846153846j) +div -2j (-2+infj) (-0+0j) +div -2j (-2+nanj) (nan+nanj) +div -2j (-0-infj) 0j +div -2j (-0-16j) (0.125+0j) +div -2j (-0-2j) (1+0j) +div -2j (-0-0j) ZeroDivisionError +div -2j (-0+0j) ZeroDivisionError +div -2j (-0+2j) (-1+0j) +div -2j (-0+16j) (-0.125+0j) +div -2j (-0+infj) (-0+0j) +div -2j (-0+nanj) (nan+nanj) +div -2j -infj -0j +div -2j -16j (0.125-0j) +div -2j -2j (1-0j) +div -2j -0j ZeroDivisionError +div -2j 0j ZeroDivisionError +div -2j 2j (-1-0j) +div -2j 16j (-0.125-0j) +div -2j infj (-0-0j) +div -2j nanj (nan+nanj) +div -2j (2-infj) -0j +div -2j (2-16j) (0.123076923077-0.0153846153846j) +div -2j (2-2j) (0.5-0.5j) +div -2j (2-0j) -1j +div -2j (2+0j) -1j +div -2j (2+2j) (-0.5-0.5j) +div -2j (2+16j) (-0.123076923077-0.0153846153846j) +div -2j (2+infj) (-0-0j) +div -2j (2+nanj) (nan+nanj) +div -2j (16-infj) -0j +div -2j (16-16j) (0.0625-0.0625j) +div -2j (16-2j) (0.0153846153846-0.123076923077j) +div -2j (16-0j) -0.125j +div -2j (16+0j) -0.125j +div -2j (16+2j) (-0.0153846153846-0.123076923077j) +div -2j (16+16j) (-0.0625-0.0625j) +div -2j (16+infj) (-0-0j) +div -2j (16+nanj) (nan+nanj) +div -2j (inf-infj) (nan+nanj) +div -2j (inf-16j) -0j +div -2j (inf-2j) -0j +div -2j (inf-0j) -0j +div -2j (inf+0j) -0j +div -2j (inf+2j) -0j +div -2j (inf+16j) -0j +div -2j (inf+infj) (nan+nanj) +div -2j (inf+nanj) (nan+nanj) +div -2j (nan-infj) (nan+nanj) +div -2j (nan-16j) (nan+nanj) +div -2j (nan-2j) (nan+nanj) +div -2j (nan-0j) (nan+nanj) +div -2j (nan+0j) (nan+nanj) +div -2j (nan+2j) (nan+nanj) +div -2j (nan+16j) (nan+nanj) +div -2j (nan+infj) (nan+nanj) +div -2j (nan+nanj) (nan+nanj) +div -0j (-inf-infj) (nan+nanj) +div -0j (-inf-16j) (-0+0j) +div -0j (-inf-2j) (-0+0j) +div -0j (-inf-0j) (-0+0j) +div -0j (-inf+0j) (-0-0j) +div -0j (-inf+2j) (-0-0j) +div -0j (-inf+16j) (-0-0j) +div -0j (-inf+infj) (nan+nanj) +div -0j (-inf+nanj) (nan+nanj) +div -0j (-16-infj) (-0+0j) +div -0j (-16-16j) (-0+0j) +div -0j (-16-2j) (-0+0j) +div -0j (-16-0j) (-0+0j) +div -0j (-16+0j) (-0-0j) +div -0j (-16+2j) (-0-0j) +div -0j (-16+16j) (-0-0j) +div -0j (-16+infj) (-0+0j) +div -0j (-16+nanj) (nan+nanj) +div -0j (-2-infj) (-0+0j) +div -0j (-2-16j) (-0+0j) +div -0j (-2-2j) (-0+0j) +div -0j (-2-0j) (-0+0j) +div -0j (-2+0j) (-0-0j) +div -0j (-2+2j) (-0-0j) +div -0j (-2+16j) (-0+0j) +div -0j (-2+infj) (-0+0j) +div -0j (-2+nanj) (nan+nanj) +div -0j (-0-infj) (-0+0j) +div -0j (-0-16j) (-0+0j) +div -0j (-0-2j) (-0+0j) +div -0j (-0-0j) ZeroDivisionError +div -0j (-0+0j) ZeroDivisionError +div -0j (-0+2j) (-0+0j) +div -0j (-0+16j) (-0+0j) +div -0j (-0+infj) (-0+0j) +div -0j (-0+nanj) (nan+nanj) +div -0j -infj -0j +div -0j -16j -0j +div -0j -2j -0j +div -0j -0j ZeroDivisionError +div -0j 0j ZeroDivisionError +div -0j 2j -0j +div -0j 16j -0j +div -0j infj -0j +div -0j nanj (nan+nanj) +div -0j (2-infj) -0j +div -0j (2-16j) -0j +div -0j (2-2j) 0j +div -0j (2-0j) 0j +div -0j (2+0j) -0j +div -0j (2+2j) -0j +div -0j (2+16j) -0j +div -0j (2+infj) -0j +div -0j (2+nanj) (nan+nanj) +div -0j (16-infj) -0j +div -0j (16-16j) 0j +div -0j (16-2j) 0j +div -0j (16-0j) 0j +div -0j (16+0j) -0j +div -0j (16+2j) -0j +div -0j (16+16j) -0j +div -0j (16+infj) -0j +div -0j (16+nanj) (nan+nanj) +div -0j (inf-infj) (nan+nanj) +div -0j (inf-16j) 0j +div -0j (inf-2j) 0j +div -0j (inf-0j) 0j +div -0j (inf+0j) -0j +div -0j (inf+2j) -0j +div -0j (inf+16j) -0j +div -0j (inf+infj) (nan+nanj) +div -0j (inf+nanj) (nan+nanj) +div -0j (nan-infj) (nan+nanj) +div -0j (nan-16j) (nan+nanj) +div -0j (nan-2j) (nan+nanj) +div -0j (nan-0j) (nan+nanj) +div -0j (nan+0j) (nan+nanj) +div -0j (nan+2j) (nan+nanj) +div -0j (nan+16j) (nan+nanj) +div -0j (nan+infj) (nan+nanj) +div -0j (nan+nanj) (nan+nanj) +div 0j (-inf-infj) (nan+nanj) +div 0j (-inf-16j) (-0-0j) +div 0j (-inf-2j) (-0-0j) +div 0j (-inf-0j) (-0-0j) +div 0j (-inf+0j) (-0-0j) +div 0j (-inf+2j) (-0-0j) +div 0j (-inf+16j) (-0-0j) +div 0j (-inf+infj) (nan+nanj) +div 0j (-inf+nanj) (nan+nanj) +div 0j (-16-infj) (-0-0j) +div 0j (-16-16j) (-0-0j) +div 0j (-16-2j) (-0-0j) +div 0j (-16-0j) (-0-0j) +div 0j (-16+0j) (-0-0j) +div 0j (-16+2j) (-0-0j) +div 0j (-16+16j) (-0-0j) +div 0j (-16+infj) -0j +div 0j (-16+nanj) (nan+nanj) +div 0j (-2-infj) (-0-0j) +div 0j (-2-16j) (-0-0j) +div 0j (-2-2j) (-0-0j) +div 0j (-2-0j) (-0-0j) +div 0j (-2+0j) (-0-0j) +div 0j (-2+2j) (-0-0j) +div 0j (-2+16j) -0j +div 0j (-2+infj) -0j +div 0j (-2+nanj) (nan+nanj) +div 0j (-0-infj) (-0-0j) +div 0j (-0-16j) (-0-0j) +div 0j (-0-2j) (-0-0j) +div 0j (-0-0j) ZeroDivisionError +div 0j (-0+0j) ZeroDivisionError +div 0j (-0+2j) -0j +div 0j (-0+16j) -0j +div 0j (-0+infj) -0j +div 0j (-0+nanj) (nan+nanj) +div 0j -infj (-0+0j) +div 0j -16j (-0+0j) +div 0j -2j (-0+0j) +div 0j -0j ZeroDivisionError +div 0j 0j ZeroDivisionError +div 0j 2j 0j +div 0j 16j 0j +div 0j infj 0j +div 0j nanj (nan+nanj) +div 0j (2-infj) (-0+0j) +div 0j (2-16j) (-0+0j) +div 0j (2-2j) 0j +div 0j (2-0j) 0j +div 0j (2+0j) 0j +div 0j (2+2j) 0j +div 0j (2+16j) 0j +div 0j (2+infj) 0j +div 0j (2+nanj) (nan+nanj) +div 0j (16-infj) (-0+0j) +div 0j (16-16j) 0j +div 0j (16-2j) 0j +div 0j (16-0j) 0j +div 0j (16+0j) 0j +div 0j (16+2j) 0j +div 0j (16+16j) 0j +div 0j (16+infj) 0j +div 0j (16+nanj) (nan+nanj) +div 0j (inf-infj) (nan+nanj) +div 0j (inf-16j) 0j +div 0j (inf-2j) 0j +div 0j (inf-0j) 0j +div 0j (inf+0j) 0j +div 0j (inf+2j) 0j +div 0j (inf+16j) 0j +div 0j (inf+infj) (nan+nanj) +div 0j (inf+nanj) (nan+nanj) +div 0j (nan-infj) (nan+nanj) +div 0j (nan-16j) (nan+nanj) +div 0j (nan-2j) (nan+nanj) +div 0j (nan-0j) (nan+nanj) +div 0j (nan+0j) (nan+nanj) +div 0j (nan+2j) (nan+nanj) +div 0j (nan+16j) (nan+nanj) +div 0j (nan+infj) (nan+nanj) +div 0j (nan+nanj) (nan+nanj) +div 2j (-inf-infj) (nan+nanj) +div 2j (-inf-16j) (-0-0j) +div 2j (-inf-2j) (-0-0j) +div 2j (-inf-0j) (-0-0j) +div 2j (-inf+0j) (-0-0j) +div 2j (-inf+2j) (-0-0j) +div 2j (-inf+16j) (-0-0j) +div 2j (-inf+infj) (nan+nanj) +div 2j (-inf+nanj) (nan+nanj) +div 2j (-16-infj) (-0-0j) +div 2j (-16-16j) (-0.0625-0.0625j) +div 2j (-16-2j) (-0.0153846153846-0.123076923077j) +div 2j (-16-0j) (-0-0.125j) +div 2j (-16+0j) (-0-0.125j) +div 2j (-16+2j) (0.0153846153846-0.123076923077j) +div 2j (-16+16j) (0.0625-0.0625j) +div 2j (-16+infj) -0j +div 2j (-16+nanj) (nan+nanj) +div 2j (-2-infj) (-0-0j) +div 2j (-2-16j) (-0.123076923077-0.0153846153846j) +div 2j (-2-2j) (-0.5-0.5j) +div 2j (-2-0j) (-0-1j) +div 2j (-2+0j) (-0-1j) +div 2j (-2+2j) (0.5-0.5j) +div 2j (-2+16j) (0.123076923077-0.0153846153846j) +div 2j (-2+infj) -0j +div 2j (-2+nanj) (nan+nanj) +div 2j (-0-infj) (-0-0j) +div 2j (-0-16j) (-0.125-0j) +div 2j (-0-2j) (-1-0j) +div 2j (-0-0j) ZeroDivisionError +div 2j (-0+0j) ZeroDivisionError +div 2j (-0+2j) (1-0j) +div 2j (-0+16j) (0.125-0j) +div 2j (-0+infj) -0j +div 2j (-0+nanj) (nan+nanj) +div 2j -infj (-0+0j) +div 2j -16j (-0.125+0j) +div 2j -2j (-1+0j) +div 2j -0j ZeroDivisionError +div 2j 0j ZeroDivisionError +div 2j 2j (1+0j) +div 2j 16j (0.125+0j) +div 2j infj 0j +div 2j nanj (nan+nanj) +div 2j (2-infj) (-0+0j) +div 2j (2-16j) (-0.123076923077+0.0153846153846j) +div 2j (2-2j) (-0.5+0.5j) +div 2j (2-0j) 1j +div 2j (2+0j) 1j +div 2j (2+2j) (0.5+0.5j) +div 2j (2+16j) (0.123076923077+0.0153846153846j) +div 2j (2+infj) 0j +div 2j (2+nanj) (nan+nanj) +div 2j (16-infj) (-0+0j) +div 2j (16-16j) (-0.0625+0.0625j) +div 2j (16-2j) (-0.0153846153846+0.123076923077j) +div 2j (16-0j) 0.125j +div 2j (16+0j) 0.125j +div 2j (16+2j) (0.0153846153846+0.123076923077j) +div 2j (16+16j) (0.0625+0.0625j) +div 2j (16+infj) 0j +div 2j (16+nanj) (nan+nanj) +div 2j (inf-infj) (nan+nanj) +div 2j (inf-16j) 0j +div 2j (inf-2j) 0j +div 2j (inf-0j) 0j +div 2j (inf+0j) 0j +div 2j (inf+2j) 0j +div 2j (inf+16j) 0j +div 2j (inf+infj) (nan+nanj) +div 2j (inf+nanj) (nan+nanj) +div 2j (nan-infj) (nan+nanj) +div 2j (nan-16j) (nan+nanj) +div 2j (nan-2j) (nan+nanj) +div 2j (nan-0j) (nan+nanj) +div 2j (nan+0j) (nan+nanj) +div 2j (nan+2j) (nan+nanj) +div 2j (nan+16j) (nan+nanj) +div 2j (nan+infj) (nan+nanj) +div 2j (nan+nanj) (nan+nanj) +div 16j (-inf-infj) (nan+nanj) +div 16j (-inf-16j) (-0-0j) +div 16j (-inf-2j) (-0-0j) +div 16j (-inf-0j) (-0-0j) +div 16j (-inf+0j) (-0-0j) +div 16j (-inf+2j) (-0-0j) +div 16j (-inf+16j) (-0-0j) +div 16j (-inf+infj) (nan+nanj) +div 16j (-inf+nanj) (nan+nanj) +div 16j (-16-infj) (-0-0j) +div 16j (-16-16j) (-0.5-0.5j) +div 16j (-16-2j) (-0.123076923077-0.984615384615j) +div 16j (-16-0j) (-0-1j) +div 16j (-16+0j) (-0-1j) +div 16j (-16+2j) (0.123076923077-0.984615384615j) +div 16j (-16+16j) (0.5-0.5j) +div 16j (-16+infj) -0j +div 16j (-16+nanj) (nan+nanj) +div 16j (-2-infj) (-0-0j) +div 16j (-2-16j) (-0.984615384615-0.123076923077j) +div 16j (-2-2j) (-4-4j) +div 16j (-2-0j) (-0-8j) +div 16j (-2+0j) (-0-8j) +div 16j (-2+2j) (4-4j) +div 16j (-2+16j) (0.984615384615-0.123076923077j) +div 16j (-2+infj) -0j +div 16j (-2+nanj) (nan+nanj) +div 16j (-0-infj) (-0-0j) +div 16j (-0-16j) (-1-0j) +div 16j (-0-2j) (-8-0j) +div 16j (-0-0j) ZeroDivisionError +div 16j (-0+0j) ZeroDivisionError +div 16j (-0+2j) (8-0j) +div 16j (-0+16j) (1-0j) +div 16j (-0+infj) -0j +div 16j (-0+nanj) (nan+nanj) +div 16j -infj (-0+0j) +div 16j -16j (-1+0j) +div 16j -2j (-8+0j) +div 16j -0j ZeroDivisionError +div 16j 0j ZeroDivisionError +div 16j 2j (8+0j) +div 16j 16j (1+0j) +div 16j infj 0j +div 16j nanj (nan+nanj) +div 16j (2-infj) (-0+0j) +div 16j (2-16j) (-0.984615384615+0.123076923077j) +div 16j (2-2j) (-4+4j) +div 16j (2-0j) 8j +div 16j (2+0j) 8j +div 16j (2+2j) (4+4j) +div 16j (2+16j) (0.984615384615+0.123076923077j) +div 16j (2+infj) 0j +div 16j (2+nanj) (nan+nanj) +div 16j (16-infj) (-0+0j) +div 16j (16-16j) (-0.5+0.5j) +div 16j (16-2j) (-0.123076923077+0.984615384615j) +div 16j (16-0j) 1j +div 16j (16+0j) 1j +div 16j (16+2j) (0.123076923077+0.984615384615j) +div 16j (16+16j) (0.5+0.5j) +div 16j (16+infj) 0j +div 16j (16+nanj) (nan+nanj) +div 16j (inf-infj) (nan+nanj) +div 16j (inf-16j) 0j +div 16j (inf-2j) 0j +div 16j (inf-0j) 0j +div 16j (inf+0j) 0j +div 16j (inf+2j) 0j +div 16j (inf+16j) 0j +div 16j (inf+infj) (nan+nanj) +div 16j (inf+nanj) (nan+nanj) +div 16j (nan-infj) (nan+nanj) +div 16j (nan-16j) (nan+nanj) +div 16j (nan-2j) (nan+nanj) +div 16j (nan-0j) (nan+nanj) +div 16j (nan+0j) (nan+nanj) +div 16j (nan+2j) (nan+nanj) +div 16j (nan+16j) (nan+nanj) +div 16j (nan+infj) (nan+nanj) +div 16j (nan+nanj) (nan+nanj) +div infj (-inf-infj) (nan+nanj) +div infj (-inf-16j) (nan+nanj) +div infj (-inf-2j) (nan+nanj) +div infj (-inf-0j) (nan+nanj) +div infj (-inf+0j) (nan+nanj) +div infj (-inf+2j) (nan+nanj) +div infj (-inf+16j) (nan+nanj) +div infj (-inf+infj) (nan+nanj) +div infj (-inf+nanj) (nan+nanj) +div infj (-16-infj) (nan+nanj) +div infj (-16-16j) (-inf-infj) +div infj (-16-2j) (-inf-infj) +div infj (-16-0j) (nan-infj) +div infj (-16+0j) (nan-infj) +div infj (-16+2j) (inf-infj) +div infj (-16+16j) (inf-infj) +div infj (-16+infj) (nan+nanj) +div infj (-16+nanj) (nan+nanj) +div infj (-2-infj) (nan+nanj) +div infj (-2-16j) (-inf-infj) +div infj (-2-2j) (-inf-infj) +div infj (-2-0j) (nan-infj) +div infj (-2+0j) (nan-infj) +div infj (-2+2j) (inf-infj) +div infj (-2+16j) (inf-infj) +div infj (-2+infj) (nan+nanj) +div infj (-2+nanj) (nan+nanj) +div infj (-0-infj) (nan+nanj) +div infj (-0-16j) (-inf+nanj) +div infj (-0-2j) (-inf+nanj) +div infj (-0-0j) ZeroDivisionError +div infj (-0+0j) ZeroDivisionError +div infj (-0+2j) (inf+nanj) +div infj (-0+16j) (inf+nanj) +div infj (-0+infj) (nan+nanj) +div infj (-0+nanj) (nan+nanj) +div infj -infj (nan+nanj) +div infj -16j (-inf+nanj) +div infj -2j (-inf+nanj) +div infj -0j ZeroDivisionError +div infj 0j ZeroDivisionError +div infj 2j (inf+nanj) +div infj 16j (inf+nanj) +div infj infj (nan+nanj) +div infj nanj (nan+nanj) +div infj (2-infj) (nan+nanj) +div infj (2-16j) (-inf+infj) +div infj (2-2j) (-inf+infj) +div infj (2-0j) (nan+infj) +div infj (2+0j) (nan+infj) +div infj (2+2j) (inf+infj) +div infj (2+16j) (inf+infj) +div infj (2+infj) (nan+nanj) +div infj (2+nanj) (nan+nanj) +div infj (16-infj) (nan+nanj) +div infj (16-16j) (-inf+infj) +div infj (16-2j) (-inf+infj) +div infj (16-0j) (nan+infj) +div infj (16+0j) (nan+infj) +div infj (16+2j) (inf+infj) +div infj (16+16j) (inf+infj) +div infj (16+infj) (nan+nanj) +div infj (16+nanj) (nan+nanj) +div infj (inf-infj) (nan+nanj) +div infj (inf-16j) (nan+nanj) +div infj (inf-2j) (nan+nanj) +div infj (inf-0j) (nan+nanj) +div infj (inf+0j) (nan+nanj) +div infj (inf+2j) (nan+nanj) +div infj (inf+16j) (nan+nanj) +div infj (inf+infj) (nan+nanj) +div infj (inf+nanj) (nan+nanj) +div infj (nan-infj) (nan+nanj) +div infj (nan-16j) (nan+nanj) +div infj (nan-2j) (nan+nanj) +div infj (nan-0j) (nan+nanj) +div infj (nan+0j) (nan+nanj) +div infj (nan+2j) (nan+nanj) +div infj (nan+16j) (nan+nanj) +div infj (nan+infj) (nan+nanj) +div infj (nan+nanj) (nan+nanj) +div nanj (-inf-infj) (nan+nanj) +div nanj (-inf-16j) (nan+nanj) +div nanj (-inf-2j) (nan+nanj) +div nanj (-inf-0j) (nan+nanj) +div nanj (-inf+0j) (nan+nanj) +div nanj (-inf+2j) (nan+nanj) +div nanj (-inf+16j) (nan+nanj) +div nanj (-inf+infj) (nan+nanj) +div nanj (-inf+nanj) (nan+nanj) +div nanj (-16-infj) (nan+nanj) +div nanj (-16-16j) (nan+nanj) +div nanj (-16-2j) (nan+nanj) +div nanj (-16-0j) (nan+nanj) +div nanj (-16+0j) (nan+nanj) +div nanj (-16+2j) (nan+nanj) +div nanj (-16+16j) (nan+nanj) +div nanj (-16+infj) (nan+nanj) +div nanj (-16+nanj) (nan+nanj) +div nanj (-2-infj) (nan+nanj) +div nanj (-2-16j) (nan+nanj) +div nanj (-2-2j) (nan+nanj) +div nanj (-2-0j) (nan+nanj) +div nanj (-2+0j) (nan+nanj) +div nanj (-2+2j) (nan+nanj) +div nanj (-2+16j) (nan+nanj) +div nanj (-2+infj) (nan+nanj) +div nanj (-2+nanj) (nan+nanj) +div nanj (-0-infj) (nan+nanj) +div nanj (-0-16j) (nan+nanj) +div nanj (-0-2j) (nan+nanj) +div nanj (-0-0j) ZeroDivisionError +div nanj (-0+0j) ZeroDivisionError +div nanj (-0+2j) (nan+nanj) +div nanj (-0+16j) (nan+nanj) +div nanj (-0+infj) (nan+nanj) +div nanj (-0+nanj) (nan+nanj) +div nanj -infj (nan+nanj) +div nanj -16j (nan+nanj) +div nanj -2j (nan+nanj) +div nanj -0j ZeroDivisionError +div nanj 0j ZeroDivisionError +div nanj 2j (nan+nanj) +div nanj 16j (nan+nanj) +div nanj infj (nan+nanj) +div nanj nanj (nan+nanj) +div nanj (2-infj) (nan+nanj) +div nanj (2-16j) (nan+nanj) +div nanj (2-2j) (nan+nanj) +div nanj (2-0j) (nan+nanj) +div nanj (2+0j) (nan+nanj) +div nanj (2+2j) (nan+nanj) +div nanj (2+16j) (nan+nanj) +div nanj (2+infj) (nan+nanj) +div nanj (2+nanj) (nan+nanj) +div nanj (16-infj) (nan+nanj) +div nanj (16-16j) (nan+nanj) +div nanj (16-2j) (nan+nanj) +div nanj (16-0j) (nan+nanj) +div nanj (16+0j) (nan+nanj) +div nanj (16+2j) (nan+nanj) +div nanj (16+16j) (nan+nanj) +div nanj (16+infj) (nan+nanj) +div nanj (16+nanj) (nan+nanj) +div nanj (inf-infj) (nan+nanj) +div nanj (inf-16j) (nan+nanj) +div nanj (inf-2j) (nan+nanj) +div nanj (inf-0j) (nan+nanj) +div nanj (inf+0j) (nan+nanj) +div nanj (inf+2j) (nan+nanj) +div nanj (inf+16j) (nan+nanj) +div nanj (inf+infj) (nan+nanj) +div nanj (inf+nanj) (nan+nanj) +div nanj (nan-infj) (nan+nanj) +div nanj (nan-16j) (nan+nanj) +div nanj (nan-2j) (nan+nanj) +div nanj (nan-0j) (nan+nanj) +div nanj (nan+0j) (nan+nanj) +div nanj (nan+2j) (nan+nanj) +div nanj (nan+16j) (nan+nanj) +div nanj (nan+infj) (nan+nanj) +div nanj (nan+nanj) (nan+nanj) +div (2-infj) (-inf-infj) (nan+nanj) +div (2-infj) (-inf-16j) (nan+nanj) +div (2-infj) (-inf-2j) (nan+nanj) +div (2-infj) (-inf-0j) (nan+nanj) +div (2-infj) (-inf+0j) (nan+nanj) +div (2-infj) (-inf+2j) (nan+nanj) +div (2-infj) (-inf+16j) (nan+nanj) +div (2-infj) (-inf+infj) (nan+nanj) +div (2-infj) (-inf+nanj) (nan+nanj) +div (2-infj) (-16-infj) (nan+nanj) +div (2-infj) (-16-16j) (inf+infj) +div (2-infj) (-16-2j) (inf+infj) +div (2-infj) (-16-0j) (nan+infj) +div (2-infj) (-16+0j) (nan+infj) +div (2-infj) (-16+2j) (-inf+infj) +div (2-infj) (-16+16j) (-inf+infj) +div (2-infj) (-16+infj) (nan+nanj) +div (2-infj) (-16+nanj) (nan+nanj) +div (2-infj) (-2-infj) (nan+nanj) +div (2-infj) (-2-16j) (inf+infj) +div (2-infj) (-2-2j) (inf+infj) +div (2-infj) (-2-0j) (nan+infj) +div (2-infj) (-2+0j) (nan+infj) +div (2-infj) (-2+2j) (-inf+infj) +div (2-infj) (-2+16j) (-inf+infj) +div (2-infj) (-2+infj) (nan+nanj) +div (2-infj) (-2+nanj) (nan+nanj) +div (2-infj) (-0-infj) (nan+nanj) +div (2-infj) (-0-16j) (inf+nanj) +div (2-infj) (-0-2j) (inf+nanj) +div (2-infj) (-0-0j) ZeroDivisionError +div (2-infj) (-0+0j) ZeroDivisionError +div (2-infj) (-0+2j) (-inf+nanj) +div (2-infj) (-0+16j) (-inf+nanj) +div (2-infj) (-0+infj) (nan+nanj) +div (2-infj) (-0+nanj) (nan+nanj) +div (2-infj) -infj (nan+nanj) +div (2-infj) -16j (inf+nanj) +div (2-infj) -2j (inf+nanj) +div (2-infj) -0j ZeroDivisionError +div (2-infj) 0j ZeroDivisionError +div (2-infj) 2j (-inf+nanj) +div (2-infj) 16j (-inf+nanj) +div (2-infj) infj (nan+nanj) +div (2-infj) nanj (nan+nanj) +div (2-infj) (2-infj) (nan+nanj) +div (2-infj) (2-16j) (inf-infj) +div (2-infj) (2-2j) (inf-infj) +div (2-infj) (2-0j) (nan-infj) +div (2-infj) (2+0j) (nan-infj) +div (2-infj) (2+2j) (-inf-infj) +div (2-infj) (2+16j) (-inf-infj) +div (2-infj) (2+infj) (nan+nanj) +div (2-infj) (2+nanj) (nan+nanj) +div (2-infj) (16-infj) (nan+nanj) +div (2-infj) (16-16j) (inf-infj) +div (2-infj) (16-2j) (inf-infj) +div (2-infj) (16-0j) (nan-infj) +div (2-infj) (16+0j) (nan-infj) +div (2-infj) (16+2j) (-inf-infj) +div (2-infj) (16+16j) (-inf-infj) +div (2-infj) (16+infj) (nan+nanj) +div (2-infj) (16+nanj) (nan+nanj) +div (2-infj) (inf-infj) (nan+nanj) +div (2-infj) (inf-16j) (nan+nanj) +div (2-infj) (inf-2j) (nan+nanj) +div (2-infj) (inf-0j) (nan+nanj) +div (2-infj) (inf+0j) (nan+nanj) +div (2-infj) (inf+2j) (nan+nanj) +div (2-infj) (inf+16j) (nan+nanj) +div (2-infj) (inf+infj) (nan+nanj) +div (2-infj) (inf+nanj) (nan+nanj) +div (2-infj) (nan-infj) (nan+nanj) +div (2-infj) (nan-16j) (nan+nanj) +div (2-infj) (nan-2j) (nan+nanj) +div (2-infj) (nan-0j) (nan+nanj) +div (2-infj) (nan+0j) (nan+nanj) +div (2-infj) (nan+2j) (nan+nanj) +div (2-infj) (nan+16j) (nan+nanj) +div (2-infj) (nan+infj) (nan+nanj) +div (2-infj) (nan+nanj) (nan+nanj) +div (2-16j) (-inf-infj) (nan+nanj) +div (2-16j) (-inf-16j) (-0+0j) +div (2-16j) (-inf-2j) (-0+0j) +div (2-16j) (-inf-0j) (-0+0j) +div (2-16j) (-inf+0j) (-0+0j) +div (2-16j) (-inf+2j) (-0+0j) +div (2-16j) (-inf+16j) (-0+0j) +div (2-16j) (-inf+infj) (nan+nanj) +div (2-16j) (-inf+nanj) (nan+nanj) +div (2-16j) (-16-infj) 0j +div (2-16j) (-16-16j) (0.4375+0.5625j) +div (2-16j) (-16-2j) (-0+1j) +div (2-16j) (-16-0j) (-0.125+1j) +div (2-16j) (-16+0j) (-0.125+1j) +div (2-16j) (-16+2j) (-0.246153846154+0.969230769231j) +div (2-16j) (-16+16j) (-0.5625+0.4375j) +div (2-16j) (-16+infj) (-0-0j) +div (2-16j) (-16+nanj) (nan+nanj) +div (2-16j) (-2-infj) 0j +div (2-16j) (-2-16j) (0.969230769231+0.246153846154j) +div (2-16j) (-2-2j) (3.5+4.5j) +div (2-16j) (-2-0j) (-1+8j) +div (2-16j) (-2+0j) (-1+8j) +div (2-16j) (-2+2j) (-4.5+3.5j) +div (2-16j) (-2+16j) (-1+0j) +div (2-16j) (-2+infj) (-0-0j) +div (2-16j) (-2+nanj) (nan+nanj) +div (2-16j) (-0-infj) 0j +div (2-16j) (-0-16j) (1+0.125j) +div (2-16j) (-0-2j) (8+1j) +div (2-16j) (-0-0j) ZeroDivisionError +div (2-16j) (-0+0j) ZeroDivisionError +div (2-16j) (-0+2j) (-8-1j) +div (2-16j) (-0+16j) (-1-0.125j) +div (2-16j) (-0+infj) (-0-0j) +div (2-16j) (-0+nanj) (nan+nanj) +div (2-16j) -infj 0j +div (2-16j) -16j (1+0.125j) +div (2-16j) -2j (8+1j) +div (2-16j) -0j ZeroDivisionError +div (2-16j) 0j ZeroDivisionError +div (2-16j) 2j (-8-1j) +div (2-16j) 16j (-1-0.125j) +div (2-16j) infj (-0-0j) +div (2-16j) nanj (nan+nanj) +div (2-16j) (2-infj) 0j +div (2-16j) (2-16j) (1-0j) +div (2-16j) (2-2j) (4.5-3.5j) +div (2-16j) (2-0j) (1-8j) +div (2-16j) (2+0j) (1-8j) +div (2-16j) (2+2j) (-3.5-4.5j) +div (2-16j) (2+16j) (-0.969230769231-0.246153846154j) +div (2-16j) (2+infj) (-0-0j) +div (2-16j) (2+nanj) (nan+nanj) +div (2-16j) (16-infj) 0j +div (2-16j) (16-16j) (0.5625-0.4375j) +div (2-16j) (16-2j) (0.246153846154-0.969230769231j) +div (2-16j) (16-0j) (0.125-1j) +div (2-16j) (16+0j) (0.125-1j) +div (2-16j) (16+2j) -1j +div (2-16j) (16+16j) (-0.4375-0.5625j) +div (2-16j) (16+infj) (-0-0j) +div (2-16j) (16+nanj) (nan+nanj) +div (2-16j) (inf-infj) (nan+nanj) +div (2-16j) (inf-16j) -0j +div (2-16j) (inf-2j) -0j +div (2-16j) (inf-0j) -0j +div (2-16j) (inf+0j) -0j +div (2-16j) (inf+2j) -0j +div (2-16j) (inf+16j) -0j +div (2-16j) (inf+infj) (nan+nanj) +div (2-16j) (inf+nanj) (nan+nanj) +div (2-16j) (nan-infj) (nan+nanj) +div (2-16j) (nan-16j) (nan+nanj) +div (2-16j) (nan-2j) (nan+nanj) +div (2-16j) (nan-0j) (nan+nanj) +div (2-16j) (nan+0j) (nan+nanj) +div (2-16j) (nan+2j) (nan+nanj) +div (2-16j) (nan+16j) (nan+nanj) +div (2-16j) (nan+infj) (nan+nanj) +div (2-16j) (nan+nanj) (nan+nanj) +div (2-2j) (-inf-infj) (nan+nanj) +div (2-2j) (-inf-16j) (-0+0j) +div (2-2j) (-inf-2j) (-0+0j) +div (2-2j) (-inf-0j) (-0+0j) +div (2-2j) (-inf+0j) (-0+0j) +div (2-2j) (-inf+2j) (-0+0j) +div (2-2j) (-inf+16j) (-0+0j) +div (2-2j) (-inf+infj) (nan+nanj) +div (2-2j) (-inf+nanj) (nan+nanj) +div (2-2j) (-16-infj) 0j +div (2-2j) (-16-16j) (-0+0.125j) +div (2-2j) (-16-2j) (-0.107692307692+0.138461538462j) +div (2-2j) (-16-0j) (-0.125+0.125j) +div (2-2j) (-16+0j) (-0.125+0.125j) +div (2-2j) (-16+2j) (-0.138461538462+0.107692307692j) +div (2-2j) (-16+16j) (-0.125-0j) +div (2-2j) (-16+infj) (-0-0j) +div (2-2j) (-16+nanj) (nan+nanj) +div (2-2j) (-2-infj) 0j +div (2-2j) (-2-16j) (0.107692307692+0.138461538462j) +div (2-2j) (-2-2j) (-0+1j) +div (2-2j) (-2-0j) (-1+1j) +div (2-2j) (-2+0j) (-1+1j) +div (2-2j) (-2+2j) (-1-0j) +div (2-2j) (-2+16j) (-0.138461538462-0.107692307692j) +div (2-2j) (-2+infj) (-0-0j) +div (2-2j) (-2+nanj) (nan+nanj) +div (2-2j) (-0-infj) 0j +div (2-2j) (-0-16j) (0.125+0.125j) +div (2-2j) (-0-2j) (1+1j) +div (2-2j) (-0-0j) ZeroDivisionError +div (2-2j) (-0+0j) ZeroDivisionError +div (2-2j) (-0+2j) (-1-1j) +div (2-2j) (-0+16j) (-0.125-0.125j) +div (2-2j) (-0+infj) (-0-0j) +div (2-2j) (-0+nanj) (nan+nanj) +div (2-2j) -infj 0j +div (2-2j) -16j (0.125+0.125j) +div (2-2j) -2j (1+1j) +div (2-2j) -0j ZeroDivisionError +div (2-2j) 0j ZeroDivisionError +div (2-2j) 2j (-1-1j) +div (2-2j) 16j (-0.125-0.125j) +div (2-2j) infj (-0-0j) +div (2-2j) nanj (nan+nanj) +div (2-2j) (2-infj) 0j +div (2-2j) (2-16j) (0.138461538462+0.107692307692j) +div (2-2j) (2-2j) (1+0j) +div (2-2j) (2-0j) (1-1j) +div (2-2j) (2+0j) (1-1j) +div (2-2j) (2+2j) -1j +div (2-2j) (2+16j) (-0.107692307692-0.138461538462j) +div (2-2j) (2+infj) (-0-0j) +div (2-2j) (2+nanj) (nan+nanj) +div (2-2j) (16-infj) 0j +div (2-2j) (16-16j) (0.125+0j) +div (2-2j) (16-2j) (0.138461538462-0.107692307692j) +div (2-2j) (16-0j) (0.125-0.125j) +div (2-2j) (16+0j) (0.125-0.125j) +div (2-2j) (16+2j) (0.107692307692-0.138461538462j) +div (2-2j) (16+16j) -0.125j +div (2-2j) (16+infj) (-0-0j) +div (2-2j) (16+nanj) (nan+nanj) +div (2-2j) (inf-infj) (nan+nanj) +div (2-2j) (inf-16j) -0j +div (2-2j) (inf-2j) -0j +div (2-2j) (inf-0j) -0j +div (2-2j) (inf+0j) -0j +div (2-2j) (inf+2j) -0j +div (2-2j) (inf+16j) -0j +div (2-2j) (inf+infj) (nan+nanj) +div (2-2j) (inf+nanj) (nan+nanj) +div (2-2j) (nan-infj) (nan+nanj) +div (2-2j) (nan-16j) (nan+nanj) +div (2-2j) (nan-2j) (nan+nanj) +div (2-2j) (nan-0j) (nan+nanj) +div (2-2j) (nan+0j) (nan+nanj) +div (2-2j) (nan+2j) (nan+nanj) +div (2-2j) (nan+16j) (nan+nanj) +div (2-2j) (nan+infj) (nan+nanj) +div (2-2j) (nan+nanj) (nan+nanj) +div (2-0j) (-inf-infj) (nan+nanj) +div (2-0j) (-inf-16j) (-0+0j) +div (2-0j) (-inf-2j) (-0+0j) +div (2-0j) (-inf-0j) (-0+0j) +div (2-0j) (-inf+0j) (-0-0j) +div (2-0j) (-inf+2j) (-0-0j) +div (2-0j) (-inf+16j) (-0-0j) +div (2-0j) (-inf+infj) (nan+nanj) +div (2-0j) (-inf+nanj) (nan+nanj) +div (2-0j) (-16-infj) (-0+0j) +div (2-0j) (-16-16j) (-0.0625+0.0625j) +div (2-0j) (-16-2j) (-0.123076923077+0.0153846153846j) +div (2-0j) (-16-0j) (-0.125+0j) +div (2-0j) (-16+0j) (-0.125-0j) +div (2-0j) (-16+2j) (-0.123076923077-0.0153846153846j) +div (2-0j) (-16+16j) (-0.0625-0.0625j) +div (2-0j) (-16+infj) (-0-0j) +div (2-0j) (-16+nanj) (nan+nanj) +div (2-0j) (-2-infj) (-0+0j) +div (2-0j) (-2-16j) (-0.0153846153846+0.123076923077j) +div (2-0j) (-2-2j) (-0.5+0.5j) +div (2-0j) (-2-0j) (-1+0j) +div (2-0j) (-2+0j) (-1-0j) +div (2-0j) (-2+2j) (-0.5-0.5j) +div (2-0j) (-2+16j) (-0.0153846153846-0.123076923077j) +div (2-0j) (-2+infj) (-0-0j) +div (2-0j) (-2+nanj) (nan+nanj) +div (2-0j) (-0-infj) (-0+0j) +div (2-0j) (-0-16j) (-0+0.125j) +div (2-0j) (-0-2j) (-0+1j) +div (2-0j) (-0-0j) ZeroDivisionError +div (2-0j) (-0+0j) ZeroDivisionError +div (2-0j) (-0+2j) (-0-1j) +div (2-0j) (-0+16j) (-0-0.125j) +div (2-0j) (-0+infj) (-0-0j) +div (2-0j) (-0+nanj) (nan+nanj) +div (2-0j) -infj 0j +div (2-0j) -16j 0.125j +div (2-0j) -2j 1j +div (2-0j) -0j ZeroDivisionError +div (2-0j) 0j ZeroDivisionError +div (2-0j) 2j -1j +div (2-0j) 16j -0.125j +div (2-0j) infj -0j +div (2-0j) nanj (nan+nanj) +div (2-0j) (2-infj) 0j +div (2-0j) (2-16j) (0.0153846153846+0.123076923077j) +div (2-0j) (2-2j) (0.5+0.5j) +div (2-0j) (2-0j) (1+0j) +div (2-0j) (2+0j) (1-0j) +div (2-0j) (2+2j) (0.5-0.5j) +div (2-0j) (2+16j) (0.0153846153846-0.123076923077j) +div (2-0j) (2+infj) -0j +div (2-0j) (2+nanj) (nan+nanj) +div (2-0j) (16-infj) 0j +div (2-0j) (16-16j) (0.0625+0.0625j) +div (2-0j) (16-2j) (0.123076923077+0.0153846153846j) +div (2-0j) (16-0j) (0.125+0j) +div (2-0j) (16+0j) (0.125-0j) +div (2-0j) (16+2j) (0.123076923077-0.0153846153846j) +div (2-0j) (16+16j) (0.0625-0.0625j) +div (2-0j) (16+infj) -0j +div (2-0j) (16+nanj) (nan+nanj) +div (2-0j) (inf-infj) (nan+nanj) +div (2-0j) (inf-16j) 0j +div (2-0j) (inf-2j) 0j +div (2-0j) (inf-0j) 0j +div (2-0j) (inf+0j) -0j +div (2-0j) (inf+2j) -0j +div (2-0j) (inf+16j) -0j +div (2-0j) (inf+infj) (nan+nanj) +div (2-0j) (inf+nanj) (nan+nanj) +div (2-0j) (nan-infj) (nan+nanj) +div (2-0j) (nan-16j) (nan+nanj) +div (2-0j) (nan-2j) (nan+nanj) +div (2-0j) (nan-0j) (nan+nanj) +div (2-0j) (nan+0j) (nan+nanj) +div (2-0j) (nan+2j) (nan+nanj) +div (2-0j) (nan+16j) (nan+nanj) +div (2-0j) (nan+infj) (nan+nanj) +div (2-0j) (nan+nanj) (nan+nanj) +div (2+0j) (-inf-infj) (nan+nanj) +div (2+0j) (-inf-16j) (-0-0j) +div (2+0j) (-inf-2j) (-0-0j) +div (2+0j) (-inf-0j) (-0-0j) +div (2+0j) (-inf+0j) (-0-0j) +div (2+0j) (-inf+2j) (-0-0j) +div (2+0j) (-inf+16j) (-0-0j) +div (2+0j) (-inf+infj) (nan+nanj) +div (2+0j) (-inf+nanj) (nan+nanj) +div (2+0j) (-16-infj) (-0+0j) +div (2+0j) (-16-16j) (-0.0625+0.0625j) +div (2+0j) (-16-2j) (-0.123076923077+0.0153846153846j) +div (2+0j) (-16-0j) (-0.125-0j) +div (2+0j) (-16+0j) (-0.125-0j) +div (2+0j) (-16+2j) (-0.123076923077-0.0153846153846j) +div (2+0j) (-16+16j) (-0.0625-0.0625j) +div (2+0j) (-16+infj) -0j +div (2+0j) (-16+nanj) (nan+nanj) +div (2+0j) (-2-infj) (-0+0j) +div (2+0j) (-2-16j) (-0.0153846153846+0.123076923077j) +div (2+0j) (-2-2j) (-0.5+0.5j) +div (2+0j) (-2-0j) (-1-0j) +div (2+0j) (-2+0j) (-1-0j) +div (2+0j) (-2+2j) (-0.5-0.5j) +div (2+0j) (-2+16j) (-0.0153846153846-0.123076923077j) +div (2+0j) (-2+infj) -0j +div (2+0j) (-2+nanj) (nan+nanj) +div (2+0j) (-0-infj) (-0+0j) +div (2+0j) (-0-16j) (-0+0.125j) +div (2+0j) (-0-2j) (-0+1j) +div (2+0j) (-0-0j) ZeroDivisionError +div (2+0j) (-0+0j) ZeroDivisionError +div (2+0j) (-0+2j) -1j +div (2+0j) (-0+16j) -0.125j +div (2+0j) (-0+infj) -0j +div (2+0j) (-0+nanj) (nan+nanj) +div (2+0j) -infj (-0+0j) +div (2+0j) -16j (-0+0.125j) +div (2+0j) -2j (-0+1j) +div (2+0j) -0j ZeroDivisionError +div (2+0j) 0j ZeroDivisionError +div (2+0j) 2j -1j +div (2+0j) 16j -0.125j +div (2+0j) infj -0j +div (2+0j) nanj (nan+nanj) +div (2+0j) (2-infj) (-0+0j) +div (2+0j) (2-16j) (0.0153846153846+0.123076923077j) +div (2+0j) (2-2j) (0.5+0.5j) +div (2+0j) (2-0j) (1+0j) +div (2+0j) (2+0j) (1+0j) +div (2+0j) (2+2j) (0.5-0.5j) +div (2+0j) (2+16j) (0.0153846153846-0.123076923077j) +div (2+0j) (2+infj) -0j +div (2+0j) (2+nanj) (nan+nanj) +div (2+0j) (16-infj) (-0+0j) +div (2+0j) (16-16j) (0.0625+0.0625j) +div (2+0j) (16-2j) (0.123076923077+0.0153846153846j) +div (2+0j) (16-0j) (0.125+0j) +div (2+0j) (16+0j) (0.125+0j) +div (2+0j) (16+2j) (0.123076923077-0.0153846153846j) +div (2+0j) (16+16j) (0.0625-0.0625j) +div (2+0j) (16+infj) -0j +div (2+0j) (16+nanj) (nan+nanj) +div (2+0j) (inf-infj) (nan+nanj) +div (2+0j) (inf-16j) 0j +div (2+0j) (inf-2j) 0j +div (2+0j) (inf-0j) 0j +div (2+0j) (inf+0j) 0j +div (2+0j) (inf+2j) 0j +div (2+0j) (inf+16j) 0j +div (2+0j) (inf+infj) (nan+nanj) +div (2+0j) (inf+nanj) (nan+nanj) +div (2+0j) (nan-infj) (nan+nanj) +div (2+0j) (nan-16j) (nan+nanj) +div (2+0j) (nan-2j) (nan+nanj) +div (2+0j) (nan-0j) (nan+nanj) +div (2+0j) (nan+0j) (nan+nanj) +div (2+0j) (nan+2j) (nan+nanj) +div (2+0j) (nan+16j) (nan+nanj) +div (2+0j) (nan+infj) (nan+nanj) +div (2+0j) (nan+nanj) (nan+nanj) +div (2+2j) (-inf-infj) (nan+nanj) +div (2+2j) (-inf-16j) (-0-0j) +div (2+2j) (-inf-2j) (-0-0j) +div (2+2j) (-inf-0j) (-0-0j) +div (2+2j) (-inf+0j) (-0-0j) +div (2+2j) (-inf+2j) (-0-0j) +div (2+2j) (-inf+16j) (-0-0j) +div (2+2j) (-inf+infj) (nan+nanj) +div (2+2j) (-inf+nanj) (nan+nanj) +div (2+2j) (-16-infj) (-0+0j) +div (2+2j) (-16-16j) (-0.125-0j) +div (2+2j) (-16-2j) (-0.138461538462-0.107692307692j) +div (2+2j) (-16-0j) (-0.125-0.125j) +div (2+2j) (-16+0j) (-0.125-0.125j) +div (2+2j) (-16+2j) (-0.107692307692-0.138461538462j) +div (2+2j) (-16+16j) (-0-0.125j) +div (2+2j) (-16+infj) -0j +div (2+2j) (-16+nanj) (nan+nanj) +div (2+2j) (-2-infj) (-0+0j) +div (2+2j) (-2-16j) (-0.138461538462+0.107692307692j) +div (2+2j) (-2-2j) (-1-0j) +div (2+2j) (-2-0j) (-1-1j) +div (2+2j) (-2+0j) (-1-1j) +div (2+2j) (-2+2j) (-0-1j) +div (2+2j) (-2+16j) (0.107692307692-0.138461538462j) +div (2+2j) (-2+infj) -0j +div (2+2j) (-2+nanj) (nan+nanj) +div (2+2j) (-0-infj) (-0+0j) +div (2+2j) (-0-16j) (-0.125+0.125j) +div (2+2j) (-0-2j) (-1+1j) +div (2+2j) (-0-0j) ZeroDivisionError +div (2+2j) (-0+0j) ZeroDivisionError +div (2+2j) (-0+2j) (1-1j) +div (2+2j) (-0+16j) (0.125-0.125j) +div (2+2j) (-0+infj) -0j +div (2+2j) (-0+nanj) (nan+nanj) +div (2+2j) -infj (-0+0j) +div (2+2j) -16j (-0.125+0.125j) +div (2+2j) -2j (-1+1j) +div (2+2j) -0j ZeroDivisionError +div (2+2j) 0j ZeroDivisionError +div (2+2j) 2j (1-1j) +div (2+2j) 16j (0.125-0.125j) +div (2+2j) infj -0j +div (2+2j) nanj (nan+nanj) +div (2+2j) (2-infj) (-0+0j) +div (2+2j) (2-16j) (-0.107692307692+0.138461538462j) +div (2+2j) (2-2j) 1j +div (2+2j) (2-0j) (1+1j) +div (2+2j) (2+0j) (1+1j) +div (2+2j) (2+2j) (1+0j) +div (2+2j) (2+16j) (0.138461538462-0.107692307692j) +div (2+2j) (2+infj) -0j +div (2+2j) (2+nanj) (nan+nanj) +div (2+2j) (16-infj) (-0+0j) +div (2+2j) (16-16j) 0.125j +div (2+2j) (16-2j) (0.107692307692+0.138461538462j) +div (2+2j) (16-0j) (0.125+0.125j) +div (2+2j) (16+0j) (0.125+0.125j) +div (2+2j) (16+2j) (0.138461538462+0.107692307692j) +div (2+2j) (16+16j) (0.125+0j) +div (2+2j) (16+infj) -0j +div (2+2j) (16+nanj) (nan+nanj) +div (2+2j) (inf-infj) (nan+nanj) +div (2+2j) (inf-16j) 0j +div (2+2j) (inf-2j) 0j +div (2+2j) (inf-0j) 0j +div (2+2j) (inf+0j) 0j +div (2+2j) (inf+2j) 0j +div (2+2j) (inf+16j) 0j +div (2+2j) (inf+infj) (nan+nanj) +div (2+2j) (inf+nanj) (nan+nanj) +div (2+2j) (nan-infj) (nan+nanj) +div (2+2j) (nan-16j) (nan+nanj) +div (2+2j) (nan-2j) (nan+nanj) +div (2+2j) (nan-0j) (nan+nanj) +div (2+2j) (nan+0j) (nan+nanj) +div (2+2j) (nan+2j) (nan+nanj) +div (2+2j) (nan+16j) (nan+nanj) +div (2+2j) (nan+infj) (nan+nanj) +div (2+2j) (nan+nanj) (nan+nanj) +div (2+16j) (-inf-infj) (nan+nanj) +div (2+16j) (-inf-16j) (-0-0j) +div (2+16j) (-inf-2j) (-0-0j) +div (2+16j) (-inf-0j) (-0-0j) +div (2+16j) (-inf+0j) (-0-0j) +div (2+16j) (-inf+2j) (-0-0j) +div (2+16j) (-inf+16j) (-0-0j) +div (2+16j) (-inf+infj) (nan+nanj) +div (2+16j) (-inf+nanj) (nan+nanj) +div (2+16j) (-16-infj) (-0+0j) +div (2+16j) (-16-16j) (-0.5625-0.4375j) +div (2+16j) (-16-2j) (-0.246153846154-0.969230769231j) +div (2+16j) (-16-0j) (-0.125-1j) +div (2+16j) (-16+0j) (-0.125-1j) +div (2+16j) (-16+2j) (-0-1j) +div (2+16j) (-16+16j) (0.4375-0.5625j) +div (2+16j) (-16+infj) -0j +div (2+16j) (-16+nanj) (nan+nanj) +div (2+16j) (-2-infj) (-0+0j) +div (2+16j) (-2-16j) (-1-0j) +div (2+16j) (-2-2j) (-4.5-3.5j) +div (2+16j) (-2-0j) (-1-8j) +div (2+16j) (-2+0j) (-1-8j) +div (2+16j) (-2+2j) (3.5-4.5j) +div (2+16j) (-2+16j) (0.969230769231-0.246153846154j) +div (2+16j) (-2+infj) -0j +div (2+16j) (-2+nanj) (nan+nanj) +div (2+16j) (-0-infj) (-0+0j) +div (2+16j) (-0-16j) (-1+0.125j) +div (2+16j) (-0-2j) (-8+1j) +div (2+16j) (-0-0j) ZeroDivisionError +div (2+16j) (-0+0j) ZeroDivisionError +div (2+16j) (-0+2j) (8-1j) +div (2+16j) (-0+16j) (1-0.125j) +div (2+16j) (-0+infj) -0j +div (2+16j) (-0+nanj) (nan+nanj) +div (2+16j) -infj (-0+0j) +div (2+16j) -16j (-1+0.125j) +div (2+16j) -2j (-8+1j) +div (2+16j) -0j ZeroDivisionError +div (2+16j) 0j ZeroDivisionError +div (2+16j) 2j (8-1j) +div (2+16j) 16j (1-0.125j) +div (2+16j) infj -0j +div (2+16j) nanj (nan+nanj) +div (2+16j) (2-infj) (-0+0j) +div (2+16j) (2-16j) (-0.969230769231+0.246153846154j) +div (2+16j) (2-2j) (-3.5+4.5j) +div (2+16j) (2-0j) (1+8j) +div (2+16j) (2+0j) (1+8j) +div (2+16j) (2+2j) (4.5+3.5j) +div (2+16j) (2+16j) (1+0j) +div (2+16j) (2+infj) -0j +div (2+16j) (2+nanj) (nan+nanj) +div (2+16j) (16-infj) (-0+0j) +div (2+16j) (16-16j) (-0.4375+0.5625j) +div (2+16j) (16-2j) 1j +div (2+16j) (16-0j) (0.125+1j) +div (2+16j) (16+0j) (0.125+1j) +div (2+16j) (16+2j) (0.246153846154+0.969230769231j) +div (2+16j) (16+16j) (0.5625+0.4375j) +div (2+16j) (16+infj) -0j +div (2+16j) (16+nanj) (nan+nanj) +div (2+16j) (inf-infj) (nan+nanj) +div (2+16j) (inf-16j) 0j +div (2+16j) (inf-2j) 0j +div (2+16j) (inf-0j) 0j +div (2+16j) (inf+0j) 0j +div (2+16j) (inf+2j) 0j +div (2+16j) (inf+16j) 0j +div (2+16j) (inf+infj) (nan+nanj) +div (2+16j) (inf+nanj) (nan+nanj) +div (2+16j) (nan-infj) (nan+nanj) +div (2+16j) (nan-16j) (nan+nanj) +div (2+16j) (nan-2j) (nan+nanj) +div (2+16j) (nan-0j) (nan+nanj) +div (2+16j) (nan+0j) (nan+nanj) +div (2+16j) (nan+2j) (nan+nanj) +div (2+16j) (nan+16j) (nan+nanj) +div (2+16j) (nan+infj) (nan+nanj) +div (2+16j) (nan+nanj) (nan+nanj) +div (2+infj) (-inf-infj) (nan+nanj) +div (2+infj) (-inf-16j) (nan+nanj) +div (2+infj) (-inf-2j) (nan+nanj) +div (2+infj) (-inf-0j) (nan+nanj) +div (2+infj) (-inf+0j) (nan+nanj) +div (2+infj) (-inf+2j) (nan+nanj) +div (2+infj) (-inf+16j) (nan+nanj) +div (2+infj) (-inf+infj) (nan+nanj) +div (2+infj) (-inf+nanj) (nan+nanj) +div (2+infj) (-16-infj) (nan+nanj) +div (2+infj) (-16-16j) (-inf-infj) +div (2+infj) (-16-2j) (-inf-infj) +div (2+infj) (-16-0j) (nan-infj) +div (2+infj) (-16+0j) (nan-infj) +div (2+infj) (-16+2j) (inf-infj) +div (2+infj) (-16+16j) (inf-infj) +div (2+infj) (-16+infj) (nan+nanj) +div (2+infj) (-16+nanj) (nan+nanj) +div (2+infj) (-2-infj) (nan+nanj) +div (2+infj) (-2-16j) (-inf-infj) +div (2+infj) (-2-2j) (-inf-infj) +div (2+infj) (-2-0j) (nan-infj) +div (2+infj) (-2+0j) (nan-infj) +div (2+infj) (-2+2j) (inf-infj) +div (2+infj) (-2+16j) (inf-infj) +div (2+infj) (-2+infj) (nan+nanj) +div (2+infj) (-2+nanj) (nan+nanj) +div (2+infj) (-0-infj) (nan+nanj) +div (2+infj) (-0-16j) (-inf+nanj) +div (2+infj) (-0-2j) (-inf+nanj) +div (2+infj) (-0-0j) ZeroDivisionError +div (2+infj) (-0+0j) ZeroDivisionError +div (2+infj) (-0+2j) (inf+nanj) +div (2+infj) (-0+16j) (inf+nanj) +div (2+infj) (-0+infj) (nan+nanj) +div (2+infj) (-0+nanj) (nan+nanj) +div (2+infj) -infj (nan+nanj) +div (2+infj) -16j (-inf+nanj) +div (2+infj) -2j (-inf+nanj) +div (2+infj) -0j ZeroDivisionError +div (2+infj) 0j ZeroDivisionError +div (2+infj) 2j (inf+nanj) +div (2+infj) 16j (inf+nanj) +div (2+infj) infj (nan+nanj) +div (2+infj) nanj (nan+nanj) +div (2+infj) (2-infj) (nan+nanj) +div (2+infj) (2-16j) (-inf+infj) +div (2+infj) (2-2j) (-inf+infj) +div (2+infj) (2-0j) (nan+infj) +div (2+infj) (2+0j) (nan+infj) +div (2+infj) (2+2j) (inf+infj) +div (2+infj) (2+16j) (inf+infj) +div (2+infj) (2+infj) (nan+nanj) +div (2+infj) (2+nanj) (nan+nanj) +div (2+infj) (16-infj) (nan+nanj) +div (2+infj) (16-16j) (-inf+infj) +div (2+infj) (16-2j) (-inf+infj) +div (2+infj) (16-0j) (nan+infj) +div (2+infj) (16+0j) (nan+infj) +div (2+infj) (16+2j) (inf+infj) +div (2+infj) (16+16j) (inf+infj) +div (2+infj) (16+infj) (nan+nanj) +div (2+infj) (16+nanj) (nan+nanj) +div (2+infj) (inf-infj) (nan+nanj) +div (2+infj) (inf-16j) (nan+nanj) +div (2+infj) (inf-2j) (nan+nanj) +div (2+infj) (inf-0j) (nan+nanj) +div (2+infj) (inf+0j) (nan+nanj) +div (2+infj) (inf+2j) (nan+nanj) +div (2+infj) (inf+16j) (nan+nanj) +div (2+infj) (inf+infj) (nan+nanj) +div (2+infj) (inf+nanj) (nan+nanj) +div (2+infj) (nan-infj) (nan+nanj) +div (2+infj) (nan-16j) (nan+nanj) +div (2+infj) (nan-2j) (nan+nanj) +div (2+infj) (nan-0j) (nan+nanj) +div (2+infj) (nan+0j) (nan+nanj) +div (2+infj) (nan+2j) (nan+nanj) +div (2+infj) (nan+16j) (nan+nanj) +div (2+infj) (nan+infj) (nan+nanj) +div (2+infj) (nan+nanj) (nan+nanj) +div (2+nanj) (-inf-infj) (nan+nanj) +div (2+nanj) (-inf-16j) (nan+nanj) +div (2+nanj) (-inf-2j) (nan+nanj) +div (2+nanj) (-inf-0j) (nan+nanj) +div (2+nanj) (-inf+0j) (nan+nanj) +div (2+nanj) (-inf+2j) (nan+nanj) +div (2+nanj) (-inf+16j) (nan+nanj) +div (2+nanj) (-inf+infj) (nan+nanj) +div (2+nanj) (-inf+nanj) (nan+nanj) +div (2+nanj) (-16-infj) (nan+nanj) +div (2+nanj) (-16-16j) (nan+nanj) +div (2+nanj) (-16-2j) (nan+nanj) +div (2+nanj) (-16-0j) (nan+nanj) +div (2+nanj) (-16+0j) (nan+nanj) +div (2+nanj) (-16+2j) (nan+nanj) +div (2+nanj) (-16+16j) (nan+nanj) +div (2+nanj) (-16+infj) (nan+nanj) +div (2+nanj) (-16+nanj) (nan+nanj) +div (2+nanj) (-2-infj) (nan+nanj) +div (2+nanj) (-2-16j) (nan+nanj) +div (2+nanj) (-2-2j) (nan+nanj) +div (2+nanj) (-2-0j) (nan+nanj) +div (2+nanj) (-2+0j) (nan+nanj) +div (2+nanj) (-2+2j) (nan+nanj) +div (2+nanj) (-2+16j) (nan+nanj) +div (2+nanj) (-2+infj) (nan+nanj) +div (2+nanj) (-2+nanj) (nan+nanj) +div (2+nanj) (-0-infj) (nan+nanj) +div (2+nanj) (-0-16j) (nan+nanj) +div (2+nanj) (-0-2j) (nan+nanj) +div (2+nanj) (-0-0j) ZeroDivisionError +div (2+nanj) (-0+0j) ZeroDivisionError +div (2+nanj) (-0+2j) (nan+nanj) +div (2+nanj) (-0+16j) (nan+nanj) +div (2+nanj) (-0+infj) (nan+nanj) +div (2+nanj) (-0+nanj) (nan+nanj) +div (2+nanj) -infj (nan+nanj) +div (2+nanj) -16j (nan+nanj) +div (2+nanj) -2j (nan+nanj) +div (2+nanj) -0j ZeroDivisionError +div (2+nanj) 0j ZeroDivisionError +div (2+nanj) 2j (nan+nanj) +div (2+nanj) 16j (nan+nanj) +div (2+nanj) infj (nan+nanj) +div (2+nanj) nanj (nan+nanj) +div (2+nanj) (2-infj) (nan+nanj) +div (2+nanj) (2-16j) (nan+nanj) +div (2+nanj) (2-2j) (nan+nanj) +div (2+nanj) (2-0j) (nan+nanj) +div (2+nanj) (2+0j) (nan+nanj) +div (2+nanj) (2+2j) (nan+nanj) +div (2+nanj) (2+16j) (nan+nanj) +div (2+nanj) (2+infj) (nan+nanj) +div (2+nanj) (2+nanj) (nan+nanj) +div (2+nanj) (16-infj) (nan+nanj) +div (2+nanj) (16-16j) (nan+nanj) +div (2+nanj) (16-2j) (nan+nanj) +div (2+nanj) (16-0j) (nan+nanj) +div (2+nanj) (16+0j) (nan+nanj) +div (2+nanj) (16+2j) (nan+nanj) +div (2+nanj) (16+16j) (nan+nanj) +div (2+nanj) (16+infj) (nan+nanj) +div (2+nanj) (16+nanj) (nan+nanj) +div (2+nanj) (inf-infj) (nan+nanj) +div (2+nanj) (inf-16j) (nan+nanj) +div (2+nanj) (inf-2j) (nan+nanj) +div (2+nanj) (inf-0j) (nan+nanj) +div (2+nanj) (inf+0j) (nan+nanj) +div (2+nanj) (inf+2j) (nan+nanj) +div (2+nanj) (inf+16j) (nan+nanj) +div (2+nanj) (inf+infj) (nan+nanj) +div (2+nanj) (inf+nanj) (nan+nanj) +div (2+nanj) (nan-infj) (nan+nanj) +div (2+nanj) (nan-16j) (nan+nanj) +div (2+nanj) (nan-2j) (nan+nanj) +div (2+nanj) (nan-0j) (nan+nanj) +div (2+nanj) (nan+0j) (nan+nanj) +div (2+nanj) (nan+2j) (nan+nanj) +div (2+nanj) (nan+16j) (nan+nanj) +div (2+nanj) (nan+infj) (nan+nanj) +div (2+nanj) (nan+nanj) (nan+nanj) +div (16-infj) (-inf-infj) (nan+nanj) +div (16-infj) (-inf-16j) (nan+nanj) +div (16-infj) (-inf-2j) (nan+nanj) +div (16-infj) (-inf-0j) (nan+nanj) +div (16-infj) (-inf+0j) (nan+nanj) +div (16-infj) (-inf+2j) (nan+nanj) +div (16-infj) (-inf+16j) (nan+nanj) +div (16-infj) (-inf+infj) (nan+nanj) +div (16-infj) (-inf+nanj) (nan+nanj) +div (16-infj) (-16-infj) (nan+nanj) +div (16-infj) (-16-16j) (inf+infj) +div (16-infj) (-16-2j) (inf+infj) +div (16-infj) (-16-0j) (nan+infj) +div (16-infj) (-16+0j) (nan+infj) +div (16-infj) (-16+2j) (-inf+infj) +div (16-infj) (-16+16j) (-inf+infj) +div (16-infj) (-16+infj) (nan+nanj) +div (16-infj) (-16+nanj) (nan+nanj) +div (16-infj) (-2-infj) (nan+nanj) +div (16-infj) (-2-16j) (inf+infj) +div (16-infj) (-2-2j) (inf+infj) +div (16-infj) (-2-0j) (nan+infj) +div (16-infj) (-2+0j) (nan+infj) +div (16-infj) (-2+2j) (-inf+infj) +div (16-infj) (-2+16j) (-inf+infj) +div (16-infj) (-2+infj) (nan+nanj) +div (16-infj) (-2+nanj) (nan+nanj) +div (16-infj) (-0-infj) (nan+nanj) +div (16-infj) (-0-16j) (inf+nanj) +div (16-infj) (-0-2j) (inf+nanj) +div (16-infj) (-0-0j) ZeroDivisionError +div (16-infj) (-0+0j) ZeroDivisionError +div (16-infj) (-0+2j) (-inf+nanj) +div (16-infj) (-0+16j) (-inf+nanj) +div (16-infj) (-0+infj) (nan+nanj) +div (16-infj) (-0+nanj) (nan+nanj) +div (16-infj) -infj (nan+nanj) +div (16-infj) -16j (inf+nanj) +div (16-infj) -2j (inf+nanj) +div (16-infj) -0j ZeroDivisionError +div (16-infj) 0j ZeroDivisionError +div (16-infj) 2j (-inf+nanj) +div (16-infj) 16j (-inf+nanj) +div (16-infj) infj (nan+nanj) +div (16-infj) nanj (nan+nanj) +div (16-infj) (2-infj) (nan+nanj) +div (16-infj) (2-16j) (inf-infj) +div (16-infj) (2-2j) (inf-infj) +div (16-infj) (2-0j) (nan-infj) +div (16-infj) (2+0j) (nan-infj) +div (16-infj) (2+2j) (-inf-infj) +div (16-infj) (2+16j) (-inf-infj) +div (16-infj) (2+infj) (nan+nanj) +div (16-infj) (2+nanj) (nan+nanj) +div (16-infj) (16-infj) (nan+nanj) +div (16-infj) (16-16j) (inf-infj) +div (16-infj) (16-2j) (inf-infj) +div (16-infj) (16-0j) (nan-infj) +div (16-infj) (16+0j) (nan-infj) +div (16-infj) (16+2j) (-inf-infj) +div (16-infj) (16+16j) (-inf-infj) +div (16-infj) (16+infj) (nan+nanj) +div (16-infj) (16+nanj) (nan+nanj) +div (16-infj) (inf-infj) (nan+nanj) +div (16-infj) (inf-16j) (nan+nanj) +div (16-infj) (inf-2j) (nan+nanj) +div (16-infj) (inf-0j) (nan+nanj) +div (16-infj) (inf+0j) (nan+nanj) +div (16-infj) (inf+2j) (nan+nanj) +div (16-infj) (inf+16j) (nan+nanj) +div (16-infj) (inf+infj) (nan+nanj) +div (16-infj) (inf+nanj) (nan+nanj) +div (16-infj) (nan-infj) (nan+nanj) +div (16-infj) (nan-16j) (nan+nanj) +div (16-infj) (nan-2j) (nan+nanj) +div (16-infj) (nan-0j) (nan+nanj) +div (16-infj) (nan+0j) (nan+nanj) +div (16-infj) (nan+2j) (nan+nanj) +div (16-infj) (nan+16j) (nan+nanj) +div (16-infj) (nan+infj) (nan+nanj) +div (16-infj) (nan+nanj) (nan+nanj) +div (16-16j) (-inf-infj) (nan+nanj) +div (16-16j) (-inf-16j) (-0+0j) +div (16-16j) (-inf-2j) (-0+0j) +div (16-16j) (-inf-0j) (-0+0j) +div (16-16j) (-inf+0j) (-0+0j) +div (16-16j) (-inf+2j) (-0+0j) +div (16-16j) (-inf+16j) (-0+0j) +div (16-16j) (-inf+infj) (nan+nanj) +div (16-16j) (-inf+nanj) (nan+nanj) +div (16-16j) (-16-infj) 0j +div (16-16j) (-16-16j) (-0+1j) +div (16-16j) (-16-2j) (-0.861538461538+1.10769230769j) +div (16-16j) (-16-0j) (-1+1j) +div (16-16j) (-16+0j) (-1+1j) +div (16-16j) (-16+2j) (-1.10769230769+0.861538461538j) +div (16-16j) (-16+16j) (-1-0j) +div (16-16j) (-16+infj) (-0-0j) +div (16-16j) (-16+nanj) (nan+nanj) +div (16-16j) (-2-infj) 0j +div (16-16j) (-2-16j) (0.861538461538+1.10769230769j) +div (16-16j) (-2-2j) (-0+8j) +div (16-16j) (-2-0j) (-8+8j) +div (16-16j) (-2+0j) (-8+8j) +div (16-16j) (-2+2j) (-8-0j) +div (16-16j) (-2+16j) (-1.10769230769-0.861538461538j) +div (16-16j) (-2+infj) (-0-0j) +div (16-16j) (-2+nanj) (nan+nanj) +div (16-16j) (-0-infj) 0j +div (16-16j) (-0-16j) (1+1j) +div (16-16j) (-0-2j) (8+8j) +div (16-16j) (-0-0j) ZeroDivisionError +div (16-16j) (-0+0j) ZeroDivisionError +div (16-16j) (-0+2j) (-8-8j) +div (16-16j) (-0+16j) (-1-1j) +div (16-16j) (-0+infj) (-0-0j) +div (16-16j) (-0+nanj) (nan+nanj) +div (16-16j) -infj 0j +div (16-16j) -16j (1+1j) +div (16-16j) -2j (8+8j) +div (16-16j) -0j ZeroDivisionError +div (16-16j) 0j ZeroDivisionError +div (16-16j) 2j (-8-8j) +div (16-16j) 16j (-1-1j) +div (16-16j) infj (-0-0j) +div (16-16j) nanj (nan+nanj) +div (16-16j) (2-infj) 0j +div (16-16j) (2-16j) (1.10769230769+0.861538461538j) +div (16-16j) (2-2j) (8+0j) +div (16-16j) (2-0j) (8-8j) +div (16-16j) (2+0j) (8-8j) +div (16-16j) (2+2j) -8j +div (16-16j) (2+16j) (-0.861538461538-1.10769230769j) +div (16-16j) (2+infj) (-0-0j) +div (16-16j) (2+nanj) (nan+nanj) +div (16-16j) (16-infj) 0j +div (16-16j) (16-16j) (1+0j) +div (16-16j) (16-2j) (1.10769230769-0.861538461538j) +div (16-16j) (16-0j) (1-1j) +div (16-16j) (16+0j) (1-1j) +div (16-16j) (16+2j) (0.861538461538-1.10769230769j) +div (16-16j) (16+16j) -1j +div (16-16j) (16+infj) (-0-0j) +div (16-16j) (16+nanj) (nan+nanj) +div (16-16j) (inf-infj) (nan+nanj) +div (16-16j) (inf-16j) -0j +div (16-16j) (inf-2j) -0j +div (16-16j) (inf-0j) -0j +div (16-16j) (inf+0j) -0j +div (16-16j) (inf+2j) -0j +div (16-16j) (inf+16j) -0j +div (16-16j) (inf+infj) (nan+nanj) +div (16-16j) (inf+nanj) (nan+nanj) +div (16-16j) (nan-infj) (nan+nanj) +div (16-16j) (nan-16j) (nan+nanj) +div (16-16j) (nan-2j) (nan+nanj) +div (16-16j) (nan-0j) (nan+nanj) +div (16-16j) (nan+0j) (nan+nanj) +div (16-16j) (nan+2j) (nan+nanj) +div (16-16j) (nan+16j) (nan+nanj) +div (16-16j) (nan+infj) (nan+nanj) +div (16-16j) (nan+nanj) (nan+nanj) +div (16-2j) (-inf-infj) (nan+nanj) +div (16-2j) (-inf-16j) (-0+0j) +div (16-2j) (-inf-2j) (-0+0j) +div (16-2j) (-inf-0j) (-0+0j) +div (16-2j) (-inf+0j) (-0+0j) +div (16-2j) (-inf+2j) (-0+0j) +div (16-2j) (-inf+16j) (-0+0j) +div (16-2j) (-inf+infj) (nan+nanj) +div (16-2j) (-inf+nanj) (nan+nanj) +div (16-2j) (-16-infj) 0j +div (16-2j) (-16-16j) (-0.4375+0.5625j) +div (16-2j) (-16-2j) (-0.969230769231+0.246153846154j) +div (16-2j) (-16-0j) (-1+0.125j) +div (16-2j) (-16+0j) (-1+0.125j) +div (16-2j) (-16+2j) (-1-0j) +div (16-2j) (-16+16j) (-0.5625-0.4375j) +div (16-2j) (-16+infj) (-0-0j) +div (16-2j) (-16+nanj) (nan+nanj) +div (16-2j) (-2-infj) 0j +div (16-2j) (-2-16j) (-0+1j) +div (16-2j) (-2-2j) (-3.5+4.5j) +div (16-2j) (-2-0j) (-8+1j) +div (16-2j) (-2+0j) (-8+1j) +div (16-2j) (-2+2j) (-4.5-3.5j) +div (16-2j) (-2+16j) (-0.246153846154-0.969230769231j) +div (16-2j) (-2+infj) (-0-0j) +div (16-2j) (-2+nanj) (nan+nanj) +div (16-2j) (-0-infj) 0j +div (16-2j) (-0-16j) (0.125+1j) +div (16-2j) (-0-2j) (1+8j) +div (16-2j) (-0-0j) ZeroDivisionError +div (16-2j) (-0+0j) ZeroDivisionError +div (16-2j) (-0+2j) (-1-8j) +div (16-2j) (-0+16j) (-0.125-1j) +div (16-2j) (-0+infj) (-0-0j) +div (16-2j) (-0+nanj) (nan+nanj) +div (16-2j) -infj 0j +div (16-2j) -16j (0.125+1j) +div (16-2j) -2j (1+8j) +div (16-2j) -0j ZeroDivisionError +div (16-2j) 0j ZeroDivisionError +div (16-2j) 2j (-1-8j) +div (16-2j) 16j (-0.125-1j) +div (16-2j) infj (-0-0j) +div (16-2j) nanj (nan+nanj) +div (16-2j) (2-infj) 0j +div (16-2j) (2-16j) (0.246153846154+0.969230769231j) +div (16-2j) (2-2j) (4.5+3.5j) +div (16-2j) (2-0j) (8-1j) +div (16-2j) (2+0j) (8-1j) +div (16-2j) (2+2j) (3.5-4.5j) +div (16-2j) (2+16j) -1j +div (16-2j) (2+infj) (-0-0j) +div (16-2j) (2+nanj) (nan+nanj) +div (16-2j) (16-infj) 0j +div (16-2j) (16-16j) (0.5625+0.4375j) +div (16-2j) (16-2j) (1+0j) +div (16-2j) (16-0j) (1-0.125j) +div (16-2j) (16+0j) (1-0.125j) +div (16-2j) (16+2j) (0.969230769231-0.246153846154j) +div (16-2j) (16+16j) (0.4375-0.5625j) +div (16-2j) (16+infj) (-0-0j) +div (16-2j) (16+nanj) (nan+nanj) +div (16-2j) (inf-infj) (nan+nanj) +div (16-2j) (inf-16j) -0j +div (16-2j) (inf-2j) -0j +div (16-2j) (inf-0j) -0j +div (16-2j) (inf+0j) -0j +div (16-2j) (inf+2j) -0j +div (16-2j) (inf+16j) -0j +div (16-2j) (inf+infj) (nan+nanj) +div (16-2j) (inf+nanj) (nan+nanj) +div (16-2j) (nan-infj) (nan+nanj) +div (16-2j) (nan-16j) (nan+nanj) +div (16-2j) (nan-2j) (nan+nanj) +div (16-2j) (nan-0j) (nan+nanj) +div (16-2j) (nan+0j) (nan+nanj) +div (16-2j) (nan+2j) (nan+nanj) +div (16-2j) (nan+16j) (nan+nanj) +div (16-2j) (nan+infj) (nan+nanj) +div (16-2j) (nan+nanj) (nan+nanj) +div (16-0j) (-inf-infj) (nan+nanj) +div (16-0j) (-inf-16j) (-0+0j) +div (16-0j) (-inf-2j) (-0+0j) +div (16-0j) (-inf-0j) (-0+0j) +div (16-0j) (-inf+0j) (-0-0j) +div (16-0j) (-inf+2j) (-0-0j) +div (16-0j) (-inf+16j) (-0-0j) +div (16-0j) (-inf+infj) (nan+nanj) +div (16-0j) (-inf+nanj) (nan+nanj) +div (16-0j) (-16-infj) (-0+0j) +div (16-0j) (-16-16j) (-0.5+0.5j) +div (16-0j) (-16-2j) (-0.984615384615+0.123076923077j) +div (16-0j) (-16-0j) (-1+0j) +div (16-0j) (-16+0j) (-1-0j) +div (16-0j) (-16+2j) (-0.984615384615-0.123076923077j) +div (16-0j) (-16+16j) (-0.5-0.5j) +div (16-0j) (-16+infj) (-0-0j) +div (16-0j) (-16+nanj) (nan+nanj) +div (16-0j) (-2-infj) (-0+0j) +div (16-0j) (-2-16j) (-0.123076923077+0.984615384615j) +div (16-0j) (-2-2j) (-4+4j) +div (16-0j) (-2-0j) (-8+0j) +div (16-0j) (-2+0j) (-8-0j) +div (16-0j) (-2+2j) (-4-4j) +div (16-0j) (-2+16j) (-0.123076923077-0.984615384615j) +div (16-0j) (-2+infj) (-0-0j) +div (16-0j) (-2+nanj) (nan+nanj) +div (16-0j) (-0-infj) (-0+0j) +div (16-0j) (-0-16j) (-0+1j) +div (16-0j) (-0-2j) (-0+8j) +div (16-0j) (-0-0j) ZeroDivisionError +div (16-0j) (-0+0j) ZeroDivisionError +div (16-0j) (-0+2j) (-0-8j) +div (16-0j) (-0+16j) (-0-1j) +div (16-0j) (-0+infj) (-0-0j) +div (16-0j) (-0+nanj) (nan+nanj) +div (16-0j) -infj 0j +div (16-0j) -16j 1j +div (16-0j) -2j 8j +div (16-0j) -0j ZeroDivisionError +div (16-0j) 0j ZeroDivisionError +div (16-0j) 2j -8j +div (16-0j) 16j -1j +div (16-0j) infj -0j +div (16-0j) nanj (nan+nanj) +div (16-0j) (2-infj) 0j +div (16-0j) (2-16j) (0.123076923077+0.984615384615j) +div (16-0j) (2-2j) (4+4j) +div (16-0j) (2-0j) (8+0j) +div (16-0j) (2+0j) (8-0j) +div (16-0j) (2+2j) (4-4j) +div (16-0j) (2+16j) (0.123076923077-0.984615384615j) +div (16-0j) (2+infj) -0j +div (16-0j) (2+nanj) (nan+nanj) +div (16-0j) (16-infj) 0j +div (16-0j) (16-16j) (0.5+0.5j) +div (16-0j) (16-2j) (0.984615384615+0.123076923077j) +div (16-0j) (16-0j) (1+0j) +div (16-0j) (16+0j) (1-0j) +div (16-0j) (16+2j) (0.984615384615-0.123076923077j) +div (16-0j) (16+16j) (0.5-0.5j) +div (16-0j) (16+infj) -0j +div (16-0j) (16+nanj) (nan+nanj) +div (16-0j) (inf-infj) (nan+nanj) +div (16-0j) (inf-16j) 0j +div (16-0j) (inf-2j) 0j +div (16-0j) (inf-0j) 0j +div (16-0j) (inf+0j) -0j +div (16-0j) (inf+2j) -0j +div (16-0j) (inf+16j) -0j +div (16-0j) (inf+infj) (nan+nanj) +div (16-0j) (inf+nanj) (nan+nanj) +div (16-0j) (nan-infj) (nan+nanj) +div (16-0j) (nan-16j) (nan+nanj) +div (16-0j) (nan-2j) (nan+nanj) +div (16-0j) (nan-0j) (nan+nanj) +div (16-0j) (nan+0j) (nan+nanj) +div (16-0j) (nan+2j) (nan+nanj) +div (16-0j) (nan+16j) (nan+nanj) +div (16-0j) (nan+infj) (nan+nanj) +div (16-0j) (nan+nanj) (nan+nanj) +div (16+0j) (-inf-infj) (nan+nanj) +div (16+0j) (-inf-16j) (-0-0j) +div (16+0j) (-inf-2j) (-0-0j) +div (16+0j) (-inf-0j) (-0-0j) +div (16+0j) (-inf+0j) (-0-0j) +div (16+0j) (-inf+2j) (-0-0j) +div (16+0j) (-inf+16j) (-0-0j) +div (16+0j) (-inf+infj) (nan+nanj) +div (16+0j) (-inf+nanj) (nan+nanj) +div (16+0j) (-16-infj) (-0+0j) +div (16+0j) (-16-16j) (-0.5+0.5j) +div (16+0j) (-16-2j) (-0.984615384615+0.123076923077j) +div (16+0j) (-16-0j) (-1-0j) +div (16+0j) (-16+0j) (-1-0j) +div (16+0j) (-16+2j) (-0.984615384615-0.123076923077j) +div (16+0j) (-16+16j) (-0.5-0.5j) +div (16+0j) (-16+infj) -0j +div (16+0j) (-16+nanj) (nan+nanj) +div (16+0j) (-2-infj) (-0+0j) +div (16+0j) (-2-16j) (-0.123076923077+0.984615384615j) +div (16+0j) (-2-2j) (-4+4j) +div (16+0j) (-2-0j) (-8-0j) +div (16+0j) (-2+0j) (-8-0j) +div (16+0j) (-2+2j) (-4-4j) +div (16+0j) (-2+16j) (-0.123076923077-0.984615384615j) +div (16+0j) (-2+infj) -0j +div (16+0j) (-2+nanj) (nan+nanj) +div (16+0j) (-0-infj) (-0+0j) +div (16+0j) (-0-16j) (-0+1j) +div (16+0j) (-0-2j) (-0+8j) +div (16+0j) (-0-0j) ZeroDivisionError +div (16+0j) (-0+0j) ZeroDivisionError +div (16+0j) (-0+2j) -8j +div (16+0j) (-0+16j) -1j +div (16+0j) (-0+infj) -0j +div (16+0j) (-0+nanj) (nan+nanj) +div (16+0j) -infj (-0+0j) +div (16+0j) -16j (-0+1j) +div (16+0j) -2j (-0+8j) +div (16+0j) -0j ZeroDivisionError +div (16+0j) 0j ZeroDivisionError +div (16+0j) 2j -8j +div (16+0j) 16j -1j +div (16+0j) infj -0j +div (16+0j) nanj (nan+nanj) +div (16+0j) (2-infj) (-0+0j) +div (16+0j) (2-16j) (0.123076923077+0.984615384615j) +div (16+0j) (2-2j) (4+4j) +div (16+0j) (2-0j) (8+0j) +div (16+0j) (2+0j) (8+0j) +div (16+0j) (2+2j) (4-4j) +div (16+0j) (2+16j) (0.123076923077-0.984615384615j) +div (16+0j) (2+infj) -0j +div (16+0j) (2+nanj) (nan+nanj) +div (16+0j) (16-infj) (-0+0j) +div (16+0j) (16-16j) (0.5+0.5j) +div (16+0j) (16-2j) (0.984615384615+0.123076923077j) +div (16+0j) (16-0j) (1+0j) +div (16+0j) (16+0j) (1+0j) +div (16+0j) (16+2j) (0.984615384615-0.123076923077j) +div (16+0j) (16+16j) (0.5-0.5j) +div (16+0j) (16+infj) -0j +div (16+0j) (16+nanj) (nan+nanj) +div (16+0j) (inf-infj) (nan+nanj) +div (16+0j) (inf-16j) 0j +div (16+0j) (inf-2j) 0j +div (16+0j) (inf-0j) 0j +div (16+0j) (inf+0j) 0j +div (16+0j) (inf+2j) 0j +div (16+0j) (inf+16j) 0j +div (16+0j) (inf+infj) (nan+nanj) +div (16+0j) (inf+nanj) (nan+nanj) +div (16+0j) (nan-infj) (nan+nanj) +div (16+0j) (nan-16j) (nan+nanj) +div (16+0j) (nan-2j) (nan+nanj) +div (16+0j) (nan-0j) (nan+nanj) +div (16+0j) (nan+0j) (nan+nanj) +div (16+0j) (nan+2j) (nan+nanj) +div (16+0j) (nan+16j) (nan+nanj) +div (16+0j) (nan+infj) (nan+nanj) +div (16+0j) (nan+nanj) (nan+nanj) +div (16+2j) (-inf-infj) (nan+nanj) +div (16+2j) (-inf-16j) (-0-0j) +div (16+2j) (-inf-2j) (-0-0j) +div (16+2j) (-inf-0j) (-0-0j) +div (16+2j) (-inf+0j) (-0-0j) +div (16+2j) (-inf+2j) (-0-0j) +div (16+2j) (-inf+16j) (-0-0j) +div (16+2j) (-inf+infj) (nan+nanj) +div (16+2j) (-inf+nanj) (nan+nanj) +div (16+2j) (-16-infj) (-0+0j) +div (16+2j) (-16-16j) (-0.5625+0.4375j) +div (16+2j) (-16-2j) (-1-0j) +div (16+2j) (-16-0j) (-1-0.125j) +div (16+2j) (-16+0j) (-1-0.125j) +div (16+2j) (-16+2j) (-0.969230769231-0.246153846154j) +div (16+2j) (-16+16j) (-0.4375-0.5625j) +div (16+2j) (-16+infj) -0j +div (16+2j) (-16+nanj) (nan+nanj) +div (16+2j) (-2-infj) (-0+0j) +div (16+2j) (-2-16j) (-0.246153846154+0.969230769231j) +div (16+2j) (-2-2j) (-4.5+3.5j) +div (16+2j) (-2-0j) (-8-1j) +div (16+2j) (-2+0j) (-8-1j) +div (16+2j) (-2+2j) (-3.5-4.5j) +div (16+2j) (-2+16j) -1j +div (16+2j) (-2+infj) -0j +div (16+2j) (-2+nanj) (nan+nanj) +div (16+2j) (-0-infj) (-0+0j) +div (16+2j) (-0-16j) (-0.125+1j) +div (16+2j) (-0-2j) (-1+8j) +div (16+2j) (-0-0j) ZeroDivisionError +div (16+2j) (-0+0j) ZeroDivisionError +div (16+2j) (-0+2j) (1-8j) +div (16+2j) (-0+16j) (0.125-1j) +div (16+2j) (-0+infj) -0j +div (16+2j) (-0+nanj) (nan+nanj) +div (16+2j) -infj (-0+0j) +div (16+2j) -16j (-0.125+1j) +div (16+2j) -2j (-1+8j) +div (16+2j) -0j ZeroDivisionError +div (16+2j) 0j ZeroDivisionError +div (16+2j) 2j (1-8j) +div (16+2j) 16j (0.125-1j) +div (16+2j) infj -0j +div (16+2j) nanj (nan+nanj) +div (16+2j) (2-infj) (-0+0j) +div (16+2j) (2-16j) (-0+1j) +div (16+2j) (2-2j) (3.5+4.5j) +div (16+2j) (2-0j) (8+1j) +div (16+2j) (2+0j) (8+1j) +div (16+2j) (2+2j) (4.5-3.5j) +div (16+2j) (2+16j) (0.246153846154-0.969230769231j) +div (16+2j) (2+infj) -0j +div (16+2j) (2+nanj) (nan+nanj) +div (16+2j) (16-infj) (-0+0j) +div (16+2j) (16-16j) (0.4375+0.5625j) +div (16+2j) (16-2j) (0.969230769231+0.246153846154j) +div (16+2j) (16-0j) (1+0.125j) +div (16+2j) (16+0j) (1+0.125j) +div (16+2j) (16+2j) (1+0j) +div (16+2j) (16+16j) (0.5625-0.4375j) +div (16+2j) (16+infj) -0j +div (16+2j) (16+nanj) (nan+nanj) +div (16+2j) (inf-infj) (nan+nanj) +div (16+2j) (inf-16j) 0j +div (16+2j) (inf-2j) 0j +div (16+2j) (inf-0j) 0j +div (16+2j) (inf+0j) 0j +div (16+2j) (inf+2j) 0j +div (16+2j) (inf+16j) 0j +div (16+2j) (inf+infj) (nan+nanj) +div (16+2j) (inf+nanj) (nan+nanj) +div (16+2j) (nan-infj) (nan+nanj) +div (16+2j) (nan-16j) (nan+nanj) +div (16+2j) (nan-2j) (nan+nanj) +div (16+2j) (nan-0j) (nan+nanj) +div (16+2j) (nan+0j) (nan+nanj) +div (16+2j) (nan+2j) (nan+nanj) +div (16+2j) (nan+16j) (nan+nanj) +div (16+2j) (nan+infj) (nan+nanj) +div (16+2j) (nan+nanj) (nan+nanj) +div (16+16j) (-inf-infj) (nan+nanj) +div (16+16j) (-inf-16j) (-0-0j) +div (16+16j) (-inf-2j) (-0-0j) +div (16+16j) (-inf-0j) (-0-0j) +div (16+16j) (-inf+0j) (-0-0j) +div (16+16j) (-inf+2j) (-0-0j) +div (16+16j) (-inf+16j) (-0-0j) +div (16+16j) (-inf+infj) (nan+nanj) +div (16+16j) (-inf+nanj) (nan+nanj) +div (16+16j) (-16-infj) (-0+0j) +div (16+16j) (-16-16j) (-1-0j) +div (16+16j) (-16-2j) (-1.10769230769-0.861538461538j) +div (16+16j) (-16-0j) (-1-1j) +div (16+16j) (-16+0j) (-1-1j) +div (16+16j) (-16+2j) (-0.861538461538-1.10769230769j) +div (16+16j) (-16+16j) (-0-1j) +div (16+16j) (-16+infj) -0j +div (16+16j) (-16+nanj) (nan+nanj) +div (16+16j) (-2-infj) (-0+0j) +div (16+16j) (-2-16j) (-1.10769230769+0.861538461538j) +div (16+16j) (-2-2j) (-8-0j) +div (16+16j) (-2-0j) (-8-8j) +div (16+16j) (-2+0j) (-8-8j) +div (16+16j) (-2+2j) (-0-8j) +div (16+16j) (-2+16j) (0.861538461538-1.10769230769j) +div (16+16j) (-2+infj) -0j +div (16+16j) (-2+nanj) (nan+nanj) +div (16+16j) (-0-infj) (-0+0j) +div (16+16j) (-0-16j) (-1+1j) +div (16+16j) (-0-2j) (-8+8j) +div (16+16j) (-0-0j) ZeroDivisionError +div (16+16j) (-0+0j) ZeroDivisionError +div (16+16j) (-0+2j) (8-8j) +div (16+16j) (-0+16j) (1-1j) +div (16+16j) (-0+infj) -0j +div (16+16j) (-0+nanj) (nan+nanj) +div (16+16j) -infj (-0+0j) +div (16+16j) -16j (-1+1j) +div (16+16j) -2j (-8+8j) +div (16+16j) -0j ZeroDivisionError +div (16+16j) 0j ZeroDivisionError +div (16+16j) 2j (8-8j) +div (16+16j) 16j (1-1j) +div (16+16j) infj -0j +div (16+16j) nanj (nan+nanj) +div (16+16j) (2-infj) (-0+0j) +div (16+16j) (2-16j) (-0.861538461538+1.10769230769j) +div (16+16j) (2-2j) 8j +div (16+16j) (2-0j) (8+8j) +div (16+16j) (2+0j) (8+8j) +div (16+16j) (2+2j) (8+0j) +div (16+16j) (2+16j) (1.10769230769-0.861538461538j) +div (16+16j) (2+infj) -0j +div (16+16j) (2+nanj) (nan+nanj) +div (16+16j) (16-infj) (-0+0j) +div (16+16j) (16-16j) 1j +div (16+16j) (16-2j) (0.861538461538+1.10769230769j) +div (16+16j) (16-0j) (1+1j) +div (16+16j) (16+0j) (1+1j) +div (16+16j) (16+2j) (1.10769230769+0.861538461538j) +div (16+16j) (16+16j) (1+0j) +div (16+16j) (16+infj) -0j +div (16+16j) (16+nanj) (nan+nanj) +div (16+16j) (inf-infj) (nan+nanj) +div (16+16j) (inf-16j) 0j +div (16+16j) (inf-2j) 0j +div (16+16j) (inf-0j) 0j +div (16+16j) (inf+0j) 0j +div (16+16j) (inf+2j) 0j +div (16+16j) (inf+16j) 0j +div (16+16j) (inf+infj) (nan+nanj) +div (16+16j) (inf+nanj) (nan+nanj) +div (16+16j) (nan-infj) (nan+nanj) +div (16+16j) (nan-16j) (nan+nanj) +div (16+16j) (nan-2j) (nan+nanj) +div (16+16j) (nan-0j) (nan+nanj) +div (16+16j) (nan+0j) (nan+nanj) +div (16+16j) (nan+2j) (nan+nanj) +div (16+16j) (nan+16j) (nan+nanj) +div (16+16j) (nan+infj) (nan+nanj) +div (16+16j) (nan+nanj) (nan+nanj) +div (16+infj) (-inf-infj) (nan+nanj) +div (16+infj) (-inf-16j) (nan+nanj) +div (16+infj) (-inf-2j) (nan+nanj) +div (16+infj) (-inf-0j) (nan+nanj) +div (16+infj) (-inf+0j) (nan+nanj) +div (16+infj) (-inf+2j) (nan+nanj) +div (16+infj) (-inf+16j) (nan+nanj) +div (16+infj) (-inf+infj) (nan+nanj) +div (16+infj) (-inf+nanj) (nan+nanj) +div (16+infj) (-16-infj) (nan+nanj) +div (16+infj) (-16-16j) (-inf-infj) +div (16+infj) (-16-2j) (-inf-infj) +div (16+infj) (-16-0j) (nan-infj) +div (16+infj) (-16+0j) (nan-infj) +div (16+infj) (-16+2j) (inf-infj) +div (16+infj) (-16+16j) (inf-infj) +div (16+infj) (-16+infj) (nan+nanj) +div (16+infj) (-16+nanj) (nan+nanj) +div (16+infj) (-2-infj) (nan+nanj) +div (16+infj) (-2-16j) (-inf-infj) +div (16+infj) (-2-2j) (-inf-infj) +div (16+infj) (-2-0j) (nan-infj) +div (16+infj) (-2+0j) (nan-infj) +div (16+infj) (-2+2j) (inf-infj) +div (16+infj) (-2+16j) (inf-infj) +div (16+infj) (-2+infj) (nan+nanj) +div (16+infj) (-2+nanj) (nan+nanj) +div (16+infj) (-0-infj) (nan+nanj) +div (16+infj) (-0-16j) (-inf+nanj) +div (16+infj) (-0-2j) (-inf+nanj) +div (16+infj) (-0-0j) ZeroDivisionError +div (16+infj) (-0+0j) ZeroDivisionError +div (16+infj) (-0+2j) (inf+nanj) +div (16+infj) (-0+16j) (inf+nanj) +div (16+infj) (-0+infj) (nan+nanj) +div (16+infj) (-0+nanj) (nan+nanj) +div (16+infj) -infj (nan+nanj) +div (16+infj) -16j (-inf+nanj) +div (16+infj) -2j (-inf+nanj) +div (16+infj) -0j ZeroDivisionError +div (16+infj) 0j ZeroDivisionError +div (16+infj) 2j (inf+nanj) +div (16+infj) 16j (inf+nanj) +div (16+infj) infj (nan+nanj) +div (16+infj) nanj (nan+nanj) +div (16+infj) (2-infj) (nan+nanj) +div (16+infj) (2-16j) (-inf+infj) +div (16+infj) (2-2j) (-inf+infj) +div (16+infj) (2-0j) (nan+infj) +div (16+infj) (2+0j) (nan+infj) +div (16+infj) (2+2j) (inf+infj) +div (16+infj) (2+16j) (inf+infj) +div (16+infj) (2+infj) (nan+nanj) +div (16+infj) (2+nanj) (nan+nanj) +div (16+infj) (16-infj) (nan+nanj) +div (16+infj) (16-16j) (-inf+infj) +div (16+infj) (16-2j) (-inf+infj) +div (16+infj) (16-0j) (nan+infj) +div (16+infj) (16+0j) (nan+infj) +div (16+infj) (16+2j) (inf+infj) +div (16+infj) (16+16j) (inf+infj) +div (16+infj) (16+infj) (nan+nanj) +div (16+infj) (16+nanj) (nan+nanj) +div (16+infj) (inf-infj) (nan+nanj) +div (16+infj) (inf-16j) (nan+nanj) +div (16+infj) (inf-2j) (nan+nanj) +div (16+infj) (inf-0j) (nan+nanj) +div (16+infj) (inf+0j) (nan+nanj) +div (16+infj) (inf+2j) (nan+nanj) +div (16+infj) (inf+16j) (nan+nanj) +div (16+infj) (inf+infj) (nan+nanj) +div (16+infj) (inf+nanj) (nan+nanj) +div (16+infj) (nan-infj) (nan+nanj) +div (16+infj) (nan-16j) (nan+nanj) +div (16+infj) (nan-2j) (nan+nanj) +div (16+infj) (nan-0j) (nan+nanj) +div (16+infj) (nan+0j) (nan+nanj) +div (16+infj) (nan+2j) (nan+nanj) +div (16+infj) (nan+16j) (nan+nanj) +div (16+infj) (nan+infj) (nan+nanj) +div (16+infj) (nan+nanj) (nan+nanj) +div (16+nanj) (-inf-infj) (nan+nanj) +div (16+nanj) (-inf-16j) (nan+nanj) +div (16+nanj) (-inf-2j) (nan+nanj) +div (16+nanj) (-inf-0j) (nan+nanj) +div (16+nanj) (-inf+0j) (nan+nanj) +div (16+nanj) (-inf+2j) (nan+nanj) +div (16+nanj) (-inf+16j) (nan+nanj) +div (16+nanj) (-inf+infj) (nan+nanj) +div (16+nanj) (-inf+nanj) (nan+nanj) +div (16+nanj) (-16-infj) (nan+nanj) +div (16+nanj) (-16-16j) (nan+nanj) +div (16+nanj) (-16-2j) (nan+nanj) +div (16+nanj) (-16-0j) (nan+nanj) +div (16+nanj) (-16+0j) (nan+nanj) +div (16+nanj) (-16+2j) (nan+nanj) +div (16+nanj) (-16+16j) (nan+nanj) +div (16+nanj) (-16+infj) (nan+nanj) +div (16+nanj) (-16+nanj) (nan+nanj) +div (16+nanj) (-2-infj) (nan+nanj) +div (16+nanj) (-2-16j) (nan+nanj) +div (16+nanj) (-2-2j) (nan+nanj) +div (16+nanj) (-2-0j) (nan+nanj) +div (16+nanj) (-2+0j) (nan+nanj) +div (16+nanj) (-2+2j) (nan+nanj) +div (16+nanj) (-2+16j) (nan+nanj) +div (16+nanj) (-2+infj) (nan+nanj) +div (16+nanj) (-2+nanj) (nan+nanj) +div (16+nanj) (-0-infj) (nan+nanj) +div (16+nanj) (-0-16j) (nan+nanj) +div (16+nanj) (-0-2j) (nan+nanj) +div (16+nanj) (-0-0j) ZeroDivisionError +div (16+nanj) (-0+0j) ZeroDivisionError +div (16+nanj) (-0+2j) (nan+nanj) +div (16+nanj) (-0+16j) (nan+nanj) +div (16+nanj) (-0+infj) (nan+nanj) +div (16+nanj) (-0+nanj) (nan+nanj) +div (16+nanj) -infj (nan+nanj) +div (16+nanj) -16j (nan+nanj) +div (16+nanj) -2j (nan+nanj) +div (16+nanj) -0j ZeroDivisionError +div (16+nanj) 0j ZeroDivisionError +div (16+nanj) 2j (nan+nanj) +div (16+nanj) 16j (nan+nanj) +div (16+nanj) infj (nan+nanj) +div (16+nanj) nanj (nan+nanj) +div (16+nanj) (2-infj) (nan+nanj) +div (16+nanj) (2-16j) (nan+nanj) +div (16+nanj) (2-2j) (nan+nanj) +div (16+nanj) (2-0j) (nan+nanj) +div (16+nanj) (2+0j) (nan+nanj) +div (16+nanj) (2+2j) (nan+nanj) +div (16+nanj) (2+16j) (nan+nanj) +div (16+nanj) (2+infj) (nan+nanj) +div (16+nanj) (2+nanj) (nan+nanj) +div (16+nanj) (16-infj) (nan+nanj) +div (16+nanj) (16-16j) (nan+nanj) +div (16+nanj) (16-2j) (nan+nanj) +div (16+nanj) (16-0j) (nan+nanj) +div (16+nanj) (16+0j) (nan+nanj) +div (16+nanj) (16+2j) (nan+nanj) +div (16+nanj) (16+16j) (nan+nanj) +div (16+nanj) (16+infj) (nan+nanj) +div (16+nanj) (16+nanj) (nan+nanj) +div (16+nanj) (inf-infj) (nan+nanj) +div (16+nanj) (inf-16j) (nan+nanj) +div (16+nanj) (inf-2j) (nan+nanj) +div (16+nanj) (inf-0j) (nan+nanj) +div (16+nanj) (inf+0j) (nan+nanj) +div (16+nanj) (inf+2j) (nan+nanj) +div (16+nanj) (inf+16j) (nan+nanj) +div (16+nanj) (inf+infj) (nan+nanj) +div (16+nanj) (inf+nanj) (nan+nanj) +div (16+nanj) (nan-infj) (nan+nanj) +div (16+nanj) (nan-16j) (nan+nanj) +div (16+nanj) (nan-2j) (nan+nanj) +div (16+nanj) (nan-0j) (nan+nanj) +div (16+nanj) (nan+0j) (nan+nanj) +div (16+nanj) (nan+2j) (nan+nanj) +div (16+nanj) (nan+16j) (nan+nanj) +div (16+nanj) (nan+infj) (nan+nanj) +div (16+nanj) (nan+nanj) (nan+nanj) +div (inf-infj) (-inf-infj) (nan+nanj) +div (inf-infj) (-inf-16j) (nan+nanj) +div (inf-infj) (-inf-2j) (nan+nanj) +div (inf-infj) (-inf-0j) (nan+nanj) +div (inf-infj) (-inf+0j) (nan+nanj) +div (inf-infj) (-inf+2j) (nan+nanj) +div (inf-infj) (-inf+16j) (nan+nanj) +div (inf-infj) (-inf+infj) (nan+nanj) +div (inf-infj) (-inf+nanj) (nan+nanj) +div (inf-infj) (-16-infj) (nan+nanj) +div (inf-infj) (-16-16j) (nan+infj) +div (inf-infj) (-16-2j) (nan+infj) +div (inf-infj) (-16-0j) (nan+nanj) +div (inf-infj) (-16+0j) (nan+nanj) +div (inf-infj) (-16+2j) (-inf+nanj) +div (inf-infj) (-16+16j) (-inf+nanj) +div (inf-infj) (-16+infj) (nan+nanj) +div (inf-infj) (-16+nanj) (nan+nanj) +div (inf-infj) (-2-infj) (nan+nanj) +div (inf-infj) (-2-16j) (nan+infj) +div (inf-infj) (-2-2j) (nan+infj) +div (inf-infj) (-2-0j) (nan+nanj) +div (inf-infj) (-2+0j) (nan+nanj) +div (inf-infj) (-2+2j) (-inf+nanj) +div (inf-infj) (-2+16j) (-inf+nanj) +div (inf-infj) (-2+infj) (nan+nanj) +div (inf-infj) (-2+nanj) (nan+nanj) +div (inf-infj) (-0-infj) (nan+nanj) +div (inf-infj) (-0-16j) (nan+nanj) +div (inf-infj) (-0-2j) (nan+nanj) +div (inf-infj) (-0-0j) ZeroDivisionError +div (inf-infj) (-0+0j) ZeroDivisionError +div (inf-infj) (-0+2j) (nan+nanj) +div (inf-infj) (-0+16j) (nan+nanj) +div (inf-infj) (-0+infj) (nan+nanj) +div (inf-infj) (-0+nanj) (nan+nanj) +div (inf-infj) -infj (nan+nanj) +div (inf-infj) -16j (nan+nanj) +div (inf-infj) -2j (nan+nanj) +div (inf-infj) -0j ZeroDivisionError +div (inf-infj) 0j ZeroDivisionError +div (inf-infj) 2j (nan+nanj) +div (inf-infj) 16j (nan+nanj) +div (inf-infj) infj (nan+nanj) +div (inf-infj) nanj (nan+nanj) +div (inf-infj) (2-infj) (nan+nanj) +div (inf-infj) (2-16j) (inf+nanj) +div (inf-infj) (2-2j) (inf+nanj) +div (inf-infj) (2-0j) (nan+nanj) +div (inf-infj) (2+0j) (nan+nanj) +div (inf-infj) (2+2j) (nan-infj) +div (inf-infj) (2+16j) (nan-infj) +div (inf-infj) (2+infj) (nan+nanj) +div (inf-infj) (2+nanj) (nan+nanj) +div (inf-infj) (16-infj) (nan+nanj) +div (inf-infj) (16-16j) (inf+nanj) +div (inf-infj) (16-2j) (inf+nanj) +div (inf-infj) (16-0j) (nan+nanj) +div (inf-infj) (16+0j) (nan+nanj) +div (inf-infj) (16+2j) (nan-infj) +div (inf-infj) (16+16j) (nan-infj) +div (inf-infj) (16+infj) (nan+nanj) +div (inf-infj) (16+nanj) (nan+nanj) +div (inf-infj) (inf-infj) (nan+nanj) +div (inf-infj) (inf-16j) (nan+nanj) +div (inf-infj) (inf-2j) (nan+nanj) +div (inf-infj) (inf-0j) (nan+nanj) +div (inf-infj) (inf+0j) (nan+nanj) +div (inf-infj) (inf+2j) (nan+nanj) +div (inf-infj) (inf+16j) (nan+nanj) +div (inf-infj) (inf+infj) (nan+nanj) +div (inf-infj) (inf+nanj) (nan+nanj) +div (inf-infj) (nan-infj) (nan+nanj) +div (inf-infj) (nan-16j) (nan+nanj) +div (inf-infj) (nan-2j) (nan+nanj) +div (inf-infj) (nan-0j) (nan+nanj) +div (inf-infj) (nan+0j) (nan+nanj) +div (inf-infj) (nan+2j) (nan+nanj) +div (inf-infj) (nan+16j) (nan+nanj) +div (inf-infj) (nan+infj) (nan+nanj) +div (inf-infj) (nan+nanj) (nan+nanj) +div (inf-16j) (-inf-infj) (nan+nanj) +div (inf-16j) (-inf-16j) (nan+nanj) +div (inf-16j) (-inf-2j) (nan+nanj) +div (inf-16j) (-inf-0j) (nan+nanj) +div (inf-16j) (-inf+0j) (nan+nanj) +div (inf-16j) (-inf+2j) (nan+nanj) +div (inf-16j) (-inf+16j) (nan+nanj) +div (inf-16j) (-inf+infj) (nan+nanj) +div (inf-16j) (-inf+nanj) (nan+nanj) +div (inf-16j) (-16-infj) (nan+nanj) +div (inf-16j) (-16-16j) (-inf+infj) +div (inf-16j) (-16-2j) (-inf+infj) +div (inf-16j) (-16-0j) (-inf+nanj) +div (inf-16j) (-16+0j) (-inf+nanj) +div (inf-16j) (-16+2j) (-inf-infj) +div (inf-16j) (-16+16j) (-inf-infj) +div (inf-16j) (-16+infj) (nan+nanj) +div (inf-16j) (-16+nanj) (nan+nanj) +div (inf-16j) (-2-infj) (nan+nanj) +div (inf-16j) (-2-16j) (-inf+infj) +div (inf-16j) (-2-2j) (-inf+infj) +div (inf-16j) (-2-0j) (-inf+nanj) +div (inf-16j) (-2+0j) (-inf+nanj) +div (inf-16j) (-2+2j) (-inf-infj) +div (inf-16j) (-2+16j) (-inf-infj) +div (inf-16j) (-2+infj) (nan+nanj) +div (inf-16j) (-2+nanj) (nan+nanj) +div (inf-16j) (-0-infj) (nan+nanj) +div (inf-16j) (-0-16j) (nan+infj) +div (inf-16j) (-0-2j) (nan+infj) +div (inf-16j) (-0-0j) ZeroDivisionError +div (inf-16j) (-0+0j) ZeroDivisionError +div (inf-16j) (-0+2j) (nan-infj) +div (inf-16j) (-0+16j) (nan-infj) +div (inf-16j) (-0+infj) (nan+nanj) +div (inf-16j) (-0+nanj) (nan+nanj) +div (inf-16j) -infj (nan+nanj) +div (inf-16j) -16j (nan+infj) +div (inf-16j) -2j (nan+infj) +div (inf-16j) -0j ZeroDivisionError +div (inf-16j) 0j ZeroDivisionError +div (inf-16j) 2j (nan-infj) +div (inf-16j) 16j (nan-infj) +div (inf-16j) infj (nan+nanj) +div (inf-16j) nanj (nan+nanj) +div (inf-16j) (2-infj) (nan+nanj) +div (inf-16j) (2-16j) (inf+infj) +div (inf-16j) (2-2j) (inf+infj) +div (inf-16j) (2-0j) (inf+nanj) +div (inf-16j) (2+0j) (inf+nanj) +div (inf-16j) (2+2j) (inf-infj) +div (inf-16j) (2+16j) (inf-infj) +div (inf-16j) (2+infj) (nan+nanj) +div (inf-16j) (2+nanj) (nan+nanj) +div (inf-16j) (16-infj) (nan+nanj) +div (inf-16j) (16-16j) (inf+infj) +div (inf-16j) (16-2j) (inf+infj) +div (inf-16j) (16-0j) (inf+nanj) +div (inf-16j) (16+0j) (inf+nanj) +div (inf-16j) (16+2j) (inf-infj) +div (inf-16j) (16+16j) (inf-infj) +div (inf-16j) (16+infj) (nan+nanj) +div (inf-16j) (16+nanj) (nan+nanj) +div (inf-16j) (inf-infj) (nan+nanj) +div (inf-16j) (inf-16j) (nan+nanj) +div (inf-16j) (inf-2j) (nan+nanj) +div (inf-16j) (inf-0j) (nan+nanj) +div (inf-16j) (inf+0j) (nan+nanj) +div (inf-16j) (inf+2j) (nan+nanj) +div (inf-16j) (inf+16j) (nan+nanj) +div (inf-16j) (inf+infj) (nan+nanj) +div (inf-16j) (inf+nanj) (nan+nanj) +div (inf-16j) (nan-infj) (nan+nanj) +div (inf-16j) (nan-16j) (nan+nanj) +div (inf-16j) (nan-2j) (nan+nanj) +div (inf-16j) (nan-0j) (nan+nanj) +div (inf-16j) (nan+0j) (nan+nanj) +div (inf-16j) (nan+2j) (nan+nanj) +div (inf-16j) (nan+16j) (nan+nanj) +div (inf-16j) (nan+infj) (nan+nanj) +div (inf-16j) (nan+nanj) (nan+nanj) +div (inf-2j) (-inf-infj) (nan+nanj) +div (inf-2j) (-inf-16j) (nan+nanj) +div (inf-2j) (-inf-2j) (nan+nanj) +div (inf-2j) (-inf-0j) (nan+nanj) +div (inf-2j) (-inf+0j) (nan+nanj) +div (inf-2j) (-inf+2j) (nan+nanj) +div (inf-2j) (-inf+16j) (nan+nanj) +div (inf-2j) (-inf+infj) (nan+nanj) +div (inf-2j) (-inf+nanj) (nan+nanj) +div (inf-2j) (-16-infj) (nan+nanj) +div (inf-2j) (-16-16j) (-inf+infj) +div (inf-2j) (-16-2j) (-inf+infj) +div (inf-2j) (-16-0j) (-inf+nanj) +div (inf-2j) (-16+0j) (-inf+nanj) +div (inf-2j) (-16+2j) (-inf-infj) +div (inf-2j) (-16+16j) (-inf-infj) +div (inf-2j) (-16+infj) (nan+nanj) +div (inf-2j) (-16+nanj) (nan+nanj) +div (inf-2j) (-2-infj) (nan+nanj) +div (inf-2j) (-2-16j) (-inf+infj) +div (inf-2j) (-2-2j) (-inf+infj) +div (inf-2j) (-2-0j) (-inf+nanj) +div (inf-2j) (-2+0j) (-inf+nanj) +div (inf-2j) (-2+2j) (-inf-infj) +div (inf-2j) (-2+16j) (-inf-infj) +div (inf-2j) (-2+infj) (nan+nanj) +div (inf-2j) (-2+nanj) (nan+nanj) +div (inf-2j) (-0-infj) (nan+nanj) +div (inf-2j) (-0-16j) (nan+infj) +div (inf-2j) (-0-2j) (nan+infj) +div (inf-2j) (-0-0j) ZeroDivisionError +div (inf-2j) (-0+0j) ZeroDivisionError +div (inf-2j) (-0+2j) (nan-infj) +div (inf-2j) (-0+16j) (nan-infj) +div (inf-2j) (-0+infj) (nan+nanj) +div (inf-2j) (-0+nanj) (nan+nanj) +div (inf-2j) -infj (nan+nanj) +div (inf-2j) -16j (nan+infj) +div (inf-2j) -2j (nan+infj) +div (inf-2j) -0j ZeroDivisionError +div (inf-2j) 0j ZeroDivisionError +div (inf-2j) 2j (nan-infj) +div (inf-2j) 16j (nan-infj) +div (inf-2j) infj (nan+nanj) +div (inf-2j) nanj (nan+nanj) +div (inf-2j) (2-infj) (nan+nanj) +div (inf-2j) (2-16j) (inf+infj) +div (inf-2j) (2-2j) (inf+infj) +div (inf-2j) (2-0j) (inf+nanj) +div (inf-2j) (2+0j) (inf+nanj) +div (inf-2j) (2+2j) (inf-infj) +div (inf-2j) (2+16j) (inf-infj) +div (inf-2j) (2+infj) (nan+nanj) +div (inf-2j) (2+nanj) (nan+nanj) +div (inf-2j) (16-infj) (nan+nanj) +div (inf-2j) (16-16j) (inf+infj) +div (inf-2j) (16-2j) (inf+infj) +div (inf-2j) (16-0j) (inf+nanj) +div (inf-2j) (16+0j) (inf+nanj) +div (inf-2j) (16+2j) (inf-infj) +div (inf-2j) (16+16j) (inf-infj) +div (inf-2j) (16+infj) (nan+nanj) +div (inf-2j) (16+nanj) (nan+nanj) +div (inf-2j) (inf-infj) (nan+nanj) +div (inf-2j) (inf-16j) (nan+nanj) +div (inf-2j) (inf-2j) (nan+nanj) +div (inf-2j) (inf-0j) (nan+nanj) +div (inf-2j) (inf+0j) (nan+nanj) +div (inf-2j) (inf+2j) (nan+nanj) +div (inf-2j) (inf+16j) (nan+nanj) +div (inf-2j) (inf+infj) (nan+nanj) +div (inf-2j) (inf+nanj) (nan+nanj) +div (inf-2j) (nan-infj) (nan+nanj) +div (inf-2j) (nan-16j) (nan+nanj) +div (inf-2j) (nan-2j) (nan+nanj) +div (inf-2j) (nan-0j) (nan+nanj) +div (inf-2j) (nan+0j) (nan+nanj) +div (inf-2j) (nan+2j) (nan+nanj) +div (inf-2j) (nan+16j) (nan+nanj) +div (inf-2j) (nan+infj) (nan+nanj) +div (inf-2j) (nan+nanj) (nan+nanj) +div (inf-0j) (-inf-infj) (nan+nanj) +div (inf-0j) (-inf-16j) (nan+nanj) +div (inf-0j) (-inf-2j) (nan+nanj) +div (inf-0j) (-inf-0j) (nan+nanj) +div (inf-0j) (-inf+0j) (nan+nanj) +div (inf-0j) (-inf+2j) (nan+nanj) +div (inf-0j) (-inf+16j) (nan+nanj) +div (inf-0j) (-inf+infj) (nan+nanj) +div (inf-0j) (-inf+nanj) (nan+nanj) +div (inf-0j) (-16-infj) (nan+nanj) +div (inf-0j) (-16-16j) (-inf+infj) +div (inf-0j) (-16-2j) (-inf+infj) +div (inf-0j) (-16-0j) (-inf+nanj) +div (inf-0j) (-16+0j) (-inf+nanj) +div (inf-0j) (-16+2j) (-inf-infj) +div (inf-0j) (-16+16j) (-inf-infj) +div (inf-0j) (-16+infj) (nan+nanj) +div (inf-0j) (-16+nanj) (nan+nanj) +div (inf-0j) (-2-infj) (nan+nanj) +div (inf-0j) (-2-16j) (-inf+infj) +div (inf-0j) (-2-2j) (-inf+infj) +div (inf-0j) (-2-0j) (-inf+nanj) +div (inf-0j) (-2+0j) (-inf+nanj) +div (inf-0j) (-2+2j) (-inf-infj) +div (inf-0j) (-2+16j) (-inf-infj) +div (inf-0j) (-2+infj) (nan+nanj) +div (inf-0j) (-2+nanj) (nan+nanj) +div (inf-0j) (-0-infj) (nan+nanj) +div (inf-0j) (-0-16j) (nan+infj) +div (inf-0j) (-0-2j) (nan+infj) +div (inf-0j) (-0-0j) ZeroDivisionError +div (inf-0j) (-0+0j) ZeroDivisionError +div (inf-0j) (-0+2j) (nan-infj) +div (inf-0j) (-0+16j) (nan-infj) +div (inf-0j) (-0+infj) (nan+nanj) +div (inf-0j) (-0+nanj) (nan+nanj) +div (inf-0j) -infj (nan+nanj) +div (inf-0j) -16j (nan+infj) +div (inf-0j) -2j (nan+infj) +div (inf-0j) -0j ZeroDivisionError +div (inf-0j) 0j ZeroDivisionError +div (inf-0j) 2j (nan-infj) +div (inf-0j) 16j (nan-infj) +div (inf-0j) infj (nan+nanj) +div (inf-0j) nanj (nan+nanj) +div (inf-0j) (2-infj) (nan+nanj) +div (inf-0j) (2-16j) (inf+infj) +div (inf-0j) (2-2j) (inf+infj) +div (inf-0j) (2-0j) (inf+nanj) +div (inf-0j) (2+0j) (inf+nanj) +div (inf-0j) (2+2j) (inf-infj) +div (inf-0j) (2+16j) (inf-infj) +div (inf-0j) (2+infj) (nan+nanj) +div (inf-0j) (2+nanj) (nan+nanj) +div (inf-0j) (16-infj) (nan+nanj) +div (inf-0j) (16-16j) (inf+infj) +div (inf-0j) (16-2j) (inf+infj) +div (inf-0j) (16-0j) (inf+nanj) +div (inf-0j) (16+0j) (inf+nanj) +div (inf-0j) (16+2j) (inf-infj) +div (inf-0j) (16+16j) (inf-infj) +div (inf-0j) (16+infj) (nan+nanj) +div (inf-0j) (16+nanj) (nan+nanj) +div (inf-0j) (inf-infj) (nan+nanj) +div (inf-0j) (inf-16j) (nan+nanj) +div (inf-0j) (inf-2j) (nan+nanj) +div (inf-0j) (inf-0j) (nan+nanj) +div (inf-0j) (inf+0j) (nan+nanj) +div (inf-0j) (inf+2j) (nan+nanj) +div (inf-0j) (inf+16j) (nan+nanj) +div (inf-0j) (inf+infj) (nan+nanj) +div (inf-0j) (inf+nanj) (nan+nanj) +div (inf-0j) (nan-infj) (nan+nanj) +div (inf-0j) (nan-16j) (nan+nanj) +div (inf-0j) (nan-2j) (nan+nanj) +div (inf-0j) (nan-0j) (nan+nanj) +div (inf-0j) (nan+0j) (nan+nanj) +div (inf-0j) (nan+2j) (nan+nanj) +div (inf-0j) (nan+16j) (nan+nanj) +div (inf-0j) (nan+infj) (nan+nanj) +div (inf-0j) (nan+nanj) (nan+nanj) +div (inf+0j) (-inf-infj) (nan+nanj) +div (inf+0j) (-inf-16j) (nan+nanj) +div (inf+0j) (-inf-2j) (nan+nanj) +div (inf+0j) (-inf-0j) (nan+nanj) +div (inf+0j) (-inf+0j) (nan+nanj) +div (inf+0j) (-inf+2j) (nan+nanj) +div (inf+0j) (-inf+16j) (nan+nanj) +div (inf+0j) (-inf+infj) (nan+nanj) +div (inf+0j) (-inf+nanj) (nan+nanj) +div (inf+0j) (-16-infj) (nan+nanj) +div (inf+0j) (-16-16j) (-inf+infj) +div (inf+0j) (-16-2j) (-inf+infj) +div (inf+0j) (-16-0j) (-inf+nanj) +div (inf+0j) (-16+0j) (-inf+nanj) +div (inf+0j) (-16+2j) (-inf-infj) +div (inf+0j) (-16+16j) (-inf-infj) +div (inf+0j) (-16+infj) (nan+nanj) +div (inf+0j) (-16+nanj) (nan+nanj) +div (inf+0j) (-2-infj) (nan+nanj) +div (inf+0j) (-2-16j) (-inf+infj) +div (inf+0j) (-2-2j) (-inf+infj) +div (inf+0j) (-2-0j) (-inf+nanj) +div (inf+0j) (-2+0j) (-inf+nanj) +div (inf+0j) (-2+2j) (-inf-infj) +div (inf+0j) (-2+16j) (-inf-infj) +div (inf+0j) (-2+infj) (nan+nanj) +div (inf+0j) (-2+nanj) (nan+nanj) +div (inf+0j) (-0-infj) (nan+nanj) +div (inf+0j) (-0-16j) (nan+infj) +div (inf+0j) (-0-2j) (nan+infj) +div (inf+0j) (-0-0j) ZeroDivisionError +div (inf+0j) (-0+0j) ZeroDivisionError +div (inf+0j) (-0+2j) (nan-infj) +div (inf+0j) (-0+16j) (nan-infj) +div (inf+0j) (-0+infj) (nan+nanj) +div (inf+0j) (-0+nanj) (nan+nanj) +div (inf+0j) -infj (nan+nanj) +div (inf+0j) -16j (nan+infj) +div (inf+0j) -2j (nan+infj) +div (inf+0j) -0j ZeroDivisionError +div (inf+0j) 0j ZeroDivisionError +div (inf+0j) 2j (nan-infj) +div (inf+0j) 16j (nan-infj) +div (inf+0j) infj (nan+nanj) +div (inf+0j) nanj (nan+nanj) +div (inf+0j) (2-infj) (nan+nanj) +div (inf+0j) (2-16j) (inf+infj) +div (inf+0j) (2-2j) (inf+infj) +div (inf+0j) (2-0j) (inf+nanj) +div (inf+0j) (2+0j) (inf+nanj) +div (inf+0j) (2+2j) (inf-infj) +div (inf+0j) (2+16j) (inf-infj) +div (inf+0j) (2+infj) (nan+nanj) +div (inf+0j) (2+nanj) (nan+nanj) +div (inf+0j) (16-infj) (nan+nanj) +div (inf+0j) (16-16j) (inf+infj) +div (inf+0j) (16-2j) (inf+infj) +div (inf+0j) (16-0j) (inf+nanj) +div (inf+0j) (16+0j) (inf+nanj) +div (inf+0j) (16+2j) (inf-infj) +div (inf+0j) (16+16j) (inf-infj) +div (inf+0j) (16+infj) (nan+nanj) +div (inf+0j) (16+nanj) (nan+nanj) +div (inf+0j) (inf-infj) (nan+nanj) +div (inf+0j) (inf-16j) (nan+nanj) +div (inf+0j) (inf-2j) (nan+nanj) +div (inf+0j) (inf-0j) (nan+nanj) +div (inf+0j) (inf+0j) (nan+nanj) +div (inf+0j) (inf+2j) (nan+nanj) +div (inf+0j) (inf+16j) (nan+nanj) +div (inf+0j) (inf+infj) (nan+nanj) +div (inf+0j) (inf+nanj) (nan+nanj) +div (inf+0j) (nan-infj) (nan+nanj) +div (inf+0j) (nan-16j) (nan+nanj) +div (inf+0j) (nan-2j) (nan+nanj) +div (inf+0j) (nan-0j) (nan+nanj) +div (inf+0j) (nan+0j) (nan+nanj) +div (inf+0j) (nan+2j) (nan+nanj) +div (inf+0j) (nan+16j) (nan+nanj) +div (inf+0j) (nan+infj) (nan+nanj) +div (inf+0j) (nan+nanj) (nan+nanj) +div (inf+2j) (-inf-infj) (nan+nanj) +div (inf+2j) (-inf-16j) (nan+nanj) +div (inf+2j) (-inf-2j) (nan+nanj) +div (inf+2j) (-inf-0j) (nan+nanj) +div (inf+2j) (-inf+0j) (nan+nanj) +div (inf+2j) (-inf+2j) (nan+nanj) +div (inf+2j) (-inf+16j) (nan+nanj) +div (inf+2j) (-inf+infj) (nan+nanj) +div (inf+2j) (-inf+nanj) (nan+nanj) +div (inf+2j) (-16-infj) (nan+nanj) +div (inf+2j) (-16-16j) (-inf+infj) +div (inf+2j) (-16-2j) (-inf+infj) +div (inf+2j) (-16-0j) (-inf+nanj) +div (inf+2j) (-16+0j) (-inf+nanj) +div (inf+2j) (-16+2j) (-inf-infj) +div (inf+2j) (-16+16j) (-inf-infj) +div (inf+2j) (-16+infj) (nan+nanj) +div (inf+2j) (-16+nanj) (nan+nanj) +div (inf+2j) (-2-infj) (nan+nanj) +div (inf+2j) (-2-16j) (-inf+infj) +div (inf+2j) (-2-2j) (-inf+infj) +div (inf+2j) (-2-0j) (-inf+nanj) +div (inf+2j) (-2+0j) (-inf+nanj) +div (inf+2j) (-2+2j) (-inf-infj) +div (inf+2j) (-2+16j) (-inf-infj) +div (inf+2j) (-2+infj) (nan+nanj) +div (inf+2j) (-2+nanj) (nan+nanj) +div (inf+2j) (-0-infj) (nan+nanj) +div (inf+2j) (-0-16j) (nan+infj) +div (inf+2j) (-0-2j) (nan+infj) +div (inf+2j) (-0-0j) ZeroDivisionError +div (inf+2j) (-0+0j) ZeroDivisionError +div (inf+2j) (-0+2j) (nan-infj) +div (inf+2j) (-0+16j) (nan-infj) +div (inf+2j) (-0+infj) (nan+nanj) +div (inf+2j) (-0+nanj) (nan+nanj) +div (inf+2j) -infj (nan+nanj) +div (inf+2j) -16j (nan+infj) +div (inf+2j) -2j (nan+infj) +div (inf+2j) -0j ZeroDivisionError +div (inf+2j) 0j ZeroDivisionError +div (inf+2j) 2j (nan-infj) +div (inf+2j) 16j (nan-infj) +div (inf+2j) infj (nan+nanj) +div (inf+2j) nanj (nan+nanj) +div (inf+2j) (2-infj) (nan+nanj) +div (inf+2j) (2-16j) (inf+infj) +div (inf+2j) (2-2j) (inf+infj) +div (inf+2j) (2-0j) (inf+nanj) +div (inf+2j) (2+0j) (inf+nanj) +div (inf+2j) (2+2j) (inf-infj) +div (inf+2j) (2+16j) (inf-infj) +div (inf+2j) (2+infj) (nan+nanj) +div (inf+2j) (2+nanj) (nan+nanj) +div (inf+2j) (16-infj) (nan+nanj) +div (inf+2j) (16-16j) (inf+infj) +div (inf+2j) (16-2j) (inf+infj) +div (inf+2j) (16-0j) (inf+nanj) +div (inf+2j) (16+0j) (inf+nanj) +div (inf+2j) (16+2j) (inf-infj) +div (inf+2j) (16+16j) (inf-infj) +div (inf+2j) (16+infj) (nan+nanj) +div (inf+2j) (16+nanj) (nan+nanj) +div (inf+2j) (inf-infj) (nan+nanj) +div (inf+2j) (inf-16j) (nan+nanj) +div (inf+2j) (inf-2j) (nan+nanj) +div (inf+2j) (inf-0j) (nan+nanj) +div (inf+2j) (inf+0j) (nan+nanj) +div (inf+2j) (inf+2j) (nan+nanj) +div (inf+2j) (inf+16j) (nan+nanj) +div (inf+2j) (inf+infj) (nan+nanj) +div (inf+2j) (inf+nanj) (nan+nanj) +div (inf+2j) (nan-infj) (nan+nanj) +div (inf+2j) (nan-16j) (nan+nanj) +div (inf+2j) (nan-2j) (nan+nanj) +div (inf+2j) (nan-0j) (nan+nanj) +div (inf+2j) (nan+0j) (nan+nanj) +div (inf+2j) (nan+2j) (nan+nanj) +div (inf+2j) (nan+16j) (nan+nanj) +div (inf+2j) (nan+infj) (nan+nanj) +div (inf+2j) (nan+nanj) (nan+nanj) +div (inf+16j) (-inf-infj) (nan+nanj) +div (inf+16j) (-inf-16j) (nan+nanj) +div (inf+16j) (-inf-2j) (nan+nanj) +div (inf+16j) (-inf-0j) (nan+nanj) +div (inf+16j) (-inf+0j) (nan+nanj) +div (inf+16j) (-inf+2j) (nan+nanj) +div (inf+16j) (-inf+16j) (nan+nanj) +div (inf+16j) (-inf+infj) (nan+nanj) +div (inf+16j) (-inf+nanj) (nan+nanj) +div (inf+16j) (-16-infj) (nan+nanj) +div (inf+16j) (-16-16j) (-inf+infj) +div (inf+16j) (-16-2j) (-inf+infj) +div (inf+16j) (-16-0j) (-inf+nanj) +div (inf+16j) (-16+0j) (-inf+nanj) +div (inf+16j) (-16+2j) (-inf-infj) +div (inf+16j) (-16+16j) (-inf-infj) +div (inf+16j) (-16+infj) (nan+nanj) +div (inf+16j) (-16+nanj) (nan+nanj) +div (inf+16j) (-2-infj) (nan+nanj) +div (inf+16j) (-2-16j) (-inf+infj) +div (inf+16j) (-2-2j) (-inf+infj) +div (inf+16j) (-2-0j) (-inf+nanj) +div (inf+16j) (-2+0j) (-inf+nanj) +div (inf+16j) (-2+2j) (-inf-infj) +div (inf+16j) (-2+16j) (-inf-infj) +div (inf+16j) (-2+infj) (nan+nanj) +div (inf+16j) (-2+nanj) (nan+nanj) +div (inf+16j) (-0-infj) (nan+nanj) +div (inf+16j) (-0-16j) (nan+infj) +div (inf+16j) (-0-2j) (nan+infj) +div (inf+16j) (-0-0j) ZeroDivisionError +div (inf+16j) (-0+0j) ZeroDivisionError +div (inf+16j) (-0+2j) (nan-infj) +div (inf+16j) (-0+16j) (nan-infj) +div (inf+16j) (-0+infj) (nan+nanj) +div (inf+16j) (-0+nanj) (nan+nanj) +div (inf+16j) -infj (nan+nanj) +div (inf+16j) -16j (nan+infj) +div (inf+16j) -2j (nan+infj) +div (inf+16j) -0j ZeroDivisionError +div (inf+16j) 0j ZeroDivisionError +div (inf+16j) 2j (nan-infj) +div (inf+16j) 16j (nan-infj) +div (inf+16j) infj (nan+nanj) +div (inf+16j) nanj (nan+nanj) +div (inf+16j) (2-infj) (nan+nanj) +div (inf+16j) (2-16j) (inf+infj) +div (inf+16j) (2-2j) (inf+infj) +div (inf+16j) (2-0j) (inf+nanj) +div (inf+16j) (2+0j) (inf+nanj) +div (inf+16j) (2+2j) (inf-infj) +div (inf+16j) (2+16j) (inf-infj) +div (inf+16j) (2+infj) (nan+nanj) +div (inf+16j) (2+nanj) (nan+nanj) +div (inf+16j) (16-infj) (nan+nanj) +div (inf+16j) (16-16j) (inf+infj) +div (inf+16j) (16-2j) (inf+infj) +div (inf+16j) (16-0j) (inf+nanj) +div (inf+16j) (16+0j) (inf+nanj) +div (inf+16j) (16+2j) (inf-infj) +div (inf+16j) (16+16j) (inf-infj) +div (inf+16j) (16+infj) (nan+nanj) +div (inf+16j) (16+nanj) (nan+nanj) +div (inf+16j) (inf-infj) (nan+nanj) +div (inf+16j) (inf-16j) (nan+nanj) +div (inf+16j) (inf-2j) (nan+nanj) +div (inf+16j) (inf-0j) (nan+nanj) +div (inf+16j) (inf+0j) (nan+nanj) +div (inf+16j) (inf+2j) (nan+nanj) +div (inf+16j) (inf+16j) (nan+nanj) +div (inf+16j) (inf+infj) (nan+nanj) +div (inf+16j) (inf+nanj) (nan+nanj) +div (inf+16j) (nan-infj) (nan+nanj) +div (inf+16j) (nan-16j) (nan+nanj) +div (inf+16j) (nan-2j) (nan+nanj) +div (inf+16j) (nan-0j) (nan+nanj) +div (inf+16j) (nan+0j) (nan+nanj) +div (inf+16j) (nan+2j) (nan+nanj) +div (inf+16j) (nan+16j) (nan+nanj) +div (inf+16j) (nan+infj) (nan+nanj) +div (inf+16j) (nan+nanj) (nan+nanj) +div (inf+infj) (-inf-infj) (nan+nanj) +div (inf+infj) (-inf-16j) (nan+nanj) +div (inf+infj) (-inf-2j) (nan+nanj) +div (inf+infj) (-inf-0j) (nan+nanj) +div (inf+infj) (-inf+0j) (nan+nanj) +div (inf+infj) (-inf+2j) (nan+nanj) +div (inf+infj) (-inf+16j) (nan+nanj) +div (inf+infj) (-inf+infj) (nan+nanj) +div (inf+infj) (-inf+nanj) (nan+nanj) +div (inf+infj) (-16-infj) (nan+nanj) +div (inf+infj) (-16-16j) (-inf+nanj) +div (inf+infj) (-16-2j) (-inf+nanj) +div (inf+infj) (-16-0j) (nan+nanj) +div (inf+infj) (-16+0j) (nan+nanj) +div (inf+infj) (-16+2j) (nan-infj) +div (inf+infj) (-16+16j) (nan-infj) +div (inf+infj) (-16+infj) (nan+nanj) +div (inf+infj) (-16+nanj) (nan+nanj) +div (inf+infj) (-2-infj) (nan+nanj) +div (inf+infj) (-2-16j) (-inf+nanj) +div (inf+infj) (-2-2j) (-inf+nanj) +div (inf+infj) (-2-0j) (nan+nanj) +div (inf+infj) (-2+0j) (nan+nanj) +div (inf+infj) (-2+2j) (nan-infj) +div (inf+infj) (-2+16j) (nan-infj) +div (inf+infj) (-2+infj) (nan+nanj) +div (inf+infj) (-2+nanj) (nan+nanj) +div (inf+infj) (-0-infj) (nan+nanj) +div (inf+infj) (-0-16j) (nan+nanj) +div (inf+infj) (-0-2j) (nan+nanj) +div (inf+infj) (-0-0j) ZeroDivisionError +div (inf+infj) (-0+0j) ZeroDivisionError +div (inf+infj) (-0+2j) (nan+nanj) +div (inf+infj) (-0+16j) (nan+nanj) +div (inf+infj) (-0+infj) (nan+nanj) +div (inf+infj) (-0+nanj) (nan+nanj) +div (inf+infj) -infj (nan+nanj) +div (inf+infj) -16j (nan+nanj) +div (inf+infj) -2j (nan+nanj) +div (inf+infj) -0j ZeroDivisionError +div (inf+infj) 0j ZeroDivisionError +div (inf+infj) 2j (nan+nanj) +div (inf+infj) 16j (nan+nanj) +div (inf+infj) infj (nan+nanj) +div (inf+infj) nanj (nan+nanj) +div (inf+infj) (2-infj) (nan+nanj) +div (inf+infj) (2-16j) (nan+infj) +div (inf+infj) (2-2j) (nan+infj) +div (inf+infj) (2-0j) (nan+nanj) +div (inf+infj) (2+0j) (nan+nanj) +div (inf+infj) (2+2j) (inf+nanj) +div (inf+infj) (2+16j) (inf+nanj) +div (inf+infj) (2+infj) (nan+nanj) +div (inf+infj) (2+nanj) (nan+nanj) +div (inf+infj) (16-infj) (nan+nanj) +div (inf+infj) (16-16j) (nan+infj) +div (inf+infj) (16-2j) (nan+infj) +div (inf+infj) (16-0j) (nan+nanj) +div (inf+infj) (16+0j) (nan+nanj) +div (inf+infj) (16+2j) (inf+nanj) +div (inf+infj) (16+16j) (inf+nanj) +div (inf+infj) (16+infj) (nan+nanj) +div (inf+infj) (16+nanj) (nan+nanj) +div (inf+infj) (inf-infj) (nan+nanj) +div (inf+infj) (inf-16j) (nan+nanj) +div (inf+infj) (inf-2j) (nan+nanj) +div (inf+infj) (inf-0j) (nan+nanj) +div (inf+infj) (inf+0j) (nan+nanj) +div (inf+infj) (inf+2j) (nan+nanj) +div (inf+infj) (inf+16j) (nan+nanj) +div (inf+infj) (inf+infj) (nan+nanj) +div (inf+infj) (inf+nanj) (nan+nanj) +div (inf+infj) (nan-infj) (nan+nanj) +div (inf+infj) (nan-16j) (nan+nanj) +div (inf+infj) (nan-2j) (nan+nanj) +div (inf+infj) (nan-0j) (nan+nanj) +div (inf+infj) (nan+0j) (nan+nanj) +div (inf+infj) (nan+2j) (nan+nanj) +div (inf+infj) (nan+16j) (nan+nanj) +div (inf+infj) (nan+infj) (nan+nanj) +div (inf+infj) (nan+nanj) (nan+nanj) +div (inf+nanj) (-inf-infj) (nan+nanj) +div (inf+nanj) (-inf-16j) (nan+nanj) +div (inf+nanj) (-inf-2j) (nan+nanj) +div (inf+nanj) (-inf-0j) (nan+nanj) +div (inf+nanj) (-inf+0j) (nan+nanj) +div (inf+nanj) (-inf+2j) (nan+nanj) +div (inf+nanj) (-inf+16j) (nan+nanj) +div (inf+nanj) (-inf+infj) (nan+nanj) +div (inf+nanj) (-inf+nanj) (nan+nanj) +div (inf+nanj) (-16-infj) (nan+nanj) +div (inf+nanj) (-16-16j) (nan+nanj) +div (inf+nanj) (-16-2j) (nan+nanj) +div (inf+nanj) (-16-0j) (nan+nanj) +div (inf+nanj) (-16+0j) (nan+nanj) +div (inf+nanj) (-16+2j) (nan+nanj) +div (inf+nanj) (-16+16j) (nan+nanj) +div (inf+nanj) (-16+infj) (nan+nanj) +div (inf+nanj) (-16+nanj) (nan+nanj) +div (inf+nanj) (-2-infj) (nan+nanj) +div (inf+nanj) (-2-16j) (nan+nanj) +div (inf+nanj) (-2-2j) (nan+nanj) +div (inf+nanj) (-2-0j) (nan+nanj) +div (inf+nanj) (-2+0j) (nan+nanj) +div (inf+nanj) (-2+2j) (nan+nanj) +div (inf+nanj) (-2+16j) (nan+nanj) +div (inf+nanj) (-2+infj) (nan+nanj) +div (inf+nanj) (-2+nanj) (nan+nanj) +div (inf+nanj) (-0-infj) (nan+nanj) +div (inf+nanj) (-0-16j) (nan+nanj) +div (inf+nanj) (-0-2j) (nan+nanj) +div (inf+nanj) (-0-0j) ZeroDivisionError +div (inf+nanj) (-0+0j) ZeroDivisionError +div (inf+nanj) (-0+2j) (nan+nanj) +div (inf+nanj) (-0+16j) (nan+nanj) +div (inf+nanj) (-0+infj) (nan+nanj) +div (inf+nanj) (-0+nanj) (nan+nanj) +div (inf+nanj) -infj (nan+nanj) +div (inf+nanj) -16j (nan+nanj) +div (inf+nanj) -2j (nan+nanj) +div (inf+nanj) -0j ZeroDivisionError +div (inf+nanj) 0j ZeroDivisionError +div (inf+nanj) 2j (nan+nanj) +div (inf+nanj) 16j (nan+nanj) +div (inf+nanj) infj (nan+nanj) +div (inf+nanj) nanj (nan+nanj) +div (inf+nanj) (2-infj) (nan+nanj) +div (inf+nanj) (2-16j) (nan+nanj) +div (inf+nanj) (2-2j) (nan+nanj) +div (inf+nanj) (2-0j) (nan+nanj) +div (inf+nanj) (2+0j) (nan+nanj) +div (inf+nanj) (2+2j) (nan+nanj) +div (inf+nanj) (2+16j) (nan+nanj) +div (inf+nanj) (2+infj) (nan+nanj) +div (inf+nanj) (2+nanj) (nan+nanj) +div (inf+nanj) (16-infj) (nan+nanj) +div (inf+nanj) (16-16j) (nan+nanj) +div (inf+nanj) (16-2j) (nan+nanj) +div (inf+nanj) (16-0j) (nan+nanj) +div (inf+nanj) (16+0j) (nan+nanj) +div (inf+nanj) (16+2j) (nan+nanj) +div (inf+nanj) (16+16j) (nan+nanj) +div (inf+nanj) (16+infj) (nan+nanj) +div (inf+nanj) (16+nanj) (nan+nanj) +div (inf+nanj) (inf-infj) (nan+nanj) +div (inf+nanj) (inf-16j) (nan+nanj) +div (inf+nanj) (inf-2j) (nan+nanj) +div (inf+nanj) (inf-0j) (nan+nanj) +div (inf+nanj) (inf+0j) (nan+nanj) +div (inf+nanj) (inf+2j) (nan+nanj) +div (inf+nanj) (inf+16j) (nan+nanj) +div (inf+nanj) (inf+infj) (nan+nanj) +div (inf+nanj) (inf+nanj) (nan+nanj) +div (inf+nanj) (nan-infj) (nan+nanj) +div (inf+nanj) (nan-16j) (nan+nanj) +div (inf+nanj) (nan-2j) (nan+nanj) +div (inf+nanj) (nan-0j) (nan+nanj) +div (inf+nanj) (nan+0j) (nan+nanj) +div (inf+nanj) (nan+2j) (nan+nanj) +div (inf+nanj) (nan+16j) (nan+nanj) +div (inf+nanj) (nan+infj) (nan+nanj) +div (inf+nanj) (nan+nanj) (nan+nanj) +div (nan-infj) (-inf-infj) (nan+nanj) +div (nan-infj) (-inf-16j) (nan+nanj) +div (nan-infj) (-inf-2j) (nan+nanj) +div (nan-infj) (-inf-0j) (nan+nanj) +div (nan-infj) (-inf+0j) (nan+nanj) +div (nan-infj) (-inf+2j) (nan+nanj) +div (nan-infj) (-inf+16j) (nan+nanj) +div (nan-infj) (-inf+infj) (nan+nanj) +div (nan-infj) (-inf+nanj) (nan+nanj) +div (nan-infj) (-16-infj) (nan+nanj) +div (nan-infj) (-16-16j) (nan+nanj) +div (nan-infj) (-16-2j) (nan+nanj) +div (nan-infj) (-16-0j) (nan+nanj) +div (nan-infj) (-16+0j) (nan+nanj) +div (nan-infj) (-16+2j) (nan+nanj) +div (nan-infj) (-16+16j) (nan+nanj) +div (nan-infj) (-16+infj) (nan+nanj) +div (nan-infj) (-16+nanj) (nan+nanj) +div (nan-infj) (-2-infj) (nan+nanj) +div (nan-infj) (-2-16j) (nan+nanj) +div (nan-infj) (-2-2j) (nan+nanj) +div (nan-infj) (-2-0j) (nan+nanj) +div (nan-infj) (-2+0j) (nan+nanj) +div (nan-infj) (-2+2j) (nan+nanj) +div (nan-infj) (-2+16j) (nan+nanj) +div (nan-infj) (-2+infj) (nan+nanj) +div (nan-infj) (-2+nanj) (nan+nanj) +div (nan-infj) (-0-infj) (nan+nanj) +div (nan-infj) (-0-16j) (nan+nanj) +div (nan-infj) (-0-2j) (nan+nanj) +div (nan-infj) (-0-0j) ZeroDivisionError +div (nan-infj) (-0+0j) ZeroDivisionError +div (nan-infj) (-0+2j) (nan+nanj) +div (nan-infj) (-0+16j) (nan+nanj) +div (nan-infj) (-0+infj) (nan+nanj) +div (nan-infj) (-0+nanj) (nan+nanj) +div (nan-infj) -infj (nan+nanj) +div (nan-infj) -16j (nan+nanj) +div (nan-infj) -2j (nan+nanj) +div (nan-infj) -0j ZeroDivisionError +div (nan-infj) 0j ZeroDivisionError +div (nan-infj) 2j (nan+nanj) +div (nan-infj) 16j (nan+nanj) +div (nan-infj) infj (nan+nanj) +div (nan-infj) nanj (nan+nanj) +div (nan-infj) (2-infj) (nan+nanj) +div (nan-infj) (2-16j) (nan+nanj) +div (nan-infj) (2-2j) (nan+nanj) +div (nan-infj) (2-0j) (nan+nanj) +div (nan-infj) (2+0j) (nan+nanj) +div (nan-infj) (2+2j) (nan+nanj) +div (nan-infj) (2+16j) (nan+nanj) +div (nan-infj) (2+infj) (nan+nanj) +div (nan-infj) (2+nanj) (nan+nanj) +div (nan-infj) (16-infj) (nan+nanj) +div (nan-infj) (16-16j) (nan+nanj) +div (nan-infj) (16-2j) (nan+nanj) +div (nan-infj) (16-0j) (nan+nanj) +div (nan-infj) (16+0j) (nan+nanj) +div (nan-infj) (16+2j) (nan+nanj) +div (nan-infj) (16+16j) (nan+nanj) +div (nan-infj) (16+infj) (nan+nanj) +div (nan-infj) (16+nanj) (nan+nanj) +div (nan-infj) (inf-infj) (nan+nanj) +div (nan-infj) (inf-16j) (nan+nanj) +div (nan-infj) (inf-2j) (nan+nanj) +div (nan-infj) (inf-0j) (nan+nanj) +div (nan-infj) (inf+0j) (nan+nanj) +div (nan-infj) (inf+2j) (nan+nanj) +div (nan-infj) (inf+16j) (nan+nanj) +div (nan-infj) (inf+infj) (nan+nanj) +div (nan-infj) (inf+nanj) (nan+nanj) +div (nan-infj) (nan-infj) (nan+nanj) +div (nan-infj) (nan-16j) (nan+nanj) +div (nan-infj) (nan-2j) (nan+nanj) +div (nan-infj) (nan-0j) (nan+nanj) +div (nan-infj) (nan+0j) (nan+nanj) +div (nan-infj) (nan+2j) (nan+nanj) +div (nan-infj) (nan+16j) (nan+nanj) +div (nan-infj) (nan+infj) (nan+nanj) +div (nan-infj) (nan+nanj) (nan+nanj) +div (nan-16j) (-inf-infj) (nan+nanj) +div (nan-16j) (-inf-16j) (nan+nanj) +div (nan-16j) (-inf-2j) (nan+nanj) +div (nan-16j) (-inf-0j) (nan+nanj) +div (nan-16j) (-inf+0j) (nan+nanj) +div (nan-16j) (-inf+2j) (nan+nanj) +div (nan-16j) (-inf+16j) (nan+nanj) +div (nan-16j) (-inf+infj) (nan+nanj) +div (nan-16j) (-inf+nanj) (nan+nanj) +div (nan-16j) (-16-infj) (nan+nanj) +div (nan-16j) (-16-16j) (nan+nanj) +div (nan-16j) (-16-2j) (nan+nanj) +div (nan-16j) (-16-0j) (nan+nanj) +div (nan-16j) (-16+0j) (nan+nanj) +div (nan-16j) (-16+2j) (nan+nanj) +div (nan-16j) (-16+16j) (nan+nanj) +div (nan-16j) (-16+infj) (nan+nanj) +div (nan-16j) (-16+nanj) (nan+nanj) +div (nan-16j) (-2-infj) (nan+nanj) +div (nan-16j) (-2-16j) (nan+nanj) +div (nan-16j) (-2-2j) (nan+nanj) +div (nan-16j) (-2-0j) (nan+nanj) +div (nan-16j) (-2+0j) (nan+nanj) +div (nan-16j) (-2+2j) (nan+nanj) +div (nan-16j) (-2+16j) (nan+nanj) +div (nan-16j) (-2+infj) (nan+nanj) +div (nan-16j) (-2+nanj) (nan+nanj) +div (nan-16j) (-0-infj) (nan+nanj) +div (nan-16j) (-0-16j) (nan+nanj) +div (nan-16j) (-0-2j) (nan+nanj) +div (nan-16j) (-0-0j) ZeroDivisionError +div (nan-16j) (-0+0j) ZeroDivisionError +div (nan-16j) (-0+2j) (nan+nanj) +div (nan-16j) (-0+16j) (nan+nanj) +div (nan-16j) (-0+infj) (nan+nanj) +div (nan-16j) (-0+nanj) (nan+nanj) +div (nan-16j) -infj (nan+nanj) +div (nan-16j) -16j (nan+nanj) +div (nan-16j) -2j (nan+nanj) +div (nan-16j) -0j ZeroDivisionError +div (nan-16j) 0j ZeroDivisionError +div (nan-16j) 2j (nan+nanj) +div (nan-16j) 16j (nan+nanj) +div (nan-16j) infj (nan+nanj) +div (nan-16j) nanj (nan+nanj) +div (nan-16j) (2-infj) (nan+nanj) +div (nan-16j) (2-16j) (nan+nanj) +div (nan-16j) (2-2j) (nan+nanj) +div (nan-16j) (2-0j) (nan+nanj) +div (nan-16j) (2+0j) (nan+nanj) +div (nan-16j) (2+2j) (nan+nanj) +div (nan-16j) (2+16j) (nan+nanj) +div (nan-16j) (2+infj) (nan+nanj) +div (nan-16j) (2+nanj) (nan+nanj) +div (nan-16j) (16-infj) (nan+nanj) +div (nan-16j) (16-16j) (nan+nanj) +div (nan-16j) (16-2j) (nan+nanj) +div (nan-16j) (16-0j) (nan+nanj) +div (nan-16j) (16+0j) (nan+nanj) +div (nan-16j) (16+2j) (nan+nanj) +div (nan-16j) (16+16j) (nan+nanj) +div (nan-16j) (16+infj) (nan+nanj) +div (nan-16j) (16+nanj) (nan+nanj) +div (nan-16j) (inf-infj) (nan+nanj) +div (nan-16j) (inf-16j) (nan+nanj) +div (nan-16j) (inf-2j) (nan+nanj) +div (nan-16j) (inf-0j) (nan+nanj) +div (nan-16j) (inf+0j) (nan+nanj) +div (nan-16j) (inf+2j) (nan+nanj) +div (nan-16j) (inf+16j) (nan+nanj) +div (nan-16j) (inf+infj) (nan+nanj) +div (nan-16j) (inf+nanj) (nan+nanj) +div (nan-16j) (nan-infj) (nan+nanj) +div (nan-16j) (nan-16j) (nan+nanj) +div (nan-16j) (nan-2j) (nan+nanj) +div (nan-16j) (nan-0j) (nan+nanj) +div (nan-16j) (nan+0j) (nan+nanj) +div (nan-16j) (nan+2j) (nan+nanj) +div (nan-16j) (nan+16j) (nan+nanj) +div (nan-16j) (nan+infj) (nan+nanj) +div (nan-16j) (nan+nanj) (nan+nanj) +div (nan-2j) (-inf-infj) (nan+nanj) +div (nan-2j) (-inf-16j) (nan+nanj) +div (nan-2j) (-inf-2j) (nan+nanj) +div (nan-2j) (-inf-0j) (nan+nanj) +div (nan-2j) (-inf+0j) (nan+nanj) +div (nan-2j) (-inf+2j) (nan+nanj) +div (nan-2j) (-inf+16j) (nan+nanj) +div (nan-2j) (-inf+infj) (nan+nanj) +div (nan-2j) (-inf+nanj) (nan+nanj) +div (nan-2j) (-16-infj) (nan+nanj) +div (nan-2j) (-16-16j) (nan+nanj) +div (nan-2j) (-16-2j) (nan+nanj) +div (nan-2j) (-16-0j) (nan+nanj) +div (nan-2j) (-16+0j) (nan+nanj) +div (nan-2j) (-16+2j) (nan+nanj) +div (nan-2j) (-16+16j) (nan+nanj) +div (nan-2j) (-16+infj) (nan+nanj) +div (nan-2j) (-16+nanj) (nan+nanj) +div (nan-2j) (-2-infj) (nan+nanj) +div (nan-2j) (-2-16j) (nan+nanj) +div (nan-2j) (-2-2j) (nan+nanj) +div (nan-2j) (-2-0j) (nan+nanj) +div (nan-2j) (-2+0j) (nan+nanj) +div (nan-2j) (-2+2j) (nan+nanj) +div (nan-2j) (-2+16j) (nan+nanj) +div (nan-2j) (-2+infj) (nan+nanj) +div (nan-2j) (-2+nanj) (nan+nanj) +div (nan-2j) (-0-infj) (nan+nanj) +div (nan-2j) (-0-16j) (nan+nanj) +div (nan-2j) (-0-2j) (nan+nanj) +div (nan-2j) (-0-0j) ZeroDivisionError +div (nan-2j) (-0+0j) ZeroDivisionError +div (nan-2j) (-0+2j) (nan+nanj) +div (nan-2j) (-0+16j) (nan+nanj) +div (nan-2j) (-0+infj) (nan+nanj) +div (nan-2j) (-0+nanj) (nan+nanj) +div (nan-2j) -infj (nan+nanj) +div (nan-2j) -16j (nan+nanj) +div (nan-2j) -2j (nan+nanj) +div (nan-2j) -0j ZeroDivisionError +div (nan-2j) 0j ZeroDivisionError +div (nan-2j) 2j (nan+nanj) +div (nan-2j) 16j (nan+nanj) +div (nan-2j) infj (nan+nanj) +div (nan-2j) nanj (nan+nanj) +div (nan-2j) (2-infj) (nan+nanj) +div (nan-2j) (2-16j) (nan+nanj) +div (nan-2j) (2-2j) (nan+nanj) +div (nan-2j) (2-0j) (nan+nanj) +div (nan-2j) (2+0j) (nan+nanj) +div (nan-2j) (2+2j) (nan+nanj) +div (nan-2j) (2+16j) (nan+nanj) +div (nan-2j) (2+infj) (nan+nanj) +div (nan-2j) (2+nanj) (nan+nanj) +div (nan-2j) (16-infj) (nan+nanj) +div (nan-2j) (16-16j) (nan+nanj) +div (nan-2j) (16-2j) (nan+nanj) +div (nan-2j) (16-0j) (nan+nanj) +div (nan-2j) (16+0j) (nan+nanj) +div (nan-2j) (16+2j) (nan+nanj) +div (nan-2j) (16+16j) (nan+nanj) +div (nan-2j) (16+infj) (nan+nanj) +div (nan-2j) (16+nanj) (nan+nanj) +div (nan-2j) (inf-infj) (nan+nanj) +div (nan-2j) (inf-16j) (nan+nanj) +div (nan-2j) (inf-2j) (nan+nanj) +div (nan-2j) (inf-0j) (nan+nanj) +div (nan-2j) (inf+0j) (nan+nanj) +div (nan-2j) (inf+2j) (nan+nanj) +div (nan-2j) (inf+16j) (nan+nanj) +div (nan-2j) (inf+infj) (nan+nanj) +div (nan-2j) (inf+nanj) (nan+nanj) +div (nan-2j) (nan-infj) (nan+nanj) +div (nan-2j) (nan-16j) (nan+nanj) +div (nan-2j) (nan-2j) (nan+nanj) +div (nan-2j) (nan-0j) (nan+nanj) +div (nan-2j) (nan+0j) (nan+nanj) +div (nan-2j) (nan+2j) (nan+nanj) +div (nan-2j) (nan+16j) (nan+nanj) +div (nan-2j) (nan+infj) (nan+nanj) +div (nan-2j) (nan+nanj) (nan+nanj) +div (nan-0j) (-inf-infj) (nan+nanj) +div (nan-0j) (-inf-16j) (nan+nanj) +div (nan-0j) (-inf-2j) (nan+nanj) +div (nan-0j) (-inf-0j) (nan+nanj) +div (nan-0j) (-inf+0j) (nan+nanj) +div (nan-0j) (-inf+2j) (nan+nanj) +div (nan-0j) (-inf+16j) (nan+nanj) +div (nan-0j) (-inf+infj) (nan+nanj) +div (nan-0j) (-inf+nanj) (nan+nanj) +div (nan-0j) (-16-infj) (nan+nanj) +div (nan-0j) (-16-16j) (nan+nanj) +div (nan-0j) (-16-2j) (nan+nanj) +div (nan-0j) (-16-0j) (nan+nanj) +div (nan-0j) (-16+0j) (nan+nanj) +div (nan-0j) (-16+2j) (nan+nanj) +div (nan-0j) (-16+16j) (nan+nanj) +div (nan-0j) (-16+infj) (nan+nanj) +div (nan-0j) (-16+nanj) (nan+nanj) +div (nan-0j) (-2-infj) (nan+nanj) +div (nan-0j) (-2-16j) (nan+nanj) +div (nan-0j) (-2-2j) (nan+nanj) +div (nan-0j) (-2-0j) (nan+nanj) +div (nan-0j) (-2+0j) (nan+nanj) +div (nan-0j) (-2+2j) (nan+nanj) +div (nan-0j) (-2+16j) (nan+nanj) +div (nan-0j) (-2+infj) (nan+nanj) +div (nan-0j) (-2+nanj) (nan+nanj) +div (nan-0j) (-0-infj) (nan+nanj) +div (nan-0j) (-0-16j) (nan+nanj) +div (nan-0j) (-0-2j) (nan+nanj) +div (nan-0j) (-0-0j) ZeroDivisionError +div (nan-0j) (-0+0j) ZeroDivisionError +div (nan-0j) (-0+2j) (nan+nanj) +div (nan-0j) (-0+16j) (nan+nanj) +div (nan-0j) (-0+infj) (nan+nanj) +div (nan-0j) (-0+nanj) (nan+nanj) +div (nan-0j) -infj (nan+nanj) +div (nan-0j) -16j (nan+nanj) +div (nan-0j) -2j (nan+nanj) +div (nan-0j) -0j ZeroDivisionError +div (nan-0j) 0j ZeroDivisionError +div (nan-0j) 2j (nan+nanj) +div (nan-0j) 16j (nan+nanj) +div (nan-0j) infj (nan+nanj) +div (nan-0j) nanj (nan+nanj) +div (nan-0j) (2-infj) (nan+nanj) +div (nan-0j) (2-16j) (nan+nanj) +div (nan-0j) (2-2j) (nan+nanj) +div (nan-0j) (2-0j) (nan+nanj) +div (nan-0j) (2+0j) (nan+nanj) +div (nan-0j) (2+2j) (nan+nanj) +div (nan-0j) (2+16j) (nan+nanj) +div (nan-0j) (2+infj) (nan+nanj) +div (nan-0j) (2+nanj) (nan+nanj) +div (nan-0j) (16-infj) (nan+nanj) +div (nan-0j) (16-16j) (nan+nanj) +div (nan-0j) (16-2j) (nan+nanj) +div (nan-0j) (16-0j) (nan+nanj) +div (nan-0j) (16+0j) (nan+nanj) +div (nan-0j) (16+2j) (nan+nanj) +div (nan-0j) (16+16j) (nan+nanj) +div (nan-0j) (16+infj) (nan+nanj) +div (nan-0j) (16+nanj) (nan+nanj) +div (nan-0j) (inf-infj) (nan+nanj) +div (nan-0j) (inf-16j) (nan+nanj) +div (nan-0j) (inf-2j) (nan+nanj) +div (nan-0j) (inf-0j) (nan+nanj) +div (nan-0j) (inf+0j) (nan+nanj) +div (nan-0j) (inf+2j) (nan+nanj) +div (nan-0j) (inf+16j) (nan+nanj) +div (nan-0j) (inf+infj) (nan+nanj) +div (nan-0j) (inf+nanj) (nan+nanj) +div (nan-0j) (nan-infj) (nan+nanj) +div (nan-0j) (nan-16j) (nan+nanj) +div (nan-0j) (nan-2j) (nan+nanj) +div (nan-0j) (nan-0j) (nan+nanj) +div (nan-0j) (nan+0j) (nan+nanj) +div (nan-0j) (nan+2j) (nan+nanj) +div (nan-0j) (nan+16j) (nan+nanj) +div (nan-0j) (nan+infj) (nan+nanj) +div (nan-0j) (nan+nanj) (nan+nanj) +div (nan+0j) (-inf-infj) (nan+nanj) +div (nan+0j) (-inf-16j) (nan+nanj) +div (nan+0j) (-inf-2j) (nan+nanj) +div (nan+0j) (-inf-0j) (nan+nanj) +div (nan+0j) (-inf+0j) (nan+nanj) +div (nan+0j) (-inf+2j) (nan+nanj) +div (nan+0j) (-inf+16j) (nan+nanj) +div (nan+0j) (-inf+infj) (nan+nanj) +div (nan+0j) (-inf+nanj) (nan+nanj) +div (nan+0j) (-16-infj) (nan+nanj) +div (nan+0j) (-16-16j) (nan+nanj) +div (nan+0j) (-16-2j) (nan+nanj) +div (nan+0j) (-16-0j) (nan+nanj) +div (nan+0j) (-16+0j) (nan+nanj) +div (nan+0j) (-16+2j) (nan+nanj) +div (nan+0j) (-16+16j) (nan+nanj) +div (nan+0j) (-16+infj) (nan+nanj) +div (nan+0j) (-16+nanj) (nan+nanj) +div (nan+0j) (-2-infj) (nan+nanj) +div (nan+0j) (-2-16j) (nan+nanj) +div (nan+0j) (-2-2j) (nan+nanj) +div (nan+0j) (-2-0j) (nan+nanj) +div (nan+0j) (-2+0j) (nan+nanj) +div (nan+0j) (-2+2j) (nan+nanj) +div (nan+0j) (-2+16j) (nan+nanj) +div (nan+0j) (-2+infj) (nan+nanj) +div (nan+0j) (-2+nanj) (nan+nanj) +div (nan+0j) (-0-infj) (nan+nanj) +div (nan+0j) (-0-16j) (nan+nanj) +div (nan+0j) (-0-2j) (nan+nanj) +div (nan+0j) (-0-0j) ZeroDivisionError +div (nan+0j) (-0+0j) ZeroDivisionError +div (nan+0j) (-0+2j) (nan+nanj) +div (nan+0j) (-0+16j) (nan+nanj) +div (nan+0j) (-0+infj) (nan+nanj) +div (nan+0j) (-0+nanj) (nan+nanj) +div (nan+0j) -infj (nan+nanj) +div (nan+0j) -16j (nan+nanj) +div (nan+0j) -2j (nan+nanj) +div (nan+0j) -0j ZeroDivisionError +div (nan+0j) 0j ZeroDivisionError +div (nan+0j) 2j (nan+nanj) +div (nan+0j) 16j (nan+nanj) +div (nan+0j) infj (nan+nanj) +div (nan+0j) nanj (nan+nanj) +div (nan+0j) (2-infj) (nan+nanj) +div (nan+0j) (2-16j) (nan+nanj) +div (nan+0j) (2-2j) (nan+nanj) +div (nan+0j) (2-0j) (nan+nanj) +div (nan+0j) (2+0j) (nan+nanj) +div (nan+0j) (2+2j) (nan+nanj) +div (nan+0j) (2+16j) (nan+nanj) +div (nan+0j) (2+infj) (nan+nanj) +div (nan+0j) (2+nanj) (nan+nanj) +div (nan+0j) (16-infj) (nan+nanj) +div (nan+0j) (16-16j) (nan+nanj) +div (nan+0j) (16-2j) (nan+nanj) +div (nan+0j) (16-0j) (nan+nanj) +div (nan+0j) (16+0j) (nan+nanj) +div (nan+0j) (16+2j) (nan+nanj) +div (nan+0j) (16+16j) (nan+nanj) +div (nan+0j) (16+infj) (nan+nanj) +div (nan+0j) (16+nanj) (nan+nanj) +div (nan+0j) (inf-infj) (nan+nanj) +div (nan+0j) (inf-16j) (nan+nanj) +div (nan+0j) (inf-2j) (nan+nanj) +div (nan+0j) (inf-0j) (nan+nanj) +div (nan+0j) (inf+0j) (nan+nanj) +div (nan+0j) (inf+2j) (nan+nanj) +div (nan+0j) (inf+16j) (nan+nanj) +div (nan+0j) (inf+infj) (nan+nanj) +div (nan+0j) (inf+nanj) (nan+nanj) +div (nan+0j) (nan-infj) (nan+nanj) +div (nan+0j) (nan-16j) (nan+nanj) +div (nan+0j) (nan-2j) (nan+nanj) +div (nan+0j) (nan-0j) (nan+nanj) +div (nan+0j) (nan+0j) (nan+nanj) +div (nan+0j) (nan+2j) (nan+nanj) +div (nan+0j) (nan+16j) (nan+nanj) +div (nan+0j) (nan+infj) (nan+nanj) +div (nan+0j) (nan+nanj) (nan+nanj) +div (nan+2j) (-inf-infj) (nan+nanj) +div (nan+2j) (-inf-16j) (nan+nanj) +div (nan+2j) (-inf-2j) (nan+nanj) +div (nan+2j) (-inf-0j) (nan+nanj) +div (nan+2j) (-inf+0j) (nan+nanj) +div (nan+2j) (-inf+2j) (nan+nanj) +div (nan+2j) (-inf+16j) (nan+nanj) +div (nan+2j) (-inf+infj) (nan+nanj) +div (nan+2j) (-inf+nanj) (nan+nanj) +div (nan+2j) (-16-infj) (nan+nanj) +div (nan+2j) (-16-16j) (nan+nanj) +div (nan+2j) (-16-2j) (nan+nanj) +div (nan+2j) (-16-0j) (nan+nanj) +div (nan+2j) (-16+0j) (nan+nanj) +div (nan+2j) (-16+2j) (nan+nanj) +div (nan+2j) (-16+16j) (nan+nanj) +div (nan+2j) (-16+infj) (nan+nanj) +div (nan+2j) (-16+nanj) (nan+nanj) +div (nan+2j) (-2-infj) (nan+nanj) +div (nan+2j) (-2-16j) (nan+nanj) +div (nan+2j) (-2-2j) (nan+nanj) +div (nan+2j) (-2-0j) (nan+nanj) +div (nan+2j) (-2+0j) (nan+nanj) +div (nan+2j) (-2+2j) (nan+nanj) +div (nan+2j) (-2+16j) (nan+nanj) +div (nan+2j) (-2+infj) (nan+nanj) +div (nan+2j) (-2+nanj) (nan+nanj) +div (nan+2j) (-0-infj) (nan+nanj) +div (nan+2j) (-0-16j) (nan+nanj) +div (nan+2j) (-0-2j) (nan+nanj) +div (nan+2j) (-0-0j) ZeroDivisionError +div (nan+2j) (-0+0j) ZeroDivisionError +div (nan+2j) (-0+2j) (nan+nanj) +div (nan+2j) (-0+16j) (nan+nanj) +div (nan+2j) (-0+infj) (nan+nanj) +div (nan+2j) (-0+nanj) (nan+nanj) +div (nan+2j) -infj (nan+nanj) +div (nan+2j) -16j (nan+nanj) +div (nan+2j) -2j (nan+nanj) +div (nan+2j) -0j ZeroDivisionError +div (nan+2j) 0j ZeroDivisionError +div (nan+2j) 2j (nan+nanj) +div (nan+2j) 16j (nan+nanj) +div (nan+2j) infj (nan+nanj) +div (nan+2j) nanj (nan+nanj) +div (nan+2j) (2-infj) (nan+nanj) +div (nan+2j) (2-16j) (nan+nanj) +div (nan+2j) (2-2j) (nan+nanj) +div (nan+2j) (2-0j) (nan+nanj) +div (nan+2j) (2+0j) (nan+nanj) +div (nan+2j) (2+2j) (nan+nanj) +div (nan+2j) (2+16j) (nan+nanj) +div (nan+2j) (2+infj) (nan+nanj) +div (nan+2j) (2+nanj) (nan+nanj) +div (nan+2j) (16-infj) (nan+nanj) +div (nan+2j) (16-16j) (nan+nanj) +div (nan+2j) (16-2j) (nan+nanj) +div (nan+2j) (16-0j) (nan+nanj) +div (nan+2j) (16+0j) (nan+nanj) +div (nan+2j) (16+2j) (nan+nanj) +div (nan+2j) (16+16j) (nan+nanj) +div (nan+2j) (16+infj) (nan+nanj) +div (nan+2j) (16+nanj) (nan+nanj) +div (nan+2j) (inf-infj) (nan+nanj) +div (nan+2j) (inf-16j) (nan+nanj) +div (nan+2j) (inf-2j) (nan+nanj) +div (nan+2j) (inf-0j) (nan+nanj) +div (nan+2j) (inf+0j) (nan+nanj) +div (nan+2j) (inf+2j) (nan+nanj) +div (nan+2j) (inf+16j) (nan+nanj) +div (nan+2j) (inf+infj) (nan+nanj) +div (nan+2j) (inf+nanj) (nan+nanj) +div (nan+2j) (nan-infj) (nan+nanj) +div (nan+2j) (nan-16j) (nan+nanj) +div (nan+2j) (nan-2j) (nan+nanj) +div (nan+2j) (nan-0j) (nan+nanj) +div (nan+2j) (nan+0j) (nan+nanj) +div (nan+2j) (nan+2j) (nan+nanj) +div (nan+2j) (nan+16j) (nan+nanj) +div (nan+2j) (nan+infj) (nan+nanj) +div (nan+2j) (nan+nanj) (nan+nanj) +div (nan+16j) (-inf-infj) (nan+nanj) +div (nan+16j) (-inf-16j) (nan+nanj) +div (nan+16j) (-inf-2j) (nan+nanj) +div (nan+16j) (-inf-0j) (nan+nanj) +div (nan+16j) (-inf+0j) (nan+nanj) +div (nan+16j) (-inf+2j) (nan+nanj) +div (nan+16j) (-inf+16j) (nan+nanj) +div (nan+16j) (-inf+infj) (nan+nanj) +div (nan+16j) (-inf+nanj) (nan+nanj) +div (nan+16j) (-16-infj) (nan+nanj) +div (nan+16j) (-16-16j) (nan+nanj) +div (nan+16j) (-16-2j) (nan+nanj) +div (nan+16j) (-16-0j) (nan+nanj) +div (nan+16j) (-16+0j) (nan+nanj) +div (nan+16j) (-16+2j) (nan+nanj) +div (nan+16j) (-16+16j) (nan+nanj) +div (nan+16j) (-16+infj) (nan+nanj) +div (nan+16j) (-16+nanj) (nan+nanj) +div (nan+16j) (-2-infj) (nan+nanj) +div (nan+16j) (-2-16j) (nan+nanj) +div (nan+16j) (-2-2j) (nan+nanj) +div (nan+16j) (-2-0j) (nan+nanj) +div (nan+16j) (-2+0j) (nan+nanj) +div (nan+16j) (-2+2j) (nan+nanj) +div (nan+16j) (-2+16j) (nan+nanj) +div (nan+16j) (-2+infj) (nan+nanj) +div (nan+16j) (-2+nanj) (nan+nanj) +div (nan+16j) (-0-infj) (nan+nanj) +div (nan+16j) (-0-16j) (nan+nanj) +div (nan+16j) (-0-2j) (nan+nanj) +div (nan+16j) (-0-0j) ZeroDivisionError +div (nan+16j) (-0+0j) ZeroDivisionError +div (nan+16j) (-0+2j) (nan+nanj) +div (nan+16j) (-0+16j) (nan+nanj) +div (nan+16j) (-0+infj) (nan+nanj) +div (nan+16j) (-0+nanj) (nan+nanj) +div (nan+16j) -infj (nan+nanj) +div (nan+16j) -16j (nan+nanj) +div (nan+16j) -2j (nan+nanj) +div (nan+16j) -0j ZeroDivisionError +div (nan+16j) 0j ZeroDivisionError +div (nan+16j) 2j (nan+nanj) +div (nan+16j) 16j (nan+nanj) +div (nan+16j) infj (nan+nanj) +div (nan+16j) nanj (nan+nanj) +div (nan+16j) (2-infj) (nan+nanj) +div (nan+16j) (2-16j) (nan+nanj) +div (nan+16j) (2-2j) (nan+nanj) +div (nan+16j) (2-0j) (nan+nanj) +div (nan+16j) (2+0j) (nan+nanj) +div (nan+16j) (2+2j) (nan+nanj) +div (nan+16j) (2+16j) (nan+nanj) +div (nan+16j) (2+infj) (nan+nanj) +div (nan+16j) (2+nanj) (nan+nanj) +div (nan+16j) (16-infj) (nan+nanj) +div (nan+16j) (16-16j) (nan+nanj) +div (nan+16j) (16-2j) (nan+nanj) +div (nan+16j) (16-0j) (nan+nanj) +div (nan+16j) (16+0j) (nan+nanj) +div (nan+16j) (16+2j) (nan+nanj) +div (nan+16j) (16+16j) (nan+nanj) +div (nan+16j) (16+infj) (nan+nanj) +div (nan+16j) (16+nanj) (nan+nanj) +div (nan+16j) (inf-infj) (nan+nanj) +div (nan+16j) (inf-16j) (nan+nanj) +div (nan+16j) (inf-2j) (nan+nanj) +div (nan+16j) (inf-0j) (nan+nanj) +div (nan+16j) (inf+0j) (nan+nanj) +div (nan+16j) (inf+2j) (nan+nanj) +div (nan+16j) (inf+16j) (nan+nanj) +div (nan+16j) (inf+infj) (nan+nanj) +div (nan+16j) (inf+nanj) (nan+nanj) +div (nan+16j) (nan-infj) (nan+nanj) +div (nan+16j) (nan-16j) (nan+nanj) +div (nan+16j) (nan-2j) (nan+nanj) +div (nan+16j) (nan-0j) (nan+nanj) +div (nan+16j) (nan+0j) (nan+nanj) +div (nan+16j) (nan+2j) (nan+nanj) +div (nan+16j) (nan+16j) (nan+nanj) +div (nan+16j) (nan+infj) (nan+nanj) +div (nan+16j) (nan+nanj) (nan+nanj) +div (nan+infj) (-inf-infj) (nan+nanj) +div (nan+infj) (-inf-16j) (nan+nanj) +div (nan+infj) (-inf-2j) (nan+nanj) +div (nan+infj) (-inf-0j) (nan+nanj) +div (nan+infj) (-inf+0j) (nan+nanj) +div (nan+infj) (-inf+2j) (nan+nanj) +div (nan+infj) (-inf+16j) (nan+nanj) +div (nan+infj) (-inf+infj) (nan+nanj) +div (nan+infj) (-inf+nanj) (nan+nanj) +div (nan+infj) (-16-infj) (nan+nanj) +div (nan+infj) (-16-16j) (nan+nanj) +div (nan+infj) (-16-2j) (nan+nanj) +div (nan+infj) (-16-0j) (nan+nanj) +div (nan+infj) (-16+0j) (nan+nanj) +div (nan+infj) (-16+2j) (nan+nanj) +div (nan+infj) (-16+16j) (nan+nanj) +div (nan+infj) (-16+infj) (nan+nanj) +div (nan+infj) (-16+nanj) (nan+nanj) +div (nan+infj) (-2-infj) (nan+nanj) +div (nan+infj) (-2-16j) (nan+nanj) +div (nan+infj) (-2-2j) (nan+nanj) +div (nan+infj) (-2-0j) (nan+nanj) +div (nan+infj) (-2+0j) (nan+nanj) +div (nan+infj) (-2+2j) (nan+nanj) +div (nan+infj) (-2+16j) (nan+nanj) +div (nan+infj) (-2+infj) (nan+nanj) +div (nan+infj) (-2+nanj) (nan+nanj) +div (nan+infj) (-0-infj) (nan+nanj) +div (nan+infj) (-0-16j) (nan+nanj) +div (nan+infj) (-0-2j) (nan+nanj) +div (nan+infj) (-0-0j) ZeroDivisionError +div (nan+infj) (-0+0j) ZeroDivisionError +div (nan+infj) (-0+2j) (nan+nanj) +div (nan+infj) (-0+16j) (nan+nanj) +div (nan+infj) (-0+infj) (nan+nanj) +div (nan+infj) (-0+nanj) (nan+nanj) +div (nan+infj) -infj (nan+nanj) +div (nan+infj) -16j (nan+nanj) +div (nan+infj) -2j (nan+nanj) +div (nan+infj) -0j ZeroDivisionError +div (nan+infj) 0j ZeroDivisionError +div (nan+infj) 2j (nan+nanj) +div (nan+infj) 16j (nan+nanj) +div (nan+infj) infj (nan+nanj) +div (nan+infj) nanj (nan+nanj) +div (nan+infj) (2-infj) (nan+nanj) +div (nan+infj) (2-16j) (nan+nanj) +div (nan+infj) (2-2j) (nan+nanj) +div (nan+infj) (2-0j) (nan+nanj) +div (nan+infj) (2+0j) (nan+nanj) +div (nan+infj) (2+2j) (nan+nanj) +div (nan+infj) (2+16j) (nan+nanj) +div (nan+infj) (2+infj) (nan+nanj) +div (nan+infj) (2+nanj) (nan+nanj) +div (nan+infj) (16-infj) (nan+nanj) +div (nan+infj) (16-16j) (nan+nanj) +div (nan+infj) (16-2j) (nan+nanj) +div (nan+infj) (16-0j) (nan+nanj) +div (nan+infj) (16+0j) (nan+nanj) +div (nan+infj) (16+2j) (nan+nanj) +div (nan+infj) (16+16j) (nan+nanj) +div (nan+infj) (16+infj) (nan+nanj) +div (nan+infj) (16+nanj) (nan+nanj) +div (nan+infj) (inf-infj) (nan+nanj) +div (nan+infj) (inf-16j) (nan+nanj) +div (nan+infj) (inf-2j) (nan+nanj) +div (nan+infj) (inf-0j) (nan+nanj) +div (nan+infj) (inf+0j) (nan+nanj) +div (nan+infj) (inf+2j) (nan+nanj) +div (nan+infj) (inf+16j) (nan+nanj) +div (nan+infj) (inf+infj) (nan+nanj) +div (nan+infj) (inf+nanj) (nan+nanj) +div (nan+infj) (nan-infj) (nan+nanj) +div (nan+infj) (nan-16j) (nan+nanj) +div (nan+infj) (nan-2j) (nan+nanj) +div (nan+infj) (nan-0j) (nan+nanj) +div (nan+infj) (nan+0j) (nan+nanj) +div (nan+infj) (nan+2j) (nan+nanj) +div (nan+infj) (nan+16j) (nan+nanj) +div (nan+infj) (nan+infj) (nan+nanj) +div (nan+infj) (nan+nanj) (nan+nanj) +div (nan+nanj) (-inf-infj) (nan+nanj) +div (nan+nanj) (-inf-16j) (nan+nanj) +div (nan+nanj) (-inf-2j) (nan+nanj) +div (nan+nanj) (-inf-0j) (nan+nanj) +div (nan+nanj) (-inf+0j) (nan+nanj) +div (nan+nanj) (-inf+2j) (nan+nanj) +div (nan+nanj) (-inf+16j) (nan+nanj) +div (nan+nanj) (-inf+infj) (nan+nanj) +div (nan+nanj) (-inf+nanj) (nan+nanj) +div (nan+nanj) (-16-infj) (nan+nanj) +div (nan+nanj) (-16-16j) (nan+nanj) +div (nan+nanj) (-16-2j) (nan+nanj) +div (nan+nanj) (-16-0j) (nan+nanj) +div (nan+nanj) (-16+0j) (nan+nanj) +div (nan+nanj) (-16+2j) (nan+nanj) +div (nan+nanj) (-16+16j) (nan+nanj) +div (nan+nanj) (-16+infj) (nan+nanj) +div (nan+nanj) (-16+nanj) (nan+nanj) +div (nan+nanj) (-2-infj) (nan+nanj) +div (nan+nanj) (-2-16j) (nan+nanj) +div (nan+nanj) (-2-2j) (nan+nanj) +div (nan+nanj) (-2-0j) (nan+nanj) +div (nan+nanj) (-2+0j) (nan+nanj) +div (nan+nanj) (-2+2j) (nan+nanj) +div (nan+nanj) (-2+16j) (nan+nanj) +div (nan+nanj) (-2+infj) (nan+nanj) +div (nan+nanj) (-2+nanj) (nan+nanj) +div (nan+nanj) (-0-infj) (nan+nanj) +div (nan+nanj) (-0-16j) (nan+nanj) +div (nan+nanj) (-0-2j) (nan+nanj) +div (nan+nanj) (-0-0j) ZeroDivisionError +div (nan+nanj) (-0+0j) ZeroDivisionError +div (nan+nanj) (-0+2j) (nan+nanj) +div (nan+nanj) (-0+16j) (nan+nanj) +div (nan+nanj) (-0+infj) (nan+nanj) +div (nan+nanj) (-0+nanj) (nan+nanj) +div (nan+nanj) -infj (nan+nanj) +div (nan+nanj) -16j (nan+nanj) +div (nan+nanj) -2j (nan+nanj) +div (nan+nanj) -0j ZeroDivisionError +div (nan+nanj) 0j ZeroDivisionError +div (nan+nanj) 2j (nan+nanj) +div (nan+nanj) 16j (nan+nanj) +div (nan+nanj) infj (nan+nanj) +div (nan+nanj) nanj (nan+nanj) +div (nan+nanj) (2-infj) (nan+nanj) +div (nan+nanj) (2-16j) (nan+nanj) +div (nan+nanj) (2-2j) (nan+nanj) +div (nan+nanj) (2-0j) (nan+nanj) +div (nan+nanj) (2+0j) (nan+nanj) +div (nan+nanj) (2+2j) (nan+nanj) +div (nan+nanj) (2+16j) (nan+nanj) +div (nan+nanj) (2+infj) (nan+nanj) +div (nan+nanj) (2+nanj) (nan+nanj) +div (nan+nanj) (16-infj) (nan+nanj) +div (nan+nanj) (16-16j) (nan+nanj) +div (nan+nanj) (16-2j) (nan+nanj) +div (nan+nanj) (16-0j) (nan+nanj) +div (nan+nanj) (16+0j) (nan+nanj) +div (nan+nanj) (16+2j) (nan+nanj) +div (nan+nanj) (16+16j) (nan+nanj) +div (nan+nanj) (16+infj) (nan+nanj) +div (nan+nanj) (16+nanj) (nan+nanj) +div (nan+nanj) (inf-infj) (nan+nanj) +div (nan+nanj) (inf-16j) (nan+nanj) +div (nan+nanj) (inf-2j) (nan+nanj) +div (nan+nanj) (inf-0j) (nan+nanj) +div (nan+nanj) (inf+0j) (nan+nanj) +div (nan+nanj) (inf+2j) (nan+nanj) +div (nan+nanj) (inf+16j) (nan+nanj) +div (nan+nanj) (inf+infj) (nan+nanj) +div (nan+nanj) (inf+nanj) (nan+nanj) +div (nan+nanj) (nan-infj) (nan+nanj) +div (nan+nanj) (nan-16j) (nan+nanj) +div (nan+nanj) (nan-2j) (nan+nanj) +div (nan+nanj) (nan-0j) (nan+nanj) +div (nan+nanj) (nan+0j) (nan+nanj) +div (nan+nanj) (nan+2j) (nan+nanj) +div (nan+nanj) (nan+16j) (nan+nanj) +div (nan+nanj) (nan+infj) (nan+nanj) +div (nan+nanj) (nan+nanj) (nan+nanj) +mul (-inf-infj) (-inf-infj) (nan+infj) +mul (-inf-infj) (-inf-16j) (nan+infj) +mul (-inf-infj) (-inf-2j) (nan+infj) +mul (-inf-infj) (-inf-0j) (nan+nanj) +mul (-inf-infj) (-inf+0j) (nan+nanj) +mul (-inf-infj) (-inf+2j) (inf+nanj) +mul (-inf-infj) (-inf+16j) (inf+nanj) +mul (-inf-infj) (-inf+infj) (inf+nanj) +mul (-inf-infj) (-inf+nanj) (nan+nanj) +mul (-inf-infj) (-16-infj) (nan+infj) +mul (-inf-infj) (-16-16j) (nan+infj) +mul (-inf-infj) (-16-2j) (nan+infj) +mul (-inf-infj) (-16-0j) (nan+nanj) +mul (-inf-infj) (-16+0j) (nan+nanj) +mul (-inf-infj) (-16+2j) (inf+nanj) +mul (-inf-infj) (-16+16j) (inf+nanj) +mul (-inf-infj) (-16+infj) (inf+nanj) +mul (-inf-infj) (-16+nanj) (nan+nanj) +mul (-inf-infj) (-2-infj) (nan+infj) +mul (-inf-infj) (-2-16j) (nan+infj) +mul (-inf-infj) (-2-2j) (nan+infj) +mul (-inf-infj) (-2-0j) (nan+nanj) +mul (-inf-infj) (-2+0j) (nan+nanj) +mul (-inf-infj) (-2+2j) (inf+nanj) +mul (-inf-infj) (-2+16j) (inf+nanj) +mul (-inf-infj) (-2+infj) (inf+nanj) +mul (-inf-infj) (-2+nanj) (nan+nanj) +mul (-inf-infj) (-0-infj) (nan+nanj) +mul (-inf-infj) (-0-16j) (nan+nanj) +mul (-inf-infj) (-0-2j) (nan+nanj) +mul (-inf-infj) (-0-0j) (nan+nanj) +mul (-inf-infj) (-0+0j) (nan+nanj) +mul (-inf-infj) (-0+2j) (nan+nanj) +mul (-inf-infj) (-0+16j) (nan+nanj) +mul (-inf-infj) (-0+infj) (nan+nanj) +mul (-inf-infj) (-0+nanj) (nan+nanj) +mul (-inf-infj) -infj (nan+nanj) +mul (-inf-infj) -16j (nan+nanj) +mul (-inf-infj) -2j (nan+nanj) +mul (-inf-infj) -0j (nan+nanj) +mul (-inf-infj) 0j (nan+nanj) +mul (-inf-infj) 2j (nan+nanj) +mul (-inf-infj) 16j (nan+nanj) +mul (-inf-infj) infj (nan+nanj) +mul (-inf-infj) nanj (nan+nanj) +mul (-inf-infj) (2-infj) (-inf+nanj) +mul (-inf-infj) (2-16j) (-inf+nanj) +mul (-inf-infj) (2-2j) (-inf+nanj) +mul (-inf-infj) (2-0j) (nan+nanj) +mul (-inf-infj) (2+0j) (nan+nanj) +mul (-inf-infj) (2+2j) (nan-infj) +mul (-inf-infj) (2+16j) (nan-infj) +mul (-inf-infj) (2+infj) (nan-infj) +mul (-inf-infj) (2+nanj) (nan+nanj) +mul (-inf-infj) (16-infj) (-inf+nanj) +mul (-inf-infj) (16-16j) (-inf+nanj) +mul (-inf-infj) (16-2j) (-inf+nanj) +mul (-inf-infj) (16-0j) (nan+nanj) +mul (-inf-infj) (16+0j) (nan+nanj) +mul (-inf-infj) (16+2j) (nan-infj) +mul (-inf-infj) (16+16j) (nan-infj) +mul (-inf-infj) (16+infj) (nan-infj) +mul (-inf-infj) (16+nanj) (nan+nanj) +mul (-inf-infj) (inf-infj) (-inf+nanj) +mul (-inf-infj) (inf-16j) (-inf+nanj) +mul (-inf-infj) (inf-2j) (-inf+nanj) +mul (-inf-infj) (inf-0j) (nan+nanj) +mul (-inf-infj) (inf+0j) (nan+nanj) +mul (-inf-infj) (inf+2j) (nan-infj) +mul (-inf-infj) (inf+16j) (nan-infj) +mul (-inf-infj) (inf+infj) (nan-infj) +mul (-inf-infj) (inf+nanj) (nan+nanj) +mul (-inf-infj) (nan-infj) (nan+nanj) +mul (-inf-infj) (nan-16j) (nan+nanj) +mul (-inf-infj) (nan-2j) (nan+nanj) +mul (-inf-infj) (nan-0j) (nan+nanj) +mul (-inf-infj) (nan+0j) (nan+nanj) +mul (-inf-infj) (nan+2j) (nan+nanj) +mul (-inf-infj) (nan+16j) (nan+nanj) +mul (-inf-infj) (nan+infj) (nan+nanj) +mul (-inf-infj) (nan+nanj) (nan+nanj) +mul (-inf-16j) (-inf-infj) (nan+infj) +mul (-inf-16j) (-inf-16j) (inf+infj) +mul (-inf-16j) (-inf-2j) (inf+infj) +mul (-inf-16j) (-inf-0j) (inf+nanj) +mul (-inf-16j) (-inf+0j) (inf+nanj) +mul (-inf-16j) (-inf+2j) (inf+nanj) +mul (-inf-16j) (-inf+16j) (inf+nanj) +mul (-inf-16j) (-inf+infj) (inf+nanj) +mul (-inf-16j) (-inf+nanj) (nan+nanj) +mul (-inf-16j) (-16-infj) (nan+infj) +mul (-inf-16j) (-16-16j) (inf+infj) +mul (-inf-16j) (-16-2j) (inf+infj) +mul (-inf-16j) (-16-0j) (inf+nanj) +mul (-inf-16j) (-16+0j) (inf+nanj) +mul (-inf-16j) (-16+2j) (inf-infj) +mul (-inf-16j) (-16+16j) (inf-infj) +mul (-inf-16j) (-16+infj) (inf-infj) +mul (-inf-16j) (-16+nanj) (nan+nanj) +mul (-inf-16j) (-2-infj) (nan+infj) +mul (-inf-16j) (-2-16j) (inf+infj) +mul (-inf-16j) (-2-2j) (inf+infj) +mul (-inf-16j) (-2-0j) (inf+nanj) +mul (-inf-16j) (-2+0j) (inf+nanj) +mul (-inf-16j) (-2+2j) (inf-infj) +mul (-inf-16j) (-2+16j) (inf-infj) +mul (-inf-16j) (-2+infj) (inf-infj) +mul (-inf-16j) (-2+nanj) (nan+nanj) +mul (-inf-16j) (-0-infj) (nan+infj) +mul (-inf-16j) (-0-16j) (nan+infj) +mul (-inf-16j) (-0-2j) (nan+infj) +mul (-inf-16j) (-0-0j) (nan+nanj) +mul (-inf-16j) (-0+0j) (nan+nanj) +mul (-inf-16j) (-0+2j) (nan-infj) +mul (-inf-16j) (-0+16j) (nan-infj) +mul (-inf-16j) (-0+infj) (nan-infj) +mul (-inf-16j) (-0+nanj) (nan+nanj) +mul (-inf-16j) -infj (nan+infj) +mul (-inf-16j) -16j (nan+infj) +mul (-inf-16j) -2j (nan+infj) +mul (-inf-16j) -0j (nan+nanj) +mul (-inf-16j) 0j (nan+nanj) +mul (-inf-16j) 2j (nan-infj) +mul (-inf-16j) 16j (nan-infj) +mul (-inf-16j) infj (nan-infj) +mul (-inf-16j) nanj (nan+nanj) +mul (-inf-16j) (2-infj) (-inf+infj) +mul (-inf-16j) (2-16j) (-inf+infj) +mul (-inf-16j) (2-2j) (-inf+infj) +mul (-inf-16j) (2-0j) (-inf+nanj) +mul (-inf-16j) (2+0j) (-inf+nanj) +mul (-inf-16j) (2+2j) (-inf-infj) +mul (-inf-16j) (2+16j) (-inf-infj) +mul (-inf-16j) (2+infj) (nan-infj) +mul (-inf-16j) (2+nanj) (nan+nanj) +mul (-inf-16j) (16-infj) (-inf+infj) +mul (-inf-16j) (16-16j) (-inf+infj) +mul (-inf-16j) (16-2j) (-inf+infj) +mul (-inf-16j) (16-0j) (-inf+nanj) +mul (-inf-16j) (16+0j) (-inf+nanj) +mul (-inf-16j) (16+2j) (-inf-infj) +mul (-inf-16j) (16+16j) (-inf-infj) +mul (-inf-16j) (16+infj) (nan-infj) +mul (-inf-16j) (16+nanj) (nan+nanj) +mul (-inf-16j) (inf-infj) (-inf+nanj) +mul (-inf-16j) (inf-16j) (-inf+nanj) +mul (-inf-16j) (inf-2j) (-inf+nanj) +mul (-inf-16j) (inf-0j) (-inf+nanj) +mul (-inf-16j) (inf+0j) (-inf+nanj) +mul (-inf-16j) (inf+2j) (-inf-infj) +mul (-inf-16j) (inf+16j) (-inf-infj) +mul (-inf-16j) (inf+infj) (nan-infj) +mul (-inf-16j) (inf+nanj) (nan+nanj) +mul (-inf-16j) (nan-infj) (nan+nanj) +mul (-inf-16j) (nan-16j) (nan+nanj) +mul (-inf-16j) (nan-2j) (nan+nanj) +mul (-inf-16j) (nan-0j) (nan+nanj) +mul (-inf-16j) (nan+0j) (nan+nanj) +mul (-inf-16j) (nan+2j) (nan+nanj) +mul (-inf-16j) (nan+16j) (nan+nanj) +mul (-inf-16j) (nan+infj) (nan+nanj) +mul (-inf-16j) (nan+nanj) (nan+nanj) +mul (-inf-2j) (-inf-infj) (nan+infj) +mul (-inf-2j) (-inf-16j) (inf+infj) +mul (-inf-2j) (-inf-2j) (inf+infj) +mul (-inf-2j) (-inf-0j) (inf+nanj) +mul (-inf-2j) (-inf+0j) (inf+nanj) +mul (-inf-2j) (-inf+2j) (inf+nanj) +mul (-inf-2j) (-inf+16j) (inf+nanj) +mul (-inf-2j) (-inf+infj) (inf+nanj) +mul (-inf-2j) (-inf+nanj) (nan+nanj) +mul (-inf-2j) (-16-infj) (nan+infj) +mul (-inf-2j) (-16-16j) (inf+infj) +mul (-inf-2j) (-16-2j) (inf+infj) +mul (-inf-2j) (-16-0j) (inf+nanj) +mul (-inf-2j) (-16+0j) (inf+nanj) +mul (-inf-2j) (-16+2j) (inf-infj) +mul (-inf-2j) (-16+16j) (inf-infj) +mul (-inf-2j) (-16+infj) (inf-infj) +mul (-inf-2j) (-16+nanj) (nan+nanj) +mul (-inf-2j) (-2-infj) (nan+infj) +mul (-inf-2j) (-2-16j) (inf+infj) +mul (-inf-2j) (-2-2j) (inf+infj) +mul (-inf-2j) (-2-0j) (inf+nanj) +mul (-inf-2j) (-2+0j) (inf+nanj) +mul (-inf-2j) (-2+2j) (inf-infj) +mul (-inf-2j) (-2+16j) (inf-infj) +mul (-inf-2j) (-2+infj) (inf-infj) +mul (-inf-2j) (-2+nanj) (nan+nanj) +mul (-inf-2j) (-0-infj) (nan+infj) +mul (-inf-2j) (-0-16j) (nan+infj) +mul (-inf-2j) (-0-2j) (nan+infj) +mul (-inf-2j) (-0-0j) (nan+nanj) +mul (-inf-2j) (-0+0j) (nan+nanj) +mul (-inf-2j) (-0+2j) (nan-infj) +mul (-inf-2j) (-0+16j) (nan-infj) +mul (-inf-2j) (-0+infj) (nan-infj) +mul (-inf-2j) (-0+nanj) (nan+nanj) +mul (-inf-2j) -infj (nan+infj) +mul (-inf-2j) -16j (nan+infj) +mul (-inf-2j) -2j (nan+infj) +mul (-inf-2j) -0j (nan+nanj) +mul (-inf-2j) 0j (nan+nanj) +mul (-inf-2j) 2j (nan-infj) +mul (-inf-2j) 16j (nan-infj) +mul (-inf-2j) infj (nan-infj) +mul (-inf-2j) nanj (nan+nanj) +mul (-inf-2j) (2-infj) (-inf+infj) +mul (-inf-2j) (2-16j) (-inf+infj) +mul (-inf-2j) (2-2j) (-inf+infj) +mul (-inf-2j) (2-0j) (-inf+nanj) +mul (-inf-2j) (2+0j) (-inf+nanj) +mul (-inf-2j) (2+2j) (-inf-infj) +mul (-inf-2j) (2+16j) (-inf-infj) +mul (-inf-2j) (2+infj) (nan-infj) +mul (-inf-2j) (2+nanj) (nan+nanj) +mul (-inf-2j) (16-infj) (-inf+infj) +mul (-inf-2j) (16-16j) (-inf+infj) +mul (-inf-2j) (16-2j) (-inf+infj) +mul (-inf-2j) (16-0j) (-inf+nanj) +mul (-inf-2j) (16+0j) (-inf+nanj) +mul (-inf-2j) (16+2j) (-inf-infj) +mul (-inf-2j) (16+16j) (-inf-infj) +mul (-inf-2j) (16+infj) (nan-infj) +mul (-inf-2j) (16+nanj) (nan+nanj) +mul (-inf-2j) (inf-infj) (-inf+nanj) +mul (-inf-2j) (inf-16j) (-inf+nanj) +mul (-inf-2j) (inf-2j) (-inf+nanj) +mul (-inf-2j) (inf-0j) (-inf+nanj) +mul (-inf-2j) (inf+0j) (-inf+nanj) +mul (-inf-2j) (inf+2j) (-inf-infj) +mul (-inf-2j) (inf+16j) (-inf-infj) +mul (-inf-2j) (inf+infj) (nan-infj) +mul (-inf-2j) (inf+nanj) (nan+nanj) +mul (-inf-2j) (nan-infj) (nan+nanj) +mul (-inf-2j) (nan-16j) (nan+nanj) +mul (-inf-2j) (nan-2j) (nan+nanj) +mul (-inf-2j) (nan-0j) (nan+nanj) +mul (-inf-2j) (nan+0j) (nan+nanj) +mul (-inf-2j) (nan+2j) (nan+nanj) +mul (-inf-2j) (nan+16j) (nan+nanj) +mul (-inf-2j) (nan+infj) (nan+nanj) +mul (-inf-2j) (nan+nanj) (nan+nanj) +mul (-inf-0j) (-inf-infj) (nan+nanj) +mul (-inf-0j) (-inf-16j) (inf+nanj) +mul (-inf-0j) (-inf-2j) (inf+nanj) +mul (-inf-0j) (-inf-0j) (inf+nanj) +mul (-inf-0j) (-inf+0j) (inf+nanj) +mul (-inf-0j) (-inf+2j) (inf+nanj) +mul (-inf-0j) (-inf+16j) (inf+nanj) +mul (-inf-0j) (-inf+infj) (nan+nanj) +mul (-inf-0j) (-inf+nanj) (nan+nanj) +mul (-inf-0j) (-16-infj) (nan+infj) +mul (-inf-0j) (-16-16j) (inf+infj) +mul (-inf-0j) (-16-2j) (inf+infj) +mul (-inf-0j) (-16-0j) (inf+nanj) +mul (-inf-0j) (-16+0j) (inf+nanj) +mul (-inf-0j) (-16+2j) (inf-infj) +mul (-inf-0j) (-16+16j) (inf-infj) +mul (-inf-0j) (-16+infj) (nan-infj) +mul (-inf-0j) (-16+nanj) (nan+nanj) +mul (-inf-0j) (-2-infj) (nan+infj) +mul (-inf-0j) (-2-16j) (inf+infj) +mul (-inf-0j) (-2-2j) (inf+infj) +mul (-inf-0j) (-2-0j) (inf+nanj) +mul (-inf-0j) (-2+0j) (inf+nanj) +mul (-inf-0j) (-2+2j) (inf-infj) +mul (-inf-0j) (-2+16j) (inf-infj) +mul (-inf-0j) (-2+infj) (nan-infj) +mul (-inf-0j) (-2+nanj) (nan+nanj) +mul (-inf-0j) (-0-infj) (nan+infj) +mul (-inf-0j) (-0-16j) (nan+infj) +mul (-inf-0j) (-0-2j) (nan+infj) +mul (-inf-0j) (-0-0j) (nan+nanj) +mul (-inf-0j) (-0+0j) (nan+nanj) +mul (-inf-0j) (-0+2j) (nan-infj) +mul (-inf-0j) (-0+16j) (nan-infj) +mul (-inf-0j) (-0+infj) (nan-infj) +mul (-inf-0j) (-0+nanj) (nan+nanj) +mul (-inf-0j) -infj (nan+infj) +mul (-inf-0j) -16j (nan+infj) +mul (-inf-0j) -2j (nan+infj) +mul (-inf-0j) -0j (nan+nanj) +mul (-inf-0j) 0j (nan+nanj) +mul (-inf-0j) 2j (nan-infj) +mul (-inf-0j) 16j (nan-infj) +mul (-inf-0j) infj (nan-infj) +mul (-inf-0j) nanj (nan+nanj) +mul (-inf-0j) (2-infj) (nan+infj) +mul (-inf-0j) (2-16j) (-inf+infj) +mul (-inf-0j) (2-2j) (-inf+infj) +mul (-inf-0j) (2-0j) (-inf+nanj) +mul (-inf-0j) (2+0j) (-inf+nanj) +mul (-inf-0j) (2+2j) (-inf-infj) +mul (-inf-0j) (2+16j) (-inf-infj) +mul (-inf-0j) (2+infj) (nan-infj) +mul (-inf-0j) (2+nanj) (nan+nanj) +mul (-inf-0j) (16-infj) (nan+infj) +mul (-inf-0j) (16-16j) (-inf+infj) +mul (-inf-0j) (16-2j) (-inf+infj) +mul (-inf-0j) (16-0j) (-inf+nanj) +mul (-inf-0j) (16+0j) (-inf+nanj) +mul (-inf-0j) (16+2j) (-inf-infj) +mul (-inf-0j) (16+16j) (-inf-infj) +mul (-inf-0j) (16+infj) (nan-infj) +mul (-inf-0j) (16+nanj) (nan+nanj) +mul (-inf-0j) (inf-infj) (nan+nanj) +mul (-inf-0j) (inf-16j) (-inf+nanj) +mul (-inf-0j) (inf-2j) (-inf+nanj) +mul (-inf-0j) (inf-0j) (-inf+nanj) +mul (-inf-0j) (inf+0j) (-inf+nanj) +mul (-inf-0j) (inf+2j) (-inf+nanj) +mul (-inf-0j) (inf+16j) (-inf+nanj) +mul (-inf-0j) (inf+infj) (nan+nanj) +mul (-inf-0j) (inf+nanj) (nan+nanj) +mul (-inf-0j) (nan-infj) (nan+nanj) +mul (-inf-0j) (nan-16j) (nan+nanj) +mul (-inf-0j) (nan-2j) (nan+nanj) +mul (-inf-0j) (nan-0j) (nan+nanj) +mul (-inf-0j) (nan+0j) (nan+nanj) +mul (-inf-0j) (nan+2j) (nan+nanj) +mul (-inf-0j) (nan+16j) (nan+nanj) +mul (-inf-0j) (nan+infj) (nan+nanj) +mul (-inf-0j) (nan+nanj) (nan+nanj) +mul (-inf+0j) (-inf-infj) (nan+nanj) +mul (-inf+0j) (-inf-16j) (inf+nanj) +mul (-inf+0j) (-inf-2j) (inf+nanj) +mul (-inf+0j) (-inf-0j) (inf+nanj) +mul (-inf+0j) (-inf+0j) (inf+nanj) +mul (-inf+0j) (-inf+2j) (inf+nanj) +mul (-inf+0j) (-inf+16j) (inf+nanj) +mul (-inf+0j) (-inf+infj) (nan+nanj) +mul (-inf+0j) (-inf+nanj) (nan+nanj) +mul (-inf+0j) (-16-infj) (nan+infj) +mul (-inf+0j) (-16-16j) (inf+infj) +mul (-inf+0j) (-16-2j) (inf+infj) +mul (-inf+0j) (-16-0j) (inf+nanj) +mul (-inf+0j) (-16+0j) (inf+nanj) +mul (-inf+0j) (-16+2j) (inf-infj) +mul (-inf+0j) (-16+16j) (inf-infj) +mul (-inf+0j) (-16+infj) (nan-infj) +mul (-inf+0j) (-16+nanj) (nan+nanj) +mul (-inf+0j) (-2-infj) (nan+infj) +mul (-inf+0j) (-2-16j) (inf+infj) +mul (-inf+0j) (-2-2j) (inf+infj) +mul (-inf+0j) (-2-0j) (inf+nanj) +mul (-inf+0j) (-2+0j) (inf+nanj) +mul (-inf+0j) (-2+2j) (inf-infj) +mul (-inf+0j) (-2+16j) (inf-infj) +mul (-inf+0j) (-2+infj) (nan-infj) +mul (-inf+0j) (-2+nanj) (nan+nanj) +mul (-inf+0j) (-0-infj) (nan+infj) +mul (-inf+0j) (-0-16j) (nan+infj) +mul (-inf+0j) (-0-2j) (nan+infj) +mul (-inf+0j) (-0-0j) (nan+nanj) +mul (-inf+0j) (-0+0j) (nan+nanj) +mul (-inf+0j) (-0+2j) (nan-infj) +mul (-inf+0j) (-0+16j) (nan-infj) +mul (-inf+0j) (-0+infj) (nan-infj) +mul (-inf+0j) (-0+nanj) (nan+nanj) +mul (-inf+0j) -infj (nan+infj) +mul (-inf+0j) -16j (nan+infj) +mul (-inf+0j) -2j (nan+infj) +mul (-inf+0j) -0j (nan+nanj) +mul (-inf+0j) 0j (nan+nanj) +mul (-inf+0j) 2j (nan-infj) +mul (-inf+0j) 16j (nan-infj) +mul (-inf+0j) infj (nan-infj) +mul (-inf+0j) nanj (nan+nanj) +mul (-inf+0j) (2-infj) (nan+infj) +mul (-inf+0j) (2-16j) (-inf+infj) +mul (-inf+0j) (2-2j) (-inf+infj) +mul (-inf+0j) (2-0j) (-inf+nanj) +mul (-inf+0j) (2+0j) (-inf+nanj) +mul (-inf+0j) (2+2j) (-inf-infj) +mul (-inf+0j) (2+16j) (-inf-infj) +mul (-inf+0j) (2+infj) (nan-infj) +mul (-inf+0j) (2+nanj) (nan+nanj) +mul (-inf+0j) (16-infj) (nan+infj) +mul (-inf+0j) (16-16j) (-inf+infj) +mul (-inf+0j) (16-2j) (-inf+infj) +mul (-inf+0j) (16-0j) (-inf+nanj) +mul (-inf+0j) (16+0j) (-inf+nanj) +mul (-inf+0j) (16+2j) (-inf-infj) +mul (-inf+0j) (16+16j) (-inf-infj) +mul (-inf+0j) (16+infj) (nan-infj) +mul (-inf+0j) (16+nanj) (nan+nanj) +mul (-inf+0j) (inf-infj) (nan+nanj) +mul (-inf+0j) (inf-16j) (-inf+nanj) +mul (-inf+0j) (inf-2j) (-inf+nanj) +mul (-inf+0j) (inf-0j) (-inf+nanj) +mul (-inf+0j) (inf+0j) (-inf+nanj) +mul (-inf+0j) (inf+2j) (-inf+nanj) +mul (-inf+0j) (inf+16j) (-inf+nanj) +mul (-inf+0j) (inf+infj) (nan+nanj) +mul (-inf+0j) (inf+nanj) (nan+nanj) +mul (-inf+0j) (nan-infj) (nan+nanj) +mul (-inf+0j) (nan-16j) (nan+nanj) +mul (-inf+0j) (nan-2j) (nan+nanj) +mul (-inf+0j) (nan-0j) (nan+nanj) +mul (-inf+0j) (nan+0j) (nan+nanj) +mul (-inf+0j) (nan+2j) (nan+nanj) +mul (-inf+0j) (nan+16j) (nan+nanj) +mul (-inf+0j) (nan+infj) (nan+nanj) +mul (-inf+0j) (nan+nanj) (nan+nanj) +mul (-inf+2j) (-inf-infj) (inf+nanj) +mul (-inf+2j) (-inf-16j) (inf+nanj) +mul (-inf+2j) (-inf-2j) (inf+nanj) +mul (-inf+2j) (-inf-0j) (inf+nanj) +mul (-inf+2j) (-inf+0j) (inf+nanj) +mul (-inf+2j) (-inf+2j) (inf-infj) +mul (-inf+2j) (-inf+16j) (inf-infj) +mul (-inf+2j) (-inf+infj) (nan-infj) +mul (-inf+2j) (-inf+nanj) (nan+nanj) +mul (-inf+2j) (-16-infj) (inf+infj) +mul (-inf+2j) (-16-16j) (inf+infj) +mul (-inf+2j) (-16-2j) (inf+infj) +mul (-inf+2j) (-16-0j) (inf+nanj) +mul (-inf+2j) (-16+0j) (inf+nanj) +mul (-inf+2j) (-16+2j) (inf-infj) +mul (-inf+2j) (-16+16j) (inf-infj) +mul (-inf+2j) (-16+infj) (nan-infj) +mul (-inf+2j) (-16+nanj) (nan+nanj) +mul (-inf+2j) (-2-infj) (inf+infj) +mul (-inf+2j) (-2-16j) (inf+infj) +mul (-inf+2j) (-2-2j) (inf+infj) +mul (-inf+2j) (-2-0j) (inf+nanj) +mul (-inf+2j) (-2+0j) (inf+nanj) +mul (-inf+2j) (-2+2j) (inf-infj) +mul (-inf+2j) (-2+16j) (inf-infj) +mul (-inf+2j) (-2+infj) (nan-infj) +mul (-inf+2j) (-2+nanj) (nan+nanj) +mul (-inf+2j) (-0-infj) (nan+infj) +mul (-inf+2j) (-0-16j) (nan+infj) +mul (-inf+2j) (-0-2j) (nan+infj) +mul (-inf+2j) (-0-0j) (nan+nanj) +mul (-inf+2j) (-0+0j) (nan+nanj) +mul (-inf+2j) (-0+2j) (nan-infj) +mul (-inf+2j) (-0+16j) (nan-infj) +mul (-inf+2j) (-0+infj) (nan-infj) +mul (-inf+2j) (-0+nanj) (nan+nanj) +mul (-inf+2j) -infj (nan+infj) +mul (-inf+2j) -16j (nan+infj) +mul (-inf+2j) -2j (nan+infj) +mul (-inf+2j) -0j (nan+nanj) +mul (-inf+2j) 0j (nan+nanj) +mul (-inf+2j) 2j (nan-infj) +mul (-inf+2j) 16j (nan-infj) +mul (-inf+2j) infj (nan-infj) +mul (-inf+2j) nanj (nan+nanj) +mul (-inf+2j) (2-infj) (nan+infj) +mul (-inf+2j) (2-16j) (-inf+infj) +mul (-inf+2j) (2-2j) (-inf+infj) +mul (-inf+2j) (2-0j) (-inf+nanj) +mul (-inf+2j) (2+0j) (-inf+nanj) +mul (-inf+2j) (2+2j) (-inf-infj) +mul (-inf+2j) (2+16j) (-inf-infj) +mul (-inf+2j) (2+infj) (-inf-infj) +mul (-inf+2j) (2+nanj) (nan+nanj) +mul (-inf+2j) (16-infj) (nan+infj) +mul (-inf+2j) (16-16j) (-inf+infj) +mul (-inf+2j) (16-2j) (-inf+infj) +mul (-inf+2j) (16-0j) (-inf+nanj) +mul (-inf+2j) (16+0j) (-inf+nanj) +mul (-inf+2j) (16+2j) (-inf-infj) +mul (-inf+2j) (16+16j) (-inf-infj) +mul (-inf+2j) (16+infj) (-inf-infj) +mul (-inf+2j) (16+nanj) (nan+nanj) +mul (-inf+2j) (inf-infj) (nan+infj) +mul (-inf+2j) (inf-16j) (-inf+infj) +mul (-inf+2j) (inf-2j) (-inf+infj) +mul (-inf+2j) (inf-0j) (-inf+nanj) +mul (-inf+2j) (inf+0j) (-inf+nanj) +mul (-inf+2j) (inf+2j) (-inf+nanj) +mul (-inf+2j) (inf+16j) (-inf+nanj) +mul (-inf+2j) (inf+infj) (-inf+nanj) +mul (-inf+2j) (inf+nanj) (nan+nanj) +mul (-inf+2j) (nan-infj) (nan+nanj) +mul (-inf+2j) (nan-16j) (nan+nanj) +mul (-inf+2j) (nan-2j) (nan+nanj) +mul (-inf+2j) (nan-0j) (nan+nanj) +mul (-inf+2j) (nan+0j) (nan+nanj) +mul (-inf+2j) (nan+2j) (nan+nanj) +mul (-inf+2j) (nan+16j) (nan+nanj) +mul (-inf+2j) (nan+infj) (nan+nanj) +mul (-inf+2j) (nan+nanj) (nan+nanj) +mul (-inf+16j) (-inf-infj) (inf+nanj) +mul (-inf+16j) (-inf-16j) (inf+nanj) +mul (-inf+16j) (-inf-2j) (inf+nanj) +mul (-inf+16j) (-inf-0j) (inf+nanj) +mul (-inf+16j) (-inf+0j) (inf+nanj) +mul (-inf+16j) (-inf+2j) (inf-infj) +mul (-inf+16j) (-inf+16j) (inf-infj) +mul (-inf+16j) (-inf+infj) (nan-infj) +mul (-inf+16j) (-inf+nanj) (nan+nanj) +mul (-inf+16j) (-16-infj) (inf+infj) +mul (-inf+16j) (-16-16j) (inf+infj) +mul (-inf+16j) (-16-2j) (inf+infj) +mul (-inf+16j) (-16-0j) (inf+nanj) +mul (-inf+16j) (-16+0j) (inf+nanj) +mul (-inf+16j) (-16+2j) (inf-infj) +mul (-inf+16j) (-16+16j) (inf-infj) +mul (-inf+16j) (-16+infj) (nan-infj) +mul (-inf+16j) (-16+nanj) (nan+nanj) +mul (-inf+16j) (-2-infj) (inf+infj) +mul (-inf+16j) (-2-16j) (inf+infj) +mul (-inf+16j) (-2-2j) (inf+infj) +mul (-inf+16j) (-2-0j) (inf+nanj) +mul (-inf+16j) (-2+0j) (inf+nanj) +mul (-inf+16j) (-2+2j) (inf-infj) +mul (-inf+16j) (-2+16j) (inf-infj) +mul (-inf+16j) (-2+infj) (nan-infj) +mul (-inf+16j) (-2+nanj) (nan+nanj) +mul (-inf+16j) (-0-infj) (nan+infj) +mul (-inf+16j) (-0-16j) (nan+infj) +mul (-inf+16j) (-0-2j) (nan+infj) +mul (-inf+16j) (-0-0j) (nan+nanj) +mul (-inf+16j) (-0+0j) (nan+nanj) +mul (-inf+16j) (-0+2j) (nan-infj) +mul (-inf+16j) (-0+16j) (nan-infj) +mul (-inf+16j) (-0+infj) (nan-infj) +mul (-inf+16j) (-0+nanj) (nan+nanj) +mul (-inf+16j) -infj (nan+infj) +mul (-inf+16j) -16j (nan+infj) +mul (-inf+16j) -2j (nan+infj) +mul (-inf+16j) -0j (nan+nanj) +mul (-inf+16j) 0j (nan+nanj) +mul (-inf+16j) 2j (nan-infj) +mul (-inf+16j) 16j (nan-infj) +mul (-inf+16j) infj (nan-infj) +mul (-inf+16j) nanj (nan+nanj) +mul (-inf+16j) (2-infj) (nan+infj) +mul (-inf+16j) (2-16j) (-inf+infj) +mul (-inf+16j) (2-2j) (-inf+infj) +mul (-inf+16j) (2-0j) (-inf+nanj) +mul (-inf+16j) (2+0j) (-inf+nanj) +mul (-inf+16j) (2+2j) (-inf-infj) +mul (-inf+16j) (2+16j) (-inf-infj) +mul (-inf+16j) (2+infj) (-inf-infj) +mul (-inf+16j) (2+nanj) (nan+nanj) +mul (-inf+16j) (16-infj) (nan+infj) +mul (-inf+16j) (16-16j) (-inf+infj) +mul (-inf+16j) (16-2j) (-inf+infj) +mul (-inf+16j) (16-0j) (-inf+nanj) +mul (-inf+16j) (16+0j) (-inf+nanj) +mul (-inf+16j) (16+2j) (-inf-infj) +mul (-inf+16j) (16+16j) (-inf-infj) +mul (-inf+16j) (16+infj) (-inf-infj) +mul (-inf+16j) (16+nanj) (nan+nanj) +mul (-inf+16j) (inf-infj) (nan+infj) +mul (-inf+16j) (inf-16j) (-inf+infj) +mul (-inf+16j) (inf-2j) (-inf+infj) +mul (-inf+16j) (inf-0j) (-inf+nanj) +mul (-inf+16j) (inf+0j) (-inf+nanj) +mul (-inf+16j) (inf+2j) (-inf+nanj) +mul (-inf+16j) (inf+16j) (-inf+nanj) +mul (-inf+16j) (inf+infj) (-inf+nanj) +mul (-inf+16j) (inf+nanj) (nan+nanj) +mul (-inf+16j) (nan-infj) (nan+nanj) +mul (-inf+16j) (nan-16j) (nan+nanj) +mul (-inf+16j) (nan-2j) (nan+nanj) +mul (-inf+16j) (nan-0j) (nan+nanj) +mul (-inf+16j) (nan+0j) (nan+nanj) +mul (-inf+16j) (nan+2j) (nan+nanj) +mul (-inf+16j) (nan+16j) (nan+nanj) +mul (-inf+16j) (nan+infj) (nan+nanj) +mul (-inf+16j) (nan+nanj) (nan+nanj) +mul (-inf+infj) (-inf-infj) (inf+nanj) +mul (-inf+infj) (-inf-16j) (inf+nanj) +mul (-inf+infj) (-inf-2j) (inf+nanj) +mul (-inf+infj) (-inf-0j) (nan+nanj) +mul (-inf+infj) (-inf+0j) (nan+nanj) +mul (-inf+infj) (-inf+2j) (nan-infj) +mul (-inf+infj) (-inf+16j) (nan-infj) +mul (-inf+infj) (-inf+infj) (nan-infj) +mul (-inf+infj) (-inf+nanj) (nan+nanj) +mul (-inf+infj) (-16-infj) (inf+nanj) +mul (-inf+infj) (-16-16j) (inf+nanj) +mul (-inf+infj) (-16-2j) (inf+nanj) +mul (-inf+infj) (-16-0j) (nan+nanj) +mul (-inf+infj) (-16+0j) (nan+nanj) +mul (-inf+infj) (-16+2j) (nan-infj) +mul (-inf+infj) (-16+16j) (nan-infj) +mul (-inf+infj) (-16+infj) (nan-infj) +mul (-inf+infj) (-16+nanj) (nan+nanj) +mul (-inf+infj) (-2-infj) (inf+nanj) +mul (-inf+infj) (-2-16j) (inf+nanj) +mul (-inf+infj) (-2-2j) (inf+nanj) +mul (-inf+infj) (-2-0j) (nan+nanj) +mul (-inf+infj) (-2+0j) (nan+nanj) +mul (-inf+infj) (-2+2j) (nan-infj) +mul (-inf+infj) (-2+16j) (nan-infj) +mul (-inf+infj) (-2+infj) (nan-infj) +mul (-inf+infj) (-2+nanj) (nan+nanj) +mul (-inf+infj) (-0-infj) (nan+nanj) +mul (-inf+infj) (-0-16j) (nan+nanj) +mul (-inf+infj) (-0-2j) (nan+nanj) +mul (-inf+infj) (-0-0j) (nan+nanj) +mul (-inf+infj) (-0+0j) (nan+nanj) +mul (-inf+infj) (-0+2j) (nan+nanj) +mul (-inf+infj) (-0+16j) (nan+nanj) +mul (-inf+infj) (-0+infj) (nan+nanj) +mul (-inf+infj) (-0+nanj) (nan+nanj) +mul (-inf+infj) -infj (nan+nanj) +mul (-inf+infj) -16j (nan+nanj) +mul (-inf+infj) -2j (nan+nanj) +mul (-inf+infj) -0j (nan+nanj) +mul (-inf+infj) 0j (nan+nanj) +mul (-inf+infj) 2j (nan+nanj) +mul (-inf+infj) 16j (nan+nanj) +mul (-inf+infj) infj (nan+nanj) +mul (-inf+infj) nanj (nan+nanj) +mul (-inf+infj) (2-infj) (nan+infj) +mul (-inf+infj) (2-16j) (nan+infj) +mul (-inf+infj) (2-2j) (nan+infj) +mul (-inf+infj) (2-0j) (nan+nanj) +mul (-inf+infj) (2+0j) (nan+nanj) +mul (-inf+infj) (2+2j) (-inf+nanj) +mul (-inf+infj) (2+16j) (-inf+nanj) +mul (-inf+infj) (2+infj) (-inf+nanj) +mul (-inf+infj) (2+nanj) (nan+nanj) +mul (-inf+infj) (16-infj) (nan+infj) +mul (-inf+infj) (16-16j) (nan+infj) +mul (-inf+infj) (16-2j) (nan+infj) +mul (-inf+infj) (16-0j) (nan+nanj) +mul (-inf+infj) (16+0j) (nan+nanj) +mul (-inf+infj) (16+2j) (-inf+nanj) +mul (-inf+infj) (16+16j) (-inf+nanj) +mul (-inf+infj) (16+infj) (-inf+nanj) +mul (-inf+infj) (16+nanj) (nan+nanj) +mul (-inf+infj) (inf-infj) (nan+infj) +mul (-inf+infj) (inf-16j) (nan+infj) +mul (-inf+infj) (inf-2j) (nan+infj) +mul (-inf+infj) (inf-0j) (nan+nanj) +mul (-inf+infj) (inf+0j) (nan+nanj) +mul (-inf+infj) (inf+2j) (-inf+nanj) +mul (-inf+infj) (inf+16j) (-inf+nanj) +mul (-inf+infj) (inf+infj) (-inf+nanj) +mul (-inf+infj) (inf+nanj) (nan+nanj) +mul (-inf+infj) (nan-infj) (nan+nanj) +mul (-inf+infj) (nan-16j) (nan+nanj) +mul (-inf+infj) (nan-2j) (nan+nanj) +mul (-inf+infj) (nan-0j) (nan+nanj) +mul (-inf+infj) (nan+0j) (nan+nanj) +mul (-inf+infj) (nan+2j) (nan+nanj) +mul (-inf+infj) (nan+16j) (nan+nanj) +mul (-inf+infj) (nan+infj) (nan+nanj) +mul (-inf+infj) (nan+nanj) (nan+nanj) +mul (-inf+nanj) (-inf-infj) (nan+nanj) +mul (-inf+nanj) (-inf-16j) (nan+nanj) +mul (-inf+nanj) (-inf-2j) (nan+nanj) +mul (-inf+nanj) (-inf-0j) (nan+nanj) +mul (-inf+nanj) (-inf+0j) (nan+nanj) +mul (-inf+nanj) (-inf+2j) (nan+nanj) +mul (-inf+nanj) (-inf+16j) (nan+nanj) +mul (-inf+nanj) (-inf+infj) (nan+nanj) +mul (-inf+nanj) (-inf+nanj) (nan+nanj) +mul (-inf+nanj) (-16-infj) (nan+nanj) +mul (-inf+nanj) (-16-16j) (nan+nanj) +mul (-inf+nanj) (-16-2j) (nan+nanj) +mul (-inf+nanj) (-16-0j) (nan+nanj) +mul (-inf+nanj) (-16+0j) (nan+nanj) +mul (-inf+nanj) (-16+2j) (nan+nanj) +mul (-inf+nanj) (-16+16j) (nan+nanj) +mul (-inf+nanj) (-16+infj) (nan+nanj) +mul (-inf+nanj) (-16+nanj) (nan+nanj) +mul (-inf+nanj) (-2-infj) (nan+nanj) +mul (-inf+nanj) (-2-16j) (nan+nanj) +mul (-inf+nanj) (-2-2j) (nan+nanj) +mul (-inf+nanj) (-2-0j) (nan+nanj) +mul (-inf+nanj) (-2+0j) (nan+nanj) +mul (-inf+nanj) (-2+2j) (nan+nanj) +mul (-inf+nanj) (-2+16j) (nan+nanj) +mul (-inf+nanj) (-2+infj) (nan+nanj) +mul (-inf+nanj) (-2+nanj) (nan+nanj) +mul (-inf+nanj) (-0-infj) (nan+nanj) +mul (-inf+nanj) (-0-16j) (nan+nanj) +mul (-inf+nanj) (-0-2j) (nan+nanj) +mul (-inf+nanj) (-0-0j) (nan+nanj) +mul (-inf+nanj) (-0+0j) (nan+nanj) +mul (-inf+nanj) (-0+2j) (nan+nanj) +mul (-inf+nanj) (-0+16j) (nan+nanj) +mul (-inf+nanj) (-0+infj) (nan+nanj) +mul (-inf+nanj) (-0+nanj) (nan+nanj) +mul (-inf+nanj) -infj (nan+nanj) +mul (-inf+nanj) -16j (nan+nanj) +mul (-inf+nanj) -2j (nan+nanj) +mul (-inf+nanj) -0j (nan+nanj) +mul (-inf+nanj) 0j (nan+nanj) +mul (-inf+nanj) 2j (nan+nanj) +mul (-inf+nanj) 16j (nan+nanj) +mul (-inf+nanj) infj (nan+nanj) +mul (-inf+nanj) nanj (nan+nanj) +mul (-inf+nanj) (2-infj) (nan+nanj) +mul (-inf+nanj) (2-16j) (nan+nanj) +mul (-inf+nanj) (2-2j) (nan+nanj) +mul (-inf+nanj) (2-0j) (nan+nanj) +mul (-inf+nanj) (2+0j) (nan+nanj) +mul (-inf+nanj) (2+2j) (nan+nanj) +mul (-inf+nanj) (2+16j) (nan+nanj) +mul (-inf+nanj) (2+infj) (nan+nanj) +mul (-inf+nanj) (2+nanj) (nan+nanj) +mul (-inf+nanj) (16-infj) (nan+nanj) +mul (-inf+nanj) (16-16j) (nan+nanj) +mul (-inf+nanj) (16-2j) (nan+nanj) +mul (-inf+nanj) (16-0j) (nan+nanj) +mul (-inf+nanj) (16+0j) (nan+nanj) +mul (-inf+nanj) (16+2j) (nan+nanj) +mul (-inf+nanj) (16+16j) (nan+nanj) +mul (-inf+nanj) (16+infj) (nan+nanj) +mul (-inf+nanj) (16+nanj) (nan+nanj) +mul (-inf+nanj) (inf-infj) (nan+nanj) +mul (-inf+nanj) (inf-16j) (nan+nanj) +mul (-inf+nanj) (inf-2j) (nan+nanj) +mul (-inf+nanj) (inf-0j) (nan+nanj) +mul (-inf+nanj) (inf+0j) (nan+nanj) +mul (-inf+nanj) (inf+2j) (nan+nanj) +mul (-inf+nanj) (inf+16j) (nan+nanj) +mul (-inf+nanj) (inf+infj) (nan+nanj) +mul (-inf+nanj) (inf+nanj) (nan+nanj) +mul (-inf+nanj) (nan-infj) (nan+nanj) +mul (-inf+nanj) (nan-16j) (nan+nanj) +mul (-inf+nanj) (nan-2j) (nan+nanj) +mul (-inf+nanj) (nan-0j) (nan+nanj) +mul (-inf+nanj) (nan+0j) (nan+nanj) +mul (-inf+nanj) (nan+2j) (nan+nanj) +mul (-inf+nanj) (nan+16j) (nan+nanj) +mul (-inf+nanj) (nan+infj) (nan+nanj) +mul (-inf+nanj) (nan+nanj) (nan+nanj) +mul (-16-infj) (-inf-infj) (nan+infj) +mul (-16-infj) (-inf-16j) (nan+infj) +mul (-16-infj) (-inf-2j) (nan+infj) +mul (-16-infj) (-inf-0j) (nan+infj) +mul (-16-infj) (-inf+0j) (nan+infj) +mul (-16-infj) (-inf+2j) (inf+infj) +mul (-16-infj) (-inf+16j) (inf+infj) +mul (-16-infj) (-inf+infj) (inf+nanj) +mul (-16-infj) (-inf+nanj) (nan+nanj) +mul (-16-infj) (-16-infj) (-inf+infj) +mul (-16-infj) (-16-16j) (-inf+infj) +mul (-16-infj) (-16-2j) (-inf+infj) +mul (-16-infj) (-16-0j) (nan+infj) +mul (-16-infj) (-16+0j) (nan+infj) +mul (-16-infj) (-16+2j) (inf+infj) +mul (-16-infj) (-16+16j) (inf+infj) +mul (-16-infj) (-16+infj) (inf+nanj) +mul (-16-infj) (-16+nanj) (nan+nanj) +mul (-16-infj) (-2-infj) (-inf+infj) +mul (-16-infj) (-2-16j) (-inf+infj) +mul (-16-infj) (-2-2j) (-inf+infj) +mul (-16-infj) (-2-0j) (nan+infj) +mul (-16-infj) (-2+0j) (nan+infj) +mul (-16-infj) (-2+2j) (inf+infj) +mul (-16-infj) (-2+16j) (inf+infj) +mul (-16-infj) (-2+infj) (inf+nanj) +mul (-16-infj) (-2+nanj) (nan+nanj) +mul (-16-infj) (-0-infj) (-inf+nanj) +mul (-16-infj) (-0-16j) (-inf+nanj) +mul (-16-infj) (-0-2j) (-inf+nanj) +mul (-16-infj) (-0-0j) (nan+nanj) +mul (-16-infj) (-0+0j) (nan+nanj) +mul (-16-infj) (-0+2j) (inf+nanj) +mul (-16-infj) (-0+16j) (inf+nanj) +mul (-16-infj) (-0+infj) (inf+nanj) +mul (-16-infj) (-0+nanj) (nan+nanj) +mul (-16-infj) -infj (-inf+nanj) +mul (-16-infj) -16j (-inf+nanj) +mul (-16-infj) -2j (-inf+nanj) +mul (-16-infj) -0j (nan+nanj) +mul (-16-infj) 0j (nan+nanj) +mul (-16-infj) 2j (inf+nanj) +mul (-16-infj) 16j (inf+nanj) +mul (-16-infj) infj (inf+nanj) +mul (-16-infj) nanj (nan+nanj) +mul (-16-infj) (2-infj) (-inf+nanj) +mul (-16-infj) (2-16j) (-inf-infj) +mul (-16-infj) (2-2j) (-inf-infj) +mul (-16-infj) (2-0j) (nan-infj) +mul (-16-infj) (2+0j) (nan-infj) +mul (-16-infj) (2+2j) (inf-infj) +mul (-16-infj) (2+16j) (inf-infj) +mul (-16-infj) (2+infj) (inf-infj) +mul (-16-infj) (2+nanj) (nan+nanj) +mul (-16-infj) (16-infj) (-inf+nanj) +mul (-16-infj) (16-16j) (-inf-infj) +mul (-16-infj) (16-2j) (-inf-infj) +mul (-16-infj) (16-0j) (nan-infj) +mul (-16-infj) (16+0j) (nan-infj) +mul (-16-infj) (16+2j) (inf-infj) +mul (-16-infj) (16+16j) (inf-infj) +mul (-16-infj) (16+infj) (inf-infj) +mul (-16-infj) (16+nanj) (nan+nanj) +mul (-16-infj) (inf-infj) (-inf+nanj) +mul (-16-infj) (inf-16j) (-inf-infj) +mul (-16-infj) (inf-2j) (-inf-infj) +mul (-16-infj) (inf-0j) (nan-infj) +mul (-16-infj) (inf+0j) (nan-infj) +mul (-16-infj) (inf+2j) (nan-infj) +mul (-16-infj) (inf+16j) (nan-infj) +mul (-16-infj) (inf+infj) (nan-infj) +mul (-16-infj) (inf+nanj) (nan+nanj) +mul (-16-infj) (nan-infj) (nan+nanj) +mul (-16-infj) (nan-16j) (nan+nanj) +mul (-16-infj) (nan-2j) (nan+nanj) +mul (-16-infj) (nan-0j) (nan+nanj) +mul (-16-infj) (nan+0j) (nan+nanj) +mul (-16-infj) (nan+2j) (nan+nanj) +mul (-16-infj) (nan+16j) (nan+nanj) +mul (-16-infj) (nan+infj) (nan+nanj) +mul (-16-infj) (nan+nanj) (nan+nanj) +mul (-16-16j) (-inf-infj) (nan+infj) +mul (-16-16j) (-inf-16j) (inf+infj) +mul (-16-16j) (-inf-2j) (inf+infj) +mul (-16-16j) (-inf-0j) (inf+infj) +mul (-16-16j) (-inf+0j) (inf+infj) +mul (-16-16j) (-inf+2j) (inf+infj) +mul (-16-16j) (-inf+16j) (inf+infj) +mul (-16-16j) (-inf+infj) (inf+nanj) +mul (-16-16j) (-inf+nanj) (nan+nanj) +mul (-16-16j) (-16-infj) (-inf+infj) +mul (-16-16j) (-16-16j) 512j +mul (-16-16j) (-16-2j) (224+288j) +mul (-16-16j) (-16-0j) (256+256j) +mul (-16-16j) (-16+0j) (256+256j) +mul (-16-16j) (-16+2j) (288+224j) +mul (-16-16j) (-16+16j) (512+0j) +mul (-16-16j) (-16+infj) (inf-infj) +mul (-16-16j) (-16+nanj) (nan+nanj) +mul (-16-16j) (-2-infj) (-inf+infj) +mul (-16-16j) (-2-16j) (-224+288j) +mul (-16-16j) (-2-2j) 64j +mul (-16-16j) (-2-0j) (32+32j) +mul (-16-16j) (-2+0j) (32+32j) +mul (-16-16j) (-2+2j) (64+0j) +mul (-16-16j) (-2+16j) (288-224j) +mul (-16-16j) (-2+infj) (inf-infj) +mul (-16-16j) (-2+nanj) (nan+nanj) +mul (-16-16j) (-0-infj) (-inf+infj) +mul (-16-16j) (-0-16j) (-256+256j) +mul (-16-16j) (-0-2j) (-32+32j) +mul (-16-16j) (-0-0j) 0j +mul (-16-16j) (-0+0j) 0j +mul (-16-16j) (-0+2j) (32-32j) +mul (-16-16j) (-0+16j) (256-256j) +mul (-16-16j) (-0+infj) (inf-infj) +mul (-16-16j) (-0+nanj) (nan+nanj) +mul (-16-16j) -infj (-inf+infj) +mul (-16-16j) -16j (-256+256j) +mul (-16-16j) -2j (-32+32j) +mul (-16-16j) -0j (-0+0j) +mul (-16-16j) 0j -0j +mul (-16-16j) 2j (32-32j) +mul (-16-16j) 16j (256-256j) +mul (-16-16j) infj (inf-infj) +mul (-16-16j) nanj (nan+nanj) +mul (-16-16j) (2-infj) (-inf+infj) +mul (-16-16j) (2-16j) (-288+224j) +mul (-16-16j) (2-2j) (-64+0j) +mul (-16-16j) (2-0j) (-32-32j) +mul (-16-16j) (2+0j) (-32-32j) +mul (-16-16j) (2+2j) -64j +mul (-16-16j) (2+16j) (224-288j) +mul (-16-16j) (2+infj) (inf-infj) +mul (-16-16j) (2+nanj) (nan+nanj) +mul (-16-16j) (16-infj) (-inf+infj) +mul (-16-16j) (16-16j) (-512+0j) +mul (-16-16j) (16-2j) (-288-224j) +mul (-16-16j) (16-0j) (-256-256j) +mul (-16-16j) (16+0j) (-256-256j) +mul (-16-16j) (16+2j) (-224-288j) +mul (-16-16j) (16+16j) -512j +mul (-16-16j) (16+infj) (inf-infj) +mul (-16-16j) (16+nanj) (nan+nanj) +mul (-16-16j) (inf-infj) (-inf+nanj) +mul (-16-16j) (inf-16j) (-inf-infj) +mul (-16-16j) (inf-2j) (-inf-infj) +mul (-16-16j) (inf-0j) (-inf-infj) +mul (-16-16j) (inf+0j) (-inf-infj) +mul (-16-16j) (inf+2j) (-inf-infj) +mul (-16-16j) (inf+16j) (-inf-infj) +mul (-16-16j) (inf+infj) (nan-infj) +mul (-16-16j) (inf+nanj) (nan+nanj) +mul (-16-16j) (nan-infj) (nan+nanj) +mul (-16-16j) (nan-16j) (nan+nanj) +mul (-16-16j) (nan-2j) (nan+nanj) +mul (-16-16j) (nan-0j) (nan+nanj) +mul (-16-16j) (nan+0j) (nan+nanj) +mul (-16-16j) (nan+2j) (nan+nanj) +mul (-16-16j) (nan+16j) (nan+nanj) +mul (-16-16j) (nan+infj) (nan+nanj) +mul (-16-16j) (nan+nanj) (nan+nanj) +mul (-16-2j) (-inf-infj) (nan+infj) +mul (-16-2j) (-inf-16j) (inf+infj) +mul (-16-2j) (-inf-2j) (inf+infj) +mul (-16-2j) (-inf-0j) (inf+infj) +mul (-16-2j) (-inf+0j) (inf+infj) +mul (-16-2j) (-inf+2j) (inf+infj) +mul (-16-2j) (-inf+16j) (inf+infj) +mul (-16-2j) (-inf+infj) (inf+nanj) +mul (-16-2j) (-inf+nanj) (nan+nanj) +mul (-16-2j) (-16-infj) (-inf+infj) +mul (-16-2j) (-16-16j) (224+288j) +mul (-16-2j) (-16-2j) (252+64j) +mul (-16-2j) (-16-0j) (256+32j) +mul (-16-2j) (-16+0j) (256+32j) +mul (-16-2j) (-16+2j) (260+0j) +mul (-16-2j) (-16+16j) (288-224j) +mul (-16-2j) (-16+infj) (inf-infj) +mul (-16-2j) (-16+nanj) (nan+nanj) +mul (-16-2j) (-2-infj) (-inf+infj) +mul (-16-2j) (-2-16j) 260j +mul (-16-2j) (-2-2j) (28+36j) +mul (-16-2j) (-2-0j) (32+4j) +mul (-16-2j) (-2+0j) (32+4j) +mul (-16-2j) (-2+2j) (36-28j) +mul (-16-2j) (-2+16j) (64-252j) +mul (-16-2j) (-2+infj) (inf-infj) +mul (-16-2j) (-2+nanj) (nan+nanj) +mul (-16-2j) (-0-infj) (-inf+infj) +mul (-16-2j) (-0-16j) (-32+256j) +mul (-16-2j) (-0-2j) (-4+32j) +mul (-16-2j) (-0-0j) 0j +mul (-16-2j) (-0+0j) 0j +mul (-16-2j) (-0+2j) (4-32j) +mul (-16-2j) (-0+16j) (32-256j) +mul (-16-2j) (-0+infj) (inf-infj) +mul (-16-2j) (-0+nanj) (nan+nanj) +mul (-16-2j) -infj (-inf+infj) +mul (-16-2j) -16j (-32+256j) +mul (-16-2j) -2j (-4+32j) +mul (-16-2j) -0j (-0+0j) +mul (-16-2j) 0j -0j +mul (-16-2j) 2j (4-32j) +mul (-16-2j) 16j (32-256j) +mul (-16-2j) infj (inf-infj) +mul (-16-2j) nanj (nan+nanj) +mul (-16-2j) (2-infj) (-inf+infj) +mul (-16-2j) (2-16j) (-64+252j) +mul (-16-2j) (2-2j) (-36+28j) +mul (-16-2j) (2-0j) (-32-4j) +mul (-16-2j) (2+0j) (-32-4j) +mul (-16-2j) (2+2j) (-28-36j) +mul (-16-2j) (2+16j) -260j +mul (-16-2j) (2+infj) (inf-infj) +mul (-16-2j) (2+nanj) (nan+nanj) +mul (-16-2j) (16-infj) (-inf+infj) +mul (-16-2j) (16-16j) (-288+224j) +mul (-16-2j) (16-2j) (-260+0j) +mul (-16-2j) (16-0j) (-256-32j) +mul (-16-2j) (16+0j) (-256-32j) +mul (-16-2j) (16+2j) (-252-64j) +mul (-16-2j) (16+16j) (-224-288j) +mul (-16-2j) (16+infj) (inf-infj) +mul (-16-2j) (16+nanj) (nan+nanj) +mul (-16-2j) (inf-infj) (-inf+nanj) +mul (-16-2j) (inf-16j) (-inf-infj) +mul (-16-2j) (inf-2j) (-inf-infj) +mul (-16-2j) (inf-0j) (-inf-infj) +mul (-16-2j) (inf+0j) (-inf-infj) +mul (-16-2j) (inf+2j) (-inf-infj) +mul (-16-2j) (inf+16j) (-inf-infj) +mul (-16-2j) (inf+infj) (nan-infj) +mul (-16-2j) (inf+nanj) (nan+nanj) +mul (-16-2j) (nan-infj) (nan+nanj) +mul (-16-2j) (nan-16j) (nan+nanj) +mul (-16-2j) (nan-2j) (nan+nanj) +mul (-16-2j) (nan-0j) (nan+nanj) +mul (-16-2j) (nan+0j) (nan+nanj) +mul (-16-2j) (nan+2j) (nan+nanj) +mul (-16-2j) (nan+16j) (nan+nanj) +mul (-16-2j) (nan+infj) (nan+nanj) +mul (-16-2j) (nan+nanj) (nan+nanj) +mul (-16-0j) (-inf-infj) (nan+nanj) +mul (-16-0j) (-inf-16j) (inf+nanj) +mul (-16-0j) (-inf-2j) (inf+nanj) +mul (-16-0j) (-inf-0j) (inf+nanj) +mul (-16-0j) (-inf+0j) (inf+nanj) +mul (-16-0j) (-inf+2j) (inf+nanj) +mul (-16-0j) (-inf+16j) (inf+nanj) +mul (-16-0j) (-inf+infj) (nan+nanj) +mul (-16-0j) (-inf+nanj) (nan+nanj) +mul (-16-0j) (-16-infj) (nan+infj) +mul (-16-0j) (-16-16j) (256+256j) +mul (-16-0j) (-16-2j) (256+32j) +mul (-16-0j) (-16-0j) (256+0j) +mul (-16-0j) (-16+0j) (256+0j) +mul (-16-0j) (-16+2j) (256-32j) +mul (-16-0j) (-16+16j) (256-256j) +mul (-16-0j) (-16+infj) (nan-infj) +mul (-16-0j) (-16+nanj) (nan+nanj) +mul (-16-0j) (-2-infj) (nan+infj) +mul (-16-0j) (-2-16j) (32+256j) +mul (-16-0j) (-2-2j) (32+32j) +mul (-16-0j) (-2-0j) (32+0j) +mul (-16-0j) (-2+0j) (32+0j) +mul (-16-0j) (-2+2j) (32-32j) +mul (-16-0j) (-2+16j) (32-256j) +mul (-16-0j) (-2+infj) (nan-infj) +mul (-16-0j) (-2+nanj) (nan+nanj) +mul (-16-0j) (-0-infj) (nan+infj) +mul (-16-0j) (-0-16j) 256j +mul (-16-0j) (-0-2j) 32j +mul (-16-0j) (-0-0j) 0j +mul (-16-0j) (-0+0j) 0j +mul (-16-0j) (-0+2j) -32j +mul (-16-0j) (-0+16j) -256j +mul (-16-0j) (-0+infj) (nan-infj) +mul (-16-0j) (-0+nanj) (nan+nanj) +mul (-16-0j) -infj (nan+infj) +mul (-16-0j) -16j (-0+256j) +mul (-16-0j) -2j (-0+32j) +mul (-16-0j) -0j (-0+0j) +mul (-16-0j) 0j -0j +mul (-16-0j) 2j -32j +mul (-16-0j) 16j -256j +mul (-16-0j) infj (nan-infj) +mul (-16-0j) nanj (nan+nanj) +mul (-16-0j) (2-infj) (nan+infj) +mul (-16-0j) (2-16j) (-32+256j) +mul (-16-0j) (2-2j) (-32+32j) +mul (-16-0j) (2-0j) (-32+0j) +mul (-16-0j) (2+0j) (-32-0j) +mul (-16-0j) (2+2j) (-32-32j) +mul (-16-0j) (2+16j) (-32-256j) +mul (-16-0j) (2+infj) (nan-infj) +mul (-16-0j) (2+nanj) (nan+nanj) +mul (-16-0j) (16-infj) (nan+infj) +mul (-16-0j) (16-16j) (-256+256j) +mul (-16-0j) (16-2j) (-256+32j) +mul (-16-0j) (16-0j) (-256+0j) +mul (-16-0j) (16+0j) (-256-0j) +mul (-16-0j) (16+2j) (-256-32j) +mul (-16-0j) (16+16j) (-256-256j) +mul (-16-0j) (16+infj) (nan-infj) +mul (-16-0j) (16+nanj) (nan+nanj) +mul (-16-0j) (inf-infj) (nan+nanj) +mul (-16-0j) (inf-16j) (-inf+nanj) +mul (-16-0j) (inf-2j) (-inf+nanj) +mul (-16-0j) (inf-0j) (-inf+nanj) +mul (-16-0j) (inf+0j) (-inf+nanj) +mul (-16-0j) (inf+2j) (-inf+nanj) +mul (-16-0j) (inf+16j) (-inf+nanj) +mul (-16-0j) (inf+infj) (nan+nanj) +mul (-16-0j) (inf+nanj) (nan+nanj) +mul (-16-0j) (nan-infj) (nan+nanj) +mul (-16-0j) (nan-16j) (nan+nanj) +mul (-16-0j) (nan-2j) (nan+nanj) +mul (-16-0j) (nan-0j) (nan+nanj) +mul (-16-0j) (nan+0j) (nan+nanj) +mul (-16-0j) (nan+2j) (nan+nanj) +mul (-16-0j) (nan+16j) (nan+nanj) +mul (-16-0j) (nan+infj) (nan+nanj) +mul (-16-0j) (nan+nanj) (nan+nanj) +mul (-16+0j) (-inf-infj) (nan+nanj) +mul (-16+0j) (-inf-16j) (inf+nanj) +mul (-16+0j) (-inf-2j) (inf+nanj) +mul (-16+0j) (-inf-0j) (inf+nanj) +mul (-16+0j) (-inf+0j) (inf+nanj) +mul (-16+0j) (-inf+2j) (inf+nanj) +mul (-16+0j) (-inf+16j) (inf+nanj) +mul (-16+0j) (-inf+infj) (nan+nanj) +mul (-16+0j) (-inf+nanj) (nan+nanj) +mul (-16+0j) (-16-infj) (nan+infj) +mul (-16+0j) (-16-16j) (256+256j) +mul (-16+0j) (-16-2j) (256+32j) +mul (-16+0j) (-16-0j) (256+0j) +mul (-16+0j) (-16+0j) (256-0j) +mul (-16+0j) (-16+2j) (256-32j) +mul (-16+0j) (-16+16j) (256-256j) +mul (-16+0j) (-16+infj) (nan-infj) +mul (-16+0j) (-16+nanj) (nan+nanj) +mul (-16+0j) (-2-infj) (nan+infj) +mul (-16+0j) (-2-16j) (32+256j) +mul (-16+0j) (-2-2j) (32+32j) +mul (-16+0j) (-2-0j) (32+0j) +mul (-16+0j) (-2+0j) (32-0j) +mul (-16+0j) (-2+2j) (32-32j) +mul (-16+0j) (-2+16j) (32-256j) +mul (-16+0j) (-2+infj) (nan-infj) +mul (-16+0j) (-2+nanj) (nan+nanj) +mul (-16+0j) (-0-infj) (nan+infj) +mul (-16+0j) (-0-16j) 256j +mul (-16+0j) (-0-2j) 32j +mul (-16+0j) (-0-0j) 0j +mul (-16+0j) (-0+0j) -0j +mul (-16+0j) (-0+2j) -32j +mul (-16+0j) (-0+16j) -256j +mul (-16+0j) (-0+infj) (nan-infj) +mul (-16+0j) (-0+nanj) (nan+nanj) +mul (-16+0j) -infj (nan+infj) +mul (-16+0j) -16j 256j +mul (-16+0j) -2j 32j +mul (-16+0j) -0j 0j +mul (-16+0j) 0j (-0+0j) +mul (-16+0j) 2j (-0-32j) +mul (-16+0j) 16j (-0-256j) +mul (-16+0j) infj (nan-infj) +mul (-16+0j) nanj (nan+nanj) +mul (-16+0j) (2-infj) (nan+infj) +mul (-16+0j) (2-16j) (-32+256j) +mul (-16+0j) (2-2j) (-32+32j) +mul (-16+0j) (2-0j) (-32+0j) +mul (-16+0j) (2+0j) (-32+0j) +mul (-16+0j) (2+2j) (-32-32j) +mul (-16+0j) (2+16j) (-32-256j) +mul (-16+0j) (2+infj) (nan-infj) +mul (-16+0j) (2+nanj) (nan+nanj) +mul (-16+0j) (16-infj) (nan+infj) +mul (-16+0j) (16-16j) (-256+256j) +mul (-16+0j) (16-2j) (-256+32j) +mul (-16+0j) (16-0j) (-256+0j) +mul (-16+0j) (16+0j) (-256+0j) +mul (-16+0j) (16+2j) (-256-32j) +mul (-16+0j) (16+16j) (-256-256j) +mul (-16+0j) (16+infj) (nan-infj) +mul (-16+0j) (16+nanj) (nan+nanj) +mul (-16+0j) (inf-infj) (nan+nanj) +mul (-16+0j) (inf-16j) (-inf+nanj) +mul (-16+0j) (inf-2j) (-inf+nanj) +mul (-16+0j) (inf-0j) (-inf+nanj) +mul (-16+0j) (inf+0j) (-inf+nanj) +mul (-16+0j) (inf+2j) (-inf+nanj) +mul (-16+0j) (inf+16j) (-inf+nanj) +mul (-16+0j) (inf+infj) (nan+nanj) +mul (-16+0j) (inf+nanj) (nan+nanj) +mul (-16+0j) (nan-infj) (nan+nanj) +mul (-16+0j) (nan-16j) (nan+nanj) +mul (-16+0j) (nan-2j) (nan+nanj) +mul (-16+0j) (nan-0j) (nan+nanj) +mul (-16+0j) (nan+0j) (nan+nanj) +mul (-16+0j) (nan+2j) (nan+nanj) +mul (-16+0j) (nan+16j) (nan+nanj) +mul (-16+0j) (nan+infj) (nan+nanj) +mul (-16+0j) (nan+nanj) (nan+nanj) +mul (-16+2j) (-inf-infj) (inf+nanj) +mul (-16+2j) (-inf-16j) (inf-infj) +mul (-16+2j) (-inf-2j) (inf-infj) +mul (-16+2j) (-inf-0j) (inf-infj) +mul (-16+2j) (-inf+0j) (inf-infj) +mul (-16+2j) (-inf+2j) (inf-infj) +mul (-16+2j) (-inf+16j) (inf-infj) +mul (-16+2j) (-inf+infj) (nan-infj) +mul (-16+2j) (-inf+nanj) (nan+nanj) +mul (-16+2j) (-16-infj) (inf+infj) +mul (-16+2j) (-16-16j) (288+224j) +mul (-16+2j) (-16-2j) (260+0j) +mul (-16+2j) (-16-0j) (256-32j) +mul (-16+2j) (-16+0j) (256-32j) +mul (-16+2j) (-16+2j) (252-64j) +mul (-16+2j) (-16+16j) (224-288j) +mul (-16+2j) (-16+infj) (-inf-infj) +mul (-16+2j) (-16+nanj) (nan+nanj) +mul (-16+2j) (-2-infj) (inf+infj) +mul (-16+2j) (-2-16j) (64+252j) +mul (-16+2j) (-2-2j) (36+28j) +mul (-16+2j) (-2-0j) (32-4j) +mul (-16+2j) (-2+0j) (32-4j) +mul (-16+2j) (-2+2j) (28-36j) +mul (-16+2j) (-2+16j) -260j +mul (-16+2j) (-2+infj) (-inf-infj) +mul (-16+2j) (-2+nanj) (nan+nanj) +mul (-16+2j) (-0-infj) (inf+infj) +mul (-16+2j) (-0-16j) (32+256j) +mul (-16+2j) (-0-2j) (4+32j) +mul (-16+2j) (-0-0j) 0j +mul (-16+2j) (-0+0j) -0j +mul (-16+2j) (-0+2j) (-4-32j) +mul (-16+2j) (-0+16j) (-32-256j) +mul (-16+2j) (-0+infj) (-inf-infj) +mul (-16+2j) (-0+nanj) (nan+nanj) +mul (-16+2j) -infj (inf+infj) +mul (-16+2j) -16j (32+256j) +mul (-16+2j) -2j (4+32j) +mul (-16+2j) -0j 0j +mul (-16+2j) 0j (-0+0j) +mul (-16+2j) 2j (-4-32j) +mul (-16+2j) 16j (-32-256j) +mul (-16+2j) infj (-inf-infj) +mul (-16+2j) nanj (nan+nanj) +mul (-16+2j) (2-infj) (inf+infj) +mul (-16+2j) (2-16j) 260j +mul (-16+2j) (2-2j) (-28+36j) +mul (-16+2j) (2-0j) (-32+4j) +mul (-16+2j) (2+0j) (-32+4j) +mul (-16+2j) (2+2j) (-36-28j) +mul (-16+2j) (2+16j) (-64-252j) +mul (-16+2j) (2+infj) (-inf-infj) +mul (-16+2j) (2+nanj) (nan+nanj) +mul (-16+2j) (16-infj) (inf+infj) +mul (-16+2j) (16-16j) (-224+288j) +mul (-16+2j) (16-2j) (-252+64j) +mul (-16+2j) (16-0j) (-256+32j) +mul (-16+2j) (16+0j) (-256+32j) +mul (-16+2j) (16+2j) (-260+0j) +mul (-16+2j) (16+16j) (-288-224j) +mul (-16+2j) (16+infj) (-inf-infj) +mul (-16+2j) (16+nanj) (nan+nanj) +mul (-16+2j) (inf-infj) (nan+infj) +mul (-16+2j) (inf-16j) (-inf+infj) +mul (-16+2j) (inf-2j) (-inf+infj) +mul (-16+2j) (inf-0j) (-inf+infj) +mul (-16+2j) (inf+0j) (-inf+infj) +mul (-16+2j) (inf+2j) (-inf+infj) +mul (-16+2j) (inf+16j) (-inf+infj) +mul (-16+2j) (inf+infj) (-inf+nanj) +mul (-16+2j) (inf+nanj) (nan+nanj) +mul (-16+2j) (nan-infj) (nan+nanj) +mul (-16+2j) (nan-16j) (nan+nanj) +mul (-16+2j) (nan-2j) (nan+nanj) +mul (-16+2j) (nan-0j) (nan+nanj) +mul (-16+2j) (nan+0j) (nan+nanj) +mul (-16+2j) (nan+2j) (nan+nanj) +mul (-16+2j) (nan+16j) (nan+nanj) +mul (-16+2j) (nan+infj) (nan+nanj) +mul (-16+2j) (nan+nanj) (nan+nanj) +mul (-16+16j) (-inf-infj) (inf+nanj) +mul (-16+16j) (-inf-16j) (inf-infj) +mul (-16+16j) (-inf-2j) (inf-infj) +mul (-16+16j) (-inf-0j) (inf-infj) +mul (-16+16j) (-inf+0j) (inf-infj) +mul (-16+16j) (-inf+2j) (inf-infj) +mul (-16+16j) (-inf+16j) (inf-infj) +mul (-16+16j) (-inf+infj) (nan-infj) +mul (-16+16j) (-inf+nanj) (nan+nanj) +mul (-16+16j) (-16-infj) (inf+infj) +mul (-16+16j) (-16-16j) (512+0j) +mul (-16+16j) (-16-2j) (288-224j) +mul (-16+16j) (-16-0j) (256-256j) +mul (-16+16j) (-16+0j) (256-256j) +mul (-16+16j) (-16+2j) (224-288j) +mul (-16+16j) (-16+16j) -512j +mul (-16+16j) (-16+infj) (-inf-infj) +mul (-16+16j) (-16+nanj) (nan+nanj) +mul (-16+16j) (-2-infj) (inf+infj) +mul (-16+16j) (-2-16j) (288+224j) +mul (-16+16j) (-2-2j) (64+0j) +mul (-16+16j) (-2-0j) (32-32j) +mul (-16+16j) (-2+0j) (32-32j) +mul (-16+16j) (-2+2j) -64j +mul (-16+16j) (-2+16j) (-224-288j) +mul (-16+16j) (-2+infj) (-inf-infj) +mul (-16+16j) (-2+nanj) (nan+nanj) +mul (-16+16j) (-0-infj) (inf+infj) +mul (-16+16j) (-0-16j) (256+256j) +mul (-16+16j) (-0-2j) (32+32j) +mul (-16+16j) (-0-0j) 0j +mul (-16+16j) (-0+0j) -0j +mul (-16+16j) (-0+2j) (-32-32j) +mul (-16+16j) (-0+16j) (-256-256j) +mul (-16+16j) (-0+infj) (-inf-infj) +mul (-16+16j) (-0+nanj) (nan+nanj) +mul (-16+16j) -infj (inf+infj) +mul (-16+16j) -16j (256+256j) +mul (-16+16j) -2j (32+32j) +mul (-16+16j) -0j 0j +mul (-16+16j) 0j (-0+0j) +mul (-16+16j) 2j (-32-32j) +mul (-16+16j) 16j (-256-256j) +mul (-16+16j) infj (-inf-infj) +mul (-16+16j) nanj (nan+nanj) +mul (-16+16j) (2-infj) (inf+infj) +mul (-16+16j) (2-16j) (224+288j) +mul (-16+16j) (2-2j) 64j +mul (-16+16j) (2-0j) (-32+32j) +mul (-16+16j) (2+0j) (-32+32j) +mul (-16+16j) (2+2j) (-64+0j) +mul (-16+16j) (2+16j) (-288-224j) +mul (-16+16j) (2+infj) (-inf-infj) +mul (-16+16j) (2+nanj) (nan+nanj) +mul (-16+16j) (16-infj) (inf+infj) +mul (-16+16j) (16-16j) 512j +mul (-16+16j) (16-2j) (-224+288j) +mul (-16+16j) (16-0j) (-256+256j) +mul (-16+16j) (16+0j) (-256+256j) +mul (-16+16j) (16+2j) (-288+224j) +mul (-16+16j) (16+16j) (-512+0j) +mul (-16+16j) (16+infj) (-inf-infj) +mul (-16+16j) (16+nanj) (nan+nanj) +mul (-16+16j) (inf-infj) (nan+infj) +mul (-16+16j) (inf-16j) (-inf+infj) +mul (-16+16j) (inf-2j) (-inf+infj) +mul (-16+16j) (inf-0j) (-inf+infj) +mul (-16+16j) (inf+0j) (-inf+infj) +mul (-16+16j) (inf+2j) (-inf+infj) +mul (-16+16j) (inf+16j) (-inf+infj) +mul (-16+16j) (inf+infj) (-inf+nanj) +mul (-16+16j) (inf+nanj) (nan+nanj) +mul (-16+16j) (nan-infj) (nan+nanj) +mul (-16+16j) (nan-16j) (nan+nanj) +mul (-16+16j) (nan-2j) (nan+nanj) +mul (-16+16j) (nan-0j) (nan+nanj) +mul (-16+16j) (nan+0j) (nan+nanj) +mul (-16+16j) (nan+2j) (nan+nanj) +mul (-16+16j) (nan+16j) (nan+nanj) +mul (-16+16j) (nan+infj) (nan+nanj) +mul (-16+16j) (nan+nanj) (nan+nanj) +mul (-16+infj) (-inf-infj) (inf+nanj) +mul (-16+infj) (-inf-16j) (inf-infj) +mul (-16+infj) (-inf-2j) (inf-infj) +mul (-16+infj) (-inf-0j) (nan-infj) +mul (-16+infj) (-inf+0j) (nan-infj) +mul (-16+infj) (-inf+2j) (nan-infj) +mul (-16+infj) (-inf+16j) (nan-infj) +mul (-16+infj) (-inf+infj) (nan-infj) +mul (-16+infj) (-inf+nanj) (nan+nanj) +mul (-16+infj) (-16-infj) (inf+nanj) +mul (-16+infj) (-16-16j) (inf-infj) +mul (-16+infj) (-16-2j) (inf-infj) +mul (-16+infj) (-16-0j) (nan-infj) +mul (-16+infj) (-16+0j) (nan-infj) +mul (-16+infj) (-16+2j) (-inf-infj) +mul (-16+infj) (-16+16j) (-inf-infj) +mul (-16+infj) (-16+infj) (-inf-infj) +mul (-16+infj) (-16+nanj) (nan+nanj) +mul (-16+infj) (-2-infj) (inf+nanj) +mul (-16+infj) (-2-16j) (inf-infj) +mul (-16+infj) (-2-2j) (inf-infj) +mul (-16+infj) (-2-0j) (nan-infj) +mul (-16+infj) (-2+0j) (nan-infj) +mul (-16+infj) (-2+2j) (-inf-infj) +mul (-16+infj) (-2+16j) (-inf-infj) +mul (-16+infj) (-2+infj) (-inf-infj) +mul (-16+infj) (-2+nanj) (nan+nanj) +mul (-16+infj) (-0-infj) (inf+nanj) +mul (-16+infj) (-0-16j) (inf+nanj) +mul (-16+infj) (-0-2j) (inf+nanj) +mul (-16+infj) (-0-0j) (nan+nanj) +mul (-16+infj) (-0+0j) (nan+nanj) +mul (-16+infj) (-0+2j) (-inf+nanj) +mul (-16+infj) (-0+16j) (-inf+nanj) +mul (-16+infj) (-0+infj) (-inf+nanj) +mul (-16+infj) (-0+nanj) (nan+nanj) +mul (-16+infj) -infj (inf+nanj) +mul (-16+infj) -16j (inf+nanj) +mul (-16+infj) -2j (inf+nanj) +mul (-16+infj) -0j (nan+nanj) +mul (-16+infj) 0j (nan+nanj) +mul (-16+infj) 2j (-inf+nanj) +mul (-16+infj) 16j (-inf+nanj) +mul (-16+infj) infj (-inf+nanj) +mul (-16+infj) nanj (nan+nanj) +mul (-16+infj) (2-infj) (inf+infj) +mul (-16+infj) (2-16j) (inf+infj) +mul (-16+infj) (2-2j) (inf+infj) +mul (-16+infj) (2-0j) (nan+infj) +mul (-16+infj) (2+0j) (nan+infj) +mul (-16+infj) (2+2j) (-inf+infj) +mul (-16+infj) (2+16j) (-inf+infj) +mul (-16+infj) (2+infj) (-inf+nanj) +mul (-16+infj) (2+nanj) (nan+nanj) +mul (-16+infj) (16-infj) (inf+infj) +mul (-16+infj) (16-16j) (inf+infj) +mul (-16+infj) (16-2j) (inf+infj) +mul (-16+infj) (16-0j) (nan+infj) +mul (-16+infj) (16+0j) (nan+infj) +mul (-16+infj) (16+2j) (-inf+infj) +mul (-16+infj) (16+16j) (-inf+infj) +mul (-16+infj) (16+infj) (-inf+nanj) +mul (-16+infj) (16+nanj) (nan+nanj) +mul (-16+infj) (inf-infj) (nan+infj) +mul (-16+infj) (inf-16j) (nan+infj) +mul (-16+infj) (inf-2j) (nan+infj) +mul (-16+infj) (inf-0j) (nan+infj) +mul (-16+infj) (inf+0j) (nan+infj) +mul (-16+infj) (inf+2j) (-inf+infj) +mul (-16+infj) (inf+16j) (-inf+infj) +mul (-16+infj) (inf+infj) (-inf+nanj) +mul (-16+infj) (inf+nanj) (nan+nanj) +mul (-16+infj) (nan-infj) (nan+nanj) +mul (-16+infj) (nan-16j) (nan+nanj) +mul (-16+infj) (nan-2j) (nan+nanj) +mul (-16+infj) (nan-0j) (nan+nanj) +mul (-16+infj) (nan+0j) (nan+nanj) +mul (-16+infj) (nan+2j) (nan+nanj) +mul (-16+infj) (nan+16j) (nan+nanj) +mul (-16+infj) (nan+infj) (nan+nanj) +mul (-16+infj) (nan+nanj) (nan+nanj) +mul (-16+nanj) (-inf-infj) (nan+nanj) +mul (-16+nanj) (-inf-16j) (nan+nanj) +mul (-16+nanj) (-inf-2j) (nan+nanj) +mul (-16+nanj) (-inf-0j) (nan+nanj) +mul (-16+nanj) (-inf+0j) (nan+nanj) +mul (-16+nanj) (-inf+2j) (nan+nanj) +mul (-16+nanj) (-inf+16j) (nan+nanj) +mul (-16+nanj) (-inf+infj) (nan+nanj) +mul (-16+nanj) (-inf+nanj) (nan+nanj) +mul (-16+nanj) (-16-infj) (nan+nanj) +mul (-16+nanj) (-16-16j) (nan+nanj) +mul (-16+nanj) (-16-2j) (nan+nanj) +mul (-16+nanj) (-16-0j) (nan+nanj) +mul (-16+nanj) (-16+0j) (nan+nanj) +mul (-16+nanj) (-16+2j) (nan+nanj) +mul (-16+nanj) (-16+16j) (nan+nanj) +mul (-16+nanj) (-16+infj) (nan+nanj) +mul (-16+nanj) (-16+nanj) (nan+nanj) +mul (-16+nanj) (-2-infj) (nan+nanj) +mul (-16+nanj) (-2-16j) (nan+nanj) +mul (-16+nanj) (-2-2j) (nan+nanj) +mul (-16+nanj) (-2-0j) (nan+nanj) +mul (-16+nanj) (-2+0j) (nan+nanj) +mul (-16+nanj) (-2+2j) (nan+nanj) +mul (-16+nanj) (-2+16j) (nan+nanj) +mul (-16+nanj) (-2+infj) (nan+nanj) +mul (-16+nanj) (-2+nanj) (nan+nanj) +mul (-16+nanj) (-0-infj) (nan+nanj) +mul (-16+nanj) (-0-16j) (nan+nanj) +mul (-16+nanj) (-0-2j) (nan+nanj) +mul (-16+nanj) (-0-0j) (nan+nanj) +mul (-16+nanj) (-0+0j) (nan+nanj) +mul (-16+nanj) (-0+2j) (nan+nanj) +mul (-16+nanj) (-0+16j) (nan+nanj) +mul (-16+nanj) (-0+infj) (nan+nanj) +mul (-16+nanj) (-0+nanj) (nan+nanj) +mul (-16+nanj) -infj (nan+nanj) +mul (-16+nanj) -16j (nan+nanj) +mul (-16+nanj) -2j (nan+nanj) +mul (-16+nanj) -0j (nan+nanj) +mul (-16+nanj) 0j (nan+nanj) +mul (-16+nanj) 2j (nan+nanj) +mul (-16+nanj) 16j (nan+nanj) +mul (-16+nanj) infj (nan+nanj) +mul (-16+nanj) nanj (nan+nanj) +mul (-16+nanj) (2-infj) (nan+nanj) +mul (-16+nanj) (2-16j) (nan+nanj) +mul (-16+nanj) (2-2j) (nan+nanj) +mul (-16+nanj) (2-0j) (nan+nanj) +mul (-16+nanj) (2+0j) (nan+nanj) +mul (-16+nanj) (2+2j) (nan+nanj) +mul (-16+nanj) (2+16j) (nan+nanj) +mul (-16+nanj) (2+infj) (nan+nanj) +mul (-16+nanj) (2+nanj) (nan+nanj) +mul (-16+nanj) (16-infj) (nan+nanj) +mul (-16+nanj) (16-16j) (nan+nanj) +mul (-16+nanj) (16-2j) (nan+nanj) +mul (-16+nanj) (16-0j) (nan+nanj) +mul (-16+nanj) (16+0j) (nan+nanj) +mul (-16+nanj) (16+2j) (nan+nanj) +mul (-16+nanj) (16+16j) (nan+nanj) +mul (-16+nanj) (16+infj) (nan+nanj) +mul (-16+nanj) (16+nanj) (nan+nanj) +mul (-16+nanj) (inf-infj) (nan+nanj) +mul (-16+nanj) (inf-16j) (nan+nanj) +mul (-16+nanj) (inf-2j) (nan+nanj) +mul (-16+nanj) (inf-0j) (nan+nanj) +mul (-16+nanj) (inf+0j) (nan+nanj) +mul (-16+nanj) (inf+2j) (nan+nanj) +mul (-16+nanj) (inf+16j) (nan+nanj) +mul (-16+nanj) (inf+infj) (nan+nanj) +mul (-16+nanj) (inf+nanj) (nan+nanj) +mul (-16+nanj) (nan-infj) (nan+nanj) +mul (-16+nanj) (nan-16j) (nan+nanj) +mul (-16+nanj) (nan-2j) (nan+nanj) +mul (-16+nanj) (nan-0j) (nan+nanj) +mul (-16+nanj) (nan+0j) (nan+nanj) +mul (-16+nanj) (nan+2j) (nan+nanj) +mul (-16+nanj) (nan+16j) (nan+nanj) +mul (-16+nanj) (nan+infj) (nan+nanj) +mul (-16+nanj) (nan+nanj) (nan+nanj) +mul (-2-infj) (-inf-infj) (nan+infj) +mul (-2-infj) (-inf-16j) (nan+infj) +mul (-2-infj) (-inf-2j) (nan+infj) +mul (-2-infj) (-inf-0j) (nan+infj) +mul (-2-infj) (-inf+0j) (nan+infj) +mul (-2-infj) (-inf+2j) (inf+infj) +mul (-2-infj) (-inf+16j) (inf+infj) +mul (-2-infj) (-inf+infj) (inf+nanj) +mul (-2-infj) (-inf+nanj) (nan+nanj) +mul (-2-infj) (-16-infj) (-inf+infj) +mul (-2-infj) (-16-16j) (-inf+infj) +mul (-2-infj) (-16-2j) (-inf+infj) +mul (-2-infj) (-16-0j) (nan+infj) +mul (-2-infj) (-16+0j) (nan+infj) +mul (-2-infj) (-16+2j) (inf+infj) +mul (-2-infj) (-16+16j) (inf+infj) +mul (-2-infj) (-16+infj) (inf+nanj) +mul (-2-infj) (-16+nanj) (nan+nanj) +mul (-2-infj) (-2-infj) (-inf+infj) +mul (-2-infj) (-2-16j) (-inf+infj) +mul (-2-infj) (-2-2j) (-inf+infj) +mul (-2-infj) (-2-0j) (nan+infj) +mul (-2-infj) (-2+0j) (nan+infj) +mul (-2-infj) (-2+2j) (inf+infj) +mul (-2-infj) (-2+16j) (inf+infj) +mul (-2-infj) (-2+infj) (inf+nanj) +mul (-2-infj) (-2+nanj) (nan+nanj) +mul (-2-infj) (-0-infj) (-inf+nanj) +mul (-2-infj) (-0-16j) (-inf+nanj) +mul (-2-infj) (-0-2j) (-inf+nanj) +mul (-2-infj) (-0-0j) (nan+nanj) +mul (-2-infj) (-0+0j) (nan+nanj) +mul (-2-infj) (-0+2j) (inf+nanj) +mul (-2-infj) (-0+16j) (inf+nanj) +mul (-2-infj) (-0+infj) (inf+nanj) +mul (-2-infj) (-0+nanj) (nan+nanj) +mul (-2-infj) -infj (-inf+nanj) +mul (-2-infj) -16j (-inf+nanj) +mul (-2-infj) -2j (-inf+nanj) +mul (-2-infj) -0j (nan+nanj) +mul (-2-infj) 0j (nan+nanj) +mul (-2-infj) 2j (inf+nanj) +mul (-2-infj) 16j (inf+nanj) +mul (-2-infj) infj (inf+nanj) +mul (-2-infj) nanj (nan+nanj) +mul (-2-infj) (2-infj) (-inf+nanj) +mul (-2-infj) (2-16j) (-inf-infj) +mul (-2-infj) (2-2j) (-inf-infj) +mul (-2-infj) (2-0j) (nan-infj) +mul (-2-infj) (2+0j) (nan-infj) +mul (-2-infj) (2+2j) (inf-infj) +mul (-2-infj) (2+16j) (inf-infj) +mul (-2-infj) (2+infj) (inf-infj) +mul (-2-infj) (2+nanj) (nan+nanj) +mul (-2-infj) (16-infj) (-inf+nanj) +mul (-2-infj) (16-16j) (-inf-infj) +mul (-2-infj) (16-2j) (-inf-infj) +mul (-2-infj) (16-0j) (nan-infj) +mul (-2-infj) (16+0j) (nan-infj) +mul (-2-infj) (16+2j) (inf-infj) +mul (-2-infj) (16+16j) (inf-infj) +mul (-2-infj) (16+infj) (inf-infj) +mul (-2-infj) (16+nanj) (nan+nanj) +mul (-2-infj) (inf-infj) (-inf+nanj) +mul (-2-infj) (inf-16j) (-inf-infj) +mul (-2-infj) (inf-2j) (-inf-infj) +mul (-2-infj) (inf-0j) (nan-infj) +mul (-2-infj) (inf+0j) (nan-infj) +mul (-2-infj) (inf+2j) (nan-infj) +mul (-2-infj) (inf+16j) (nan-infj) +mul (-2-infj) (inf+infj) (nan-infj) +mul (-2-infj) (inf+nanj) (nan+nanj) +mul (-2-infj) (nan-infj) (nan+nanj) +mul (-2-infj) (nan-16j) (nan+nanj) +mul (-2-infj) (nan-2j) (nan+nanj) +mul (-2-infj) (nan-0j) (nan+nanj) +mul (-2-infj) (nan+0j) (nan+nanj) +mul (-2-infj) (nan+2j) (nan+nanj) +mul (-2-infj) (nan+16j) (nan+nanj) +mul (-2-infj) (nan+infj) (nan+nanj) +mul (-2-infj) (nan+nanj) (nan+nanj) +mul (-2-16j) (-inf-infj) (nan+infj) +mul (-2-16j) (-inf-16j) (inf+infj) +mul (-2-16j) (-inf-2j) (inf+infj) +mul (-2-16j) (-inf-0j) (inf+infj) +mul (-2-16j) (-inf+0j) (inf+infj) +mul (-2-16j) (-inf+2j) (inf+infj) +mul (-2-16j) (-inf+16j) (inf+infj) +mul (-2-16j) (-inf+infj) (inf+nanj) +mul (-2-16j) (-inf+nanj) (nan+nanj) +mul (-2-16j) (-16-infj) (-inf+infj) +mul (-2-16j) (-16-16j) (-224+288j) +mul (-2-16j) (-16-2j) 260j +mul (-2-16j) (-16-0j) (32+256j) +mul (-2-16j) (-16+0j) (32+256j) +mul (-2-16j) (-16+2j) (64+252j) +mul (-2-16j) (-16+16j) (288+224j) +mul (-2-16j) (-16+infj) (inf-infj) +mul (-2-16j) (-16+nanj) (nan+nanj) +mul (-2-16j) (-2-infj) (-inf+infj) +mul (-2-16j) (-2-16j) (-252+64j) +mul (-2-16j) (-2-2j) (-28+36j) +mul (-2-16j) (-2-0j) (4+32j) +mul (-2-16j) (-2+0j) (4+32j) +mul (-2-16j) (-2+2j) (36+28j) +mul (-2-16j) (-2+16j) (260+0j) +mul (-2-16j) (-2+infj) (inf-infj) +mul (-2-16j) (-2+nanj) (nan+nanj) +mul (-2-16j) (-0-infj) (-inf+infj) +mul (-2-16j) (-0-16j) (-256+32j) +mul (-2-16j) (-0-2j) (-32+4j) +mul (-2-16j) (-0-0j) 0j +mul (-2-16j) (-0+0j) 0j +mul (-2-16j) (-0+2j) (32-4j) +mul (-2-16j) (-0+16j) (256-32j) +mul (-2-16j) (-0+infj) (inf-infj) +mul (-2-16j) (-0+nanj) (nan+nanj) +mul (-2-16j) -infj (-inf+infj) +mul (-2-16j) -16j (-256+32j) +mul (-2-16j) -2j (-32+4j) +mul (-2-16j) -0j (-0+0j) +mul (-2-16j) 0j -0j +mul (-2-16j) 2j (32-4j) +mul (-2-16j) 16j (256-32j) +mul (-2-16j) infj (inf-infj) +mul (-2-16j) nanj (nan+nanj) +mul (-2-16j) (2-infj) (-inf+infj) +mul (-2-16j) (2-16j) (-260+0j) +mul (-2-16j) (2-2j) (-36-28j) +mul (-2-16j) (2-0j) (-4-32j) +mul (-2-16j) (2+0j) (-4-32j) +mul (-2-16j) (2+2j) (28-36j) +mul (-2-16j) (2+16j) (252-64j) +mul (-2-16j) (2+infj) (inf-infj) +mul (-2-16j) (2+nanj) (nan+nanj) +mul (-2-16j) (16-infj) (-inf+infj) +mul (-2-16j) (16-16j) (-288-224j) +mul (-2-16j) (16-2j) (-64-252j) +mul (-2-16j) (16-0j) (-32-256j) +mul (-2-16j) (16+0j) (-32-256j) +mul (-2-16j) (16+2j) -260j +mul (-2-16j) (16+16j) (224-288j) +mul (-2-16j) (16+infj) (inf-infj) +mul (-2-16j) (16+nanj) (nan+nanj) +mul (-2-16j) (inf-infj) (-inf+nanj) +mul (-2-16j) (inf-16j) (-inf-infj) +mul (-2-16j) (inf-2j) (-inf-infj) +mul (-2-16j) (inf-0j) (-inf-infj) +mul (-2-16j) (inf+0j) (-inf-infj) +mul (-2-16j) (inf+2j) (-inf-infj) +mul (-2-16j) (inf+16j) (-inf-infj) +mul (-2-16j) (inf+infj) (nan-infj) +mul (-2-16j) (inf+nanj) (nan+nanj) +mul (-2-16j) (nan-infj) (nan+nanj) +mul (-2-16j) (nan-16j) (nan+nanj) +mul (-2-16j) (nan-2j) (nan+nanj) +mul (-2-16j) (nan-0j) (nan+nanj) +mul (-2-16j) (nan+0j) (nan+nanj) +mul (-2-16j) (nan+2j) (nan+nanj) +mul (-2-16j) (nan+16j) (nan+nanj) +mul (-2-16j) (nan+infj) (nan+nanj) +mul (-2-16j) (nan+nanj) (nan+nanj) +mul (-2-2j) (-inf-infj) (nan+infj) +mul (-2-2j) (-inf-16j) (inf+infj) +mul (-2-2j) (-inf-2j) (inf+infj) +mul (-2-2j) (-inf-0j) (inf+infj) +mul (-2-2j) (-inf+0j) (inf+infj) +mul (-2-2j) (-inf+2j) (inf+infj) +mul (-2-2j) (-inf+16j) (inf+infj) +mul (-2-2j) (-inf+infj) (inf+nanj) +mul (-2-2j) (-inf+nanj) (nan+nanj) +mul (-2-2j) (-16-infj) (-inf+infj) +mul (-2-2j) (-16-16j) 64j +mul (-2-2j) (-16-2j) (28+36j) +mul (-2-2j) (-16-0j) (32+32j) +mul (-2-2j) (-16+0j) (32+32j) +mul (-2-2j) (-16+2j) (36+28j) +mul (-2-2j) (-16+16j) (64+0j) +mul (-2-2j) (-16+infj) (inf-infj) +mul (-2-2j) (-16+nanj) (nan+nanj) +mul (-2-2j) (-2-infj) (-inf+infj) +mul (-2-2j) (-2-16j) (-28+36j) +mul (-2-2j) (-2-2j) 8j +mul (-2-2j) (-2-0j) (4+4j) +mul (-2-2j) (-2+0j) (4+4j) +mul (-2-2j) (-2+2j) (8+0j) +mul (-2-2j) (-2+16j) (36-28j) +mul (-2-2j) (-2+infj) (inf-infj) +mul (-2-2j) (-2+nanj) (nan+nanj) +mul (-2-2j) (-0-infj) (-inf+infj) +mul (-2-2j) (-0-16j) (-32+32j) +mul (-2-2j) (-0-2j) (-4+4j) +mul (-2-2j) (-0-0j) 0j +mul (-2-2j) (-0+0j) 0j +mul (-2-2j) (-0+2j) (4-4j) +mul (-2-2j) (-0+16j) (32-32j) +mul (-2-2j) (-0+infj) (inf-infj) +mul (-2-2j) (-0+nanj) (nan+nanj) +mul (-2-2j) -infj (-inf+infj) +mul (-2-2j) -16j (-32+32j) +mul (-2-2j) -2j (-4+4j) +mul (-2-2j) -0j (-0+0j) +mul (-2-2j) 0j -0j +mul (-2-2j) 2j (4-4j) +mul (-2-2j) 16j (32-32j) +mul (-2-2j) infj (inf-infj) +mul (-2-2j) nanj (nan+nanj) +mul (-2-2j) (2-infj) (-inf+infj) +mul (-2-2j) (2-16j) (-36+28j) +mul (-2-2j) (2-2j) (-8+0j) +mul (-2-2j) (2-0j) (-4-4j) +mul (-2-2j) (2+0j) (-4-4j) +mul (-2-2j) (2+2j) -8j +mul (-2-2j) (2+16j) (28-36j) +mul (-2-2j) (2+infj) (inf-infj) +mul (-2-2j) (2+nanj) (nan+nanj) +mul (-2-2j) (16-infj) (-inf+infj) +mul (-2-2j) (16-16j) (-64+0j) +mul (-2-2j) (16-2j) (-36-28j) +mul (-2-2j) (16-0j) (-32-32j) +mul (-2-2j) (16+0j) (-32-32j) +mul (-2-2j) (16+2j) (-28-36j) +mul (-2-2j) (16+16j) -64j +mul (-2-2j) (16+infj) (inf-infj) +mul (-2-2j) (16+nanj) (nan+nanj) +mul (-2-2j) (inf-infj) (-inf+nanj) +mul (-2-2j) (inf-16j) (-inf-infj) +mul (-2-2j) (inf-2j) (-inf-infj) +mul (-2-2j) (inf-0j) (-inf-infj) +mul (-2-2j) (inf+0j) (-inf-infj) +mul (-2-2j) (inf+2j) (-inf-infj) +mul (-2-2j) (inf+16j) (-inf-infj) +mul (-2-2j) (inf+infj) (nan-infj) +mul (-2-2j) (inf+nanj) (nan+nanj) +mul (-2-2j) (nan-infj) (nan+nanj) +mul (-2-2j) (nan-16j) (nan+nanj) +mul (-2-2j) (nan-2j) (nan+nanj) +mul (-2-2j) (nan-0j) (nan+nanj) +mul (-2-2j) (nan+0j) (nan+nanj) +mul (-2-2j) (nan+2j) (nan+nanj) +mul (-2-2j) (nan+16j) (nan+nanj) +mul (-2-2j) (nan+infj) (nan+nanj) +mul (-2-2j) (nan+nanj) (nan+nanj) +mul (-2-0j) (-inf-infj) (nan+nanj) +mul (-2-0j) (-inf-16j) (inf+nanj) +mul (-2-0j) (-inf-2j) (inf+nanj) +mul (-2-0j) (-inf-0j) (inf+nanj) +mul (-2-0j) (-inf+0j) (inf+nanj) +mul (-2-0j) (-inf+2j) (inf+nanj) +mul (-2-0j) (-inf+16j) (inf+nanj) +mul (-2-0j) (-inf+infj) (nan+nanj) +mul (-2-0j) (-inf+nanj) (nan+nanj) +mul (-2-0j) (-16-infj) (nan+infj) +mul (-2-0j) (-16-16j) (32+32j) +mul (-2-0j) (-16-2j) (32+4j) +mul (-2-0j) (-16-0j) (32+0j) +mul (-2-0j) (-16+0j) (32+0j) +mul (-2-0j) (-16+2j) (32-4j) +mul (-2-0j) (-16+16j) (32-32j) +mul (-2-0j) (-16+infj) (nan-infj) +mul (-2-0j) (-16+nanj) (nan+nanj) +mul (-2-0j) (-2-infj) (nan+infj) +mul (-2-0j) (-2-16j) (4+32j) +mul (-2-0j) (-2-2j) (4+4j) +mul (-2-0j) (-2-0j) (4+0j) +mul (-2-0j) (-2+0j) (4+0j) +mul (-2-0j) (-2+2j) (4-4j) +mul (-2-0j) (-2+16j) (4-32j) +mul (-2-0j) (-2+infj) (nan-infj) +mul (-2-0j) (-2+nanj) (nan+nanj) +mul (-2-0j) (-0-infj) (nan+infj) +mul (-2-0j) (-0-16j) 32j +mul (-2-0j) (-0-2j) 4j +mul (-2-0j) (-0-0j) 0j +mul (-2-0j) (-0+0j) 0j +mul (-2-0j) (-0+2j) -4j +mul (-2-0j) (-0+16j) -32j +mul (-2-0j) (-0+infj) (nan-infj) +mul (-2-0j) (-0+nanj) (nan+nanj) +mul (-2-0j) -infj (nan+infj) +mul (-2-0j) -16j (-0+32j) +mul (-2-0j) -2j (-0+4j) +mul (-2-0j) -0j (-0+0j) +mul (-2-0j) 0j -0j +mul (-2-0j) 2j -4j +mul (-2-0j) 16j -32j +mul (-2-0j) infj (nan-infj) +mul (-2-0j) nanj (nan+nanj) +mul (-2-0j) (2-infj) (nan+infj) +mul (-2-0j) (2-16j) (-4+32j) +mul (-2-0j) (2-2j) (-4+4j) +mul (-2-0j) (2-0j) (-4+0j) +mul (-2-0j) (2+0j) (-4-0j) +mul (-2-0j) (2+2j) (-4-4j) +mul (-2-0j) (2+16j) (-4-32j) +mul (-2-0j) (2+infj) (nan-infj) +mul (-2-0j) (2+nanj) (nan+nanj) +mul (-2-0j) (16-infj) (nan+infj) +mul (-2-0j) (16-16j) (-32+32j) +mul (-2-0j) (16-2j) (-32+4j) +mul (-2-0j) (16-0j) (-32+0j) +mul (-2-0j) (16+0j) (-32-0j) +mul (-2-0j) (16+2j) (-32-4j) +mul (-2-0j) (16+16j) (-32-32j) +mul (-2-0j) (16+infj) (nan-infj) +mul (-2-0j) (16+nanj) (nan+nanj) +mul (-2-0j) (inf-infj) (nan+nanj) +mul (-2-0j) (inf-16j) (-inf+nanj) +mul (-2-0j) (inf-2j) (-inf+nanj) +mul (-2-0j) (inf-0j) (-inf+nanj) +mul (-2-0j) (inf+0j) (-inf+nanj) +mul (-2-0j) (inf+2j) (-inf+nanj) +mul (-2-0j) (inf+16j) (-inf+nanj) +mul (-2-0j) (inf+infj) (nan+nanj) +mul (-2-0j) (inf+nanj) (nan+nanj) +mul (-2-0j) (nan-infj) (nan+nanj) +mul (-2-0j) (nan-16j) (nan+nanj) +mul (-2-0j) (nan-2j) (nan+nanj) +mul (-2-0j) (nan-0j) (nan+nanj) +mul (-2-0j) (nan+0j) (nan+nanj) +mul (-2-0j) (nan+2j) (nan+nanj) +mul (-2-0j) (nan+16j) (nan+nanj) +mul (-2-0j) (nan+infj) (nan+nanj) +mul (-2-0j) (nan+nanj) (nan+nanj) +mul (-2+0j) (-inf-infj) (nan+nanj) +mul (-2+0j) (-inf-16j) (inf+nanj) +mul (-2+0j) (-inf-2j) (inf+nanj) +mul (-2+0j) (-inf-0j) (inf+nanj) +mul (-2+0j) (-inf+0j) (inf+nanj) +mul (-2+0j) (-inf+2j) (inf+nanj) +mul (-2+0j) (-inf+16j) (inf+nanj) +mul (-2+0j) (-inf+infj) (nan+nanj) +mul (-2+0j) (-inf+nanj) (nan+nanj) +mul (-2+0j) (-16-infj) (nan+infj) +mul (-2+0j) (-16-16j) (32+32j) +mul (-2+0j) (-16-2j) (32+4j) +mul (-2+0j) (-16-0j) (32+0j) +mul (-2+0j) (-16+0j) (32-0j) +mul (-2+0j) (-16+2j) (32-4j) +mul (-2+0j) (-16+16j) (32-32j) +mul (-2+0j) (-16+infj) (nan-infj) +mul (-2+0j) (-16+nanj) (nan+nanj) +mul (-2+0j) (-2-infj) (nan+infj) +mul (-2+0j) (-2-16j) (4+32j) +mul (-2+0j) (-2-2j) (4+4j) +mul (-2+0j) (-2-0j) (4+0j) +mul (-2+0j) (-2+0j) (4-0j) +mul (-2+0j) (-2+2j) (4-4j) +mul (-2+0j) (-2+16j) (4-32j) +mul (-2+0j) (-2+infj) (nan-infj) +mul (-2+0j) (-2+nanj) (nan+nanj) +mul (-2+0j) (-0-infj) (nan+infj) +mul (-2+0j) (-0-16j) 32j +mul (-2+0j) (-0-2j) 4j +mul (-2+0j) (-0-0j) 0j +mul (-2+0j) (-0+0j) -0j +mul (-2+0j) (-0+2j) -4j +mul (-2+0j) (-0+16j) -32j +mul (-2+0j) (-0+infj) (nan-infj) +mul (-2+0j) (-0+nanj) (nan+nanj) +mul (-2+0j) -infj (nan+infj) +mul (-2+0j) -16j 32j +mul (-2+0j) -2j 4j +mul (-2+0j) -0j 0j +mul (-2+0j) 0j (-0+0j) +mul (-2+0j) 2j (-0-4j) +mul (-2+0j) 16j (-0-32j) +mul (-2+0j) infj (nan-infj) +mul (-2+0j) nanj (nan+nanj) +mul (-2+0j) (2-infj) (nan+infj) +mul (-2+0j) (2-16j) (-4+32j) +mul (-2+0j) (2-2j) (-4+4j) +mul (-2+0j) (2-0j) (-4+0j) +mul (-2+0j) (2+0j) (-4+0j) +mul (-2+0j) (2+2j) (-4-4j) +mul (-2+0j) (2+16j) (-4-32j) +mul (-2+0j) (2+infj) (nan-infj) +mul (-2+0j) (2+nanj) (nan+nanj) +mul (-2+0j) (16-infj) (nan+infj) +mul (-2+0j) (16-16j) (-32+32j) +mul (-2+0j) (16-2j) (-32+4j) +mul (-2+0j) (16-0j) (-32+0j) +mul (-2+0j) (16+0j) (-32+0j) +mul (-2+0j) (16+2j) (-32-4j) +mul (-2+0j) (16+16j) (-32-32j) +mul (-2+0j) (16+infj) (nan-infj) +mul (-2+0j) (16+nanj) (nan+nanj) +mul (-2+0j) (inf-infj) (nan+nanj) +mul (-2+0j) (inf-16j) (-inf+nanj) +mul (-2+0j) (inf-2j) (-inf+nanj) +mul (-2+0j) (inf-0j) (-inf+nanj) +mul (-2+0j) (inf+0j) (-inf+nanj) +mul (-2+0j) (inf+2j) (-inf+nanj) +mul (-2+0j) (inf+16j) (-inf+nanj) +mul (-2+0j) (inf+infj) (nan+nanj) +mul (-2+0j) (inf+nanj) (nan+nanj) +mul (-2+0j) (nan-infj) (nan+nanj) +mul (-2+0j) (nan-16j) (nan+nanj) +mul (-2+0j) (nan-2j) (nan+nanj) +mul (-2+0j) (nan-0j) (nan+nanj) +mul (-2+0j) (nan+0j) (nan+nanj) +mul (-2+0j) (nan+2j) (nan+nanj) +mul (-2+0j) (nan+16j) (nan+nanj) +mul (-2+0j) (nan+infj) (nan+nanj) +mul (-2+0j) (nan+nanj) (nan+nanj) +mul (-2+2j) (-inf-infj) (inf+nanj) +mul (-2+2j) (-inf-16j) (inf-infj) +mul (-2+2j) (-inf-2j) (inf-infj) +mul (-2+2j) (-inf-0j) (inf-infj) +mul (-2+2j) (-inf+0j) (inf-infj) +mul (-2+2j) (-inf+2j) (inf-infj) +mul (-2+2j) (-inf+16j) (inf-infj) +mul (-2+2j) (-inf+infj) (nan-infj) +mul (-2+2j) (-inf+nanj) (nan+nanj) +mul (-2+2j) (-16-infj) (inf+infj) +mul (-2+2j) (-16-16j) (64+0j) +mul (-2+2j) (-16-2j) (36-28j) +mul (-2+2j) (-16-0j) (32-32j) +mul (-2+2j) (-16+0j) (32-32j) +mul (-2+2j) (-16+2j) (28-36j) +mul (-2+2j) (-16+16j) -64j +mul (-2+2j) (-16+infj) (-inf-infj) +mul (-2+2j) (-16+nanj) (nan+nanj) +mul (-2+2j) (-2-infj) (inf+infj) +mul (-2+2j) (-2-16j) (36+28j) +mul (-2+2j) (-2-2j) (8+0j) +mul (-2+2j) (-2-0j) (4-4j) +mul (-2+2j) (-2+0j) (4-4j) +mul (-2+2j) (-2+2j) -8j +mul (-2+2j) (-2+16j) (-28-36j) +mul (-2+2j) (-2+infj) (-inf-infj) +mul (-2+2j) (-2+nanj) (nan+nanj) +mul (-2+2j) (-0-infj) (inf+infj) +mul (-2+2j) (-0-16j) (32+32j) +mul (-2+2j) (-0-2j) (4+4j) +mul (-2+2j) (-0-0j) 0j +mul (-2+2j) (-0+0j) -0j +mul (-2+2j) (-0+2j) (-4-4j) +mul (-2+2j) (-0+16j) (-32-32j) +mul (-2+2j) (-0+infj) (-inf-infj) +mul (-2+2j) (-0+nanj) (nan+nanj) +mul (-2+2j) -infj (inf+infj) +mul (-2+2j) -16j (32+32j) +mul (-2+2j) -2j (4+4j) +mul (-2+2j) -0j 0j +mul (-2+2j) 0j (-0+0j) +mul (-2+2j) 2j (-4-4j) +mul (-2+2j) 16j (-32-32j) +mul (-2+2j) infj (-inf-infj) +mul (-2+2j) nanj (nan+nanj) +mul (-2+2j) (2-infj) (inf+infj) +mul (-2+2j) (2-16j) (28+36j) +mul (-2+2j) (2-2j) 8j +mul (-2+2j) (2-0j) (-4+4j) +mul (-2+2j) (2+0j) (-4+4j) +mul (-2+2j) (2+2j) (-8+0j) +mul (-2+2j) (2+16j) (-36-28j) +mul (-2+2j) (2+infj) (-inf-infj) +mul (-2+2j) (2+nanj) (nan+nanj) +mul (-2+2j) (16-infj) (inf+infj) +mul (-2+2j) (16-16j) 64j +mul (-2+2j) (16-2j) (-28+36j) +mul (-2+2j) (16-0j) (-32+32j) +mul (-2+2j) (16+0j) (-32+32j) +mul (-2+2j) (16+2j) (-36+28j) +mul (-2+2j) (16+16j) (-64+0j) +mul (-2+2j) (16+infj) (-inf-infj) +mul (-2+2j) (16+nanj) (nan+nanj) +mul (-2+2j) (inf-infj) (nan+infj) +mul (-2+2j) (inf-16j) (-inf+infj) +mul (-2+2j) (inf-2j) (-inf+infj) +mul (-2+2j) (inf-0j) (-inf+infj) +mul (-2+2j) (inf+0j) (-inf+infj) +mul (-2+2j) (inf+2j) (-inf+infj) +mul (-2+2j) (inf+16j) (-inf+infj) +mul (-2+2j) (inf+infj) (-inf+nanj) +mul (-2+2j) (inf+nanj) (nan+nanj) +mul (-2+2j) (nan-infj) (nan+nanj) +mul (-2+2j) (nan-16j) (nan+nanj) +mul (-2+2j) (nan-2j) (nan+nanj) +mul (-2+2j) (nan-0j) (nan+nanj) +mul (-2+2j) (nan+0j) (nan+nanj) +mul (-2+2j) (nan+2j) (nan+nanj) +mul (-2+2j) (nan+16j) (nan+nanj) +mul (-2+2j) (nan+infj) (nan+nanj) +mul (-2+2j) (nan+nanj) (nan+nanj) +mul (-2+16j) (-inf-infj) (inf+nanj) +mul (-2+16j) (-inf-16j) (inf-infj) +mul (-2+16j) (-inf-2j) (inf-infj) +mul (-2+16j) (-inf-0j) (inf-infj) +mul (-2+16j) (-inf+0j) (inf-infj) +mul (-2+16j) (-inf+2j) (inf-infj) +mul (-2+16j) (-inf+16j) (inf-infj) +mul (-2+16j) (-inf+infj) (nan-infj) +mul (-2+16j) (-inf+nanj) (nan+nanj) +mul (-2+16j) (-16-infj) (inf+infj) +mul (-2+16j) (-16-16j) (288-224j) +mul (-2+16j) (-16-2j) (64-252j) +mul (-2+16j) (-16-0j) (32-256j) +mul (-2+16j) (-16+0j) (32-256j) +mul (-2+16j) (-16+2j) -260j +mul (-2+16j) (-16+16j) (-224-288j) +mul (-2+16j) (-16+infj) (-inf-infj) +mul (-2+16j) (-16+nanj) (nan+nanj) +mul (-2+16j) (-2-infj) (inf+infj) +mul (-2+16j) (-2-16j) (260+0j) +mul (-2+16j) (-2-2j) (36-28j) +mul (-2+16j) (-2-0j) (4-32j) +mul (-2+16j) (-2+0j) (4-32j) +mul (-2+16j) (-2+2j) (-28-36j) +mul (-2+16j) (-2+16j) (-252-64j) +mul (-2+16j) (-2+infj) (-inf-infj) +mul (-2+16j) (-2+nanj) (nan+nanj) +mul (-2+16j) (-0-infj) (inf+infj) +mul (-2+16j) (-0-16j) (256+32j) +mul (-2+16j) (-0-2j) (32+4j) +mul (-2+16j) (-0-0j) 0j +mul (-2+16j) (-0+0j) -0j +mul (-2+16j) (-0+2j) (-32-4j) +mul (-2+16j) (-0+16j) (-256-32j) +mul (-2+16j) (-0+infj) (-inf-infj) +mul (-2+16j) (-0+nanj) (nan+nanj) +mul (-2+16j) -infj (inf+infj) +mul (-2+16j) -16j (256+32j) +mul (-2+16j) -2j (32+4j) +mul (-2+16j) -0j 0j +mul (-2+16j) 0j (-0+0j) +mul (-2+16j) 2j (-32-4j) +mul (-2+16j) 16j (-256-32j) +mul (-2+16j) infj (-inf-infj) +mul (-2+16j) nanj (nan+nanj) +mul (-2+16j) (2-infj) (inf+infj) +mul (-2+16j) (2-16j) (252+64j) +mul (-2+16j) (2-2j) (28+36j) +mul (-2+16j) (2-0j) (-4+32j) +mul (-2+16j) (2+0j) (-4+32j) +mul (-2+16j) (2+2j) (-36+28j) +mul (-2+16j) (2+16j) (-260+0j) +mul (-2+16j) (2+infj) (-inf-infj) +mul (-2+16j) (2+nanj) (nan+nanj) +mul (-2+16j) (16-infj) (inf+infj) +mul (-2+16j) (16-16j) (224+288j) +mul (-2+16j) (16-2j) 260j +mul (-2+16j) (16-0j) (-32+256j) +mul (-2+16j) (16+0j) (-32+256j) +mul (-2+16j) (16+2j) (-64+252j) +mul (-2+16j) (16+16j) (-288+224j) +mul (-2+16j) (16+infj) (-inf-infj) +mul (-2+16j) (16+nanj) (nan+nanj) +mul (-2+16j) (inf-infj) (nan+infj) +mul (-2+16j) (inf-16j) (-inf+infj) +mul (-2+16j) (inf-2j) (-inf+infj) +mul (-2+16j) (inf-0j) (-inf+infj) +mul (-2+16j) (inf+0j) (-inf+infj) +mul (-2+16j) (inf+2j) (-inf+infj) +mul (-2+16j) (inf+16j) (-inf+infj) +mul (-2+16j) (inf+infj) (-inf+nanj) +mul (-2+16j) (inf+nanj) (nan+nanj) +mul (-2+16j) (nan-infj) (nan+nanj) +mul (-2+16j) (nan-16j) (nan+nanj) +mul (-2+16j) (nan-2j) (nan+nanj) +mul (-2+16j) (nan-0j) (nan+nanj) +mul (-2+16j) (nan+0j) (nan+nanj) +mul (-2+16j) (nan+2j) (nan+nanj) +mul (-2+16j) (nan+16j) (nan+nanj) +mul (-2+16j) (nan+infj) (nan+nanj) +mul (-2+16j) (nan+nanj) (nan+nanj) +mul (-2+infj) (-inf-infj) (inf+nanj) +mul (-2+infj) (-inf-16j) (inf-infj) +mul (-2+infj) (-inf-2j) (inf-infj) +mul (-2+infj) (-inf-0j) (nan-infj) +mul (-2+infj) (-inf+0j) (nan-infj) +mul (-2+infj) (-inf+2j) (nan-infj) +mul (-2+infj) (-inf+16j) (nan-infj) +mul (-2+infj) (-inf+infj) (nan-infj) +mul (-2+infj) (-inf+nanj) (nan+nanj) +mul (-2+infj) (-16-infj) (inf+nanj) +mul (-2+infj) (-16-16j) (inf-infj) +mul (-2+infj) (-16-2j) (inf-infj) +mul (-2+infj) (-16-0j) (nan-infj) +mul (-2+infj) (-16+0j) (nan-infj) +mul (-2+infj) (-16+2j) (-inf-infj) +mul (-2+infj) (-16+16j) (-inf-infj) +mul (-2+infj) (-16+infj) (-inf-infj) +mul (-2+infj) (-16+nanj) (nan+nanj) +mul (-2+infj) (-2-infj) (inf+nanj) +mul (-2+infj) (-2-16j) (inf-infj) +mul (-2+infj) (-2-2j) (inf-infj) +mul (-2+infj) (-2-0j) (nan-infj) +mul (-2+infj) (-2+0j) (nan-infj) +mul (-2+infj) (-2+2j) (-inf-infj) +mul (-2+infj) (-2+16j) (-inf-infj) +mul (-2+infj) (-2+infj) (-inf-infj) +mul (-2+infj) (-2+nanj) (nan+nanj) +mul (-2+infj) (-0-infj) (inf+nanj) +mul (-2+infj) (-0-16j) (inf+nanj) +mul (-2+infj) (-0-2j) (inf+nanj) +mul (-2+infj) (-0-0j) (nan+nanj) +mul (-2+infj) (-0+0j) (nan+nanj) +mul (-2+infj) (-0+2j) (-inf+nanj) +mul (-2+infj) (-0+16j) (-inf+nanj) +mul (-2+infj) (-0+infj) (-inf+nanj) +mul (-2+infj) (-0+nanj) (nan+nanj) +mul (-2+infj) -infj (inf+nanj) +mul (-2+infj) -16j (inf+nanj) +mul (-2+infj) -2j (inf+nanj) +mul (-2+infj) -0j (nan+nanj) +mul (-2+infj) 0j (nan+nanj) +mul (-2+infj) 2j (-inf+nanj) +mul (-2+infj) 16j (-inf+nanj) +mul (-2+infj) infj (-inf+nanj) +mul (-2+infj) nanj (nan+nanj) +mul (-2+infj) (2-infj) (inf+infj) +mul (-2+infj) (2-16j) (inf+infj) +mul (-2+infj) (2-2j) (inf+infj) +mul (-2+infj) (2-0j) (nan+infj) +mul (-2+infj) (2+0j) (nan+infj) +mul (-2+infj) (2+2j) (-inf+infj) +mul (-2+infj) (2+16j) (-inf+infj) +mul (-2+infj) (2+infj) (-inf+nanj) +mul (-2+infj) (2+nanj) (nan+nanj) +mul (-2+infj) (16-infj) (inf+infj) +mul (-2+infj) (16-16j) (inf+infj) +mul (-2+infj) (16-2j) (inf+infj) +mul (-2+infj) (16-0j) (nan+infj) +mul (-2+infj) (16+0j) (nan+infj) +mul (-2+infj) (16+2j) (-inf+infj) +mul (-2+infj) (16+16j) (-inf+infj) +mul (-2+infj) (16+infj) (-inf+nanj) +mul (-2+infj) (16+nanj) (nan+nanj) +mul (-2+infj) (inf-infj) (nan+infj) +mul (-2+infj) (inf-16j) (nan+infj) +mul (-2+infj) (inf-2j) (nan+infj) +mul (-2+infj) (inf-0j) (nan+infj) +mul (-2+infj) (inf+0j) (nan+infj) +mul (-2+infj) (inf+2j) (-inf+infj) +mul (-2+infj) (inf+16j) (-inf+infj) +mul (-2+infj) (inf+infj) (-inf+nanj) +mul (-2+infj) (inf+nanj) (nan+nanj) +mul (-2+infj) (nan-infj) (nan+nanj) +mul (-2+infj) (nan-16j) (nan+nanj) +mul (-2+infj) (nan-2j) (nan+nanj) +mul (-2+infj) (nan-0j) (nan+nanj) +mul (-2+infj) (nan+0j) (nan+nanj) +mul (-2+infj) (nan+2j) (nan+nanj) +mul (-2+infj) (nan+16j) (nan+nanj) +mul (-2+infj) (nan+infj) (nan+nanj) +mul (-2+infj) (nan+nanj) (nan+nanj) +mul (-2+nanj) (-inf-infj) (nan+nanj) +mul (-2+nanj) (-inf-16j) (nan+nanj) +mul (-2+nanj) (-inf-2j) (nan+nanj) +mul (-2+nanj) (-inf-0j) (nan+nanj) +mul (-2+nanj) (-inf+0j) (nan+nanj) +mul (-2+nanj) (-inf+2j) (nan+nanj) +mul (-2+nanj) (-inf+16j) (nan+nanj) +mul (-2+nanj) (-inf+infj) (nan+nanj) +mul (-2+nanj) (-inf+nanj) (nan+nanj) +mul (-2+nanj) (-16-infj) (nan+nanj) +mul (-2+nanj) (-16-16j) (nan+nanj) +mul (-2+nanj) (-16-2j) (nan+nanj) +mul (-2+nanj) (-16-0j) (nan+nanj) +mul (-2+nanj) (-16+0j) (nan+nanj) +mul (-2+nanj) (-16+2j) (nan+nanj) +mul (-2+nanj) (-16+16j) (nan+nanj) +mul (-2+nanj) (-16+infj) (nan+nanj) +mul (-2+nanj) (-16+nanj) (nan+nanj) +mul (-2+nanj) (-2-infj) (nan+nanj) +mul (-2+nanj) (-2-16j) (nan+nanj) +mul (-2+nanj) (-2-2j) (nan+nanj) +mul (-2+nanj) (-2-0j) (nan+nanj) +mul (-2+nanj) (-2+0j) (nan+nanj) +mul (-2+nanj) (-2+2j) (nan+nanj) +mul (-2+nanj) (-2+16j) (nan+nanj) +mul (-2+nanj) (-2+infj) (nan+nanj) +mul (-2+nanj) (-2+nanj) (nan+nanj) +mul (-2+nanj) (-0-infj) (nan+nanj) +mul (-2+nanj) (-0-16j) (nan+nanj) +mul (-2+nanj) (-0-2j) (nan+nanj) +mul (-2+nanj) (-0-0j) (nan+nanj) +mul (-2+nanj) (-0+0j) (nan+nanj) +mul (-2+nanj) (-0+2j) (nan+nanj) +mul (-2+nanj) (-0+16j) (nan+nanj) +mul (-2+nanj) (-0+infj) (nan+nanj) +mul (-2+nanj) (-0+nanj) (nan+nanj) +mul (-2+nanj) -infj (nan+nanj) +mul (-2+nanj) -16j (nan+nanj) +mul (-2+nanj) -2j (nan+nanj) +mul (-2+nanj) -0j (nan+nanj) +mul (-2+nanj) 0j (nan+nanj) +mul (-2+nanj) 2j (nan+nanj) +mul (-2+nanj) 16j (nan+nanj) +mul (-2+nanj) infj (nan+nanj) +mul (-2+nanj) nanj (nan+nanj) +mul (-2+nanj) (2-infj) (nan+nanj) +mul (-2+nanj) (2-16j) (nan+nanj) +mul (-2+nanj) (2-2j) (nan+nanj) +mul (-2+nanj) (2-0j) (nan+nanj) +mul (-2+nanj) (2+0j) (nan+nanj) +mul (-2+nanj) (2+2j) (nan+nanj) +mul (-2+nanj) (2+16j) (nan+nanj) +mul (-2+nanj) (2+infj) (nan+nanj) +mul (-2+nanj) (2+nanj) (nan+nanj) +mul (-2+nanj) (16-infj) (nan+nanj) +mul (-2+nanj) (16-16j) (nan+nanj) +mul (-2+nanj) (16-2j) (nan+nanj) +mul (-2+nanj) (16-0j) (nan+nanj) +mul (-2+nanj) (16+0j) (nan+nanj) +mul (-2+nanj) (16+2j) (nan+nanj) +mul (-2+nanj) (16+16j) (nan+nanj) +mul (-2+nanj) (16+infj) (nan+nanj) +mul (-2+nanj) (16+nanj) (nan+nanj) +mul (-2+nanj) (inf-infj) (nan+nanj) +mul (-2+nanj) (inf-16j) (nan+nanj) +mul (-2+nanj) (inf-2j) (nan+nanj) +mul (-2+nanj) (inf-0j) (nan+nanj) +mul (-2+nanj) (inf+0j) (nan+nanj) +mul (-2+nanj) (inf+2j) (nan+nanj) +mul (-2+nanj) (inf+16j) (nan+nanj) +mul (-2+nanj) (inf+infj) (nan+nanj) +mul (-2+nanj) (inf+nanj) (nan+nanj) +mul (-2+nanj) (nan-infj) (nan+nanj) +mul (-2+nanj) (nan-16j) (nan+nanj) +mul (-2+nanj) (nan-2j) (nan+nanj) +mul (-2+nanj) (nan-0j) (nan+nanj) +mul (-2+nanj) (nan+0j) (nan+nanj) +mul (-2+nanj) (nan+2j) (nan+nanj) +mul (-2+nanj) (nan+16j) (nan+nanj) +mul (-2+nanj) (nan+infj) (nan+nanj) +mul (-2+nanj) (nan+nanj) (nan+nanj) +mul (-0-infj) (-inf-infj) (nan+nanj) +mul (-0-infj) (-inf-16j) (nan+infj) +mul (-0-infj) (-inf-2j) (nan+infj) +mul (-0-infj) (-inf-0j) (nan+infj) +mul (-0-infj) (-inf+0j) (nan+infj) +mul (-0-infj) (-inf+2j) (nan+infj) +mul (-0-infj) (-inf+16j) (nan+infj) +mul (-0-infj) (-inf+infj) (nan+nanj) +mul (-0-infj) (-inf+nanj) (nan+nanj) +mul (-0-infj) (-16-infj) (-inf+nanj) +mul (-0-infj) (-16-16j) (-inf+infj) +mul (-0-infj) (-16-2j) (-inf+infj) +mul (-0-infj) (-16-0j) (nan+infj) +mul (-0-infj) (-16+0j) (nan+infj) +mul (-0-infj) (-16+2j) (inf+infj) +mul (-0-infj) (-16+16j) (inf+infj) +mul (-0-infj) (-16+infj) (inf+nanj) +mul (-0-infj) (-16+nanj) (nan+nanj) +mul (-0-infj) (-2-infj) (-inf+nanj) +mul (-0-infj) (-2-16j) (-inf+infj) +mul (-0-infj) (-2-2j) (-inf+infj) +mul (-0-infj) (-2-0j) (nan+infj) +mul (-0-infj) (-2+0j) (nan+infj) +mul (-0-infj) (-2+2j) (inf+infj) +mul (-0-infj) (-2+16j) (inf+infj) +mul (-0-infj) (-2+infj) (inf+nanj) +mul (-0-infj) (-2+nanj) (nan+nanj) +mul (-0-infj) (-0-infj) (-inf+nanj) +mul (-0-infj) (-0-16j) (-inf+nanj) +mul (-0-infj) (-0-2j) (-inf+nanj) +mul (-0-infj) (-0-0j) (nan+nanj) +mul (-0-infj) (-0+0j) (nan+nanj) +mul (-0-infj) (-0+2j) (inf+nanj) +mul (-0-infj) (-0+16j) (inf+nanj) +mul (-0-infj) (-0+infj) (inf+nanj) +mul (-0-infj) (-0+nanj) (nan+nanj) +mul (-0-infj) -infj (-inf+nanj) +mul (-0-infj) -16j (-inf+nanj) +mul (-0-infj) -2j (-inf+nanj) +mul (-0-infj) -0j (nan+nanj) +mul (-0-infj) 0j (nan+nanj) +mul (-0-infj) 2j (inf+nanj) +mul (-0-infj) 16j (inf+nanj) +mul (-0-infj) infj (inf+nanj) +mul (-0-infj) nanj (nan+nanj) +mul (-0-infj) (2-infj) (-inf+nanj) +mul (-0-infj) (2-16j) (-inf-infj) +mul (-0-infj) (2-2j) (-inf-infj) +mul (-0-infj) (2-0j) (nan-infj) +mul (-0-infj) (2+0j) (nan-infj) +mul (-0-infj) (2+2j) (inf-infj) +mul (-0-infj) (2+16j) (inf-infj) +mul (-0-infj) (2+infj) (inf+nanj) +mul (-0-infj) (2+nanj) (nan+nanj) +mul (-0-infj) (16-infj) (-inf+nanj) +mul (-0-infj) (16-16j) (-inf-infj) +mul (-0-infj) (16-2j) (-inf-infj) +mul (-0-infj) (16-0j) (nan-infj) +mul (-0-infj) (16+0j) (nan-infj) +mul (-0-infj) (16+2j) (inf-infj) +mul (-0-infj) (16+16j) (inf-infj) +mul (-0-infj) (16+infj) (inf+nanj) +mul (-0-infj) (16+nanj) (nan+nanj) +mul (-0-infj) (inf-infj) (nan+nanj) +mul (-0-infj) (inf-16j) (nan-infj) +mul (-0-infj) (inf-2j) (nan-infj) +mul (-0-infj) (inf-0j) (nan-infj) +mul (-0-infj) (inf+0j) (nan-infj) +mul (-0-infj) (inf+2j) (nan-infj) +mul (-0-infj) (inf+16j) (nan-infj) +mul (-0-infj) (inf+infj) (nan+nanj) +mul (-0-infj) (inf+nanj) (nan+nanj) +mul (-0-infj) (nan-infj) (nan+nanj) +mul (-0-infj) (nan-16j) (nan+nanj) +mul (-0-infj) (nan-2j) (nan+nanj) +mul (-0-infj) (nan-0j) (nan+nanj) +mul (-0-infj) (nan+0j) (nan+nanj) +mul (-0-infj) (nan+2j) (nan+nanj) +mul (-0-infj) (nan+16j) (nan+nanj) +mul (-0-infj) (nan+infj) (nan+nanj) +mul (-0-infj) (nan+nanj) (nan+nanj) +mul (-0-16j) (-inf-infj) (nan+nanj) +mul (-0-16j) (-inf-16j) (nan+infj) +mul (-0-16j) (-inf-2j) (nan+infj) +mul (-0-16j) (-inf-0j) (nan+infj) +mul (-0-16j) (-inf+0j) (nan+infj) +mul (-0-16j) (-inf+2j) (nan+infj) +mul (-0-16j) (-inf+16j) (nan+infj) +mul (-0-16j) (-inf+infj) (nan+nanj) +mul (-0-16j) (-inf+nanj) (nan+nanj) +mul (-0-16j) (-16-infj) (-inf+nanj) +mul (-0-16j) (-16-16j) (-256+256j) +mul (-0-16j) (-16-2j) (-32+256j) +mul (-0-16j) (-16-0j) 256j +mul (-0-16j) (-16+0j) 256j +mul (-0-16j) (-16+2j) (32+256j) +mul (-0-16j) (-16+16j) (256+256j) +mul (-0-16j) (-16+infj) (inf+nanj) +mul (-0-16j) (-16+nanj) (nan+nanj) +mul (-0-16j) (-2-infj) (-inf+nanj) +mul (-0-16j) (-2-16j) (-256+32j) +mul (-0-16j) (-2-2j) (-32+32j) +mul (-0-16j) (-2-0j) 32j +mul (-0-16j) (-2+0j) 32j +mul (-0-16j) (-2+2j) (32+32j) +mul (-0-16j) (-2+16j) (256+32j) +mul (-0-16j) (-2+infj) (inf+nanj) +mul (-0-16j) (-2+nanj) (nan+nanj) +mul (-0-16j) (-0-infj) (-inf+nanj) +mul (-0-16j) (-0-16j) (-256+0j) +mul (-0-16j) (-0-2j) (-32+0j) +mul (-0-16j) (-0-0j) 0j +mul (-0-16j) (-0+0j) 0j +mul (-0-16j) (-0+2j) (32+0j) +mul (-0-16j) (-0+16j) (256+0j) +mul (-0-16j) (-0+infj) (inf+nanj) +mul (-0-16j) (-0+nanj) (nan+nanj) +mul (-0-16j) -infj (-inf+nanj) +mul (-0-16j) -16j (-256+0j) +mul (-0-16j) -2j (-32+0j) +mul (-0-16j) -0j (-0+0j) +mul (-0-16j) 0j -0j +mul (-0-16j) 2j (32-0j) +mul (-0-16j) 16j (256-0j) +mul (-0-16j) infj (inf+nanj) +mul (-0-16j) nanj (nan+nanj) +mul (-0-16j) (2-infj) (-inf+nanj) +mul (-0-16j) (2-16j) (-256-32j) +mul (-0-16j) (2-2j) (-32-32j) +mul (-0-16j) (2-0j) (-0-32j) +mul (-0-16j) (2+0j) -32j +mul (-0-16j) (2+2j) (32-32j) +mul (-0-16j) (2+16j) (256-32j) +mul (-0-16j) (2+infj) (inf+nanj) +mul (-0-16j) (2+nanj) (nan+nanj) +mul (-0-16j) (16-infj) (-inf+nanj) +mul (-0-16j) (16-16j) (-256-256j) +mul (-0-16j) (16-2j) (-32-256j) +mul (-0-16j) (16-0j) (-0-256j) +mul (-0-16j) (16+0j) -256j +mul (-0-16j) (16+2j) (32-256j) +mul (-0-16j) (16+16j) (256-256j) +mul (-0-16j) (16+infj) (inf+nanj) +mul (-0-16j) (16+nanj) (nan+nanj) +mul (-0-16j) (inf-infj) (nan+nanj) +mul (-0-16j) (inf-16j) (nan-infj) +mul (-0-16j) (inf-2j) (nan-infj) +mul (-0-16j) (inf-0j) (nan-infj) +mul (-0-16j) (inf+0j) (nan-infj) +mul (-0-16j) (inf+2j) (nan-infj) +mul (-0-16j) (inf+16j) (nan-infj) +mul (-0-16j) (inf+infj) (nan+nanj) +mul (-0-16j) (inf+nanj) (nan+nanj) +mul (-0-16j) (nan-infj) (nan+nanj) +mul (-0-16j) (nan-16j) (nan+nanj) +mul (-0-16j) (nan-2j) (nan+nanj) +mul (-0-16j) (nan-0j) (nan+nanj) +mul (-0-16j) (nan+0j) (nan+nanj) +mul (-0-16j) (nan+2j) (nan+nanj) +mul (-0-16j) (nan+16j) (nan+nanj) +mul (-0-16j) (nan+infj) (nan+nanj) +mul (-0-16j) (nan+nanj) (nan+nanj) +mul (-0-2j) (-inf-infj) (nan+nanj) +mul (-0-2j) (-inf-16j) (nan+infj) +mul (-0-2j) (-inf-2j) (nan+infj) +mul (-0-2j) (-inf-0j) (nan+infj) +mul (-0-2j) (-inf+0j) (nan+infj) +mul (-0-2j) (-inf+2j) (nan+infj) +mul (-0-2j) (-inf+16j) (nan+infj) +mul (-0-2j) (-inf+infj) (nan+nanj) +mul (-0-2j) (-inf+nanj) (nan+nanj) +mul (-0-2j) (-16-infj) (-inf+nanj) +mul (-0-2j) (-16-16j) (-32+32j) +mul (-0-2j) (-16-2j) (-4+32j) +mul (-0-2j) (-16-0j) 32j +mul (-0-2j) (-16+0j) 32j +mul (-0-2j) (-16+2j) (4+32j) +mul (-0-2j) (-16+16j) (32+32j) +mul (-0-2j) (-16+infj) (inf+nanj) +mul (-0-2j) (-16+nanj) (nan+nanj) +mul (-0-2j) (-2-infj) (-inf+nanj) +mul (-0-2j) (-2-16j) (-32+4j) +mul (-0-2j) (-2-2j) (-4+4j) +mul (-0-2j) (-2-0j) 4j +mul (-0-2j) (-2+0j) 4j +mul (-0-2j) (-2+2j) (4+4j) +mul (-0-2j) (-2+16j) (32+4j) +mul (-0-2j) (-2+infj) (inf+nanj) +mul (-0-2j) (-2+nanj) (nan+nanj) +mul (-0-2j) (-0-infj) (-inf+nanj) +mul (-0-2j) (-0-16j) (-32+0j) +mul (-0-2j) (-0-2j) (-4+0j) +mul (-0-2j) (-0-0j) 0j +mul (-0-2j) (-0+0j) 0j +mul (-0-2j) (-0+2j) (4+0j) +mul (-0-2j) (-0+16j) (32+0j) +mul (-0-2j) (-0+infj) (inf+nanj) +mul (-0-2j) (-0+nanj) (nan+nanj) +mul (-0-2j) -infj (-inf+nanj) +mul (-0-2j) -16j (-32+0j) +mul (-0-2j) -2j (-4+0j) +mul (-0-2j) -0j (-0+0j) +mul (-0-2j) 0j -0j +mul (-0-2j) 2j (4-0j) +mul (-0-2j) 16j (32-0j) +mul (-0-2j) infj (inf+nanj) +mul (-0-2j) nanj (nan+nanj) +mul (-0-2j) (2-infj) (-inf+nanj) +mul (-0-2j) (2-16j) (-32-4j) +mul (-0-2j) (2-2j) (-4-4j) +mul (-0-2j) (2-0j) (-0-4j) +mul (-0-2j) (2+0j) -4j +mul (-0-2j) (2+2j) (4-4j) +mul (-0-2j) (2+16j) (32-4j) +mul (-0-2j) (2+infj) (inf+nanj) +mul (-0-2j) (2+nanj) (nan+nanj) +mul (-0-2j) (16-infj) (-inf+nanj) +mul (-0-2j) (16-16j) (-32-32j) +mul (-0-2j) (16-2j) (-4-32j) +mul (-0-2j) (16-0j) (-0-32j) +mul (-0-2j) (16+0j) -32j +mul (-0-2j) (16+2j) (4-32j) +mul (-0-2j) (16+16j) (32-32j) +mul (-0-2j) (16+infj) (inf+nanj) +mul (-0-2j) (16+nanj) (nan+nanj) +mul (-0-2j) (inf-infj) (nan+nanj) +mul (-0-2j) (inf-16j) (nan-infj) +mul (-0-2j) (inf-2j) (nan-infj) +mul (-0-2j) (inf-0j) (nan-infj) +mul (-0-2j) (inf+0j) (nan-infj) +mul (-0-2j) (inf+2j) (nan-infj) +mul (-0-2j) (inf+16j) (nan-infj) +mul (-0-2j) (inf+infj) (nan+nanj) +mul (-0-2j) (inf+nanj) (nan+nanj) +mul (-0-2j) (nan-infj) (nan+nanj) +mul (-0-2j) (nan-16j) (nan+nanj) +mul (-0-2j) (nan-2j) (nan+nanj) +mul (-0-2j) (nan-0j) (nan+nanj) +mul (-0-2j) (nan+0j) (nan+nanj) +mul (-0-2j) (nan+2j) (nan+nanj) +mul (-0-2j) (nan+16j) (nan+nanj) +mul (-0-2j) (nan+infj) (nan+nanj) +mul (-0-2j) (nan+nanj) (nan+nanj) +mul (-0-0j) (-inf-infj) (nan+nanj) +mul (-0-0j) (-inf-16j) (nan+nanj) +mul (-0-0j) (-inf-2j) (nan+nanj) +mul (-0-0j) (-inf-0j) (nan+nanj) +mul (-0-0j) (-inf+0j) (nan+nanj) +mul (-0-0j) (-inf+2j) (nan+nanj) +mul (-0-0j) (-inf+16j) (nan+nanj) +mul (-0-0j) (-inf+infj) (nan+nanj) +mul (-0-0j) (-inf+nanj) (nan+nanj) +mul (-0-0j) (-16-infj) (nan+nanj) +mul (-0-0j) (-16-16j) 0j +mul (-0-0j) (-16-2j) 0j +mul (-0-0j) (-16-0j) 0j +mul (-0-0j) (-16+0j) 0j +mul (-0-0j) (-16+2j) 0j +mul (-0-0j) (-16+16j) 0j +mul (-0-0j) (-16+infj) (nan+nanj) +mul (-0-0j) (-16+nanj) (nan+nanj) +mul (-0-0j) (-2-infj) (nan+nanj) +mul (-0-0j) (-2-16j) 0j +mul (-0-0j) (-2-2j) 0j +mul (-0-0j) (-2-0j) 0j +mul (-0-0j) (-2+0j) 0j +mul (-0-0j) (-2+2j) 0j +mul (-0-0j) (-2+16j) 0j +mul (-0-0j) (-2+infj) (nan+nanj) +mul (-0-0j) (-2+nanj) (nan+nanj) +mul (-0-0j) (-0-infj) (nan+nanj) +mul (-0-0j) (-0-16j) 0j +mul (-0-0j) (-0-2j) 0j +mul (-0-0j) (-0-0j) 0j +mul (-0-0j) (-0+0j) 0j +mul (-0-0j) (-0+2j) 0j +mul (-0-0j) (-0+16j) 0j +mul (-0-0j) (-0+infj) (nan+nanj) +mul (-0-0j) (-0+nanj) (nan+nanj) +mul (-0-0j) -infj (nan+nanj) +mul (-0-0j) -16j (-0+0j) +mul (-0-0j) -2j (-0+0j) +mul (-0-0j) -0j (-0+0j) +mul (-0-0j) 0j -0j +mul (-0-0j) 2j -0j +mul (-0-0j) 16j -0j +mul (-0-0j) infj (nan+nanj) +mul (-0-0j) nanj (nan+nanj) +mul (-0-0j) (2-infj) (nan+nanj) +mul (-0-0j) (2-16j) (-0+0j) +mul (-0-0j) (2-2j) (-0+0j) +mul (-0-0j) (2-0j) (-0+0j) +mul (-0-0j) (2+0j) -0j +mul (-0-0j) (2+2j) -0j +mul (-0-0j) (2+16j) -0j +mul (-0-0j) (2+infj) (nan+nanj) +mul (-0-0j) (2+nanj) (nan+nanj) +mul (-0-0j) (16-infj) (nan+nanj) +mul (-0-0j) (16-16j) (-0+0j) +mul (-0-0j) (16-2j) (-0+0j) +mul (-0-0j) (16-0j) (-0+0j) +mul (-0-0j) (16+0j) -0j +mul (-0-0j) (16+2j) -0j +mul (-0-0j) (16+16j) -0j +mul (-0-0j) (16+infj) (nan+nanj) +mul (-0-0j) (16+nanj) (nan+nanj) +mul (-0-0j) (inf-infj) (nan+nanj) +mul (-0-0j) (inf-16j) (nan+nanj) +mul (-0-0j) (inf-2j) (nan+nanj) +mul (-0-0j) (inf-0j) (nan+nanj) +mul (-0-0j) (inf+0j) (nan+nanj) +mul (-0-0j) (inf+2j) (nan+nanj) +mul (-0-0j) (inf+16j) (nan+nanj) +mul (-0-0j) (inf+infj) (nan+nanj) +mul (-0-0j) (inf+nanj) (nan+nanj) +mul (-0-0j) (nan-infj) (nan+nanj) +mul (-0-0j) (nan-16j) (nan+nanj) +mul (-0-0j) (nan-2j) (nan+nanj) +mul (-0-0j) (nan-0j) (nan+nanj) +mul (-0-0j) (nan+0j) (nan+nanj) +mul (-0-0j) (nan+2j) (nan+nanj) +mul (-0-0j) (nan+16j) (nan+nanj) +mul (-0-0j) (nan+infj) (nan+nanj) +mul (-0-0j) (nan+nanj) (nan+nanj) +mul (-0+0j) (-inf-infj) (nan+nanj) +mul (-0+0j) (-inf-16j) (nan+nanj) +mul (-0+0j) (-inf-2j) (nan+nanj) +mul (-0+0j) (-inf-0j) (nan+nanj) +mul (-0+0j) (-inf+0j) (nan+nanj) +mul (-0+0j) (-inf+2j) (nan+nanj) +mul (-0+0j) (-inf+16j) (nan+nanj) +mul (-0+0j) (-inf+infj) (nan+nanj) +mul (-0+0j) (-inf+nanj) (nan+nanj) +mul (-0+0j) (-16-infj) (nan+nanj) +mul (-0+0j) (-16-16j) 0j +mul (-0+0j) (-16-2j) 0j +mul (-0+0j) (-16-0j) 0j +mul (-0+0j) (-16+0j) -0j +mul (-0+0j) (-16+2j) -0j +mul (-0+0j) (-16+16j) -0j +mul (-0+0j) (-16+infj) (nan+nanj) +mul (-0+0j) (-16+nanj) (nan+nanj) +mul (-0+0j) (-2-infj) (nan+nanj) +mul (-0+0j) (-2-16j) 0j +mul (-0+0j) (-2-2j) 0j +mul (-0+0j) (-2-0j) 0j +mul (-0+0j) (-2+0j) -0j +mul (-0+0j) (-2+2j) -0j +mul (-0+0j) (-2+16j) -0j +mul (-0+0j) (-2+infj) (nan+nanj) +mul (-0+0j) (-2+nanj) (nan+nanj) +mul (-0+0j) (-0-infj) (nan+nanj) +mul (-0+0j) (-0-16j) 0j +mul (-0+0j) (-0-2j) 0j +mul (-0+0j) (-0-0j) 0j +mul (-0+0j) (-0+0j) -0j +mul (-0+0j) (-0+2j) -0j +mul (-0+0j) (-0+16j) -0j +mul (-0+0j) (-0+infj) (nan+nanj) +mul (-0+0j) (-0+nanj) (nan+nanj) +mul (-0+0j) -infj (nan+nanj) +mul (-0+0j) -16j 0j +mul (-0+0j) -2j 0j +mul (-0+0j) -0j 0j +mul (-0+0j) 0j (-0+0j) +mul (-0+0j) 2j (-0+0j) +mul (-0+0j) 16j (-0+0j) +mul (-0+0j) infj (nan+nanj) +mul (-0+0j) nanj (nan+nanj) +mul (-0+0j) (2-infj) (nan+nanj) +mul (-0+0j) (2-16j) 0j +mul (-0+0j) (2-2j) 0j +mul (-0+0j) (2-0j) 0j +mul (-0+0j) (2+0j) (-0+0j) +mul (-0+0j) (2+2j) (-0+0j) +mul (-0+0j) (2+16j) (-0+0j) +mul (-0+0j) (2+infj) (nan+nanj) +mul (-0+0j) (2+nanj) (nan+nanj) +mul (-0+0j) (16-infj) (nan+nanj) +mul (-0+0j) (16-16j) 0j +mul (-0+0j) (16-2j) 0j +mul (-0+0j) (16-0j) 0j +mul (-0+0j) (16+0j) (-0+0j) +mul (-0+0j) (16+2j) (-0+0j) +mul (-0+0j) (16+16j) (-0+0j) +mul (-0+0j) (16+infj) (nan+nanj) +mul (-0+0j) (16+nanj) (nan+nanj) +mul (-0+0j) (inf-infj) (nan+nanj) +mul (-0+0j) (inf-16j) (nan+nanj) +mul (-0+0j) (inf-2j) (nan+nanj) +mul (-0+0j) (inf-0j) (nan+nanj) +mul (-0+0j) (inf+0j) (nan+nanj) +mul (-0+0j) (inf+2j) (nan+nanj) +mul (-0+0j) (inf+16j) (nan+nanj) +mul (-0+0j) (inf+infj) (nan+nanj) +mul (-0+0j) (inf+nanj) (nan+nanj) +mul (-0+0j) (nan-infj) (nan+nanj) +mul (-0+0j) (nan-16j) (nan+nanj) +mul (-0+0j) (nan-2j) (nan+nanj) +mul (-0+0j) (nan-0j) (nan+nanj) +mul (-0+0j) (nan+0j) (nan+nanj) +mul (-0+0j) (nan+2j) (nan+nanj) +mul (-0+0j) (nan+16j) (nan+nanj) +mul (-0+0j) (nan+infj) (nan+nanj) +mul (-0+0j) (nan+nanj) (nan+nanj) +mul (-0+2j) (-inf-infj) (nan+nanj) +mul (-0+2j) (-inf-16j) (nan-infj) +mul (-0+2j) (-inf-2j) (nan-infj) +mul (-0+2j) (-inf-0j) (nan-infj) +mul (-0+2j) (-inf+0j) (nan-infj) +mul (-0+2j) (-inf+2j) (nan-infj) +mul (-0+2j) (-inf+16j) (nan-infj) +mul (-0+2j) (-inf+infj) (nan+nanj) +mul (-0+2j) (-inf+nanj) (nan+nanj) +mul (-0+2j) (-16-infj) (inf+nanj) +mul (-0+2j) (-16-16j) (32-32j) +mul (-0+2j) (-16-2j) (4-32j) +mul (-0+2j) (-16-0j) -32j +mul (-0+2j) (-16+0j) -32j +mul (-0+2j) (-16+2j) (-4-32j) +mul (-0+2j) (-16+16j) (-32-32j) +mul (-0+2j) (-16+infj) (-inf+nanj) +mul (-0+2j) (-16+nanj) (nan+nanj) +mul (-0+2j) (-2-infj) (inf+nanj) +mul (-0+2j) (-2-16j) (32-4j) +mul (-0+2j) (-2-2j) (4-4j) +mul (-0+2j) (-2-0j) -4j +mul (-0+2j) (-2+0j) -4j +mul (-0+2j) (-2+2j) (-4-4j) +mul (-0+2j) (-2+16j) (-32-4j) +mul (-0+2j) (-2+infj) (-inf+nanj) +mul (-0+2j) (-2+nanj) (nan+nanj) +mul (-0+2j) (-0-infj) (inf+nanj) +mul (-0+2j) (-0-16j) (32+0j) +mul (-0+2j) (-0-2j) (4+0j) +mul (-0+2j) (-0-0j) 0j +mul (-0+2j) (-0+0j) -0j +mul (-0+2j) (-0+2j) (-4-0j) +mul (-0+2j) (-0+16j) (-32-0j) +mul (-0+2j) (-0+infj) (-inf+nanj) +mul (-0+2j) (-0+nanj) (nan+nanj) +mul (-0+2j) -infj (inf+nanj) +mul (-0+2j) -16j (32+0j) +mul (-0+2j) -2j (4+0j) +mul (-0+2j) -0j 0j +mul (-0+2j) 0j (-0+0j) +mul (-0+2j) 2j (-4+0j) +mul (-0+2j) 16j (-32+0j) +mul (-0+2j) infj (-inf+nanj) +mul (-0+2j) nanj (nan+nanj) +mul (-0+2j) (2-infj) (inf+nanj) +mul (-0+2j) (2-16j) (32+4j) +mul (-0+2j) (2-2j) (4+4j) +mul (-0+2j) (2-0j) 4j +mul (-0+2j) (2+0j) (-0+4j) +mul (-0+2j) (2+2j) (-4+4j) +mul (-0+2j) (2+16j) (-32+4j) +mul (-0+2j) (2+infj) (-inf+nanj) +mul (-0+2j) (2+nanj) (nan+nanj) +mul (-0+2j) (16-infj) (inf+nanj) +mul (-0+2j) (16-16j) (32+32j) +mul (-0+2j) (16-2j) (4+32j) +mul (-0+2j) (16-0j) 32j +mul (-0+2j) (16+0j) (-0+32j) +mul (-0+2j) (16+2j) (-4+32j) +mul (-0+2j) (16+16j) (-32+32j) +mul (-0+2j) (16+infj) (-inf+nanj) +mul (-0+2j) (16+nanj) (nan+nanj) +mul (-0+2j) (inf-infj) (nan+nanj) +mul (-0+2j) (inf-16j) (nan+infj) +mul (-0+2j) (inf-2j) (nan+infj) +mul (-0+2j) (inf-0j) (nan+infj) +mul (-0+2j) (inf+0j) (nan+infj) +mul (-0+2j) (inf+2j) (nan+infj) +mul (-0+2j) (inf+16j) (nan+infj) +mul (-0+2j) (inf+infj) (nan+nanj) +mul (-0+2j) (inf+nanj) (nan+nanj) +mul (-0+2j) (nan-infj) (nan+nanj) +mul (-0+2j) (nan-16j) (nan+nanj) +mul (-0+2j) (nan-2j) (nan+nanj) +mul (-0+2j) (nan-0j) (nan+nanj) +mul (-0+2j) (nan+0j) (nan+nanj) +mul (-0+2j) (nan+2j) (nan+nanj) +mul (-0+2j) (nan+16j) (nan+nanj) +mul (-0+2j) (nan+infj) (nan+nanj) +mul (-0+2j) (nan+nanj) (nan+nanj) +mul (-0+16j) (-inf-infj) (nan+nanj) +mul (-0+16j) (-inf-16j) (nan-infj) +mul (-0+16j) (-inf-2j) (nan-infj) +mul (-0+16j) (-inf-0j) (nan-infj) +mul (-0+16j) (-inf+0j) (nan-infj) +mul (-0+16j) (-inf+2j) (nan-infj) +mul (-0+16j) (-inf+16j) (nan-infj) +mul (-0+16j) (-inf+infj) (nan+nanj) +mul (-0+16j) (-inf+nanj) (nan+nanj) +mul (-0+16j) (-16-infj) (inf+nanj) +mul (-0+16j) (-16-16j) (256-256j) +mul (-0+16j) (-16-2j) (32-256j) +mul (-0+16j) (-16-0j) -256j +mul (-0+16j) (-16+0j) -256j +mul (-0+16j) (-16+2j) (-32-256j) +mul (-0+16j) (-16+16j) (-256-256j) +mul (-0+16j) (-16+infj) (-inf+nanj) +mul (-0+16j) (-16+nanj) (nan+nanj) +mul (-0+16j) (-2-infj) (inf+nanj) +mul (-0+16j) (-2-16j) (256-32j) +mul (-0+16j) (-2-2j) (32-32j) +mul (-0+16j) (-2-0j) -32j +mul (-0+16j) (-2+0j) -32j +mul (-0+16j) (-2+2j) (-32-32j) +mul (-0+16j) (-2+16j) (-256-32j) +mul (-0+16j) (-2+infj) (-inf+nanj) +mul (-0+16j) (-2+nanj) (nan+nanj) +mul (-0+16j) (-0-infj) (inf+nanj) +mul (-0+16j) (-0-16j) (256+0j) +mul (-0+16j) (-0-2j) (32+0j) +mul (-0+16j) (-0-0j) 0j +mul (-0+16j) (-0+0j) -0j +mul (-0+16j) (-0+2j) (-32-0j) +mul (-0+16j) (-0+16j) (-256-0j) +mul (-0+16j) (-0+infj) (-inf+nanj) +mul (-0+16j) (-0+nanj) (nan+nanj) +mul (-0+16j) -infj (inf+nanj) +mul (-0+16j) -16j (256+0j) +mul (-0+16j) -2j (32+0j) +mul (-0+16j) -0j 0j +mul (-0+16j) 0j (-0+0j) +mul (-0+16j) 2j (-32+0j) +mul (-0+16j) 16j (-256+0j) +mul (-0+16j) infj (-inf+nanj) +mul (-0+16j) nanj (nan+nanj) +mul (-0+16j) (2-infj) (inf+nanj) +mul (-0+16j) (2-16j) (256+32j) +mul (-0+16j) (2-2j) (32+32j) +mul (-0+16j) (2-0j) 32j +mul (-0+16j) (2+0j) (-0+32j) +mul (-0+16j) (2+2j) (-32+32j) +mul (-0+16j) (2+16j) (-256+32j) +mul (-0+16j) (2+infj) (-inf+nanj) +mul (-0+16j) (2+nanj) (nan+nanj) +mul (-0+16j) (16-infj) (inf+nanj) +mul (-0+16j) (16-16j) (256+256j) +mul (-0+16j) (16-2j) (32+256j) +mul (-0+16j) (16-0j) 256j +mul (-0+16j) (16+0j) (-0+256j) +mul (-0+16j) (16+2j) (-32+256j) +mul (-0+16j) (16+16j) (-256+256j) +mul (-0+16j) (16+infj) (-inf+nanj) +mul (-0+16j) (16+nanj) (nan+nanj) +mul (-0+16j) (inf-infj) (nan+nanj) +mul (-0+16j) (inf-16j) (nan+infj) +mul (-0+16j) (inf-2j) (nan+infj) +mul (-0+16j) (inf-0j) (nan+infj) +mul (-0+16j) (inf+0j) (nan+infj) +mul (-0+16j) (inf+2j) (nan+infj) +mul (-0+16j) (inf+16j) (nan+infj) +mul (-0+16j) (inf+infj) (nan+nanj) +mul (-0+16j) (inf+nanj) (nan+nanj) +mul (-0+16j) (nan-infj) (nan+nanj) +mul (-0+16j) (nan-16j) (nan+nanj) +mul (-0+16j) (nan-2j) (nan+nanj) +mul (-0+16j) (nan-0j) (nan+nanj) +mul (-0+16j) (nan+0j) (nan+nanj) +mul (-0+16j) (nan+2j) (nan+nanj) +mul (-0+16j) (nan+16j) (nan+nanj) +mul (-0+16j) (nan+infj) (nan+nanj) +mul (-0+16j) (nan+nanj) (nan+nanj) +mul (-0+infj) (-inf-infj) (nan+nanj) +mul (-0+infj) (-inf-16j) (nan-infj) +mul (-0+infj) (-inf-2j) (nan-infj) +mul (-0+infj) (-inf-0j) (nan-infj) +mul (-0+infj) (-inf+0j) (nan-infj) +mul (-0+infj) (-inf+2j) (nan-infj) +mul (-0+infj) (-inf+16j) (nan-infj) +mul (-0+infj) (-inf+infj) (nan+nanj) +mul (-0+infj) (-inf+nanj) (nan+nanj) +mul (-0+infj) (-16-infj) (inf+nanj) +mul (-0+infj) (-16-16j) (inf-infj) +mul (-0+infj) (-16-2j) (inf-infj) +mul (-0+infj) (-16-0j) (nan-infj) +mul (-0+infj) (-16+0j) (nan-infj) +mul (-0+infj) (-16+2j) (-inf-infj) +mul (-0+infj) (-16+16j) (-inf-infj) +mul (-0+infj) (-16+infj) (-inf+nanj) +mul (-0+infj) (-16+nanj) (nan+nanj) +mul (-0+infj) (-2-infj) (inf+nanj) +mul (-0+infj) (-2-16j) (inf-infj) +mul (-0+infj) (-2-2j) (inf-infj) +mul (-0+infj) (-2-0j) (nan-infj) +mul (-0+infj) (-2+0j) (nan-infj) +mul (-0+infj) (-2+2j) (-inf-infj) +mul (-0+infj) (-2+16j) (-inf-infj) +mul (-0+infj) (-2+infj) (-inf+nanj) +mul (-0+infj) (-2+nanj) (nan+nanj) +mul (-0+infj) (-0-infj) (inf+nanj) +mul (-0+infj) (-0-16j) (inf+nanj) +mul (-0+infj) (-0-2j) (inf+nanj) +mul (-0+infj) (-0-0j) (nan+nanj) +mul (-0+infj) (-0+0j) (nan+nanj) +mul (-0+infj) (-0+2j) (-inf+nanj) +mul (-0+infj) (-0+16j) (-inf+nanj) +mul (-0+infj) (-0+infj) (-inf+nanj) +mul (-0+infj) (-0+nanj) (nan+nanj) +mul (-0+infj) -infj (inf+nanj) +mul (-0+infj) -16j (inf+nanj) +mul (-0+infj) -2j (inf+nanj) +mul (-0+infj) -0j (nan+nanj) +mul (-0+infj) 0j (nan+nanj) +mul (-0+infj) 2j (-inf+nanj) +mul (-0+infj) 16j (-inf+nanj) +mul (-0+infj) infj (-inf+nanj) +mul (-0+infj) nanj (nan+nanj) +mul (-0+infj) (2-infj) (inf+nanj) +mul (-0+infj) (2-16j) (inf+infj) +mul (-0+infj) (2-2j) (inf+infj) +mul (-0+infj) (2-0j) (nan+infj) +mul (-0+infj) (2+0j) (nan+infj) +mul (-0+infj) (2+2j) (-inf+infj) +mul (-0+infj) (2+16j) (-inf+infj) +mul (-0+infj) (2+infj) (-inf+nanj) +mul (-0+infj) (2+nanj) (nan+nanj) +mul (-0+infj) (16-infj) (inf+nanj) +mul (-0+infj) (16-16j) (inf+infj) +mul (-0+infj) (16-2j) (inf+infj) +mul (-0+infj) (16-0j) (nan+infj) +mul (-0+infj) (16+0j) (nan+infj) +mul (-0+infj) (16+2j) (-inf+infj) +mul (-0+infj) (16+16j) (-inf+infj) +mul (-0+infj) (16+infj) (-inf+nanj) +mul (-0+infj) (16+nanj) (nan+nanj) +mul (-0+infj) (inf-infj) (nan+nanj) +mul (-0+infj) (inf-16j) (nan+infj) +mul (-0+infj) (inf-2j) (nan+infj) +mul (-0+infj) (inf-0j) (nan+infj) +mul (-0+infj) (inf+0j) (nan+infj) +mul (-0+infj) (inf+2j) (nan+infj) +mul (-0+infj) (inf+16j) (nan+infj) +mul (-0+infj) (inf+infj) (nan+nanj) +mul (-0+infj) (inf+nanj) (nan+nanj) +mul (-0+infj) (nan-infj) (nan+nanj) +mul (-0+infj) (nan-16j) (nan+nanj) +mul (-0+infj) (nan-2j) (nan+nanj) +mul (-0+infj) (nan-0j) (nan+nanj) +mul (-0+infj) (nan+0j) (nan+nanj) +mul (-0+infj) (nan+2j) (nan+nanj) +mul (-0+infj) (nan+16j) (nan+nanj) +mul (-0+infj) (nan+infj) (nan+nanj) +mul (-0+infj) (nan+nanj) (nan+nanj) +mul (-0+nanj) (-inf-infj) (nan+nanj) +mul (-0+nanj) (-inf-16j) (nan+nanj) +mul (-0+nanj) (-inf-2j) (nan+nanj) +mul (-0+nanj) (-inf-0j) (nan+nanj) +mul (-0+nanj) (-inf+0j) (nan+nanj) +mul (-0+nanj) (-inf+2j) (nan+nanj) +mul (-0+nanj) (-inf+16j) (nan+nanj) +mul (-0+nanj) (-inf+infj) (nan+nanj) +mul (-0+nanj) (-inf+nanj) (nan+nanj) +mul (-0+nanj) (-16-infj) (nan+nanj) +mul (-0+nanj) (-16-16j) (nan+nanj) +mul (-0+nanj) (-16-2j) (nan+nanj) +mul (-0+nanj) (-16-0j) (nan+nanj) +mul (-0+nanj) (-16+0j) (nan+nanj) +mul (-0+nanj) (-16+2j) (nan+nanj) +mul (-0+nanj) (-16+16j) (nan+nanj) +mul (-0+nanj) (-16+infj) (nan+nanj) +mul (-0+nanj) (-16+nanj) (nan+nanj) +mul (-0+nanj) (-2-infj) (nan+nanj) +mul (-0+nanj) (-2-16j) (nan+nanj) +mul (-0+nanj) (-2-2j) (nan+nanj) +mul (-0+nanj) (-2-0j) (nan+nanj) +mul (-0+nanj) (-2+0j) (nan+nanj) +mul (-0+nanj) (-2+2j) (nan+nanj) +mul (-0+nanj) (-2+16j) (nan+nanj) +mul (-0+nanj) (-2+infj) (nan+nanj) +mul (-0+nanj) (-2+nanj) (nan+nanj) +mul (-0+nanj) (-0-infj) (nan+nanj) +mul (-0+nanj) (-0-16j) (nan+nanj) +mul (-0+nanj) (-0-2j) (nan+nanj) +mul (-0+nanj) (-0-0j) (nan+nanj) +mul (-0+nanj) (-0+0j) (nan+nanj) +mul (-0+nanj) (-0+2j) (nan+nanj) +mul (-0+nanj) (-0+16j) (nan+nanj) +mul (-0+nanj) (-0+infj) (nan+nanj) +mul (-0+nanj) (-0+nanj) (nan+nanj) +mul (-0+nanj) -infj (nan+nanj) +mul (-0+nanj) -16j (nan+nanj) +mul (-0+nanj) -2j (nan+nanj) +mul (-0+nanj) -0j (nan+nanj) +mul (-0+nanj) 0j (nan+nanj) +mul (-0+nanj) 2j (nan+nanj) +mul (-0+nanj) 16j (nan+nanj) +mul (-0+nanj) infj (nan+nanj) +mul (-0+nanj) nanj (nan+nanj) +mul (-0+nanj) (2-infj) (nan+nanj) +mul (-0+nanj) (2-16j) (nan+nanj) +mul (-0+nanj) (2-2j) (nan+nanj) +mul (-0+nanj) (2-0j) (nan+nanj) +mul (-0+nanj) (2+0j) (nan+nanj) +mul (-0+nanj) (2+2j) (nan+nanj) +mul (-0+nanj) (2+16j) (nan+nanj) +mul (-0+nanj) (2+infj) (nan+nanj) +mul (-0+nanj) (2+nanj) (nan+nanj) +mul (-0+nanj) (16-infj) (nan+nanj) +mul (-0+nanj) (16-16j) (nan+nanj) +mul (-0+nanj) (16-2j) (nan+nanj) +mul (-0+nanj) (16-0j) (nan+nanj) +mul (-0+nanj) (16+0j) (nan+nanj) +mul (-0+nanj) (16+2j) (nan+nanj) +mul (-0+nanj) (16+16j) (nan+nanj) +mul (-0+nanj) (16+infj) (nan+nanj) +mul (-0+nanj) (16+nanj) (nan+nanj) +mul (-0+nanj) (inf-infj) (nan+nanj) +mul (-0+nanj) (inf-16j) (nan+nanj) +mul (-0+nanj) (inf-2j) (nan+nanj) +mul (-0+nanj) (inf-0j) (nan+nanj) +mul (-0+nanj) (inf+0j) (nan+nanj) +mul (-0+nanj) (inf+2j) (nan+nanj) +mul (-0+nanj) (inf+16j) (nan+nanj) +mul (-0+nanj) (inf+infj) (nan+nanj) +mul (-0+nanj) (inf+nanj) (nan+nanj) +mul (-0+nanj) (nan-infj) (nan+nanj) +mul (-0+nanj) (nan-16j) (nan+nanj) +mul (-0+nanj) (nan-2j) (nan+nanj) +mul (-0+nanj) (nan-0j) (nan+nanj) +mul (-0+nanj) (nan+0j) (nan+nanj) +mul (-0+nanj) (nan+2j) (nan+nanj) +mul (-0+nanj) (nan+16j) (nan+nanj) +mul (-0+nanj) (nan+infj) (nan+nanj) +mul (-0+nanj) (nan+nanj) (nan+nanj) +mul -infj (-inf-infj) (nan+nanj) +mul -infj (-inf-16j) (nan+infj) +mul -infj (-inf-2j) (nan+infj) +mul -infj (-inf-0j) (nan+infj) +mul -infj (-inf+0j) (nan+infj) +mul -infj (-inf+2j) (nan+infj) +mul -infj (-inf+16j) (nan+infj) +mul -infj (-inf+infj) (nan+nanj) +mul -infj (-inf+nanj) (nan+nanj) +mul -infj (-16-infj) (-inf+nanj) +mul -infj (-16-16j) (-inf+infj) +mul -infj (-16-2j) (-inf+infj) +mul -infj (-16-0j) (nan+infj) +mul -infj (-16+0j) (nan+infj) +mul -infj (-16+2j) (inf+infj) +mul -infj (-16+16j) (inf+infj) +mul -infj (-16+infj) (inf+nanj) +mul -infj (-16+nanj) (nan+nanj) +mul -infj (-2-infj) (-inf+nanj) +mul -infj (-2-16j) (-inf+infj) +mul -infj (-2-2j) (-inf+infj) +mul -infj (-2-0j) (nan+infj) +mul -infj (-2+0j) (nan+infj) +mul -infj (-2+2j) (inf+infj) +mul -infj (-2+16j) (inf+infj) +mul -infj (-2+infj) (inf+nanj) +mul -infj (-2+nanj) (nan+nanj) +mul -infj (-0-infj) (-inf+nanj) +mul -infj (-0-16j) (-inf+nanj) +mul -infj (-0-2j) (-inf+nanj) +mul -infj (-0-0j) (nan+nanj) +mul -infj (-0+0j) (nan+nanj) +mul -infj (-0+2j) (inf+nanj) +mul -infj (-0+16j) (inf+nanj) +mul -infj (-0+infj) (inf+nanj) +mul -infj (-0+nanj) (nan+nanj) +mul -infj -infj (-inf+nanj) +mul -infj -16j (-inf+nanj) +mul -infj -2j (-inf+nanj) +mul -infj -0j (nan+nanj) +mul -infj 0j (nan+nanj) +mul -infj 2j (inf+nanj) +mul -infj 16j (inf+nanj) +mul -infj infj (inf+nanj) +mul -infj nanj (nan+nanj) +mul -infj (2-infj) (-inf+nanj) +mul -infj (2-16j) (-inf-infj) +mul -infj (2-2j) (-inf-infj) +mul -infj (2-0j) (nan-infj) +mul -infj (2+0j) (nan-infj) +mul -infj (2+2j) (inf-infj) +mul -infj (2+16j) (inf-infj) +mul -infj (2+infj) (inf+nanj) +mul -infj (2+nanj) (nan+nanj) +mul -infj (16-infj) (-inf+nanj) +mul -infj (16-16j) (-inf-infj) +mul -infj (16-2j) (-inf-infj) +mul -infj (16-0j) (nan-infj) +mul -infj (16+0j) (nan-infj) +mul -infj (16+2j) (inf-infj) +mul -infj (16+16j) (inf-infj) +mul -infj (16+infj) (inf+nanj) +mul -infj (16+nanj) (nan+nanj) +mul -infj (inf-infj) (nan+nanj) +mul -infj (inf-16j) (nan-infj) +mul -infj (inf-2j) (nan-infj) +mul -infj (inf-0j) (nan-infj) +mul -infj (inf+0j) (nan-infj) +mul -infj (inf+2j) (nan-infj) +mul -infj (inf+16j) (nan-infj) +mul -infj (inf+infj) (nan+nanj) +mul -infj (inf+nanj) (nan+nanj) +mul -infj (nan-infj) (nan+nanj) +mul -infj (nan-16j) (nan+nanj) +mul -infj (nan-2j) (nan+nanj) +mul -infj (nan-0j) (nan+nanj) +mul -infj (nan+0j) (nan+nanj) +mul -infj (nan+2j) (nan+nanj) +mul -infj (nan+16j) (nan+nanj) +mul -infj (nan+infj) (nan+nanj) +mul -infj (nan+nanj) (nan+nanj) +mul -16j (-inf-infj) (nan+nanj) +mul -16j (-inf-16j) (nan+infj) +mul -16j (-inf-2j) (nan+infj) +mul -16j (-inf-0j) (nan+infj) +mul -16j (-inf+0j) (nan+infj) +mul -16j (-inf+2j) (nan+infj) +mul -16j (-inf+16j) (nan+infj) +mul -16j (-inf+infj) (nan+nanj) +mul -16j (-inf+nanj) (nan+nanj) +mul -16j (-16-infj) (-inf+nanj) +mul -16j (-16-16j) (-256+256j) +mul -16j (-16-2j) (-32+256j) +mul -16j (-16-0j) (-0+256j) +mul -16j (-16+0j) 256j +mul -16j (-16+2j) (32+256j) +mul -16j (-16+16j) (256+256j) +mul -16j (-16+infj) (inf+nanj) +mul -16j (-16+nanj) (nan+nanj) +mul -16j (-2-infj) (-inf+nanj) +mul -16j (-2-16j) (-256+32j) +mul -16j (-2-2j) (-32+32j) +mul -16j (-2-0j) (-0+32j) +mul -16j (-2+0j) 32j +mul -16j (-2+2j) (32+32j) +mul -16j (-2+16j) (256+32j) +mul -16j (-2+infj) (inf+nanj) +mul -16j (-2+nanj) (nan+nanj) +mul -16j (-0-infj) (-inf+nanj) +mul -16j (-0-16j) (-256+0j) +mul -16j (-0-2j) (-32+0j) +mul -16j (-0-0j) (-0+0j) +mul -16j (-0+0j) 0j +mul -16j (-0+2j) (32+0j) +mul -16j (-0+16j) (256+0j) +mul -16j (-0+infj) (inf+nanj) +mul -16j (-0+nanj) (nan+nanj) +mul -16j -infj (-inf+nanj) +mul -16j -16j (-256-0j) +mul -16j -2j (-32-0j) +mul -16j -0j -0j +mul -16j 0j 0j +mul -16j 2j (32+0j) +mul -16j 16j (256+0j) +mul -16j infj (inf+nanj) +mul -16j nanj (nan+nanj) +mul -16j (2-infj) (-inf+nanj) +mul -16j (2-16j) (-256-32j) +mul -16j (2-2j) (-32-32j) +mul -16j (2-0j) -32j +mul -16j (2+0j) -32j +mul -16j (2+2j) (32-32j) +mul -16j (2+16j) (256-32j) +mul -16j (2+infj) (inf+nanj) +mul -16j (2+nanj) (nan+nanj) +mul -16j (16-infj) (-inf+nanj) +mul -16j (16-16j) (-256-256j) +mul -16j (16-2j) (-32-256j) +mul -16j (16-0j) -256j +mul -16j (16+0j) -256j +mul -16j (16+2j) (32-256j) +mul -16j (16+16j) (256-256j) +mul -16j (16+infj) (inf+nanj) +mul -16j (16+nanj) (nan+nanj) +mul -16j (inf-infj) (nan+nanj) +mul -16j (inf-16j) (nan-infj) +mul -16j (inf-2j) (nan-infj) +mul -16j (inf-0j) (nan-infj) +mul -16j (inf+0j) (nan-infj) +mul -16j (inf+2j) (nan-infj) +mul -16j (inf+16j) (nan-infj) +mul -16j (inf+infj) (nan+nanj) +mul -16j (inf+nanj) (nan+nanj) +mul -16j (nan-infj) (nan+nanj) +mul -16j (nan-16j) (nan+nanj) +mul -16j (nan-2j) (nan+nanj) +mul -16j (nan-0j) (nan+nanj) +mul -16j (nan+0j) (nan+nanj) +mul -16j (nan+2j) (nan+nanj) +mul -16j (nan+16j) (nan+nanj) +mul -16j (nan+infj) (nan+nanj) +mul -16j (nan+nanj) (nan+nanj) +mul -2j (-inf-infj) (nan+nanj) +mul -2j (-inf-16j) (nan+infj) +mul -2j (-inf-2j) (nan+infj) +mul -2j (-inf-0j) (nan+infj) +mul -2j (-inf+0j) (nan+infj) +mul -2j (-inf+2j) (nan+infj) +mul -2j (-inf+16j) (nan+infj) +mul -2j (-inf+infj) (nan+nanj) +mul -2j (-inf+nanj) (nan+nanj) +mul -2j (-16-infj) (-inf+nanj) +mul -2j (-16-16j) (-32+32j) +mul -2j (-16-2j) (-4+32j) +mul -2j (-16-0j) (-0+32j) +mul -2j (-16+0j) 32j +mul -2j (-16+2j) (4+32j) +mul -2j (-16+16j) (32+32j) +mul -2j (-16+infj) (inf+nanj) +mul -2j (-16+nanj) (nan+nanj) +mul -2j (-2-infj) (-inf+nanj) +mul -2j (-2-16j) (-32+4j) +mul -2j (-2-2j) (-4+4j) +mul -2j (-2-0j) (-0+4j) +mul -2j (-2+0j) 4j +mul -2j (-2+2j) (4+4j) +mul -2j (-2+16j) (32+4j) +mul -2j (-2+infj) (inf+nanj) +mul -2j (-2+nanj) (nan+nanj) +mul -2j (-0-infj) (-inf+nanj) +mul -2j (-0-16j) (-32+0j) +mul -2j (-0-2j) (-4+0j) +mul -2j (-0-0j) (-0+0j) +mul -2j (-0+0j) 0j +mul -2j (-0+2j) (4+0j) +mul -2j (-0+16j) (32+0j) +mul -2j (-0+infj) (inf+nanj) +mul -2j (-0+nanj) (nan+nanj) +mul -2j -infj (-inf+nanj) +mul -2j -16j (-32-0j) +mul -2j -2j (-4-0j) +mul -2j -0j -0j +mul -2j 0j 0j +mul -2j 2j (4+0j) +mul -2j 16j (32+0j) +mul -2j infj (inf+nanj) +mul -2j nanj (nan+nanj) +mul -2j (2-infj) (-inf+nanj) +mul -2j (2-16j) (-32-4j) +mul -2j (2-2j) (-4-4j) +mul -2j (2-0j) -4j +mul -2j (2+0j) -4j +mul -2j (2+2j) (4-4j) +mul -2j (2+16j) (32-4j) +mul -2j (2+infj) (inf+nanj) +mul -2j (2+nanj) (nan+nanj) +mul -2j (16-infj) (-inf+nanj) +mul -2j (16-16j) (-32-32j) +mul -2j (16-2j) (-4-32j) +mul -2j (16-0j) -32j +mul -2j (16+0j) -32j +mul -2j (16+2j) (4-32j) +mul -2j (16+16j) (32-32j) +mul -2j (16+infj) (inf+nanj) +mul -2j (16+nanj) (nan+nanj) +mul -2j (inf-infj) (nan+nanj) +mul -2j (inf-16j) (nan-infj) +mul -2j (inf-2j) (nan-infj) +mul -2j (inf-0j) (nan-infj) +mul -2j (inf+0j) (nan-infj) +mul -2j (inf+2j) (nan-infj) +mul -2j (inf+16j) (nan-infj) +mul -2j (inf+infj) (nan+nanj) +mul -2j (inf+nanj) (nan+nanj) +mul -2j (nan-infj) (nan+nanj) +mul -2j (nan-16j) (nan+nanj) +mul -2j (nan-2j) (nan+nanj) +mul -2j (nan-0j) (nan+nanj) +mul -2j (nan+0j) (nan+nanj) +mul -2j (nan+2j) (nan+nanj) +mul -2j (nan+16j) (nan+nanj) +mul -2j (nan+infj) (nan+nanj) +mul -2j (nan+nanj) (nan+nanj) +mul -0j (-inf-infj) (nan+nanj) +mul -0j (-inf-16j) (nan+nanj) +mul -0j (-inf-2j) (nan+nanj) +mul -0j (-inf-0j) (nan+nanj) +mul -0j (-inf+0j) (nan+nanj) +mul -0j (-inf+2j) (nan+nanj) +mul -0j (-inf+16j) (nan+nanj) +mul -0j (-inf+infj) (nan+nanj) +mul -0j (-inf+nanj) (nan+nanj) +mul -0j (-16-infj) (nan+nanj) +mul -0j (-16-16j) (-0+0j) +mul -0j (-16-2j) (-0+0j) +mul -0j (-16-0j) (-0+0j) +mul -0j (-16+0j) 0j +mul -0j (-16+2j) 0j +mul -0j (-16+16j) 0j +mul -0j (-16+infj) (nan+nanj) +mul -0j (-16+nanj) (nan+nanj) +mul -0j (-2-infj) (nan+nanj) +mul -0j (-2-16j) (-0+0j) +mul -0j (-2-2j) (-0+0j) +mul -0j (-2-0j) (-0+0j) +mul -0j (-2+0j) 0j +mul -0j (-2+2j) 0j +mul -0j (-2+16j) 0j +mul -0j (-2+infj) (nan+nanj) +mul -0j (-2+nanj) (nan+nanj) +mul -0j (-0-infj) (nan+nanj) +mul -0j (-0-16j) (-0+0j) +mul -0j (-0-2j) (-0+0j) +mul -0j (-0-0j) (-0+0j) +mul -0j (-0+0j) 0j +mul -0j (-0+2j) 0j +mul -0j (-0+16j) 0j +mul -0j (-0+infj) (nan+nanj) +mul -0j (-0+nanj) (nan+nanj) +mul -0j -infj (nan+nanj) +mul -0j -16j -0j +mul -0j -2j -0j +mul -0j -0j -0j +mul -0j 0j 0j +mul -0j 2j 0j +mul -0j 16j 0j +mul -0j infj (nan+nanj) +mul -0j nanj (nan+nanj) +mul -0j (2-infj) (nan+nanj) +mul -0j (2-16j) -0j +mul -0j (2-2j) -0j +mul -0j (2-0j) -0j +mul -0j (2+0j) 0j +mul -0j (2+2j) 0j +mul -0j (2+16j) 0j +mul -0j (2+infj) (nan+nanj) +mul -0j (2+nanj) (nan+nanj) +mul -0j (16-infj) (nan+nanj) +mul -0j (16-16j) -0j +mul -0j (16-2j) -0j +mul -0j (16-0j) -0j +mul -0j (16+0j) 0j +mul -0j (16+2j) 0j +mul -0j (16+16j) 0j +mul -0j (16+infj) (nan+nanj) +mul -0j (16+nanj) (nan+nanj) +mul -0j (inf-infj) (nan+nanj) +mul -0j (inf-16j) (nan+nanj) +mul -0j (inf-2j) (nan+nanj) +mul -0j (inf-0j) (nan+nanj) +mul -0j (inf+0j) (nan+nanj) +mul -0j (inf+2j) (nan+nanj) +mul -0j (inf+16j) (nan+nanj) +mul -0j (inf+infj) (nan+nanj) +mul -0j (inf+nanj) (nan+nanj) +mul -0j (nan-infj) (nan+nanj) +mul -0j (nan-16j) (nan+nanj) +mul -0j (nan-2j) (nan+nanj) +mul -0j (nan-0j) (nan+nanj) +mul -0j (nan+0j) (nan+nanj) +mul -0j (nan+2j) (nan+nanj) +mul -0j (nan+16j) (nan+nanj) +mul -0j (nan+infj) (nan+nanj) +mul -0j (nan+nanj) (nan+nanj) +mul 0j (-inf-infj) (nan+nanj) +mul 0j (-inf-16j) (nan+nanj) +mul 0j (-inf-2j) (nan+nanj) +mul 0j (-inf-0j) (nan+nanj) +mul 0j (-inf+0j) (nan+nanj) +mul 0j (-inf+2j) (nan+nanj) +mul 0j (-inf+16j) (nan+nanj) +mul 0j (-inf+infj) (nan+nanj) +mul 0j (-inf+nanj) (nan+nanj) +mul 0j (-16-infj) (nan+nanj) +mul 0j (-16-16j) -0j +mul 0j (-16-2j) -0j +mul 0j (-16-0j) -0j +mul 0j (-16+0j) (-0+0j) +mul 0j (-16+2j) (-0+0j) +mul 0j (-16+16j) (-0+0j) +mul 0j (-16+infj) (nan+nanj) +mul 0j (-16+nanj) (nan+nanj) +mul 0j (-2-infj) (nan+nanj) +mul 0j (-2-16j) -0j +mul 0j (-2-2j) -0j +mul 0j (-2-0j) -0j +mul 0j (-2+0j) (-0+0j) +mul 0j (-2+2j) (-0+0j) +mul 0j (-2+16j) (-0+0j) +mul 0j (-2+infj) (nan+nanj) +mul 0j (-2+nanj) (nan+nanj) +mul 0j (-0-infj) (nan+nanj) +mul 0j (-0-16j) -0j +mul 0j (-0-2j) -0j +mul 0j (-0-0j) -0j +mul 0j (-0+0j) (-0+0j) +mul 0j (-0+2j) (-0+0j) +mul 0j (-0+16j) (-0+0j) +mul 0j (-0+infj) (nan+nanj) +mul 0j (-0+nanj) (nan+nanj) +mul 0j -infj (nan+nanj) +mul 0j -16j 0j +mul 0j -2j 0j +mul 0j -0j 0j +mul 0j 0j 0j +mul 0j 2j 0j +mul 0j 16j 0j +mul 0j infj (nan+nanj) +mul 0j nanj (nan+nanj) +mul 0j (2-infj) (nan+nanj) +mul 0j (2-16j) 0j +mul 0j (2-2j) 0j +mul 0j (2-0j) 0j +mul 0j (2+0j) 0j +mul 0j (2+2j) 0j +mul 0j (2+16j) 0j +mul 0j (2+infj) (nan+nanj) +mul 0j (2+nanj) (nan+nanj) +mul 0j (16-infj) (nan+nanj) +mul 0j (16-16j) 0j +mul 0j (16-2j) 0j +mul 0j (16-0j) 0j +mul 0j (16+0j) 0j +mul 0j (16+2j) 0j +mul 0j (16+16j) 0j +mul 0j (16+infj) (nan+nanj) +mul 0j (16+nanj) (nan+nanj) +mul 0j (inf-infj) (nan+nanj) +mul 0j (inf-16j) (nan+nanj) +mul 0j (inf-2j) (nan+nanj) +mul 0j (inf-0j) (nan+nanj) +mul 0j (inf+0j) (nan+nanj) +mul 0j (inf+2j) (nan+nanj) +mul 0j (inf+16j) (nan+nanj) +mul 0j (inf+infj) (nan+nanj) +mul 0j (inf+nanj) (nan+nanj) +mul 0j (nan-infj) (nan+nanj) +mul 0j (nan-16j) (nan+nanj) +mul 0j (nan-2j) (nan+nanj) +mul 0j (nan-0j) (nan+nanj) +mul 0j (nan+0j) (nan+nanj) +mul 0j (nan+2j) (nan+nanj) +mul 0j (nan+16j) (nan+nanj) +mul 0j (nan+infj) (nan+nanj) +mul 0j (nan+nanj) (nan+nanj) +mul 2j (-inf-infj) (nan+nanj) +mul 2j (-inf-16j) (nan-infj) +mul 2j (-inf-2j) (nan-infj) +mul 2j (-inf-0j) (nan-infj) +mul 2j (-inf+0j) (nan-infj) +mul 2j (-inf+2j) (nan-infj) +mul 2j (-inf+16j) (nan-infj) +mul 2j (-inf+infj) (nan+nanj) +mul 2j (-inf+nanj) (nan+nanj) +mul 2j (-16-infj) (inf+nanj) +mul 2j (-16-16j) (32-32j) +mul 2j (-16-2j) (4-32j) +mul 2j (-16-0j) -32j +mul 2j (-16+0j) (-0-32j) +mul 2j (-16+2j) (-4-32j) +mul 2j (-16+16j) (-32-32j) +mul 2j (-16+infj) (-inf+nanj) +mul 2j (-16+nanj) (nan+nanj) +mul 2j (-2-infj) (inf+nanj) +mul 2j (-2-16j) (32-4j) +mul 2j (-2-2j) (4-4j) +mul 2j (-2-0j) -4j +mul 2j (-2+0j) (-0-4j) +mul 2j (-2+2j) (-4-4j) +mul 2j (-2+16j) (-32-4j) +mul 2j (-2+infj) (-inf+nanj) +mul 2j (-2+nanj) (nan+nanj) +mul 2j (-0-infj) (inf+nanj) +mul 2j (-0-16j) (32-0j) +mul 2j (-0-2j) (4-0j) +mul 2j (-0-0j) -0j +mul 2j (-0+0j) (-0+0j) +mul 2j (-0+2j) (-4+0j) +mul 2j (-0+16j) (-32+0j) +mul 2j (-0+infj) (-inf+nanj) +mul 2j (-0+nanj) (nan+nanj) +mul 2j -infj (inf+nanj) +mul 2j -16j (32+0j) +mul 2j -2j (4+0j) +mul 2j -0j 0j +mul 2j 0j 0j +mul 2j 2j (-4+0j) +mul 2j 16j (-32+0j) +mul 2j infj (-inf+nanj) +mul 2j nanj (nan+nanj) +mul 2j (2-infj) (inf+nanj) +mul 2j (2-16j) (32+4j) +mul 2j (2-2j) (4+4j) +mul 2j (2-0j) 4j +mul 2j (2+0j) 4j +mul 2j (2+2j) (-4+4j) +mul 2j (2+16j) (-32+4j) +mul 2j (2+infj) (-inf+nanj) +mul 2j (2+nanj) (nan+nanj) +mul 2j (16-infj) (inf+nanj) +mul 2j (16-16j) (32+32j) +mul 2j (16-2j) (4+32j) +mul 2j (16-0j) 32j +mul 2j (16+0j) 32j +mul 2j (16+2j) (-4+32j) +mul 2j (16+16j) (-32+32j) +mul 2j (16+infj) (-inf+nanj) +mul 2j (16+nanj) (nan+nanj) +mul 2j (inf-infj) (nan+nanj) +mul 2j (inf-16j) (nan+infj) +mul 2j (inf-2j) (nan+infj) +mul 2j (inf-0j) (nan+infj) +mul 2j (inf+0j) (nan+infj) +mul 2j (inf+2j) (nan+infj) +mul 2j (inf+16j) (nan+infj) +mul 2j (inf+infj) (nan+nanj) +mul 2j (inf+nanj) (nan+nanj) +mul 2j (nan-infj) (nan+nanj) +mul 2j (nan-16j) (nan+nanj) +mul 2j (nan-2j) (nan+nanj) +mul 2j (nan-0j) (nan+nanj) +mul 2j (nan+0j) (nan+nanj) +mul 2j (nan+2j) (nan+nanj) +mul 2j (nan+16j) (nan+nanj) +mul 2j (nan+infj) (nan+nanj) +mul 2j (nan+nanj) (nan+nanj) +mul 16j (-inf-infj) (nan+nanj) +mul 16j (-inf-16j) (nan-infj) +mul 16j (-inf-2j) (nan-infj) +mul 16j (-inf-0j) (nan-infj) +mul 16j (-inf+0j) (nan-infj) +mul 16j (-inf+2j) (nan-infj) +mul 16j (-inf+16j) (nan-infj) +mul 16j (-inf+infj) (nan+nanj) +mul 16j (-inf+nanj) (nan+nanj) +mul 16j (-16-infj) (inf+nanj) +mul 16j (-16-16j) (256-256j) +mul 16j (-16-2j) (32-256j) +mul 16j (-16-0j) -256j +mul 16j (-16+0j) (-0-256j) +mul 16j (-16+2j) (-32-256j) +mul 16j (-16+16j) (-256-256j) +mul 16j (-16+infj) (-inf+nanj) +mul 16j (-16+nanj) (nan+nanj) +mul 16j (-2-infj) (inf+nanj) +mul 16j (-2-16j) (256-32j) +mul 16j (-2-2j) (32-32j) +mul 16j (-2-0j) -32j +mul 16j (-2+0j) (-0-32j) +mul 16j (-2+2j) (-32-32j) +mul 16j (-2+16j) (-256-32j) +mul 16j (-2+infj) (-inf+nanj) +mul 16j (-2+nanj) (nan+nanj) +mul 16j (-0-infj) (inf+nanj) +mul 16j (-0-16j) (256-0j) +mul 16j (-0-2j) (32-0j) +mul 16j (-0-0j) -0j +mul 16j (-0+0j) (-0+0j) +mul 16j (-0+2j) (-32+0j) +mul 16j (-0+16j) (-256+0j) +mul 16j (-0+infj) (-inf+nanj) +mul 16j (-0+nanj) (nan+nanj) +mul 16j -infj (inf+nanj) +mul 16j -16j (256+0j) +mul 16j -2j (32+0j) +mul 16j -0j 0j +mul 16j 0j 0j +mul 16j 2j (-32+0j) +mul 16j 16j (-256+0j) +mul 16j infj (-inf+nanj) +mul 16j nanj (nan+nanj) +mul 16j (2-infj) (inf+nanj) +mul 16j (2-16j) (256+32j) +mul 16j (2-2j) (32+32j) +mul 16j (2-0j) 32j +mul 16j (2+0j) 32j +mul 16j (2+2j) (-32+32j) +mul 16j (2+16j) (-256+32j) +mul 16j (2+infj) (-inf+nanj) +mul 16j (2+nanj) (nan+nanj) +mul 16j (16-infj) (inf+nanj) +mul 16j (16-16j) (256+256j) +mul 16j (16-2j) (32+256j) +mul 16j (16-0j) 256j +mul 16j (16+0j) 256j +mul 16j (16+2j) (-32+256j) +mul 16j (16+16j) (-256+256j) +mul 16j (16+infj) (-inf+nanj) +mul 16j (16+nanj) (nan+nanj) +mul 16j (inf-infj) (nan+nanj) +mul 16j (inf-16j) (nan+infj) +mul 16j (inf-2j) (nan+infj) +mul 16j (inf-0j) (nan+infj) +mul 16j (inf+0j) (nan+infj) +mul 16j (inf+2j) (nan+infj) +mul 16j (inf+16j) (nan+infj) +mul 16j (inf+infj) (nan+nanj) +mul 16j (inf+nanj) (nan+nanj) +mul 16j (nan-infj) (nan+nanj) +mul 16j (nan-16j) (nan+nanj) +mul 16j (nan-2j) (nan+nanj) +mul 16j (nan-0j) (nan+nanj) +mul 16j (nan+0j) (nan+nanj) +mul 16j (nan+2j) (nan+nanj) +mul 16j (nan+16j) (nan+nanj) +mul 16j (nan+infj) (nan+nanj) +mul 16j (nan+nanj) (nan+nanj) +mul infj (-inf-infj) (nan+nanj) +mul infj (-inf-16j) (nan-infj) +mul infj (-inf-2j) (nan-infj) +mul infj (-inf-0j) (nan-infj) +mul infj (-inf+0j) (nan-infj) +mul infj (-inf+2j) (nan-infj) +mul infj (-inf+16j) (nan-infj) +mul infj (-inf+infj) (nan+nanj) +mul infj (-inf+nanj) (nan+nanj) +mul infj (-16-infj) (inf+nanj) +mul infj (-16-16j) (inf-infj) +mul infj (-16-2j) (inf-infj) +mul infj (-16-0j) (nan-infj) +mul infj (-16+0j) (nan-infj) +mul infj (-16+2j) (-inf-infj) +mul infj (-16+16j) (-inf-infj) +mul infj (-16+infj) (-inf+nanj) +mul infj (-16+nanj) (nan+nanj) +mul infj (-2-infj) (inf+nanj) +mul infj (-2-16j) (inf-infj) +mul infj (-2-2j) (inf-infj) +mul infj (-2-0j) (nan-infj) +mul infj (-2+0j) (nan-infj) +mul infj (-2+2j) (-inf-infj) +mul infj (-2+16j) (-inf-infj) +mul infj (-2+infj) (-inf+nanj) +mul infj (-2+nanj) (nan+nanj) +mul infj (-0-infj) (inf+nanj) +mul infj (-0-16j) (inf+nanj) +mul infj (-0-2j) (inf+nanj) +mul infj (-0-0j) (nan+nanj) +mul infj (-0+0j) (nan+nanj) +mul infj (-0+2j) (-inf+nanj) +mul infj (-0+16j) (-inf+nanj) +mul infj (-0+infj) (-inf+nanj) +mul infj (-0+nanj) (nan+nanj) +mul infj -infj (inf+nanj) +mul infj -16j (inf+nanj) +mul infj -2j (inf+nanj) +mul infj -0j (nan+nanj) +mul infj 0j (nan+nanj) +mul infj 2j (-inf+nanj) +mul infj 16j (-inf+nanj) +mul infj infj (-inf+nanj) +mul infj nanj (nan+nanj) +mul infj (2-infj) (inf+nanj) +mul infj (2-16j) (inf+infj) +mul infj (2-2j) (inf+infj) +mul infj (2-0j) (nan+infj) +mul infj (2+0j) (nan+infj) +mul infj (2+2j) (-inf+infj) +mul infj (2+16j) (-inf+infj) +mul infj (2+infj) (-inf+nanj) +mul infj (2+nanj) (nan+nanj) +mul infj (16-infj) (inf+nanj) +mul infj (16-16j) (inf+infj) +mul infj (16-2j) (inf+infj) +mul infj (16-0j) (nan+infj) +mul infj (16+0j) (nan+infj) +mul infj (16+2j) (-inf+infj) +mul infj (16+16j) (-inf+infj) +mul infj (16+infj) (-inf+nanj) +mul infj (16+nanj) (nan+nanj) +mul infj (inf-infj) (nan+nanj) +mul infj (inf-16j) (nan+infj) +mul infj (inf-2j) (nan+infj) +mul infj (inf-0j) (nan+infj) +mul infj (inf+0j) (nan+infj) +mul infj (inf+2j) (nan+infj) +mul infj (inf+16j) (nan+infj) +mul infj (inf+infj) (nan+nanj) +mul infj (inf+nanj) (nan+nanj) +mul infj (nan-infj) (nan+nanj) +mul infj (nan-16j) (nan+nanj) +mul infj (nan-2j) (nan+nanj) +mul infj (nan-0j) (nan+nanj) +mul infj (nan+0j) (nan+nanj) +mul infj (nan+2j) (nan+nanj) +mul infj (nan+16j) (nan+nanj) +mul infj (nan+infj) (nan+nanj) +mul infj (nan+nanj) (nan+nanj) +mul nanj (-inf-infj) (nan+nanj) +mul nanj (-inf-16j) (nan+nanj) +mul nanj (-inf-2j) (nan+nanj) +mul nanj (-inf-0j) (nan+nanj) +mul nanj (-inf+0j) (nan+nanj) +mul nanj (-inf+2j) (nan+nanj) +mul nanj (-inf+16j) (nan+nanj) +mul nanj (-inf+infj) (nan+nanj) +mul nanj (-inf+nanj) (nan+nanj) +mul nanj (-16-infj) (nan+nanj) +mul nanj (-16-16j) (nan+nanj) +mul nanj (-16-2j) (nan+nanj) +mul nanj (-16-0j) (nan+nanj) +mul nanj (-16+0j) (nan+nanj) +mul nanj (-16+2j) (nan+nanj) +mul nanj (-16+16j) (nan+nanj) +mul nanj (-16+infj) (nan+nanj) +mul nanj (-16+nanj) (nan+nanj) +mul nanj (-2-infj) (nan+nanj) +mul nanj (-2-16j) (nan+nanj) +mul nanj (-2-2j) (nan+nanj) +mul nanj (-2-0j) (nan+nanj) +mul nanj (-2+0j) (nan+nanj) +mul nanj (-2+2j) (nan+nanj) +mul nanj (-2+16j) (nan+nanj) +mul nanj (-2+infj) (nan+nanj) +mul nanj (-2+nanj) (nan+nanj) +mul nanj (-0-infj) (nan+nanj) +mul nanj (-0-16j) (nan+nanj) +mul nanj (-0-2j) (nan+nanj) +mul nanj (-0-0j) (nan+nanj) +mul nanj (-0+0j) (nan+nanj) +mul nanj (-0+2j) (nan+nanj) +mul nanj (-0+16j) (nan+nanj) +mul nanj (-0+infj) (nan+nanj) +mul nanj (-0+nanj) (nan+nanj) +mul nanj -infj (nan+nanj) +mul nanj -16j (nan+nanj) +mul nanj -2j (nan+nanj) +mul nanj -0j (nan+nanj) +mul nanj 0j (nan+nanj) +mul nanj 2j (nan+nanj) +mul nanj 16j (nan+nanj) +mul nanj infj (nan+nanj) +mul nanj nanj (nan+nanj) +mul nanj (2-infj) (nan+nanj) +mul nanj (2-16j) (nan+nanj) +mul nanj (2-2j) (nan+nanj) +mul nanj (2-0j) (nan+nanj) +mul nanj (2+0j) (nan+nanj) +mul nanj (2+2j) (nan+nanj) +mul nanj (2+16j) (nan+nanj) +mul nanj (2+infj) (nan+nanj) +mul nanj (2+nanj) (nan+nanj) +mul nanj (16-infj) (nan+nanj) +mul nanj (16-16j) (nan+nanj) +mul nanj (16-2j) (nan+nanj) +mul nanj (16-0j) (nan+nanj) +mul nanj (16+0j) (nan+nanj) +mul nanj (16+2j) (nan+nanj) +mul nanj (16+16j) (nan+nanj) +mul nanj (16+infj) (nan+nanj) +mul nanj (16+nanj) (nan+nanj) +mul nanj (inf-infj) (nan+nanj) +mul nanj (inf-16j) (nan+nanj) +mul nanj (inf-2j) (nan+nanj) +mul nanj (inf-0j) (nan+nanj) +mul nanj (inf+0j) (nan+nanj) +mul nanj (inf+2j) (nan+nanj) +mul nanj (inf+16j) (nan+nanj) +mul nanj (inf+infj) (nan+nanj) +mul nanj (inf+nanj) (nan+nanj) +mul nanj (nan-infj) (nan+nanj) +mul nanj (nan-16j) (nan+nanj) +mul nanj (nan-2j) (nan+nanj) +mul nanj (nan-0j) (nan+nanj) +mul nanj (nan+0j) (nan+nanj) +mul nanj (nan+2j) (nan+nanj) +mul nanj (nan+16j) (nan+nanj) +mul nanj (nan+infj) (nan+nanj) +mul nanj (nan+nanj) (nan+nanj) +mul (2-infj) (-inf-infj) (-inf+nanj) +mul (2-infj) (-inf-16j) (-inf+infj) +mul (2-infj) (-inf-2j) (-inf+infj) +mul (2-infj) (-inf-0j) (nan+infj) +mul (2-infj) (-inf+0j) (nan+infj) +mul (2-infj) (-inf+2j) (nan+infj) +mul (2-infj) (-inf+16j) (nan+infj) +mul (2-infj) (-inf+infj) (nan+infj) +mul (2-infj) (-inf+nanj) (nan+nanj) +mul (2-infj) (-16-infj) (-inf+nanj) +mul (2-infj) (-16-16j) (-inf+infj) +mul (2-infj) (-16-2j) (-inf+infj) +mul (2-infj) (-16-0j) (nan+infj) +mul (2-infj) (-16+0j) (nan+infj) +mul (2-infj) (-16+2j) (inf+infj) +mul (2-infj) (-16+16j) (inf+infj) +mul (2-infj) (-16+infj) (inf+infj) +mul (2-infj) (-16+nanj) (nan+nanj) +mul (2-infj) (-2-infj) (-inf+nanj) +mul (2-infj) (-2-16j) (-inf+infj) +mul (2-infj) (-2-2j) (-inf+infj) +mul (2-infj) (-2-0j) (nan+infj) +mul (2-infj) (-2+0j) (nan+infj) +mul (2-infj) (-2+2j) (inf+infj) +mul (2-infj) (-2+16j) (inf+infj) +mul (2-infj) (-2+infj) (inf+infj) +mul (2-infj) (-2+nanj) (nan+nanj) +mul (2-infj) (-0-infj) (-inf+nanj) +mul (2-infj) (-0-16j) (-inf+nanj) +mul (2-infj) (-0-2j) (-inf+nanj) +mul (2-infj) (-0-0j) (nan+nanj) +mul (2-infj) (-0+0j) (nan+nanj) +mul (2-infj) (-0+2j) (inf+nanj) +mul (2-infj) (-0+16j) (inf+nanj) +mul (2-infj) (-0+infj) (inf+nanj) +mul (2-infj) (-0+nanj) (nan+nanj) +mul (2-infj) -infj (-inf+nanj) +mul (2-infj) -16j (-inf+nanj) +mul (2-infj) -2j (-inf+nanj) +mul (2-infj) -0j (nan+nanj) +mul (2-infj) 0j (nan+nanj) +mul (2-infj) 2j (inf+nanj) +mul (2-infj) 16j (inf+nanj) +mul (2-infj) infj (inf+nanj) +mul (2-infj) nanj (nan+nanj) +mul (2-infj) (2-infj) (-inf-infj) +mul (2-infj) (2-16j) (-inf-infj) +mul (2-infj) (2-2j) (-inf-infj) +mul (2-infj) (2-0j) (nan-infj) +mul (2-infj) (2+0j) (nan-infj) +mul (2-infj) (2+2j) (inf-infj) +mul (2-infj) (2+16j) (inf-infj) +mul (2-infj) (2+infj) (inf+nanj) +mul (2-infj) (2+nanj) (nan+nanj) +mul (2-infj) (16-infj) (-inf-infj) +mul (2-infj) (16-16j) (-inf-infj) +mul (2-infj) (16-2j) (-inf-infj) +mul (2-infj) (16-0j) (nan-infj) +mul (2-infj) (16+0j) (nan-infj) +mul (2-infj) (16+2j) (inf-infj) +mul (2-infj) (16+16j) (inf-infj) +mul (2-infj) (16+infj) (inf+nanj) +mul (2-infj) (16+nanj) (nan+nanj) +mul (2-infj) (inf-infj) (nan-infj) +mul (2-infj) (inf-16j) (nan-infj) +mul (2-infj) (inf-2j) (nan-infj) +mul (2-infj) (inf-0j) (nan-infj) +mul (2-infj) (inf+0j) (nan-infj) +mul (2-infj) (inf+2j) (inf-infj) +mul (2-infj) (inf+16j) (inf-infj) +mul (2-infj) (inf+infj) (inf+nanj) +mul (2-infj) (inf+nanj) (nan+nanj) +mul (2-infj) (nan-infj) (nan+nanj) +mul (2-infj) (nan-16j) (nan+nanj) +mul (2-infj) (nan-2j) (nan+nanj) +mul (2-infj) (nan-0j) (nan+nanj) +mul (2-infj) (nan+0j) (nan+nanj) +mul (2-infj) (nan+2j) (nan+nanj) +mul (2-infj) (nan+16j) (nan+nanj) +mul (2-infj) (nan+infj) (nan+nanj) +mul (2-infj) (nan+nanj) (nan+nanj) +mul (2-16j) (-inf-infj) (-inf+nanj) +mul (2-16j) (-inf-16j) (-inf+infj) +mul (2-16j) (-inf-2j) (-inf+infj) +mul (2-16j) (-inf-0j) (-inf+infj) +mul (2-16j) (-inf+0j) (-inf+infj) +mul (2-16j) (-inf+2j) (-inf+infj) +mul (2-16j) (-inf+16j) (-inf+infj) +mul (2-16j) (-inf+infj) (nan+infj) +mul (2-16j) (-inf+nanj) (nan+nanj) +mul (2-16j) (-16-infj) (-inf-infj) +mul (2-16j) (-16-16j) (-288+224j) +mul (2-16j) (-16-2j) (-64+252j) +mul (2-16j) (-16-0j) (-32+256j) +mul (2-16j) (-16+0j) (-32+256j) +mul (2-16j) (-16+2j) 260j +mul (2-16j) (-16+16j) (224+288j) +mul (2-16j) (-16+infj) (inf+infj) +mul (2-16j) (-16+nanj) (nan+nanj) +mul (2-16j) (-2-infj) (-inf-infj) +mul (2-16j) (-2-16j) (-260+0j) +mul (2-16j) (-2-2j) (-36+28j) +mul (2-16j) (-2-0j) (-4+32j) +mul (2-16j) (-2+0j) (-4+32j) +mul (2-16j) (-2+2j) (28+36j) +mul (2-16j) (-2+16j) (252+64j) +mul (2-16j) (-2+infj) (inf+infj) +mul (2-16j) (-2+nanj) (nan+nanj) +mul (2-16j) (-0-infj) (-inf-infj) +mul (2-16j) (-0-16j) (-256-32j) +mul (2-16j) (-0-2j) (-32-4j) +mul (2-16j) (-0-0j) (-0+0j) +mul (2-16j) (-0+0j) 0j +mul (2-16j) (-0+2j) (32+4j) +mul (2-16j) (-0+16j) (256+32j) +mul (2-16j) (-0+infj) (inf+infj) +mul (2-16j) (-0+nanj) (nan+nanj) +mul (2-16j) -infj (-inf-infj) +mul (2-16j) -16j (-256-32j) +mul (2-16j) -2j (-32-4j) +mul (2-16j) -0j -0j +mul (2-16j) 0j 0j +mul (2-16j) 2j (32+4j) +mul (2-16j) 16j (256+32j) +mul (2-16j) infj (inf+infj) +mul (2-16j) nanj (nan+nanj) +mul (2-16j) (2-infj) (-inf-infj) +mul (2-16j) (2-16j) (-252-64j) +mul (2-16j) (2-2j) (-28-36j) +mul (2-16j) (2-0j) (4-32j) +mul (2-16j) (2+0j) (4-32j) +mul (2-16j) (2+2j) (36-28j) +mul (2-16j) (2+16j) (260+0j) +mul (2-16j) (2+infj) (inf+infj) +mul (2-16j) (2+nanj) (nan+nanj) +mul (2-16j) (16-infj) (-inf-infj) +mul (2-16j) (16-16j) (-224-288j) +mul (2-16j) (16-2j) -260j +mul (2-16j) (16-0j) (32-256j) +mul (2-16j) (16+0j) (32-256j) +mul (2-16j) (16+2j) (64-252j) +mul (2-16j) (16+16j) (288-224j) +mul (2-16j) (16+infj) (inf+infj) +mul (2-16j) (16+nanj) (nan+nanj) +mul (2-16j) (inf-infj) (nan-infj) +mul (2-16j) (inf-16j) (inf-infj) +mul (2-16j) (inf-2j) (inf-infj) +mul (2-16j) (inf-0j) (inf-infj) +mul (2-16j) (inf+0j) (inf-infj) +mul (2-16j) (inf+2j) (inf-infj) +mul (2-16j) (inf+16j) (inf-infj) +mul (2-16j) (inf+infj) (inf+nanj) +mul (2-16j) (inf+nanj) (nan+nanj) +mul (2-16j) (nan-infj) (nan+nanj) +mul (2-16j) (nan-16j) (nan+nanj) +mul (2-16j) (nan-2j) (nan+nanj) +mul (2-16j) (nan-0j) (nan+nanj) +mul (2-16j) (nan+0j) (nan+nanj) +mul (2-16j) (nan+2j) (nan+nanj) +mul (2-16j) (nan+16j) (nan+nanj) +mul (2-16j) (nan+infj) (nan+nanj) +mul (2-16j) (nan+nanj) (nan+nanj) +mul (2-2j) (-inf-infj) (-inf+nanj) +mul (2-2j) (-inf-16j) (-inf+infj) +mul (2-2j) (-inf-2j) (-inf+infj) +mul (2-2j) (-inf-0j) (-inf+infj) +mul (2-2j) (-inf+0j) (-inf+infj) +mul (2-2j) (-inf+2j) (-inf+infj) +mul (2-2j) (-inf+16j) (-inf+infj) +mul (2-2j) (-inf+infj) (nan+infj) +mul (2-2j) (-inf+nanj) (nan+nanj) +mul (2-2j) (-16-infj) (-inf-infj) +mul (2-2j) (-16-16j) (-64+0j) +mul (2-2j) (-16-2j) (-36+28j) +mul (2-2j) (-16-0j) (-32+32j) +mul (2-2j) (-16+0j) (-32+32j) +mul (2-2j) (-16+2j) (-28+36j) +mul (2-2j) (-16+16j) 64j +mul (2-2j) (-16+infj) (inf+infj) +mul (2-2j) (-16+nanj) (nan+nanj) +mul (2-2j) (-2-infj) (-inf-infj) +mul (2-2j) (-2-16j) (-36-28j) +mul (2-2j) (-2-2j) (-8+0j) +mul (2-2j) (-2-0j) (-4+4j) +mul (2-2j) (-2+0j) (-4+4j) +mul (2-2j) (-2+2j) 8j +mul (2-2j) (-2+16j) (28+36j) +mul (2-2j) (-2+infj) (inf+infj) +mul (2-2j) (-2+nanj) (nan+nanj) +mul (2-2j) (-0-infj) (-inf-infj) +mul (2-2j) (-0-16j) (-32-32j) +mul (2-2j) (-0-2j) (-4-4j) +mul (2-2j) (-0-0j) (-0+0j) +mul (2-2j) (-0+0j) 0j +mul (2-2j) (-0+2j) (4+4j) +mul (2-2j) (-0+16j) (32+32j) +mul (2-2j) (-0+infj) (inf+infj) +mul (2-2j) (-0+nanj) (nan+nanj) +mul (2-2j) -infj (-inf-infj) +mul (2-2j) -16j (-32-32j) +mul (2-2j) -2j (-4-4j) +mul (2-2j) -0j -0j +mul (2-2j) 0j 0j +mul (2-2j) 2j (4+4j) +mul (2-2j) 16j (32+32j) +mul (2-2j) infj (inf+infj) +mul (2-2j) nanj (nan+nanj) +mul (2-2j) (2-infj) (-inf-infj) +mul (2-2j) (2-16j) (-28-36j) +mul (2-2j) (2-2j) -8j +mul (2-2j) (2-0j) (4-4j) +mul (2-2j) (2+0j) (4-4j) +mul (2-2j) (2+2j) (8+0j) +mul (2-2j) (2+16j) (36+28j) +mul (2-2j) (2+infj) (inf+infj) +mul (2-2j) (2+nanj) (nan+nanj) +mul (2-2j) (16-infj) (-inf-infj) +mul (2-2j) (16-16j) -64j +mul (2-2j) (16-2j) (28-36j) +mul (2-2j) (16-0j) (32-32j) +mul (2-2j) (16+0j) (32-32j) +mul (2-2j) (16+2j) (36-28j) +mul (2-2j) (16+16j) (64+0j) +mul (2-2j) (16+infj) (inf+infj) +mul (2-2j) (16+nanj) (nan+nanj) +mul (2-2j) (inf-infj) (nan-infj) +mul (2-2j) (inf-16j) (inf-infj) +mul (2-2j) (inf-2j) (inf-infj) +mul (2-2j) (inf-0j) (inf-infj) +mul (2-2j) (inf+0j) (inf-infj) +mul (2-2j) (inf+2j) (inf-infj) +mul (2-2j) (inf+16j) (inf-infj) +mul (2-2j) (inf+infj) (inf+nanj) +mul (2-2j) (inf+nanj) (nan+nanj) +mul (2-2j) (nan-infj) (nan+nanj) +mul (2-2j) (nan-16j) (nan+nanj) +mul (2-2j) (nan-2j) (nan+nanj) +mul (2-2j) (nan-0j) (nan+nanj) +mul (2-2j) (nan+0j) (nan+nanj) +mul (2-2j) (nan+2j) (nan+nanj) +mul (2-2j) (nan+16j) (nan+nanj) +mul (2-2j) (nan+infj) (nan+nanj) +mul (2-2j) (nan+nanj) (nan+nanj) +mul (2-0j) (-inf-infj) (nan+nanj) +mul (2-0j) (-inf-16j) (-inf+nanj) +mul (2-0j) (-inf-2j) (-inf+nanj) +mul (2-0j) (-inf-0j) (-inf+nanj) +mul (2-0j) (-inf+0j) (-inf+nanj) +mul (2-0j) (-inf+2j) (-inf+nanj) +mul (2-0j) (-inf+16j) (-inf+nanj) +mul (2-0j) (-inf+infj) (nan+nanj) +mul (2-0j) (-inf+nanj) (nan+nanj) +mul (2-0j) (-16-infj) (nan-infj) +mul (2-0j) (-16-16j) (-32-32j) +mul (2-0j) (-16-2j) (-32-4j) +mul (2-0j) (-16-0j) (-32+0j) +mul (2-0j) (-16+0j) (-32+0j) +mul (2-0j) (-16+2j) (-32+4j) +mul (2-0j) (-16+16j) (-32+32j) +mul (2-0j) (-16+infj) (nan+infj) +mul (2-0j) (-16+nanj) (nan+nanj) +mul (2-0j) (-2-infj) (nan-infj) +mul (2-0j) (-2-16j) (-4-32j) +mul (2-0j) (-2-2j) (-4-4j) +mul (2-0j) (-2-0j) (-4+0j) +mul (2-0j) (-2+0j) (-4+0j) +mul (2-0j) (-2+2j) (-4+4j) +mul (2-0j) (-2+16j) (-4+32j) +mul (2-0j) (-2+infj) (nan+infj) +mul (2-0j) (-2+nanj) (nan+nanj) +mul (2-0j) (-0-infj) (nan-infj) +mul (2-0j) (-0-16j) (-0-32j) +mul (2-0j) (-0-2j) (-0-4j) +mul (2-0j) (-0-0j) (-0+0j) +mul (2-0j) (-0+0j) 0j +mul (2-0j) (-0+2j) 4j +mul (2-0j) (-0+16j) 32j +mul (2-0j) (-0+infj) (nan+infj) +mul (2-0j) (-0+nanj) (nan+nanj) +mul (2-0j) -infj (nan-infj) +mul (2-0j) -16j -32j +mul (2-0j) -2j -4j +mul (2-0j) -0j -0j +mul (2-0j) 0j 0j +mul (2-0j) 2j 4j +mul (2-0j) 16j 32j +mul (2-0j) infj (nan+infj) +mul (2-0j) nanj (nan+nanj) +mul (2-0j) (2-infj) (nan-infj) +mul (2-0j) (2-16j) (4-32j) +mul (2-0j) (2-2j) (4-4j) +mul (2-0j) (2-0j) (4-0j) +mul (2-0j) (2+0j) (4+0j) +mul (2-0j) (2+2j) (4+4j) +mul (2-0j) (2+16j) (4+32j) +mul (2-0j) (2+infj) (nan+infj) +mul (2-0j) (2+nanj) (nan+nanj) +mul (2-0j) (16-infj) (nan-infj) +mul (2-0j) (16-16j) (32-32j) +mul (2-0j) (16-2j) (32-4j) +mul (2-0j) (16-0j) (32-0j) +mul (2-0j) (16+0j) (32+0j) +mul (2-0j) (16+2j) (32+4j) +mul (2-0j) (16+16j) (32+32j) +mul (2-0j) (16+infj) (nan+infj) +mul (2-0j) (16+nanj) (nan+nanj) +mul (2-0j) (inf-infj) (nan+nanj) +mul (2-0j) (inf-16j) (inf+nanj) +mul (2-0j) (inf-2j) (inf+nanj) +mul (2-0j) (inf-0j) (inf+nanj) +mul (2-0j) (inf+0j) (inf+nanj) +mul (2-0j) (inf+2j) (inf+nanj) +mul (2-0j) (inf+16j) (inf+nanj) +mul (2-0j) (inf+infj) (nan+nanj) +mul (2-0j) (inf+nanj) (nan+nanj) +mul (2-0j) (nan-infj) (nan+nanj) +mul (2-0j) (nan-16j) (nan+nanj) +mul (2-0j) (nan-2j) (nan+nanj) +mul (2-0j) (nan-0j) (nan+nanj) +mul (2-0j) (nan+0j) (nan+nanj) +mul (2-0j) (nan+2j) (nan+nanj) +mul (2-0j) (nan+16j) (nan+nanj) +mul (2-0j) (nan+infj) (nan+nanj) +mul (2-0j) (nan+nanj) (nan+nanj) +mul (2+0j) (-inf-infj) (nan+nanj) +mul (2+0j) (-inf-16j) (-inf+nanj) +mul (2+0j) (-inf-2j) (-inf+nanj) +mul (2+0j) (-inf-0j) (-inf+nanj) +mul (2+0j) (-inf+0j) (-inf+nanj) +mul (2+0j) (-inf+2j) (-inf+nanj) +mul (2+0j) (-inf+16j) (-inf+nanj) +mul (2+0j) (-inf+infj) (nan+nanj) +mul (2+0j) (-inf+nanj) (nan+nanj) +mul (2+0j) (-16-infj) (nan-infj) +mul (2+0j) (-16-16j) (-32-32j) +mul (2+0j) (-16-2j) (-32-4j) +mul (2+0j) (-16-0j) (-32-0j) +mul (2+0j) (-16+0j) (-32+0j) +mul (2+0j) (-16+2j) (-32+4j) +mul (2+0j) (-16+16j) (-32+32j) +mul (2+0j) (-16+infj) (nan+infj) +mul (2+0j) (-16+nanj) (nan+nanj) +mul (2+0j) (-2-infj) (nan-infj) +mul (2+0j) (-2-16j) (-4-32j) +mul (2+0j) (-2-2j) (-4-4j) +mul (2+0j) (-2-0j) (-4-0j) +mul (2+0j) (-2+0j) (-4+0j) +mul (2+0j) (-2+2j) (-4+4j) +mul (2+0j) (-2+16j) (-4+32j) +mul (2+0j) (-2+infj) (nan+infj) +mul (2+0j) (-2+nanj) (nan+nanj) +mul (2+0j) (-0-infj) (nan-infj) +mul (2+0j) (-0-16j) -32j +mul (2+0j) (-0-2j) -4j +mul (2+0j) (-0-0j) -0j +mul (2+0j) (-0+0j) (-0+0j) +mul (2+0j) (-0+2j) (-0+4j) +mul (2+0j) (-0+16j) (-0+32j) +mul (2+0j) (-0+infj) (nan+infj) +mul (2+0j) (-0+nanj) (nan+nanj) +mul (2+0j) -infj (nan-infj) +mul (2+0j) -16j -32j +mul (2+0j) -2j -4j +mul (2+0j) -0j 0j +mul (2+0j) 0j 0j +mul (2+0j) 2j 4j +mul (2+0j) 16j 32j +mul (2+0j) infj (nan+infj) +mul (2+0j) nanj (nan+nanj) +mul (2+0j) (2-infj) (nan-infj) +mul (2+0j) (2-16j) (4-32j) +mul (2+0j) (2-2j) (4-4j) +mul (2+0j) (2-0j) (4+0j) +mul (2+0j) (2+0j) (4+0j) +mul (2+0j) (2+2j) (4+4j) +mul (2+0j) (2+16j) (4+32j) +mul (2+0j) (2+infj) (nan+infj) +mul (2+0j) (2+nanj) (nan+nanj) +mul (2+0j) (16-infj) (nan-infj) +mul (2+0j) (16-16j) (32-32j) +mul (2+0j) (16-2j) (32-4j) +mul (2+0j) (16-0j) (32+0j) +mul (2+0j) (16+0j) (32+0j) +mul (2+0j) (16+2j) (32+4j) +mul (2+0j) (16+16j) (32+32j) +mul (2+0j) (16+infj) (nan+infj) +mul (2+0j) (16+nanj) (nan+nanj) +mul (2+0j) (inf-infj) (nan+nanj) +mul (2+0j) (inf-16j) (inf+nanj) +mul (2+0j) (inf-2j) (inf+nanj) +mul (2+0j) (inf-0j) (inf+nanj) +mul (2+0j) (inf+0j) (inf+nanj) +mul (2+0j) (inf+2j) (inf+nanj) +mul (2+0j) (inf+16j) (inf+nanj) +mul (2+0j) (inf+infj) (nan+nanj) +mul (2+0j) (inf+nanj) (nan+nanj) +mul (2+0j) (nan-infj) (nan+nanj) +mul (2+0j) (nan-16j) (nan+nanj) +mul (2+0j) (nan-2j) (nan+nanj) +mul (2+0j) (nan-0j) (nan+nanj) +mul (2+0j) (nan+0j) (nan+nanj) +mul (2+0j) (nan+2j) (nan+nanj) +mul (2+0j) (nan+16j) (nan+nanj) +mul (2+0j) (nan+infj) (nan+nanj) +mul (2+0j) (nan+nanj) (nan+nanj) +mul (2+2j) (-inf-infj) (nan-infj) +mul (2+2j) (-inf-16j) (-inf-infj) +mul (2+2j) (-inf-2j) (-inf-infj) +mul (2+2j) (-inf-0j) (-inf-infj) +mul (2+2j) (-inf+0j) (-inf-infj) +mul (2+2j) (-inf+2j) (-inf-infj) +mul (2+2j) (-inf+16j) (-inf-infj) +mul (2+2j) (-inf+infj) (-inf+nanj) +mul (2+2j) (-inf+nanj) (nan+nanj) +mul (2+2j) (-16-infj) (inf-infj) +mul (2+2j) (-16-16j) -64j +mul (2+2j) (-16-2j) (-28-36j) +mul (2+2j) (-16-0j) (-32-32j) +mul (2+2j) (-16+0j) (-32-32j) +mul (2+2j) (-16+2j) (-36-28j) +mul (2+2j) (-16+16j) (-64+0j) +mul (2+2j) (-16+infj) (-inf+infj) +mul (2+2j) (-16+nanj) (nan+nanj) +mul (2+2j) (-2-infj) (inf-infj) +mul (2+2j) (-2-16j) (28-36j) +mul (2+2j) (-2-2j) -8j +mul (2+2j) (-2-0j) (-4-4j) +mul (2+2j) (-2+0j) (-4-4j) +mul (2+2j) (-2+2j) (-8+0j) +mul (2+2j) (-2+16j) (-36+28j) +mul (2+2j) (-2+infj) (-inf+infj) +mul (2+2j) (-2+nanj) (nan+nanj) +mul (2+2j) (-0-infj) (inf-infj) +mul (2+2j) (-0-16j) (32-32j) +mul (2+2j) (-0-2j) (4-4j) +mul (2+2j) (-0-0j) -0j +mul (2+2j) (-0+0j) (-0+0j) +mul (2+2j) (-0+2j) (-4+4j) +mul (2+2j) (-0+16j) (-32+32j) +mul (2+2j) (-0+infj) (-inf+infj) +mul (2+2j) (-0+nanj) (nan+nanj) +mul (2+2j) -infj (inf-infj) +mul (2+2j) -16j (32-32j) +mul (2+2j) -2j (4-4j) +mul (2+2j) -0j 0j +mul (2+2j) 0j 0j +mul (2+2j) 2j (-4+4j) +mul (2+2j) 16j (-32+32j) +mul (2+2j) infj (-inf+infj) +mul (2+2j) nanj (nan+nanj) +mul (2+2j) (2-infj) (inf-infj) +mul (2+2j) (2-16j) (36-28j) +mul (2+2j) (2-2j) (8+0j) +mul (2+2j) (2-0j) (4+4j) +mul (2+2j) (2+0j) (4+4j) +mul (2+2j) (2+2j) 8j +mul (2+2j) (2+16j) (-28+36j) +mul (2+2j) (2+infj) (-inf+infj) +mul (2+2j) (2+nanj) (nan+nanj) +mul (2+2j) (16-infj) (inf-infj) +mul (2+2j) (16-16j) (64+0j) +mul (2+2j) (16-2j) (36+28j) +mul (2+2j) (16-0j) (32+32j) +mul (2+2j) (16+0j) (32+32j) +mul (2+2j) (16+2j) (28+36j) +mul (2+2j) (16+16j) 64j +mul (2+2j) (16+infj) (-inf+infj) +mul (2+2j) (16+nanj) (nan+nanj) +mul (2+2j) (inf-infj) (inf+nanj) +mul (2+2j) (inf-16j) (inf+infj) +mul (2+2j) (inf-2j) (inf+infj) +mul (2+2j) (inf-0j) (inf+infj) +mul (2+2j) (inf+0j) (inf+infj) +mul (2+2j) (inf+2j) (inf+infj) +mul (2+2j) (inf+16j) (inf+infj) +mul (2+2j) (inf+infj) (nan+infj) +mul (2+2j) (inf+nanj) (nan+nanj) +mul (2+2j) (nan-infj) (nan+nanj) +mul (2+2j) (nan-16j) (nan+nanj) +mul (2+2j) (nan-2j) (nan+nanj) +mul (2+2j) (nan-0j) (nan+nanj) +mul (2+2j) (nan+0j) (nan+nanj) +mul (2+2j) (nan+2j) (nan+nanj) +mul (2+2j) (nan+16j) (nan+nanj) +mul (2+2j) (nan+infj) (nan+nanj) +mul (2+2j) (nan+nanj) (nan+nanj) +mul (2+16j) (-inf-infj) (nan-infj) +mul (2+16j) (-inf-16j) (-inf-infj) +mul (2+16j) (-inf-2j) (-inf-infj) +mul (2+16j) (-inf-0j) (-inf-infj) +mul (2+16j) (-inf+0j) (-inf-infj) +mul (2+16j) (-inf+2j) (-inf-infj) +mul (2+16j) (-inf+16j) (-inf-infj) +mul (2+16j) (-inf+infj) (-inf+nanj) +mul (2+16j) (-inf+nanj) (nan+nanj) +mul (2+16j) (-16-infj) (inf-infj) +mul (2+16j) (-16-16j) (224-288j) +mul (2+16j) (-16-2j) -260j +mul (2+16j) (-16-0j) (-32-256j) +mul (2+16j) (-16+0j) (-32-256j) +mul (2+16j) (-16+2j) (-64-252j) +mul (2+16j) (-16+16j) (-288-224j) +mul (2+16j) (-16+infj) (-inf+infj) +mul (2+16j) (-16+nanj) (nan+nanj) +mul (2+16j) (-2-infj) (inf-infj) +mul (2+16j) (-2-16j) (252-64j) +mul (2+16j) (-2-2j) (28-36j) +mul (2+16j) (-2-0j) (-4-32j) +mul (2+16j) (-2+0j) (-4-32j) +mul (2+16j) (-2+2j) (-36-28j) +mul (2+16j) (-2+16j) (-260+0j) +mul (2+16j) (-2+infj) (-inf+infj) +mul (2+16j) (-2+nanj) (nan+nanj) +mul (2+16j) (-0-infj) (inf-infj) +mul (2+16j) (-0-16j) (256-32j) +mul (2+16j) (-0-2j) (32-4j) +mul (2+16j) (-0-0j) -0j +mul (2+16j) (-0+0j) (-0+0j) +mul (2+16j) (-0+2j) (-32+4j) +mul (2+16j) (-0+16j) (-256+32j) +mul (2+16j) (-0+infj) (-inf+infj) +mul (2+16j) (-0+nanj) (nan+nanj) +mul (2+16j) -infj (inf-infj) +mul (2+16j) -16j (256-32j) +mul (2+16j) -2j (32-4j) +mul (2+16j) -0j 0j +mul (2+16j) 0j 0j +mul (2+16j) 2j (-32+4j) +mul (2+16j) 16j (-256+32j) +mul (2+16j) infj (-inf+infj) +mul (2+16j) nanj (nan+nanj) +mul (2+16j) (2-infj) (inf-infj) +mul (2+16j) (2-16j) (260+0j) +mul (2+16j) (2-2j) (36+28j) +mul (2+16j) (2-0j) (4+32j) +mul (2+16j) (2+0j) (4+32j) +mul (2+16j) (2+2j) (-28+36j) +mul (2+16j) (2+16j) (-252+64j) +mul (2+16j) (2+infj) (-inf+infj) +mul (2+16j) (2+nanj) (nan+nanj) +mul (2+16j) (16-infj) (inf-infj) +mul (2+16j) (16-16j) (288+224j) +mul (2+16j) (16-2j) (64+252j) +mul (2+16j) (16-0j) (32+256j) +mul (2+16j) (16+0j) (32+256j) +mul (2+16j) (16+2j) 260j +mul (2+16j) (16+16j) (-224+288j) +mul (2+16j) (16+infj) (-inf+infj) +mul (2+16j) (16+nanj) (nan+nanj) +mul (2+16j) (inf-infj) (inf+nanj) +mul (2+16j) (inf-16j) (inf+infj) +mul (2+16j) (inf-2j) (inf+infj) +mul (2+16j) (inf-0j) (inf+infj) +mul (2+16j) (inf+0j) (inf+infj) +mul (2+16j) (inf+2j) (inf+infj) +mul (2+16j) (inf+16j) (inf+infj) +mul (2+16j) (inf+infj) (nan+infj) +mul (2+16j) (inf+nanj) (nan+nanj) +mul (2+16j) (nan-infj) (nan+nanj) +mul (2+16j) (nan-16j) (nan+nanj) +mul (2+16j) (nan-2j) (nan+nanj) +mul (2+16j) (nan-0j) (nan+nanj) +mul (2+16j) (nan+0j) (nan+nanj) +mul (2+16j) (nan+2j) (nan+nanj) +mul (2+16j) (nan+16j) (nan+nanj) +mul (2+16j) (nan+infj) (nan+nanj) +mul (2+16j) (nan+nanj) (nan+nanj) +mul (2+infj) (-inf-infj) (nan-infj) +mul (2+infj) (-inf-16j) (nan-infj) +mul (2+infj) (-inf-2j) (nan-infj) +mul (2+infj) (-inf-0j) (nan-infj) +mul (2+infj) (-inf+0j) (nan-infj) +mul (2+infj) (-inf+2j) (-inf-infj) +mul (2+infj) (-inf+16j) (-inf-infj) +mul (2+infj) (-inf+infj) (-inf+nanj) +mul (2+infj) (-inf+nanj) (nan+nanj) +mul (2+infj) (-16-infj) (inf-infj) +mul (2+infj) (-16-16j) (inf-infj) +mul (2+infj) (-16-2j) (inf-infj) +mul (2+infj) (-16-0j) (nan-infj) +mul (2+infj) (-16+0j) (nan-infj) +mul (2+infj) (-16+2j) (-inf-infj) +mul (2+infj) (-16+16j) (-inf-infj) +mul (2+infj) (-16+infj) (-inf+nanj) +mul (2+infj) (-16+nanj) (nan+nanj) +mul (2+infj) (-2-infj) (inf-infj) +mul (2+infj) (-2-16j) (inf-infj) +mul (2+infj) (-2-2j) (inf-infj) +mul (2+infj) (-2-0j) (nan-infj) +mul (2+infj) (-2+0j) (nan-infj) +mul (2+infj) (-2+2j) (-inf-infj) +mul (2+infj) (-2+16j) (-inf-infj) +mul (2+infj) (-2+infj) (-inf+nanj) +mul (2+infj) (-2+nanj) (nan+nanj) +mul (2+infj) (-0-infj) (inf+nanj) +mul (2+infj) (-0-16j) (inf+nanj) +mul (2+infj) (-0-2j) (inf+nanj) +mul (2+infj) (-0-0j) (nan+nanj) +mul (2+infj) (-0+0j) (nan+nanj) +mul (2+infj) (-0+2j) (-inf+nanj) +mul (2+infj) (-0+16j) (-inf+nanj) +mul (2+infj) (-0+infj) (-inf+nanj) +mul (2+infj) (-0+nanj) (nan+nanj) +mul (2+infj) -infj (inf+nanj) +mul (2+infj) -16j (inf+nanj) +mul (2+infj) -2j (inf+nanj) +mul (2+infj) -0j (nan+nanj) +mul (2+infj) 0j (nan+nanj) +mul (2+infj) 2j (-inf+nanj) +mul (2+infj) 16j (-inf+nanj) +mul (2+infj) infj (-inf+nanj) +mul (2+infj) nanj (nan+nanj) +mul (2+infj) (2-infj) (inf+nanj) +mul (2+infj) (2-16j) (inf+infj) +mul (2+infj) (2-2j) (inf+infj) +mul (2+infj) (2-0j) (nan+infj) +mul (2+infj) (2+0j) (nan+infj) +mul (2+infj) (2+2j) (-inf+infj) +mul (2+infj) (2+16j) (-inf+infj) +mul (2+infj) (2+infj) (-inf+infj) +mul (2+infj) (2+nanj) (nan+nanj) +mul (2+infj) (16-infj) (inf+nanj) +mul (2+infj) (16-16j) (inf+infj) +mul (2+infj) (16-2j) (inf+infj) +mul (2+infj) (16-0j) (nan+infj) +mul (2+infj) (16+0j) (nan+infj) +mul (2+infj) (16+2j) (-inf+infj) +mul (2+infj) (16+16j) (-inf+infj) +mul (2+infj) (16+infj) (-inf+infj) +mul (2+infj) (16+nanj) (nan+nanj) +mul (2+infj) (inf-infj) (inf+nanj) +mul (2+infj) (inf-16j) (inf+infj) +mul (2+infj) (inf-2j) (inf+infj) +mul (2+infj) (inf-0j) (nan+infj) +mul (2+infj) (inf+0j) (nan+infj) +mul (2+infj) (inf+2j) (nan+infj) +mul (2+infj) (inf+16j) (nan+infj) +mul (2+infj) (inf+infj) (nan+infj) +mul (2+infj) (inf+nanj) (nan+nanj) +mul (2+infj) (nan-infj) (nan+nanj) +mul (2+infj) (nan-16j) (nan+nanj) +mul (2+infj) (nan-2j) (nan+nanj) +mul (2+infj) (nan-0j) (nan+nanj) +mul (2+infj) (nan+0j) (nan+nanj) +mul (2+infj) (nan+2j) (nan+nanj) +mul (2+infj) (nan+16j) (nan+nanj) +mul (2+infj) (nan+infj) (nan+nanj) +mul (2+infj) (nan+nanj) (nan+nanj) +mul (2+nanj) (-inf-infj) (nan+nanj) +mul (2+nanj) (-inf-16j) (nan+nanj) +mul (2+nanj) (-inf-2j) (nan+nanj) +mul (2+nanj) (-inf-0j) (nan+nanj) +mul (2+nanj) (-inf+0j) (nan+nanj) +mul (2+nanj) (-inf+2j) (nan+nanj) +mul (2+nanj) (-inf+16j) (nan+nanj) +mul (2+nanj) (-inf+infj) (nan+nanj) +mul (2+nanj) (-inf+nanj) (nan+nanj) +mul (2+nanj) (-16-infj) (nan+nanj) +mul (2+nanj) (-16-16j) (nan+nanj) +mul (2+nanj) (-16-2j) (nan+nanj) +mul (2+nanj) (-16-0j) (nan+nanj) +mul (2+nanj) (-16+0j) (nan+nanj) +mul (2+nanj) (-16+2j) (nan+nanj) +mul (2+nanj) (-16+16j) (nan+nanj) +mul (2+nanj) (-16+infj) (nan+nanj) +mul (2+nanj) (-16+nanj) (nan+nanj) +mul (2+nanj) (-2-infj) (nan+nanj) +mul (2+nanj) (-2-16j) (nan+nanj) +mul (2+nanj) (-2-2j) (nan+nanj) +mul (2+nanj) (-2-0j) (nan+nanj) +mul (2+nanj) (-2+0j) (nan+nanj) +mul (2+nanj) (-2+2j) (nan+nanj) +mul (2+nanj) (-2+16j) (nan+nanj) +mul (2+nanj) (-2+infj) (nan+nanj) +mul (2+nanj) (-2+nanj) (nan+nanj) +mul (2+nanj) (-0-infj) (nan+nanj) +mul (2+nanj) (-0-16j) (nan+nanj) +mul (2+nanj) (-0-2j) (nan+nanj) +mul (2+nanj) (-0-0j) (nan+nanj) +mul (2+nanj) (-0+0j) (nan+nanj) +mul (2+nanj) (-0+2j) (nan+nanj) +mul (2+nanj) (-0+16j) (nan+nanj) +mul (2+nanj) (-0+infj) (nan+nanj) +mul (2+nanj) (-0+nanj) (nan+nanj) +mul (2+nanj) -infj (nan+nanj) +mul (2+nanj) -16j (nan+nanj) +mul (2+nanj) -2j (nan+nanj) +mul (2+nanj) -0j (nan+nanj) +mul (2+nanj) 0j (nan+nanj) +mul (2+nanj) 2j (nan+nanj) +mul (2+nanj) 16j (nan+nanj) +mul (2+nanj) infj (nan+nanj) +mul (2+nanj) nanj (nan+nanj) +mul (2+nanj) (2-infj) (nan+nanj) +mul (2+nanj) (2-16j) (nan+nanj) +mul (2+nanj) (2-2j) (nan+nanj) +mul (2+nanj) (2-0j) (nan+nanj) +mul (2+nanj) (2+0j) (nan+nanj) +mul (2+nanj) (2+2j) (nan+nanj) +mul (2+nanj) (2+16j) (nan+nanj) +mul (2+nanj) (2+infj) (nan+nanj) +mul (2+nanj) (2+nanj) (nan+nanj) +mul (2+nanj) (16-infj) (nan+nanj) +mul (2+nanj) (16-16j) (nan+nanj) +mul (2+nanj) (16-2j) (nan+nanj) +mul (2+nanj) (16-0j) (nan+nanj) +mul (2+nanj) (16+0j) (nan+nanj) +mul (2+nanj) (16+2j) (nan+nanj) +mul (2+nanj) (16+16j) (nan+nanj) +mul (2+nanj) (16+infj) (nan+nanj) +mul (2+nanj) (16+nanj) (nan+nanj) +mul (2+nanj) (inf-infj) (nan+nanj) +mul (2+nanj) (inf-16j) (nan+nanj) +mul (2+nanj) (inf-2j) (nan+nanj) +mul (2+nanj) (inf-0j) (nan+nanj) +mul (2+nanj) (inf+0j) (nan+nanj) +mul (2+nanj) (inf+2j) (nan+nanj) +mul (2+nanj) (inf+16j) (nan+nanj) +mul (2+nanj) (inf+infj) (nan+nanj) +mul (2+nanj) (inf+nanj) (nan+nanj) +mul (2+nanj) (nan-infj) (nan+nanj) +mul (2+nanj) (nan-16j) (nan+nanj) +mul (2+nanj) (nan-2j) (nan+nanj) +mul (2+nanj) (nan-0j) (nan+nanj) +mul (2+nanj) (nan+0j) (nan+nanj) +mul (2+nanj) (nan+2j) (nan+nanj) +mul (2+nanj) (nan+16j) (nan+nanj) +mul (2+nanj) (nan+infj) (nan+nanj) +mul (2+nanj) (nan+nanj) (nan+nanj) +mul (16-infj) (-inf-infj) (-inf+nanj) +mul (16-infj) (-inf-16j) (-inf+infj) +mul (16-infj) (-inf-2j) (-inf+infj) +mul (16-infj) (-inf-0j) (nan+infj) +mul (16-infj) (-inf+0j) (nan+infj) +mul (16-infj) (-inf+2j) (nan+infj) +mul (16-infj) (-inf+16j) (nan+infj) +mul (16-infj) (-inf+infj) (nan+infj) +mul (16-infj) (-inf+nanj) (nan+nanj) +mul (16-infj) (-16-infj) (-inf+nanj) +mul (16-infj) (-16-16j) (-inf+infj) +mul (16-infj) (-16-2j) (-inf+infj) +mul (16-infj) (-16-0j) (nan+infj) +mul (16-infj) (-16+0j) (nan+infj) +mul (16-infj) (-16+2j) (inf+infj) +mul (16-infj) (-16+16j) (inf+infj) +mul (16-infj) (-16+infj) (inf+infj) +mul (16-infj) (-16+nanj) (nan+nanj) +mul (16-infj) (-2-infj) (-inf+nanj) +mul (16-infj) (-2-16j) (-inf+infj) +mul (16-infj) (-2-2j) (-inf+infj) +mul (16-infj) (-2-0j) (nan+infj) +mul (16-infj) (-2+0j) (nan+infj) +mul (16-infj) (-2+2j) (inf+infj) +mul (16-infj) (-2+16j) (inf+infj) +mul (16-infj) (-2+infj) (inf+infj) +mul (16-infj) (-2+nanj) (nan+nanj) +mul (16-infj) (-0-infj) (-inf+nanj) +mul (16-infj) (-0-16j) (-inf+nanj) +mul (16-infj) (-0-2j) (-inf+nanj) +mul (16-infj) (-0-0j) (nan+nanj) +mul (16-infj) (-0+0j) (nan+nanj) +mul (16-infj) (-0+2j) (inf+nanj) +mul (16-infj) (-0+16j) (inf+nanj) +mul (16-infj) (-0+infj) (inf+nanj) +mul (16-infj) (-0+nanj) (nan+nanj) +mul (16-infj) -infj (-inf+nanj) +mul (16-infj) -16j (-inf+nanj) +mul (16-infj) -2j (-inf+nanj) +mul (16-infj) -0j (nan+nanj) +mul (16-infj) 0j (nan+nanj) +mul (16-infj) 2j (inf+nanj) +mul (16-infj) 16j (inf+nanj) +mul (16-infj) infj (inf+nanj) +mul (16-infj) nanj (nan+nanj) +mul (16-infj) (2-infj) (-inf-infj) +mul (16-infj) (2-16j) (-inf-infj) +mul (16-infj) (2-2j) (-inf-infj) +mul (16-infj) (2-0j) (nan-infj) +mul (16-infj) (2+0j) (nan-infj) +mul (16-infj) (2+2j) (inf-infj) +mul (16-infj) (2+16j) (inf-infj) +mul (16-infj) (2+infj) (inf+nanj) +mul (16-infj) (2+nanj) (nan+nanj) +mul (16-infj) (16-infj) (-inf-infj) +mul (16-infj) (16-16j) (-inf-infj) +mul (16-infj) (16-2j) (-inf-infj) +mul (16-infj) (16-0j) (nan-infj) +mul (16-infj) (16+0j) (nan-infj) +mul (16-infj) (16+2j) (inf-infj) +mul (16-infj) (16+16j) (inf-infj) +mul (16-infj) (16+infj) (inf+nanj) +mul (16-infj) (16+nanj) (nan+nanj) +mul (16-infj) (inf-infj) (nan-infj) +mul (16-infj) (inf-16j) (nan-infj) +mul (16-infj) (inf-2j) (nan-infj) +mul (16-infj) (inf-0j) (nan-infj) +mul (16-infj) (inf+0j) (nan-infj) +mul (16-infj) (inf+2j) (inf-infj) +mul (16-infj) (inf+16j) (inf-infj) +mul (16-infj) (inf+infj) (inf+nanj) +mul (16-infj) (inf+nanj) (nan+nanj) +mul (16-infj) (nan-infj) (nan+nanj) +mul (16-infj) (nan-16j) (nan+nanj) +mul (16-infj) (nan-2j) (nan+nanj) +mul (16-infj) (nan-0j) (nan+nanj) +mul (16-infj) (nan+0j) (nan+nanj) +mul (16-infj) (nan+2j) (nan+nanj) +mul (16-infj) (nan+16j) (nan+nanj) +mul (16-infj) (nan+infj) (nan+nanj) +mul (16-infj) (nan+nanj) (nan+nanj) +mul (16-16j) (-inf-infj) (-inf+nanj) +mul (16-16j) (-inf-16j) (-inf+infj) +mul (16-16j) (-inf-2j) (-inf+infj) +mul (16-16j) (-inf-0j) (-inf+infj) +mul (16-16j) (-inf+0j) (-inf+infj) +mul (16-16j) (-inf+2j) (-inf+infj) +mul (16-16j) (-inf+16j) (-inf+infj) +mul (16-16j) (-inf+infj) (nan+infj) +mul (16-16j) (-inf+nanj) (nan+nanj) +mul (16-16j) (-16-infj) (-inf-infj) +mul (16-16j) (-16-16j) (-512+0j) +mul (16-16j) (-16-2j) (-288+224j) +mul (16-16j) (-16-0j) (-256+256j) +mul (16-16j) (-16+0j) (-256+256j) +mul (16-16j) (-16+2j) (-224+288j) +mul (16-16j) (-16+16j) 512j +mul (16-16j) (-16+infj) (inf+infj) +mul (16-16j) (-16+nanj) (nan+nanj) +mul (16-16j) (-2-infj) (-inf-infj) +mul (16-16j) (-2-16j) (-288-224j) +mul (16-16j) (-2-2j) (-64+0j) +mul (16-16j) (-2-0j) (-32+32j) +mul (16-16j) (-2+0j) (-32+32j) +mul (16-16j) (-2+2j) 64j +mul (16-16j) (-2+16j) (224+288j) +mul (16-16j) (-2+infj) (inf+infj) +mul (16-16j) (-2+nanj) (nan+nanj) +mul (16-16j) (-0-infj) (-inf-infj) +mul (16-16j) (-0-16j) (-256-256j) +mul (16-16j) (-0-2j) (-32-32j) +mul (16-16j) (-0-0j) (-0+0j) +mul (16-16j) (-0+0j) 0j +mul (16-16j) (-0+2j) (32+32j) +mul (16-16j) (-0+16j) (256+256j) +mul (16-16j) (-0+infj) (inf+infj) +mul (16-16j) (-0+nanj) (nan+nanj) +mul (16-16j) -infj (-inf-infj) +mul (16-16j) -16j (-256-256j) +mul (16-16j) -2j (-32-32j) +mul (16-16j) -0j -0j +mul (16-16j) 0j 0j +mul (16-16j) 2j (32+32j) +mul (16-16j) 16j (256+256j) +mul (16-16j) infj (inf+infj) +mul (16-16j) nanj (nan+nanj) +mul (16-16j) (2-infj) (-inf-infj) +mul (16-16j) (2-16j) (-224-288j) +mul (16-16j) (2-2j) -64j +mul (16-16j) (2-0j) (32-32j) +mul (16-16j) (2+0j) (32-32j) +mul (16-16j) (2+2j) (64+0j) +mul (16-16j) (2+16j) (288+224j) +mul (16-16j) (2+infj) (inf+infj) +mul (16-16j) (2+nanj) (nan+nanj) +mul (16-16j) (16-infj) (-inf-infj) +mul (16-16j) (16-16j) -512j +mul (16-16j) (16-2j) (224-288j) +mul (16-16j) (16-0j) (256-256j) +mul (16-16j) (16+0j) (256-256j) +mul (16-16j) (16+2j) (288-224j) +mul (16-16j) (16+16j) (512+0j) +mul (16-16j) (16+infj) (inf+infj) +mul (16-16j) (16+nanj) (nan+nanj) +mul (16-16j) (inf-infj) (nan-infj) +mul (16-16j) (inf-16j) (inf-infj) +mul (16-16j) (inf-2j) (inf-infj) +mul (16-16j) (inf-0j) (inf-infj) +mul (16-16j) (inf+0j) (inf-infj) +mul (16-16j) (inf+2j) (inf-infj) +mul (16-16j) (inf+16j) (inf-infj) +mul (16-16j) (inf+infj) (inf+nanj) +mul (16-16j) (inf+nanj) (nan+nanj) +mul (16-16j) (nan-infj) (nan+nanj) +mul (16-16j) (nan-16j) (nan+nanj) +mul (16-16j) (nan-2j) (nan+nanj) +mul (16-16j) (nan-0j) (nan+nanj) +mul (16-16j) (nan+0j) (nan+nanj) +mul (16-16j) (nan+2j) (nan+nanj) +mul (16-16j) (nan+16j) (nan+nanj) +mul (16-16j) (nan+infj) (nan+nanj) +mul (16-16j) (nan+nanj) (nan+nanj) +mul (16-2j) (-inf-infj) (-inf+nanj) +mul (16-2j) (-inf-16j) (-inf+infj) +mul (16-2j) (-inf-2j) (-inf+infj) +mul (16-2j) (-inf-0j) (-inf+infj) +mul (16-2j) (-inf+0j) (-inf+infj) +mul (16-2j) (-inf+2j) (-inf+infj) +mul (16-2j) (-inf+16j) (-inf+infj) +mul (16-2j) (-inf+infj) (nan+infj) +mul (16-2j) (-inf+nanj) (nan+nanj) +mul (16-2j) (-16-infj) (-inf-infj) +mul (16-2j) (-16-16j) (-288-224j) +mul (16-2j) (-16-2j) (-260+0j) +mul (16-2j) (-16-0j) (-256+32j) +mul (16-2j) (-16+0j) (-256+32j) +mul (16-2j) (-16+2j) (-252+64j) +mul (16-2j) (-16+16j) (-224+288j) +mul (16-2j) (-16+infj) (inf+infj) +mul (16-2j) (-16+nanj) (nan+nanj) +mul (16-2j) (-2-infj) (-inf-infj) +mul (16-2j) (-2-16j) (-64-252j) +mul (16-2j) (-2-2j) (-36-28j) +mul (16-2j) (-2-0j) (-32+4j) +mul (16-2j) (-2+0j) (-32+4j) +mul (16-2j) (-2+2j) (-28+36j) +mul (16-2j) (-2+16j) 260j +mul (16-2j) (-2+infj) (inf+infj) +mul (16-2j) (-2+nanj) (nan+nanj) +mul (16-2j) (-0-infj) (-inf-infj) +mul (16-2j) (-0-16j) (-32-256j) +mul (16-2j) (-0-2j) (-4-32j) +mul (16-2j) (-0-0j) (-0+0j) +mul (16-2j) (-0+0j) 0j +mul (16-2j) (-0+2j) (4+32j) +mul (16-2j) (-0+16j) (32+256j) +mul (16-2j) (-0+infj) (inf+infj) +mul (16-2j) (-0+nanj) (nan+nanj) +mul (16-2j) -infj (-inf-infj) +mul (16-2j) -16j (-32-256j) +mul (16-2j) -2j (-4-32j) +mul (16-2j) -0j -0j +mul (16-2j) 0j 0j +mul (16-2j) 2j (4+32j) +mul (16-2j) 16j (32+256j) +mul (16-2j) infj (inf+infj) +mul (16-2j) nanj (nan+nanj) +mul (16-2j) (2-infj) (-inf-infj) +mul (16-2j) (2-16j) -260j +mul (16-2j) (2-2j) (28-36j) +mul (16-2j) (2-0j) (32-4j) +mul (16-2j) (2+0j) (32-4j) +mul (16-2j) (2+2j) (36+28j) +mul (16-2j) (2+16j) (64+252j) +mul (16-2j) (2+infj) (inf+infj) +mul (16-2j) (2+nanj) (nan+nanj) +mul (16-2j) (16-infj) (-inf-infj) +mul (16-2j) (16-16j) (224-288j) +mul (16-2j) (16-2j) (252-64j) +mul (16-2j) (16-0j) (256-32j) +mul (16-2j) (16+0j) (256-32j) +mul (16-2j) (16+2j) (260+0j) +mul (16-2j) (16+16j) (288+224j) +mul (16-2j) (16+infj) (inf+infj) +mul (16-2j) (16+nanj) (nan+nanj) +mul (16-2j) (inf-infj) (nan-infj) +mul (16-2j) (inf-16j) (inf-infj) +mul (16-2j) (inf-2j) (inf-infj) +mul (16-2j) (inf-0j) (inf-infj) +mul (16-2j) (inf+0j) (inf-infj) +mul (16-2j) (inf+2j) (inf-infj) +mul (16-2j) (inf+16j) (inf-infj) +mul (16-2j) (inf+infj) (inf+nanj) +mul (16-2j) (inf+nanj) (nan+nanj) +mul (16-2j) (nan-infj) (nan+nanj) +mul (16-2j) (nan-16j) (nan+nanj) +mul (16-2j) (nan-2j) (nan+nanj) +mul (16-2j) (nan-0j) (nan+nanj) +mul (16-2j) (nan+0j) (nan+nanj) +mul (16-2j) (nan+2j) (nan+nanj) +mul (16-2j) (nan+16j) (nan+nanj) +mul (16-2j) (nan+infj) (nan+nanj) +mul (16-2j) (nan+nanj) (nan+nanj) +mul (16-0j) (-inf-infj) (nan+nanj) +mul (16-0j) (-inf-16j) (-inf+nanj) +mul (16-0j) (-inf-2j) (-inf+nanj) +mul (16-0j) (-inf-0j) (-inf+nanj) +mul (16-0j) (-inf+0j) (-inf+nanj) +mul (16-0j) (-inf+2j) (-inf+nanj) +mul (16-0j) (-inf+16j) (-inf+nanj) +mul (16-0j) (-inf+infj) (nan+nanj) +mul (16-0j) (-inf+nanj) (nan+nanj) +mul (16-0j) (-16-infj) (nan-infj) +mul (16-0j) (-16-16j) (-256-256j) +mul (16-0j) (-16-2j) (-256-32j) +mul (16-0j) (-16-0j) (-256+0j) +mul (16-0j) (-16+0j) (-256+0j) +mul (16-0j) (-16+2j) (-256+32j) +mul (16-0j) (-16+16j) (-256+256j) +mul (16-0j) (-16+infj) (nan+infj) +mul (16-0j) (-16+nanj) (nan+nanj) +mul (16-0j) (-2-infj) (nan-infj) +mul (16-0j) (-2-16j) (-32-256j) +mul (16-0j) (-2-2j) (-32-32j) +mul (16-0j) (-2-0j) (-32+0j) +mul (16-0j) (-2+0j) (-32+0j) +mul (16-0j) (-2+2j) (-32+32j) +mul (16-0j) (-2+16j) (-32+256j) +mul (16-0j) (-2+infj) (nan+infj) +mul (16-0j) (-2+nanj) (nan+nanj) +mul (16-0j) (-0-infj) (nan-infj) +mul (16-0j) (-0-16j) (-0-256j) +mul (16-0j) (-0-2j) (-0-32j) +mul (16-0j) (-0-0j) (-0+0j) +mul (16-0j) (-0+0j) 0j +mul (16-0j) (-0+2j) 32j +mul (16-0j) (-0+16j) 256j +mul (16-0j) (-0+infj) (nan+infj) +mul (16-0j) (-0+nanj) (nan+nanj) +mul (16-0j) -infj (nan-infj) +mul (16-0j) -16j -256j +mul (16-0j) -2j -32j +mul (16-0j) -0j -0j +mul (16-0j) 0j 0j +mul (16-0j) 2j 32j +mul (16-0j) 16j 256j +mul (16-0j) infj (nan+infj) +mul (16-0j) nanj (nan+nanj) +mul (16-0j) (2-infj) (nan-infj) +mul (16-0j) (2-16j) (32-256j) +mul (16-0j) (2-2j) (32-32j) +mul (16-0j) (2-0j) (32-0j) +mul (16-0j) (2+0j) (32+0j) +mul (16-0j) (2+2j) (32+32j) +mul (16-0j) (2+16j) (32+256j) +mul (16-0j) (2+infj) (nan+infj) +mul (16-0j) (2+nanj) (nan+nanj) +mul (16-0j) (16-infj) (nan-infj) +mul (16-0j) (16-16j) (256-256j) +mul (16-0j) (16-2j) (256-32j) +mul (16-0j) (16-0j) (256-0j) +mul (16-0j) (16+0j) (256+0j) +mul (16-0j) (16+2j) (256+32j) +mul (16-0j) (16+16j) (256+256j) +mul (16-0j) (16+infj) (nan+infj) +mul (16-0j) (16+nanj) (nan+nanj) +mul (16-0j) (inf-infj) (nan+nanj) +mul (16-0j) (inf-16j) (inf+nanj) +mul (16-0j) (inf-2j) (inf+nanj) +mul (16-0j) (inf-0j) (inf+nanj) +mul (16-0j) (inf+0j) (inf+nanj) +mul (16-0j) (inf+2j) (inf+nanj) +mul (16-0j) (inf+16j) (inf+nanj) +mul (16-0j) (inf+infj) (nan+nanj) +mul (16-0j) (inf+nanj) (nan+nanj) +mul (16-0j) (nan-infj) (nan+nanj) +mul (16-0j) (nan-16j) (nan+nanj) +mul (16-0j) (nan-2j) (nan+nanj) +mul (16-0j) (nan-0j) (nan+nanj) +mul (16-0j) (nan+0j) (nan+nanj) +mul (16-0j) (nan+2j) (nan+nanj) +mul (16-0j) (nan+16j) (nan+nanj) +mul (16-0j) (nan+infj) (nan+nanj) +mul (16-0j) (nan+nanj) (nan+nanj) +mul (16+0j) (-inf-infj) (nan+nanj) +mul (16+0j) (-inf-16j) (-inf+nanj) +mul (16+0j) (-inf-2j) (-inf+nanj) +mul (16+0j) (-inf-0j) (-inf+nanj) +mul (16+0j) (-inf+0j) (-inf+nanj) +mul (16+0j) (-inf+2j) (-inf+nanj) +mul (16+0j) (-inf+16j) (-inf+nanj) +mul (16+0j) (-inf+infj) (nan+nanj) +mul (16+0j) (-inf+nanj) (nan+nanj) +mul (16+0j) (-16-infj) (nan-infj) +mul (16+0j) (-16-16j) (-256-256j) +mul (16+0j) (-16-2j) (-256-32j) +mul (16+0j) (-16-0j) (-256-0j) +mul (16+0j) (-16+0j) (-256+0j) +mul (16+0j) (-16+2j) (-256+32j) +mul (16+0j) (-16+16j) (-256+256j) +mul (16+0j) (-16+infj) (nan+infj) +mul (16+0j) (-16+nanj) (nan+nanj) +mul (16+0j) (-2-infj) (nan-infj) +mul (16+0j) (-2-16j) (-32-256j) +mul (16+0j) (-2-2j) (-32-32j) +mul (16+0j) (-2-0j) (-32-0j) +mul (16+0j) (-2+0j) (-32+0j) +mul (16+0j) (-2+2j) (-32+32j) +mul (16+0j) (-2+16j) (-32+256j) +mul (16+0j) (-2+infj) (nan+infj) +mul (16+0j) (-2+nanj) (nan+nanj) +mul (16+0j) (-0-infj) (nan-infj) +mul (16+0j) (-0-16j) -256j +mul (16+0j) (-0-2j) -32j +mul (16+0j) (-0-0j) -0j +mul (16+0j) (-0+0j) (-0+0j) +mul (16+0j) (-0+2j) (-0+32j) +mul (16+0j) (-0+16j) (-0+256j) +mul (16+0j) (-0+infj) (nan+infj) +mul (16+0j) (-0+nanj) (nan+nanj) +mul (16+0j) -infj (nan-infj) +mul (16+0j) -16j -256j +mul (16+0j) -2j -32j +mul (16+0j) -0j 0j +mul (16+0j) 0j 0j +mul (16+0j) 2j 32j +mul (16+0j) 16j 256j +mul (16+0j) infj (nan+infj) +mul (16+0j) nanj (nan+nanj) +mul (16+0j) (2-infj) (nan-infj) +mul (16+0j) (2-16j) (32-256j) +mul (16+0j) (2-2j) (32-32j) +mul (16+0j) (2-0j) (32+0j) +mul (16+0j) (2+0j) (32+0j) +mul (16+0j) (2+2j) (32+32j) +mul (16+0j) (2+16j) (32+256j) +mul (16+0j) (2+infj) (nan+infj) +mul (16+0j) (2+nanj) (nan+nanj) +mul (16+0j) (16-infj) (nan-infj) +mul (16+0j) (16-16j) (256-256j) +mul (16+0j) (16-2j) (256-32j) +mul (16+0j) (16-0j) (256+0j) +mul (16+0j) (16+0j) (256+0j) +mul (16+0j) (16+2j) (256+32j) +mul (16+0j) (16+16j) (256+256j) +mul (16+0j) (16+infj) (nan+infj) +mul (16+0j) (16+nanj) (nan+nanj) +mul (16+0j) (inf-infj) (nan+nanj) +mul (16+0j) (inf-16j) (inf+nanj) +mul (16+0j) (inf-2j) (inf+nanj) +mul (16+0j) (inf-0j) (inf+nanj) +mul (16+0j) (inf+0j) (inf+nanj) +mul (16+0j) (inf+2j) (inf+nanj) +mul (16+0j) (inf+16j) (inf+nanj) +mul (16+0j) (inf+infj) (nan+nanj) +mul (16+0j) (inf+nanj) (nan+nanj) +mul (16+0j) (nan-infj) (nan+nanj) +mul (16+0j) (nan-16j) (nan+nanj) +mul (16+0j) (nan-2j) (nan+nanj) +mul (16+0j) (nan-0j) (nan+nanj) +mul (16+0j) (nan+0j) (nan+nanj) +mul (16+0j) (nan+2j) (nan+nanj) +mul (16+0j) (nan+16j) (nan+nanj) +mul (16+0j) (nan+infj) (nan+nanj) +mul (16+0j) (nan+nanj) (nan+nanj) +mul (16+2j) (-inf-infj) (nan-infj) +mul (16+2j) (-inf-16j) (-inf-infj) +mul (16+2j) (-inf-2j) (-inf-infj) +mul (16+2j) (-inf-0j) (-inf-infj) +mul (16+2j) (-inf+0j) (-inf-infj) +mul (16+2j) (-inf+2j) (-inf-infj) +mul (16+2j) (-inf+16j) (-inf-infj) +mul (16+2j) (-inf+infj) (-inf+nanj) +mul (16+2j) (-inf+nanj) (nan+nanj) +mul (16+2j) (-16-infj) (inf-infj) +mul (16+2j) (-16-16j) (-224-288j) +mul (16+2j) (-16-2j) (-252-64j) +mul (16+2j) (-16-0j) (-256-32j) +mul (16+2j) (-16+0j) (-256-32j) +mul (16+2j) (-16+2j) (-260+0j) +mul (16+2j) (-16+16j) (-288+224j) +mul (16+2j) (-16+infj) (-inf+infj) +mul (16+2j) (-16+nanj) (nan+nanj) +mul (16+2j) (-2-infj) (inf-infj) +mul (16+2j) (-2-16j) -260j +mul (16+2j) (-2-2j) (-28-36j) +mul (16+2j) (-2-0j) (-32-4j) +mul (16+2j) (-2+0j) (-32-4j) +mul (16+2j) (-2+2j) (-36+28j) +mul (16+2j) (-2+16j) (-64+252j) +mul (16+2j) (-2+infj) (-inf+infj) +mul (16+2j) (-2+nanj) (nan+nanj) +mul (16+2j) (-0-infj) (inf-infj) +mul (16+2j) (-0-16j) (32-256j) +mul (16+2j) (-0-2j) (4-32j) +mul (16+2j) (-0-0j) -0j +mul (16+2j) (-0+0j) (-0+0j) +mul (16+2j) (-0+2j) (-4+32j) +mul (16+2j) (-0+16j) (-32+256j) +mul (16+2j) (-0+infj) (-inf+infj) +mul (16+2j) (-0+nanj) (nan+nanj) +mul (16+2j) -infj (inf-infj) +mul (16+2j) -16j (32-256j) +mul (16+2j) -2j (4-32j) +mul (16+2j) -0j 0j +mul (16+2j) 0j 0j +mul (16+2j) 2j (-4+32j) +mul (16+2j) 16j (-32+256j) +mul (16+2j) infj (-inf+infj) +mul (16+2j) nanj (nan+nanj) +mul (16+2j) (2-infj) (inf-infj) +mul (16+2j) (2-16j) (64-252j) +mul (16+2j) (2-2j) (36-28j) +mul (16+2j) (2-0j) (32+4j) +mul (16+2j) (2+0j) (32+4j) +mul (16+2j) (2+2j) (28+36j) +mul (16+2j) (2+16j) 260j +mul (16+2j) (2+infj) (-inf+infj) +mul (16+2j) (2+nanj) (nan+nanj) +mul (16+2j) (16-infj) (inf-infj) +mul (16+2j) (16-16j) (288-224j) +mul (16+2j) (16-2j) (260+0j) +mul (16+2j) (16-0j) (256+32j) +mul (16+2j) (16+0j) (256+32j) +mul (16+2j) (16+2j) (252+64j) +mul (16+2j) (16+16j) (224+288j) +mul (16+2j) (16+infj) (-inf+infj) +mul (16+2j) (16+nanj) (nan+nanj) +mul (16+2j) (inf-infj) (inf+nanj) +mul (16+2j) (inf-16j) (inf+infj) +mul (16+2j) (inf-2j) (inf+infj) +mul (16+2j) (inf-0j) (inf+infj) +mul (16+2j) (inf+0j) (inf+infj) +mul (16+2j) (inf+2j) (inf+infj) +mul (16+2j) (inf+16j) (inf+infj) +mul (16+2j) (inf+infj) (nan+infj) +mul (16+2j) (inf+nanj) (nan+nanj) +mul (16+2j) (nan-infj) (nan+nanj) +mul (16+2j) (nan-16j) (nan+nanj) +mul (16+2j) (nan-2j) (nan+nanj) +mul (16+2j) (nan-0j) (nan+nanj) +mul (16+2j) (nan+0j) (nan+nanj) +mul (16+2j) (nan+2j) (nan+nanj) +mul (16+2j) (nan+16j) (nan+nanj) +mul (16+2j) (nan+infj) (nan+nanj) +mul (16+2j) (nan+nanj) (nan+nanj) +mul (16+16j) (-inf-infj) (nan-infj) +mul (16+16j) (-inf-16j) (-inf-infj) +mul (16+16j) (-inf-2j) (-inf-infj) +mul (16+16j) (-inf-0j) (-inf-infj) +mul (16+16j) (-inf+0j) (-inf-infj) +mul (16+16j) (-inf+2j) (-inf-infj) +mul (16+16j) (-inf+16j) (-inf-infj) +mul (16+16j) (-inf+infj) (-inf+nanj) +mul (16+16j) (-inf+nanj) (nan+nanj) +mul (16+16j) (-16-infj) (inf-infj) +mul (16+16j) (-16-16j) -512j +mul (16+16j) (-16-2j) (-224-288j) +mul (16+16j) (-16-0j) (-256-256j) +mul (16+16j) (-16+0j) (-256-256j) +mul (16+16j) (-16+2j) (-288-224j) +mul (16+16j) (-16+16j) (-512+0j) +mul (16+16j) (-16+infj) (-inf+infj) +mul (16+16j) (-16+nanj) (nan+nanj) +mul (16+16j) (-2-infj) (inf-infj) +mul (16+16j) (-2-16j) (224-288j) +mul (16+16j) (-2-2j) -64j +mul (16+16j) (-2-0j) (-32-32j) +mul (16+16j) (-2+0j) (-32-32j) +mul (16+16j) (-2+2j) (-64+0j) +mul (16+16j) (-2+16j) (-288+224j) +mul (16+16j) (-2+infj) (-inf+infj) +mul (16+16j) (-2+nanj) (nan+nanj) +mul (16+16j) (-0-infj) (inf-infj) +mul (16+16j) (-0-16j) (256-256j) +mul (16+16j) (-0-2j) (32-32j) +mul (16+16j) (-0-0j) -0j +mul (16+16j) (-0+0j) (-0+0j) +mul (16+16j) (-0+2j) (-32+32j) +mul (16+16j) (-0+16j) (-256+256j) +mul (16+16j) (-0+infj) (-inf+infj) +mul (16+16j) (-0+nanj) (nan+nanj) +mul (16+16j) -infj (inf-infj) +mul (16+16j) -16j (256-256j) +mul (16+16j) -2j (32-32j) +mul (16+16j) -0j 0j +mul (16+16j) 0j 0j +mul (16+16j) 2j (-32+32j) +mul (16+16j) 16j (-256+256j) +mul (16+16j) infj (-inf+infj) +mul (16+16j) nanj (nan+nanj) +mul (16+16j) (2-infj) (inf-infj) +mul (16+16j) (2-16j) (288-224j) +mul (16+16j) (2-2j) (64+0j) +mul (16+16j) (2-0j) (32+32j) +mul (16+16j) (2+0j) (32+32j) +mul (16+16j) (2+2j) 64j +mul (16+16j) (2+16j) (-224+288j) +mul (16+16j) (2+infj) (-inf+infj) +mul (16+16j) (2+nanj) (nan+nanj) +mul (16+16j) (16-infj) (inf-infj) +mul (16+16j) (16-16j) (512+0j) +mul (16+16j) (16-2j) (288+224j) +mul (16+16j) (16-0j) (256+256j) +mul (16+16j) (16+0j) (256+256j) +mul (16+16j) (16+2j) (224+288j) +mul (16+16j) (16+16j) 512j +mul (16+16j) (16+infj) (-inf+infj) +mul (16+16j) (16+nanj) (nan+nanj) +mul (16+16j) (inf-infj) (inf+nanj) +mul (16+16j) (inf-16j) (inf+infj) +mul (16+16j) (inf-2j) (inf+infj) +mul (16+16j) (inf-0j) (inf+infj) +mul (16+16j) (inf+0j) (inf+infj) +mul (16+16j) (inf+2j) (inf+infj) +mul (16+16j) (inf+16j) (inf+infj) +mul (16+16j) (inf+infj) (nan+infj) +mul (16+16j) (inf+nanj) (nan+nanj) +mul (16+16j) (nan-infj) (nan+nanj) +mul (16+16j) (nan-16j) (nan+nanj) +mul (16+16j) (nan-2j) (nan+nanj) +mul (16+16j) (nan-0j) (nan+nanj) +mul (16+16j) (nan+0j) (nan+nanj) +mul (16+16j) (nan+2j) (nan+nanj) +mul (16+16j) (nan+16j) (nan+nanj) +mul (16+16j) (nan+infj) (nan+nanj) +mul (16+16j) (nan+nanj) (nan+nanj) +mul (16+infj) (-inf-infj) (nan-infj) +mul (16+infj) (-inf-16j) (nan-infj) +mul (16+infj) (-inf-2j) (nan-infj) +mul (16+infj) (-inf-0j) (nan-infj) +mul (16+infj) (-inf+0j) (nan-infj) +mul (16+infj) (-inf+2j) (-inf-infj) +mul (16+infj) (-inf+16j) (-inf-infj) +mul (16+infj) (-inf+infj) (-inf+nanj) +mul (16+infj) (-inf+nanj) (nan+nanj) +mul (16+infj) (-16-infj) (inf-infj) +mul (16+infj) (-16-16j) (inf-infj) +mul (16+infj) (-16-2j) (inf-infj) +mul (16+infj) (-16-0j) (nan-infj) +mul (16+infj) (-16+0j) (nan-infj) +mul (16+infj) (-16+2j) (-inf-infj) +mul (16+infj) (-16+16j) (-inf-infj) +mul (16+infj) (-16+infj) (-inf+nanj) +mul (16+infj) (-16+nanj) (nan+nanj) +mul (16+infj) (-2-infj) (inf-infj) +mul (16+infj) (-2-16j) (inf-infj) +mul (16+infj) (-2-2j) (inf-infj) +mul (16+infj) (-2-0j) (nan-infj) +mul (16+infj) (-2+0j) (nan-infj) +mul (16+infj) (-2+2j) (-inf-infj) +mul (16+infj) (-2+16j) (-inf-infj) +mul (16+infj) (-2+infj) (-inf+nanj) +mul (16+infj) (-2+nanj) (nan+nanj) +mul (16+infj) (-0-infj) (inf+nanj) +mul (16+infj) (-0-16j) (inf+nanj) +mul (16+infj) (-0-2j) (inf+nanj) +mul (16+infj) (-0-0j) (nan+nanj) +mul (16+infj) (-0+0j) (nan+nanj) +mul (16+infj) (-0+2j) (-inf+nanj) +mul (16+infj) (-0+16j) (-inf+nanj) +mul (16+infj) (-0+infj) (-inf+nanj) +mul (16+infj) (-0+nanj) (nan+nanj) +mul (16+infj) -infj (inf+nanj) +mul (16+infj) -16j (inf+nanj) +mul (16+infj) -2j (inf+nanj) +mul (16+infj) -0j (nan+nanj) +mul (16+infj) 0j (nan+nanj) +mul (16+infj) 2j (-inf+nanj) +mul (16+infj) 16j (-inf+nanj) +mul (16+infj) infj (-inf+nanj) +mul (16+infj) nanj (nan+nanj) +mul (16+infj) (2-infj) (inf+nanj) +mul (16+infj) (2-16j) (inf+infj) +mul (16+infj) (2-2j) (inf+infj) +mul (16+infj) (2-0j) (nan+infj) +mul (16+infj) (2+0j) (nan+infj) +mul (16+infj) (2+2j) (-inf+infj) +mul (16+infj) (2+16j) (-inf+infj) +mul (16+infj) (2+infj) (-inf+infj) +mul (16+infj) (2+nanj) (nan+nanj) +mul (16+infj) (16-infj) (inf+nanj) +mul (16+infj) (16-16j) (inf+infj) +mul (16+infj) (16-2j) (inf+infj) +mul (16+infj) (16-0j) (nan+infj) +mul (16+infj) (16+0j) (nan+infj) +mul (16+infj) (16+2j) (-inf+infj) +mul (16+infj) (16+16j) (-inf+infj) +mul (16+infj) (16+infj) (-inf+infj) +mul (16+infj) (16+nanj) (nan+nanj) +mul (16+infj) (inf-infj) (inf+nanj) +mul (16+infj) (inf-16j) (inf+infj) +mul (16+infj) (inf-2j) (inf+infj) +mul (16+infj) (inf-0j) (nan+infj) +mul (16+infj) (inf+0j) (nan+infj) +mul (16+infj) (inf+2j) (nan+infj) +mul (16+infj) (inf+16j) (nan+infj) +mul (16+infj) (inf+infj) (nan+infj) +mul (16+infj) (inf+nanj) (nan+nanj) +mul (16+infj) (nan-infj) (nan+nanj) +mul (16+infj) (nan-16j) (nan+nanj) +mul (16+infj) (nan-2j) (nan+nanj) +mul (16+infj) (nan-0j) (nan+nanj) +mul (16+infj) (nan+0j) (nan+nanj) +mul (16+infj) (nan+2j) (nan+nanj) +mul (16+infj) (nan+16j) (nan+nanj) +mul (16+infj) (nan+infj) (nan+nanj) +mul (16+infj) (nan+nanj) (nan+nanj) +mul (16+nanj) (-inf-infj) (nan+nanj) +mul (16+nanj) (-inf-16j) (nan+nanj) +mul (16+nanj) (-inf-2j) (nan+nanj) +mul (16+nanj) (-inf-0j) (nan+nanj) +mul (16+nanj) (-inf+0j) (nan+nanj) +mul (16+nanj) (-inf+2j) (nan+nanj) +mul (16+nanj) (-inf+16j) (nan+nanj) +mul (16+nanj) (-inf+infj) (nan+nanj) +mul (16+nanj) (-inf+nanj) (nan+nanj) +mul (16+nanj) (-16-infj) (nan+nanj) +mul (16+nanj) (-16-16j) (nan+nanj) +mul (16+nanj) (-16-2j) (nan+nanj) +mul (16+nanj) (-16-0j) (nan+nanj) +mul (16+nanj) (-16+0j) (nan+nanj) +mul (16+nanj) (-16+2j) (nan+nanj) +mul (16+nanj) (-16+16j) (nan+nanj) +mul (16+nanj) (-16+infj) (nan+nanj) +mul (16+nanj) (-16+nanj) (nan+nanj) +mul (16+nanj) (-2-infj) (nan+nanj) +mul (16+nanj) (-2-16j) (nan+nanj) +mul (16+nanj) (-2-2j) (nan+nanj) +mul (16+nanj) (-2-0j) (nan+nanj) +mul (16+nanj) (-2+0j) (nan+nanj) +mul (16+nanj) (-2+2j) (nan+nanj) +mul (16+nanj) (-2+16j) (nan+nanj) +mul (16+nanj) (-2+infj) (nan+nanj) +mul (16+nanj) (-2+nanj) (nan+nanj) +mul (16+nanj) (-0-infj) (nan+nanj) +mul (16+nanj) (-0-16j) (nan+nanj) +mul (16+nanj) (-0-2j) (nan+nanj) +mul (16+nanj) (-0-0j) (nan+nanj) +mul (16+nanj) (-0+0j) (nan+nanj) +mul (16+nanj) (-0+2j) (nan+nanj) +mul (16+nanj) (-0+16j) (nan+nanj) +mul (16+nanj) (-0+infj) (nan+nanj) +mul (16+nanj) (-0+nanj) (nan+nanj) +mul (16+nanj) -infj (nan+nanj) +mul (16+nanj) -16j (nan+nanj) +mul (16+nanj) -2j (nan+nanj) +mul (16+nanj) -0j (nan+nanj) +mul (16+nanj) 0j (nan+nanj) +mul (16+nanj) 2j (nan+nanj) +mul (16+nanj) 16j (nan+nanj) +mul (16+nanj) infj (nan+nanj) +mul (16+nanj) nanj (nan+nanj) +mul (16+nanj) (2-infj) (nan+nanj) +mul (16+nanj) (2-16j) (nan+nanj) +mul (16+nanj) (2-2j) (nan+nanj) +mul (16+nanj) (2-0j) (nan+nanj) +mul (16+nanj) (2+0j) (nan+nanj) +mul (16+nanj) (2+2j) (nan+nanj) +mul (16+nanj) (2+16j) (nan+nanj) +mul (16+nanj) (2+infj) (nan+nanj) +mul (16+nanj) (2+nanj) (nan+nanj) +mul (16+nanj) (16-infj) (nan+nanj) +mul (16+nanj) (16-16j) (nan+nanj) +mul (16+nanj) (16-2j) (nan+nanj) +mul (16+nanj) (16-0j) (nan+nanj) +mul (16+nanj) (16+0j) (nan+nanj) +mul (16+nanj) (16+2j) (nan+nanj) +mul (16+nanj) (16+16j) (nan+nanj) +mul (16+nanj) (16+infj) (nan+nanj) +mul (16+nanj) (16+nanj) (nan+nanj) +mul (16+nanj) (inf-infj) (nan+nanj) +mul (16+nanj) (inf-16j) (nan+nanj) +mul (16+nanj) (inf-2j) (nan+nanj) +mul (16+nanj) (inf-0j) (nan+nanj) +mul (16+nanj) (inf+0j) (nan+nanj) +mul (16+nanj) (inf+2j) (nan+nanj) +mul (16+nanj) (inf+16j) (nan+nanj) +mul (16+nanj) (inf+infj) (nan+nanj) +mul (16+nanj) (inf+nanj) (nan+nanj) +mul (16+nanj) (nan-infj) (nan+nanj) +mul (16+nanj) (nan-16j) (nan+nanj) +mul (16+nanj) (nan-2j) (nan+nanj) +mul (16+nanj) (nan-0j) (nan+nanj) +mul (16+nanj) (nan+0j) (nan+nanj) +mul (16+nanj) (nan+2j) (nan+nanj) +mul (16+nanj) (nan+16j) (nan+nanj) +mul (16+nanj) (nan+infj) (nan+nanj) +mul (16+nanj) (nan+nanj) (nan+nanj) +mul (inf-infj) (-inf-infj) (-inf+nanj) +mul (inf-infj) (-inf-16j) (-inf+nanj) +mul (inf-infj) (-inf-2j) (-inf+nanj) +mul (inf-infj) (-inf-0j) (nan+nanj) +mul (inf-infj) (-inf+0j) (nan+nanj) +mul (inf-infj) (-inf+2j) (nan+infj) +mul (inf-infj) (-inf+16j) (nan+infj) +mul (inf-infj) (-inf+infj) (nan+infj) +mul (inf-infj) (-inf+nanj) (nan+nanj) +mul (inf-infj) (-16-infj) (-inf+nanj) +mul (inf-infj) (-16-16j) (-inf+nanj) +mul (inf-infj) (-16-2j) (-inf+nanj) +mul (inf-infj) (-16-0j) (nan+nanj) +mul (inf-infj) (-16+0j) (nan+nanj) +mul (inf-infj) (-16+2j) (nan+infj) +mul (inf-infj) (-16+16j) (nan+infj) +mul (inf-infj) (-16+infj) (nan+infj) +mul (inf-infj) (-16+nanj) (nan+nanj) +mul (inf-infj) (-2-infj) (-inf+nanj) +mul (inf-infj) (-2-16j) (-inf+nanj) +mul (inf-infj) (-2-2j) (-inf+nanj) +mul (inf-infj) (-2-0j) (nan+nanj) +mul (inf-infj) (-2+0j) (nan+nanj) +mul (inf-infj) (-2+2j) (nan+infj) +mul (inf-infj) (-2+16j) (nan+infj) +mul (inf-infj) (-2+infj) (nan+infj) +mul (inf-infj) (-2+nanj) (nan+nanj) +mul (inf-infj) (-0-infj) (nan+nanj) +mul (inf-infj) (-0-16j) (nan+nanj) +mul (inf-infj) (-0-2j) (nan+nanj) +mul (inf-infj) (-0-0j) (nan+nanj) +mul (inf-infj) (-0+0j) (nan+nanj) +mul (inf-infj) (-0+2j) (nan+nanj) +mul (inf-infj) (-0+16j) (nan+nanj) +mul (inf-infj) (-0+infj) (nan+nanj) +mul (inf-infj) (-0+nanj) (nan+nanj) +mul (inf-infj) -infj (nan+nanj) +mul (inf-infj) -16j (nan+nanj) +mul (inf-infj) -2j (nan+nanj) +mul (inf-infj) -0j (nan+nanj) +mul (inf-infj) 0j (nan+nanj) +mul (inf-infj) 2j (nan+nanj) +mul (inf-infj) 16j (nan+nanj) +mul (inf-infj) infj (nan+nanj) +mul (inf-infj) nanj (nan+nanj) +mul (inf-infj) (2-infj) (nan-infj) +mul (inf-infj) (2-16j) (nan-infj) +mul (inf-infj) (2-2j) (nan-infj) +mul (inf-infj) (2-0j) (nan+nanj) +mul (inf-infj) (2+0j) (nan+nanj) +mul (inf-infj) (2+2j) (inf+nanj) +mul (inf-infj) (2+16j) (inf+nanj) +mul (inf-infj) (2+infj) (inf+nanj) +mul (inf-infj) (2+nanj) (nan+nanj) +mul (inf-infj) (16-infj) (nan-infj) +mul (inf-infj) (16-16j) (nan-infj) +mul (inf-infj) (16-2j) (nan-infj) +mul (inf-infj) (16-0j) (nan+nanj) +mul (inf-infj) (16+0j) (nan+nanj) +mul (inf-infj) (16+2j) (inf+nanj) +mul (inf-infj) (16+16j) (inf+nanj) +mul (inf-infj) (16+infj) (inf+nanj) +mul (inf-infj) (16+nanj) (nan+nanj) +mul (inf-infj) (inf-infj) (nan-infj) +mul (inf-infj) (inf-16j) (nan-infj) +mul (inf-infj) (inf-2j) (nan-infj) +mul (inf-infj) (inf-0j) (nan+nanj) +mul (inf-infj) (inf+0j) (nan+nanj) +mul (inf-infj) (inf+2j) (inf+nanj) +mul (inf-infj) (inf+16j) (inf+nanj) +mul (inf-infj) (inf+infj) (inf+nanj) +mul (inf-infj) (inf+nanj) (nan+nanj) +mul (inf-infj) (nan-infj) (nan+nanj) +mul (inf-infj) (nan-16j) (nan+nanj) +mul (inf-infj) (nan-2j) (nan+nanj) +mul (inf-infj) (nan-0j) (nan+nanj) +mul (inf-infj) (nan+0j) (nan+nanj) +mul (inf-infj) (nan+2j) (nan+nanj) +mul (inf-infj) (nan+16j) (nan+nanj) +mul (inf-infj) (nan+infj) (nan+nanj) +mul (inf-infj) (nan+nanj) (nan+nanj) +mul (inf-16j) (-inf-infj) (-inf+nanj) +mul (inf-16j) (-inf-16j) (-inf+nanj) +mul (inf-16j) (-inf-2j) (-inf+nanj) +mul (inf-16j) (-inf-0j) (-inf+nanj) +mul (inf-16j) (-inf+0j) (-inf+nanj) +mul (inf-16j) (-inf+2j) (-inf+infj) +mul (inf-16j) (-inf+16j) (-inf+infj) +mul (inf-16j) (-inf+infj) (nan+infj) +mul (inf-16j) (-inf+nanj) (nan+nanj) +mul (inf-16j) (-16-infj) (-inf-infj) +mul (inf-16j) (-16-16j) (-inf-infj) +mul (inf-16j) (-16-2j) (-inf-infj) +mul (inf-16j) (-16-0j) (-inf+nanj) +mul (inf-16j) (-16+0j) (-inf+nanj) +mul (inf-16j) (-16+2j) (-inf+infj) +mul (inf-16j) (-16+16j) (-inf+infj) +mul (inf-16j) (-16+infj) (nan+infj) +mul (inf-16j) (-16+nanj) (nan+nanj) +mul (inf-16j) (-2-infj) (-inf-infj) +mul (inf-16j) (-2-16j) (-inf-infj) +mul (inf-16j) (-2-2j) (-inf-infj) +mul (inf-16j) (-2-0j) (-inf+nanj) +mul (inf-16j) (-2+0j) (-inf+nanj) +mul (inf-16j) (-2+2j) (-inf+infj) +mul (inf-16j) (-2+16j) (-inf+infj) +mul (inf-16j) (-2+infj) (nan+infj) +mul (inf-16j) (-2+nanj) (nan+nanj) +mul (inf-16j) (-0-infj) (nan-infj) +mul (inf-16j) (-0-16j) (nan-infj) +mul (inf-16j) (-0-2j) (nan-infj) +mul (inf-16j) (-0-0j) (nan+nanj) +mul (inf-16j) (-0+0j) (nan+nanj) +mul (inf-16j) (-0+2j) (nan+infj) +mul (inf-16j) (-0+16j) (nan+infj) +mul (inf-16j) (-0+infj) (nan+infj) +mul (inf-16j) (-0+nanj) (nan+nanj) +mul (inf-16j) -infj (nan-infj) +mul (inf-16j) -16j (nan-infj) +mul (inf-16j) -2j (nan-infj) +mul (inf-16j) -0j (nan+nanj) +mul (inf-16j) 0j (nan+nanj) +mul (inf-16j) 2j (nan+infj) +mul (inf-16j) 16j (nan+infj) +mul (inf-16j) infj (nan+infj) +mul (inf-16j) nanj (nan+nanj) +mul (inf-16j) (2-infj) (nan-infj) +mul (inf-16j) (2-16j) (inf-infj) +mul (inf-16j) (2-2j) (inf-infj) +mul (inf-16j) (2-0j) (inf+nanj) +mul (inf-16j) (2+0j) (inf+nanj) +mul (inf-16j) (2+2j) (inf+infj) +mul (inf-16j) (2+16j) (inf+infj) +mul (inf-16j) (2+infj) (inf+infj) +mul (inf-16j) (2+nanj) (nan+nanj) +mul (inf-16j) (16-infj) (nan-infj) +mul (inf-16j) (16-16j) (inf-infj) +mul (inf-16j) (16-2j) (inf-infj) +mul (inf-16j) (16-0j) (inf+nanj) +mul (inf-16j) (16+0j) (inf+nanj) +mul (inf-16j) (16+2j) (inf+infj) +mul (inf-16j) (16+16j) (inf+infj) +mul (inf-16j) (16+infj) (inf+infj) +mul (inf-16j) (16+nanj) (nan+nanj) +mul (inf-16j) (inf-infj) (nan-infj) +mul (inf-16j) (inf-16j) (inf-infj) +mul (inf-16j) (inf-2j) (inf-infj) +mul (inf-16j) (inf-0j) (inf+nanj) +mul (inf-16j) (inf+0j) (inf+nanj) +mul (inf-16j) (inf+2j) (inf+nanj) +mul (inf-16j) (inf+16j) (inf+nanj) +mul (inf-16j) (inf+infj) (inf+nanj) +mul (inf-16j) (inf+nanj) (nan+nanj) +mul (inf-16j) (nan-infj) (nan+nanj) +mul (inf-16j) (nan-16j) (nan+nanj) +mul (inf-16j) (nan-2j) (nan+nanj) +mul (inf-16j) (nan-0j) (nan+nanj) +mul (inf-16j) (nan+0j) (nan+nanj) +mul (inf-16j) (nan+2j) (nan+nanj) +mul (inf-16j) (nan+16j) (nan+nanj) +mul (inf-16j) (nan+infj) (nan+nanj) +mul (inf-16j) (nan+nanj) (nan+nanj) +mul (inf-2j) (-inf-infj) (-inf+nanj) +mul (inf-2j) (-inf-16j) (-inf+nanj) +mul (inf-2j) (-inf-2j) (-inf+nanj) +mul (inf-2j) (-inf-0j) (-inf+nanj) +mul (inf-2j) (-inf+0j) (-inf+nanj) +mul (inf-2j) (-inf+2j) (-inf+infj) +mul (inf-2j) (-inf+16j) (-inf+infj) +mul (inf-2j) (-inf+infj) (nan+infj) +mul (inf-2j) (-inf+nanj) (nan+nanj) +mul (inf-2j) (-16-infj) (-inf-infj) +mul (inf-2j) (-16-16j) (-inf-infj) +mul (inf-2j) (-16-2j) (-inf-infj) +mul (inf-2j) (-16-0j) (-inf+nanj) +mul (inf-2j) (-16+0j) (-inf+nanj) +mul (inf-2j) (-16+2j) (-inf+infj) +mul (inf-2j) (-16+16j) (-inf+infj) +mul (inf-2j) (-16+infj) (nan+infj) +mul (inf-2j) (-16+nanj) (nan+nanj) +mul (inf-2j) (-2-infj) (-inf-infj) +mul (inf-2j) (-2-16j) (-inf-infj) +mul (inf-2j) (-2-2j) (-inf-infj) +mul (inf-2j) (-2-0j) (-inf+nanj) +mul (inf-2j) (-2+0j) (-inf+nanj) +mul (inf-2j) (-2+2j) (-inf+infj) +mul (inf-2j) (-2+16j) (-inf+infj) +mul (inf-2j) (-2+infj) (nan+infj) +mul (inf-2j) (-2+nanj) (nan+nanj) +mul (inf-2j) (-0-infj) (nan-infj) +mul (inf-2j) (-0-16j) (nan-infj) +mul (inf-2j) (-0-2j) (nan-infj) +mul (inf-2j) (-0-0j) (nan+nanj) +mul (inf-2j) (-0+0j) (nan+nanj) +mul (inf-2j) (-0+2j) (nan+infj) +mul (inf-2j) (-0+16j) (nan+infj) +mul (inf-2j) (-0+infj) (nan+infj) +mul (inf-2j) (-0+nanj) (nan+nanj) +mul (inf-2j) -infj (nan-infj) +mul (inf-2j) -16j (nan-infj) +mul (inf-2j) -2j (nan-infj) +mul (inf-2j) -0j (nan+nanj) +mul (inf-2j) 0j (nan+nanj) +mul (inf-2j) 2j (nan+infj) +mul (inf-2j) 16j (nan+infj) +mul (inf-2j) infj (nan+infj) +mul (inf-2j) nanj (nan+nanj) +mul (inf-2j) (2-infj) (nan-infj) +mul (inf-2j) (2-16j) (inf-infj) +mul (inf-2j) (2-2j) (inf-infj) +mul (inf-2j) (2-0j) (inf+nanj) +mul (inf-2j) (2+0j) (inf+nanj) +mul (inf-2j) (2+2j) (inf+infj) +mul (inf-2j) (2+16j) (inf+infj) +mul (inf-2j) (2+infj) (inf+infj) +mul (inf-2j) (2+nanj) (nan+nanj) +mul (inf-2j) (16-infj) (nan-infj) +mul (inf-2j) (16-16j) (inf-infj) +mul (inf-2j) (16-2j) (inf-infj) +mul (inf-2j) (16-0j) (inf+nanj) +mul (inf-2j) (16+0j) (inf+nanj) +mul (inf-2j) (16+2j) (inf+infj) +mul (inf-2j) (16+16j) (inf+infj) +mul (inf-2j) (16+infj) (inf+infj) +mul (inf-2j) (16+nanj) (nan+nanj) +mul (inf-2j) (inf-infj) (nan-infj) +mul (inf-2j) (inf-16j) (inf-infj) +mul (inf-2j) (inf-2j) (inf-infj) +mul (inf-2j) (inf-0j) (inf+nanj) +mul (inf-2j) (inf+0j) (inf+nanj) +mul (inf-2j) (inf+2j) (inf+nanj) +mul (inf-2j) (inf+16j) (inf+nanj) +mul (inf-2j) (inf+infj) (inf+nanj) +mul (inf-2j) (inf+nanj) (nan+nanj) +mul (inf-2j) (nan-infj) (nan+nanj) +mul (inf-2j) (nan-16j) (nan+nanj) +mul (inf-2j) (nan-2j) (nan+nanj) +mul (inf-2j) (nan-0j) (nan+nanj) +mul (inf-2j) (nan+0j) (nan+nanj) +mul (inf-2j) (nan+2j) (nan+nanj) +mul (inf-2j) (nan+16j) (nan+nanj) +mul (inf-2j) (nan+infj) (nan+nanj) +mul (inf-2j) (nan+nanj) (nan+nanj) +mul (inf-0j) (-inf-infj) (nan+nanj) +mul (inf-0j) (-inf-16j) (-inf+nanj) +mul (inf-0j) (-inf-2j) (-inf+nanj) +mul (inf-0j) (-inf-0j) (-inf+nanj) +mul (inf-0j) (-inf+0j) (-inf+nanj) +mul (inf-0j) (-inf+2j) (-inf+nanj) +mul (inf-0j) (-inf+16j) (-inf+nanj) +mul (inf-0j) (-inf+infj) (nan+nanj) +mul (inf-0j) (-inf+nanj) (nan+nanj) +mul (inf-0j) (-16-infj) (nan-infj) +mul (inf-0j) (-16-16j) (-inf-infj) +mul (inf-0j) (-16-2j) (-inf-infj) +mul (inf-0j) (-16-0j) (-inf+nanj) +mul (inf-0j) (-16+0j) (-inf+nanj) +mul (inf-0j) (-16+2j) (-inf+infj) +mul (inf-0j) (-16+16j) (-inf+infj) +mul (inf-0j) (-16+infj) (nan+infj) +mul (inf-0j) (-16+nanj) (nan+nanj) +mul (inf-0j) (-2-infj) (nan-infj) +mul (inf-0j) (-2-16j) (-inf-infj) +mul (inf-0j) (-2-2j) (-inf-infj) +mul (inf-0j) (-2-0j) (-inf+nanj) +mul (inf-0j) (-2+0j) (-inf+nanj) +mul (inf-0j) (-2+2j) (-inf+infj) +mul (inf-0j) (-2+16j) (-inf+infj) +mul (inf-0j) (-2+infj) (nan+infj) +mul (inf-0j) (-2+nanj) (nan+nanj) +mul (inf-0j) (-0-infj) (nan-infj) +mul (inf-0j) (-0-16j) (nan-infj) +mul (inf-0j) (-0-2j) (nan-infj) +mul (inf-0j) (-0-0j) (nan+nanj) +mul (inf-0j) (-0+0j) (nan+nanj) +mul (inf-0j) (-0+2j) (nan+infj) +mul (inf-0j) (-0+16j) (nan+infj) +mul (inf-0j) (-0+infj) (nan+infj) +mul (inf-0j) (-0+nanj) (nan+nanj) +mul (inf-0j) -infj (nan-infj) +mul (inf-0j) -16j (nan-infj) +mul (inf-0j) -2j (nan-infj) +mul (inf-0j) -0j (nan+nanj) +mul (inf-0j) 0j (nan+nanj) +mul (inf-0j) 2j (nan+infj) +mul (inf-0j) 16j (nan+infj) +mul (inf-0j) infj (nan+infj) +mul (inf-0j) nanj (nan+nanj) +mul (inf-0j) (2-infj) (nan-infj) +mul (inf-0j) (2-16j) (inf-infj) +mul (inf-0j) (2-2j) (inf-infj) +mul (inf-0j) (2-0j) (inf+nanj) +mul (inf-0j) (2+0j) (inf+nanj) +mul (inf-0j) (2+2j) (inf+infj) +mul (inf-0j) (2+16j) (inf+infj) +mul (inf-0j) (2+infj) (nan+infj) +mul (inf-0j) (2+nanj) (nan+nanj) +mul (inf-0j) (16-infj) (nan-infj) +mul (inf-0j) (16-16j) (inf-infj) +mul (inf-0j) (16-2j) (inf-infj) +mul (inf-0j) (16-0j) (inf+nanj) +mul (inf-0j) (16+0j) (inf+nanj) +mul (inf-0j) (16+2j) (inf+infj) +mul (inf-0j) (16+16j) (inf+infj) +mul (inf-0j) (16+infj) (nan+infj) +mul (inf-0j) (16+nanj) (nan+nanj) +mul (inf-0j) (inf-infj) (nan+nanj) +mul (inf-0j) (inf-16j) (inf+nanj) +mul (inf-0j) (inf-2j) (inf+nanj) +mul (inf-0j) (inf-0j) (inf+nanj) +mul (inf-0j) (inf+0j) (inf+nanj) +mul (inf-0j) (inf+2j) (inf+nanj) +mul (inf-0j) (inf+16j) (inf+nanj) +mul (inf-0j) (inf+infj) (nan+nanj) +mul (inf-0j) (inf+nanj) (nan+nanj) +mul (inf-0j) (nan-infj) (nan+nanj) +mul (inf-0j) (nan-16j) (nan+nanj) +mul (inf-0j) (nan-2j) (nan+nanj) +mul (inf-0j) (nan-0j) (nan+nanj) +mul (inf-0j) (nan+0j) (nan+nanj) +mul (inf-0j) (nan+2j) (nan+nanj) +mul (inf-0j) (nan+16j) (nan+nanj) +mul (inf-0j) (nan+infj) (nan+nanj) +mul (inf-0j) (nan+nanj) (nan+nanj) +mul (inf+0j) (-inf-infj) (nan+nanj) +mul (inf+0j) (-inf-16j) (-inf+nanj) +mul (inf+0j) (-inf-2j) (-inf+nanj) +mul (inf+0j) (-inf-0j) (-inf+nanj) +mul (inf+0j) (-inf+0j) (-inf+nanj) +mul (inf+0j) (-inf+2j) (-inf+nanj) +mul (inf+0j) (-inf+16j) (-inf+nanj) +mul (inf+0j) (-inf+infj) (nan+nanj) +mul (inf+0j) (-inf+nanj) (nan+nanj) +mul (inf+0j) (-16-infj) (nan-infj) +mul (inf+0j) (-16-16j) (-inf-infj) +mul (inf+0j) (-16-2j) (-inf-infj) +mul (inf+0j) (-16-0j) (-inf+nanj) +mul (inf+0j) (-16+0j) (-inf+nanj) +mul (inf+0j) (-16+2j) (-inf+infj) +mul (inf+0j) (-16+16j) (-inf+infj) +mul (inf+0j) (-16+infj) (nan+infj) +mul (inf+0j) (-16+nanj) (nan+nanj) +mul (inf+0j) (-2-infj) (nan-infj) +mul (inf+0j) (-2-16j) (-inf-infj) +mul (inf+0j) (-2-2j) (-inf-infj) +mul (inf+0j) (-2-0j) (-inf+nanj) +mul (inf+0j) (-2+0j) (-inf+nanj) +mul (inf+0j) (-2+2j) (-inf+infj) +mul (inf+0j) (-2+16j) (-inf+infj) +mul (inf+0j) (-2+infj) (nan+infj) +mul (inf+0j) (-2+nanj) (nan+nanj) +mul (inf+0j) (-0-infj) (nan-infj) +mul (inf+0j) (-0-16j) (nan-infj) +mul (inf+0j) (-0-2j) (nan-infj) +mul (inf+0j) (-0-0j) (nan+nanj) +mul (inf+0j) (-0+0j) (nan+nanj) +mul (inf+0j) (-0+2j) (nan+infj) +mul (inf+0j) (-0+16j) (nan+infj) +mul (inf+0j) (-0+infj) (nan+infj) +mul (inf+0j) (-0+nanj) (nan+nanj) +mul (inf+0j) -infj (nan-infj) +mul (inf+0j) -16j (nan-infj) +mul (inf+0j) -2j (nan-infj) +mul (inf+0j) -0j (nan+nanj) +mul (inf+0j) 0j (nan+nanj) +mul (inf+0j) 2j (nan+infj) +mul (inf+0j) 16j (nan+infj) +mul (inf+0j) infj (nan+infj) +mul (inf+0j) nanj (nan+nanj) +mul (inf+0j) (2-infj) (nan-infj) +mul (inf+0j) (2-16j) (inf-infj) +mul (inf+0j) (2-2j) (inf-infj) +mul (inf+0j) (2-0j) (inf+nanj) +mul (inf+0j) (2+0j) (inf+nanj) +mul (inf+0j) (2+2j) (inf+infj) +mul (inf+0j) (2+16j) (inf+infj) +mul (inf+0j) (2+infj) (nan+infj) +mul (inf+0j) (2+nanj) (nan+nanj) +mul (inf+0j) (16-infj) (nan-infj) +mul (inf+0j) (16-16j) (inf-infj) +mul (inf+0j) (16-2j) (inf-infj) +mul (inf+0j) (16-0j) (inf+nanj) +mul (inf+0j) (16+0j) (inf+nanj) +mul (inf+0j) (16+2j) (inf+infj) +mul (inf+0j) (16+16j) (inf+infj) +mul (inf+0j) (16+infj) (nan+infj) +mul (inf+0j) (16+nanj) (nan+nanj) +mul (inf+0j) (inf-infj) (nan+nanj) +mul (inf+0j) (inf-16j) (inf+nanj) +mul (inf+0j) (inf-2j) (inf+nanj) +mul (inf+0j) (inf-0j) (inf+nanj) +mul (inf+0j) (inf+0j) (inf+nanj) +mul (inf+0j) (inf+2j) (inf+nanj) +mul (inf+0j) (inf+16j) (inf+nanj) +mul (inf+0j) (inf+infj) (nan+nanj) +mul (inf+0j) (inf+nanj) (nan+nanj) +mul (inf+0j) (nan-infj) (nan+nanj) +mul (inf+0j) (nan-16j) (nan+nanj) +mul (inf+0j) (nan-2j) (nan+nanj) +mul (inf+0j) (nan-0j) (nan+nanj) +mul (inf+0j) (nan+0j) (nan+nanj) +mul (inf+0j) (nan+2j) (nan+nanj) +mul (inf+0j) (nan+16j) (nan+nanj) +mul (inf+0j) (nan+infj) (nan+nanj) +mul (inf+0j) (nan+nanj) (nan+nanj) +mul (inf+2j) (-inf-infj) (nan-infj) +mul (inf+2j) (-inf-16j) (-inf-infj) +mul (inf+2j) (-inf-2j) (-inf-infj) +mul (inf+2j) (-inf-0j) (-inf+nanj) +mul (inf+2j) (-inf+0j) (-inf+nanj) +mul (inf+2j) (-inf+2j) (-inf+nanj) +mul (inf+2j) (-inf+16j) (-inf+nanj) +mul (inf+2j) (-inf+infj) (-inf+nanj) +mul (inf+2j) (-inf+nanj) (nan+nanj) +mul (inf+2j) (-16-infj) (nan-infj) +mul (inf+2j) (-16-16j) (-inf-infj) +mul (inf+2j) (-16-2j) (-inf-infj) +mul (inf+2j) (-16-0j) (-inf+nanj) +mul (inf+2j) (-16+0j) (-inf+nanj) +mul (inf+2j) (-16+2j) (-inf+infj) +mul (inf+2j) (-16+16j) (-inf+infj) +mul (inf+2j) (-16+infj) (-inf+infj) +mul (inf+2j) (-16+nanj) (nan+nanj) +mul (inf+2j) (-2-infj) (nan-infj) +mul (inf+2j) (-2-16j) (-inf-infj) +mul (inf+2j) (-2-2j) (-inf-infj) +mul (inf+2j) (-2-0j) (-inf+nanj) +mul (inf+2j) (-2+0j) (-inf+nanj) +mul (inf+2j) (-2+2j) (-inf+infj) +mul (inf+2j) (-2+16j) (-inf+infj) +mul (inf+2j) (-2+infj) (-inf+infj) +mul (inf+2j) (-2+nanj) (nan+nanj) +mul (inf+2j) (-0-infj) (nan-infj) +mul (inf+2j) (-0-16j) (nan-infj) +mul (inf+2j) (-0-2j) (nan-infj) +mul (inf+2j) (-0-0j) (nan+nanj) +mul (inf+2j) (-0+0j) (nan+nanj) +mul (inf+2j) (-0+2j) (nan+infj) +mul (inf+2j) (-0+16j) (nan+infj) +mul (inf+2j) (-0+infj) (nan+infj) +mul (inf+2j) (-0+nanj) (nan+nanj) +mul (inf+2j) -infj (nan-infj) +mul (inf+2j) -16j (nan-infj) +mul (inf+2j) -2j (nan-infj) +mul (inf+2j) -0j (nan+nanj) +mul (inf+2j) 0j (nan+nanj) +mul (inf+2j) 2j (nan+infj) +mul (inf+2j) 16j (nan+infj) +mul (inf+2j) infj (nan+infj) +mul (inf+2j) nanj (nan+nanj) +mul (inf+2j) (2-infj) (inf-infj) +mul (inf+2j) (2-16j) (inf-infj) +mul (inf+2j) (2-2j) (inf-infj) +mul (inf+2j) (2-0j) (inf+nanj) +mul (inf+2j) (2+0j) (inf+nanj) +mul (inf+2j) (2+2j) (inf+infj) +mul (inf+2j) (2+16j) (inf+infj) +mul (inf+2j) (2+infj) (nan+infj) +mul (inf+2j) (2+nanj) (nan+nanj) +mul (inf+2j) (16-infj) (inf-infj) +mul (inf+2j) (16-16j) (inf-infj) +mul (inf+2j) (16-2j) (inf-infj) +mul (inf+2j) (16-0j) (inf+nanj) +mul (inf+2j) (16+0j) (inf+nanj) +mul (inf+2j) (16+2j) (inf+infj) +mul (inf+2j) (16+16j) (inf+infj) +mul (inf+2j) (16+infj) (nan+infj) +mul (inf+2j) (16+nanj) (nan+nanj) +mul (inf+2j) (inf-infj) (inf+nanj) +mul (inf+2j) (inf-16j) (inf+nanj) +mul (inf+2j) (inf-2j) (inf+nanj) +mul (inf+2j) (inf-0j) (inf+nanj) +mul (inf+2j) (inf+0j) (inf+nanj) +mul (inf+2j) (inf+2j) (inf+infj) +mul (inf+2j) (inf+16j) (inf+infj) +mul (inf+2j) (inf+infj) (nan+infj) +mul (inf+2j) (inf+nanj) (nan+nanj) +mul (inf+2j) (nan-infj) (nan+nanj) +mul (inf+2j) (nan-16j) (nan+nanj) +mul (inf+2j) (nan-2j) (nan+nanj) +mul (inf+2j) (nan-0j) (nan+nanj) +mul (inf+2j) (nan+0j) (nan+nanj) +mul (inf+2j) (nan+2j) (nan+nanj) +mul (inf+2j) (nan+16j) (nan+nanj) +mul (inf+2j) (nan+infj) (nan+nanj) +mul (inf+2j) (nan+nanj) (nan+nanj) +mul (inf+16j) (-inf-infj) (nan-infj) +mul (inf+16j) (-inf-16j) (-inf-infj) +mul (inf+16j) (-inf-2j) (-inf-infj) +mul (inf+16j) (-inf-0j) (-inf+nanj) +mul (inf+16j) (-inf+0j) (-inf+nanj) +mul (inf+16j) (-inf+2j) (-inf+nanj) +mul (inf+16j) (-inf+16j) (-inf+nanj) +mul (inf+16j) (-inf+infj) (-inf+nanj) +mul (inf+16j) (-inf+nanj) (nan+nanj) +mul (inf+16j) (-16-infj) (nan-infj) +mul (inf+16j) (-16-16j) (-inf-infj) +mul (inf+16j) (-16-2j) (-inf-infj) +mul (inf+16j) (-16-0j) (-inf+nanj) +mul (inf+16j) (-16+0j) (-inf+nanj) +mul (inf+16j) (-16+2j) (-inf+infj) +mul (inf+16j) (-16+16j) (-inf+infj) +mul (inf+16j) (-16+infj) (-inf+infj) +mul (inf+16j) (-16+nanj) (nan+nanj) +mul (inf+16j) (-2-infj) (nan-infj) +mul (inf+16j) (-2-16j) (-inf-infj) +mul (inf+16j) (-2-2j) (-inf-infj) +mul (inf+16j) (-2-0j) (-inf+nanj) +mul (inf+16j) (-2+0j) (-inf+nanj) +mul (inf+16j) (-2+2j) (-inf+infj) +mul (inf+16j) (-2+16j) (-inf+infj) +mul (inf+16j) (-2+infj) (-inf+infj) +mul (inf+16j) (-2+nanj) (nan+nanj) +mul (inf+16j) (-0-infj) (nan-infj) +mul (inf+16j) (-0-16j) (nan-infj) +mul (inf+16j) (-0-2j) (nan-infj) +mul (inf+16j) (-0-0j) (nan+nanj) +mul (inf+16j) (-0+0j) (nan+nanj) +mul (inf+16j) (-0+2j) (nan+infj) +mul (inf+16j) (-0+16j) (nan+infj) +mul (inf+16j) (-0+infj) (nan+infj) +mul (inf+16j) (-0+nanj) (nan+nanj) +mul (inf+16j) -infj (nan-infj) +mul (inf+16j) -16j (nan-infj) +mul (inf+16j) -2j (nan-infj) +mul (inf+16j) -0j (nan+nanj) +mul (inf+16j) 0j (nan+nanj) +mul (inf+16j) 2j (nan+infj) +mul (inf+16j) 16j (nan+infj) +mul (inf+16j) infj (nan+infj) +mul (inf+16j) nanj (nan+nanj) +mul (inf+16j) (2-infj) (inf-infj) +mul (inf+16j) (2-16j) (inf-infj) +mul (inf+16j) (2-2j) (inf-infj) +mul (inf+16j) (2-0j) (inf+nanj) +mul (inf+16j) (2+0j) (inf+nanj) +mul (inf+16j) (2+2j) (inf+infj) +mul (inf+16j) (2+16j) (inf+infj) +mul (inf+16j) (2+infj) (nan+infj) +mul (inf+16j) (2+nanj) (nan+nanj) +mul (inf+16j) (16-infj) (inf-infj) +mul (inf+16j) (16-16j) (inf-infj) +mul (inf+16j) (16-2j) (inf-infj) +mul (inf+16j) (16-0j) (inf+nanj) +mul (inf+16j) (16+0j) (inf+nanj) +mul (inf+16j) (16+2j) (inf+infj) +mul (inf+16j) (16+16j) (inf+infj) +mul (inf+16j) (16+infj) (nan+infj) +mul (inf+16j) (16+nanj) (nan+nanj) +mul (inf+16j) (inf-infj) (inf+nanj) +mul (inf+16j) (inf-16j) (inf+nanj) +mul (inf+16j) (inf-2j) (inf+nanj) +mul (inf+16j) (inf-0j) (inf+nanj) +mul (inf+16j) (inf+0j) (inf+nanj) +mul (inf+16j) (inf+2j) (inf+infj) +mul (inf+16j) (inf+16j) (inf+infj) +mul (inf+16j) (inf+infj) (nan+infj) +mul (inf+16j) (inf+nanj) (nan+nanj) +mul (inf+16j) (nan-infj) (nan+nanj) +mul (inf+16j) (nan-16j) (nan+nanj) +mul (inf+16j) (nan-2j) (nan+nanj) +mul (inf+16j) (nan-0j) (nan+nanj) +mul (inf+16j) (nan+0j) (nan+nanj) +mul (inf+16j) (nan+2j) (nan+nanj) +mul (inf+16j) (nan+16j) (nan+nanj) +mul (inf+16j) (nan+infj) (nan+nanj) +mul (inf+16j) (nan+nanj) (nan+nanj) +mul (inf+infj) (-inf-infj) (nan-infj) +mul (inf+infj) (-inf-16j) (nan-infj) +mul (inf+infj) (-inf-2j) (nan-infj) +mul (inf+infj) (-inf-0j) (nan+nanj) +mul (inf+infj) (-inf+0j) (nan+nanj) +mul (inf+infj) (-inf+2j) (-inf+nanj) +mul (inf+infj) (-inf+16j) (-inf+nanj) +mul (inf+infj) (-inf+infj) (-inf+nanj) +mul (inf+infj) (-inf+nanj) (nan+nanj) +mul (inf+infj) (-16-infj) (nan-infj) +mul (inf+infj) (-16-16j) (nan-infj) +mul (inf+infj) (-16-2j) (nan-infj) +mul (inf+infj) (-16-0j) (nan+nanj) +mul (inf+infj) (-16+0j) (nan+nanj) +mul (inf+infj) (-16+2j) (-inf+nanj) +mul (inf+infj) (-16+16j) (-inf+nanj) +mul (inf+infj) (-16+infj) (-inf+nanj) +mul (inf+infj) (-16+nanj) (nan+nanj) +mul (inf+infj) (-2-infj) (nan-infj) +mul (inf+infj) (-2-16j) (nan-infj) +mul (inf+infj) (-2-2j) (nan-infj) +mul (inf+infj) (-2-0j) (nan+nanj) +mul (inf+infj) (-2+0j) (nan+nanj) +mul (inf+infj) (-2+2j) (-inf+nanj) +mul (inf+infj) (-2+16j) (-inf+nanj) +mul (inf+infj) (-2+infj) (-inf+nanj) +mul (inf+infj) (-2+nanj) (nan+nanj) +mul (inf+infj) (-0-infj) (nan+nanj) +mul (inf+infj) (-0-16j) (nan+nanj) +mul (inf+infj) (-0-2j) (nan+nanj) +mul (inf+infj) (-0-0j) (nan+nanj) +mul (inf+infj) (-0+0j) (nan+nanj) +mul (inf+infj) (-0+2j) (nan+nanj) +mul (inf+infj) (-0+16j) (nan+nanj) +mul (inf+infj) (-0+infj) (nan+nanj) +mul (inf+infj) (-0+nanj) (nan+nanj) +mul (inf+infj) -infj (nan+nanj) +mul (inf+infj) -16j (nan+nanj) +mul (inf+infj) -2j (nan+nanj) +mul (inf+infj) -0j (nan+nanj) +mul (inf+infj) 0j (nan+nanj) +mul (inf+infj) 2j (nan+nanj) +mul (inf+infj) 16j (nan+nanj) +mul (inf+infj) infj (nan+nanj) +mul (inf+infj) nanj (nan+nanj) +mul (inf+infj) (2-infj) (inf+nanj) +mul (inf+infj) (2-16j) (inf+nanj) +mul (inf+infj) (2-2j) (inf+nanj) +mul (inf+infj) (2-0j) (nan+nanj) +mul (inf+infj) (2+0j) (nan+nanj) +mul (inf+infj) (2+2j) (nan+infj) +mul (inf+infj) (2+16j) (nan+infj) +mul (inf+infj) (2+infj) (nan+infj) +mul (inf+infj) (2+nanj) (nan+nanj) +mul (inf+infj) (16-infj) (inf+nanj) +mul (inf+infj) (16-16j) (inf+nanj) +mul (inf+infj) (16-2j) (inf+nanj) +mul (inf+infj) (16-0j) (nan+nanj) +mul (inf+infj) (16+0j) (nan+nanj) +mul (inf+infj) (16+2j) (nan+infj) +mul (inf+infj) (16+16j) (nan+infj) +mul (inf+infj) (16+infj) (nan+infj) +mul (inf+infj) (16+nanj) (nan+nanj) +mul (inf+infj) (inf-infj) (inf+nanj) +mul (inf+infj) (inf-16j) (inf+nanj) +mul (inf+infj) (inf-2j) (inf+nanj) +mul (inf+infj) (inf-0j) (nan+nanj) +mul (inf+infj) (inf+0j) (nan+nanj) +mul (inf+infj) (inf+2j) (nan+infj) +mul (inf+infj) (inf+16j) (nan+infj) +mul (inf+infj) (inf+infj) (nan+infj) +mul (inf+infj) (inf+nanj) (nan+nanj) +mul (inf+infj) (nan-infj) (nan+nanj) +mul (inf+infj) (nan-16j) (nan+nanj) +mul (inf+infj) (nan-2j) (nan+nanj) +mul (inf+infj) (nan-0j) (nan+nanj) +mul (inf+infj) (nan+0j) (nan+nanj) +mul (inf+infj) (nan+2j) (nan+nanj) +mul (inf+infj) (nan+16j) (nan+nanj) +mul (inf+infj) (nan+infj) (nan+nanj) +mul (inf+infj) (nan+nanj) (nan+nanj) +mul (inf+nanj) (-inf-infj) (nan+nanj) +mul (inf+nanj) (-inf-16j) (nan+nanj) +mul (inf+nanj) (-inf-2j) (nan+nanj) +mul (inf+nanj) (-inf-0j) (nan+nanj) +mul (inf+nanj) (-inf+0j) (nan+nanj) +mul (inf+nanj) (-inf+2j) (nan+nanj) +mul (inf+nanj) (-inf+16j) (nan+nanj) +mul (inf+nanj) (-inf+infj) (nan+nanj) +mul (inf+nanj) (-inf+nanj) (nan+nanj) +mul (inf+nanj) (-16-infj) (nan+nanj) +mul (inf+nanj) (-16-16j) (nan+nanj) +mul (inf+nanj) (-16-2j) (nan+nanj) +mul (inf+nanj) (-16-0j) (nan+nanj) +mul (inf+nanj) (-16+0j) (nan+nanj) +mul (inf+nanj) (-16+2j) (nan+nanj) +mul (inf+nanj) (-16+16j) (nan+nanj) +mul (inf+nanj) (-16+infj) (nan+nanj) +mul (inf+nanj) (-16+nanj) (nan+nanj) +mul (inf+nanj) (-2-infj) (nan+nanj) +mul (inf+nanj) (-2-16j) (nan+nanj) +mul (inf+nanj) (-2-2j) (nan+nanj) +mul (inf+nanj) (-2-0j) (nan+nanj) +mul (inf+nanj) (-2+0j) (nan+nanj) +mul (inf+nanj) (-2+2j) (nan+nanj) +mul (inf+nanj) (-2+16j) (nan+nanj) +mul (inf+nanj) (-2+infj) (nan+nanj) +mul (inf+nanj) (-2+nanj) (nan+nanj) +mul (inf+nanj) (-0-infj) (nan+nanj) +mul (inf+nanj) (-0-16j) (nan+nanj) +mul (inf+nanj) (-0-2j) (nan+nanj) +mul (inf+nanj) (-0-0j) (nan+nanj) +mul (inf+nanj) (-0+0j) (nan+nanj) +mul (inf+nanj) (-0+2j) (nan+nanj) +mul (inf+nanj) (-0+16j) (nan+nanj) +mul (inf+nanj) (-0+infj) (nan+nanj) +mul (inf+nanj) (-0+nanj) (nan+nanj) +mul (inf+nanj) -infj (nan+nanj) +mul (inf+nanj) -16j (nan+nanj) +mul (inf+nanj) -2j (nan+nanj) +mul (inf+nanj) -0j (nan+nanj) +mul (inf+nanj) 0j (nan+nanj) +mul (inf+nanj) 2j (nan+nanj) +mul (inf+nanj) 16j (nan+nanj) +mul (inf+nanj) infj (nan+nanj) +mul (inf+nanj) nanj (nan+nanj) +mul (inf+nanj) (2-infj) (nan+nanj) +mul (inf+nanj) (2-16j) (nan+nanj) +mul (inf+nanj) (2-2j) (nan+nanj) +mul (inf+nanj) (2-0j) (nan+nanj) +mul (inf+nanj) (2+0j) (nan+nanj) +mul (inf+nanj) (2+2j) (nan+nanj) +mul (inf+nanj) (2+16j) (nan+nanj) +mul (inf+nanj) (2+infj) (nan+nanj) +mul (inf+nanj) (2+nanj) (nan+nanj) +mul (inf+nanj) (16-infj) (nan+nanj) +mul (inf+nanj) (16-16j) (nan+nanj) +mul (inf+nanj) (16-2j) (nan+nanj) +mul (inf+nanj) (16-0j) (nan+nanj) +mul (inf+nanj) (16+0j) (nan+nanj) +mul (inf+nanj) (16+2j) (nan+nanj) +mul (inf+nanj) (16+16j) (nan+nanj) +mul (inf+nanj) (16+infj) (nan+nanj) +mul (inf+nanj) (16+nanj) (nan+nanj) +mul (inf+nanj) (inf-infj) (nan+nanj) +mul (inf+nanj) (inf-16j) (nan+nanj) +mul (inf+nanj) (inf-2j) (nan+nanj) +mul (inf+nanj) (inf-0j) (nan+nanj) +mul (inf+nanj) (inf+0j) (nan+nanj) +mul (inf+nanj) (inf+2j) (nan+nanj) +mul (inf+nanj) (inf+16j) (nan+nanj) +mul (inf+nanj) (inf+infj) (nan+nanj) +mul (inf+nanj) (inf+nanj) (nan+nanj) +mul (inf+nanj) (nan-infj) (nan+nanj) +mul (inf+nanj) (nan-16j) (nan+nanj) +mul (inf+nanj) (nan-2j) (nan+nanj) +mul (inf+nanj) (nan-0j) (nan+nanj) +mul (inf+nanj) (nan+0j) (nan+nanj) +mul (inf+nanj) (nan+2j) (nan+nanj) +mul (inf+nanj) (nan+16j) (nan+nanj) +mul (inf+nanj) (nan+infj) (nan+nanj) +mul (inf+nanj) (nan+nanj) (nan+nanj) +mul (nan-infj) (-inf-infj) (nan+nanj) +mul (nan-infj) (-inf-16j) (nan+nanj) +mul (nan-infj) (-inf-2j) (nan+nanj) +mul (nan-infj) (-inf-0j) (nan+nanj) +mul (nan-infj) (-inf+0j) (nan+nanj) +mul (nan-infj) (-inf+2j) (nan+nanj) +mul (nan-infj) (-inf+16j) (nan+nanj) +mul (nan-infj) (-inf+infj) (nan+nanj) +mul (nan-infj) (-inf+nanj) (nan+nanj) +mul (nan-infj) (-16-infj) (nan+nanj) +mul (nan-infj) (-16-16j) (nan+nanj) +mul (nan-infj) (-16-2j) (nan+nanj) +mul (nan-infj) (-16-0j) (nan+nanj) +mul (nan-infj) (-16+0j) (nan+nanj) +mul (nan-infj) (-16+2j) (nan+nanj) +mul (nan-infj) (-16+16j) (nan+nanj) +mul (nan-infj) (-16+infj) (nan+nanj) +mul (nan-infj) (-16+nanj) (nan+nanj) +mul (nan-infj) (-2-infj) (nan+nanj) +mul (nan-infj) (-2-16j) (nan+nanj) +mul (nan-infj) (-2-2j) (nan+nanj) +mul (nan-infj) (-2-0j) (nan+nanj) +mul (nan-infj) (-2+0j) (nan+nanj) +mul (nan-infj) (-2+2j) (nan+nanj) +mul (nan-infj) (-2+16j) (nan+nanj) +mul (nan-infj) (-2+infj) (nan+nanj) +mul (nan-infj) (-2+nanj) (nan+nanj) +mul (nan-infj) (-0-infj) (nan+nanj) +mul (nan-infj) (-0-16j) (nan+nanj) +mul (nan-infj) (-0-2j) (nan+nanj) +mul (nan-infj) (-0-0j) (nan+nanj) +mul (nan-infj) (-0+0j) (nan+nanj) +mul (nan-infj) (-0+2j) (nan+nanj) +mul (nan-infj) (-0+16j) (nan+nanj) +mul (nan-infj) (-0+infj) (nan+nanj) +mul (nan-infj) (-0+nanj) (nan+nanj) +mul (nan-infj) -infj (nan+nanj) +mul (nan-infj) -16j (nan+nanj) +mul (nan-infj) -2j (nan+nanj) +mul (nan-infj) -0j (nan+nanj) +mul (nan-infj) 0j (nan+nanj) +mul (nan-infj) 2j (nan+nanj) +mul (nan-infj) 16j (nan+nanj) +mul (nan-infj) infj (nan+nanj) +mul (nan-infj) nanj (nan+nanj) +mul (nan-infj) (2-infj) (nan+nanj) +mul (nan-infj) (2-16j) (nan+nanj) +mul (nan-infj) (2-2j) (nan+nanj) +mul (nan-infj) (2-0j) (nan+nanj) +mul (nan-infj) (2+0j) (nan+nanj) +mul (nan-infj) (2+2j) (nan+nanj) +mul (nan-infj) (2+16j) (nan+nanj) +mul (nan-infj) (2+infj) (nan+nanj) +mul (nan-infj) (2+nanj) (nan+nanj) +mul (nan-infj) (16-infj) (nan+nanj) +mul (nan-infj) (16-16j) (nan+nanj) +mul (nan-infj) (16-2j) (nan+nanj) +mul (nan-infj) (16-0j) (nan+nanj) +mul (nan-infj) (16+0j) (nan+nanj) +mul (nan-infj) (16+2j) (nan+nanj) +mul (nan-infj) (16+16j) (nan+nanj) +mul (nan-infj) (16+infj) (nan+nanj) +mul (nan-infj) (16+nanj) (nan+nanj) +mul (nan-infj) (inf-infj) (nan+nanj) +mul (nan-infj) (inf-16j) (nan+nanj) +mul (nan-infj) (inf-2j) (nan+nanj) +mul (nan-infj) (inf-0j) (nan+nanj) +mul (nan-infj) (inf+0j) (nan+nanj) +mul (nan-infj) (inf+2j) (nan+nanj) +mul (nan-infj) (inf+16j) (nan+nanj) +mul (nan-infj) (inf+infj) (nan+nanj) +mul (nan-infj) (inf+nanj) (nan+nanj) +mul (nan-infj) (nan-infj) (nan+nanj) +mul (nan-infj) (nan-16j) (nan+nanj) +mul (nan-infj) (nan-2j) (nan+nanj) +mul (nan-infj) (nan-0j) (nan+nanj) +mul (nan-infj) (nan+0j) (nan+nanj) +mul (nan-infj) (nan+2j) (nan+nanj) +mul (nan-infj) (nan+16j) (nan+nanj) +mul (nan-infj) (nan+infj) (nan+nanj) +mul (nan-infj) (nan+nanj) (nan+nanj) +mul (nan-16j) (-inf-infj) (nan+nanj) +mul (nan-16j) (-inf-16j) (nan+nanj) +mul (nan-16j) (-inf-2j) (nan+nanj) +mul (nan-16j) (-inf-0j) (nan+nanj) +mul (nan-16j) (-inf+0j) (nan+nanj) +mul (nan-16j) (-inf+2j) (nan+nanj) +mul (nan-16j) (-inf+16j) (nan+nanj) +mul (nan-16j) (-inf+infj) (nan+nanj) +mul (nan-16j) (-inf+nanj) (nan+nanj) +mul (nan-16j) (-16-infj) (nan+nanj) +mul (nan-16j) (-16-16j) (nan+nanj) +mul (nan-16j) (-16-2j) (nan+nanj) +mul (nan-16j) (-16-0j) (nan+nanj) +mul (nan-16j) (-16+0j) (nan+nanj) +mul (nan-16j) (-16+2j) (nan+nanj) +mul (nan-16j) (-16+16j) (nan+nanj) +mul (nan-16j) (-16+infj) (nan+nanj) +mul (nan-16j) (-16+nanj) (nan+nanj) +mul (nan-16j) (-2-infj) (nan+nanj) +mul (nan-16j) (-2-16j) (nan+nanj) +mul (nan-16j) (-2-2j) (nan+nanj) +mul (nan-16j) (-2-0j) (nan+nanj) +mul (nan-16j) (-2+0j) (nan+nanj) +mul (nan-16j) (-2+2j) (nan+nanj) +mul (nan-16j) (-2+16j) (nan+nanj) +mul (nan-16j) (-2+infj) (nan+nanj) +mul (nan-16j) (-2+nanj) (nan+nanj) +mul (nan-16j) (-0-infj) (nan+nanj) +mul (nan-16j) (-0-16j) (nan+nanj) +mul (nan-16j) (-0-2j) (nan+nanj) +mul (nan-16j) (-0-0j) (nan+nanj) +mul (nan-16j) (-0+0j) (nan+nanj) +mul (nan-16j) (-0+2j) (nan+nanj) +mul (nan-16j) (-0+16j) (nan+nanj) +mul (nan-16j) (-0+infj) (nan+nanj) +mul (nan-16j) (-0+nanj) (nan+nanj) +mul (nan-16j) -infj (nan+nanj) +mul (nan-16j) -16j (nan+nanj) +mul (nan-16j) -2j (nan+nanj) +mul (nan-16j) -0j (nan+nanj) +mul (nan-16j) 0j (nan+nanj) +mul (nan-16j) 2j (nan+nanj) +mul (nan-16j) 16j (nan+nanj) +mul (nan-16j) infj (nan+nanj) +mul (nan-16j) nanj (nan+nanj) +mul (nan-16j) (2-infj) (nan+nanj) +mul (nan-16j) (2-16j) (nan+nanj) +mul (nan-16j) (2-2j) (nan+nanj) +mul (nan-16j) (2-0j) (nan+nanj) +mul (nan-16j) (2+0j) (nan+nanj) +mul (nan-16j) (2+2j) (nan+nanj) +mul (nan-16j) (2+16j) (nan+nanj) +mul (nan-16j) (2+infj) (nan+nanj) +mul (nan-16j) (2+nanj) (nan+nanj) +mul (nan-16j) (16-infj) (nan+nanj) +mul (nan-16j) (16-16j) (nan+nanj) +mul (nan-16j) (16-2j) (nan+nanj) +mul (nan-16j) (16-0j) (nan+nanj) +mul (nan-16j) (16+0j) (nan+nanj) +mul (nan-16j) (16+2j) (nan+nanj) +mul (nan-16j) (16+16j) (nan+nanj) +mul (nan-16j) (16+infj) (nan+nanj) +mul (nan-16j) (16+nanj) (nan+nanj) +mul (nan-16j) (inf-infj) (nan+nanj) +mul (nan-16j) (inf-16j) (nan+nanj) +mul (nan-16j) (inf-2j) (nan+nanj) +mul (nan-16j) (inf-0j) (nan+nanj) +mul (nan-16j) (inf+0j) (nan+nanj) +mul (nan-16j) (inf+2j) (nan+nanj) +mul (nan-16j) (inf+16j) (nan+nanj) +mul (nan-16j) (inf+infj) (nan+nanj) +mul (nan-16j) (inf+nanj) (nan+nanj) +mul (nan-16j) (nan-infj) (nan+nanj) +mul (nan-16j) (nan-16j) (nan+nanj) +mul (nan-16j) (nan-2j) (nan+nanj) +mul (nan-16j) (nan-0j) (nan+nanj) +mul (nan-16j) (nan+0j) (nan+nanj) +mul (nan-16j) (nan+2j) (nan+nanj) +mul (nan-16j) (nan+16j) (nan+nanj) +mul (nan-16j) (nan+infj) (nan+nanj) +mul (nan-16j) (nan+nanj) (nan+nanj) +mul (nan-2j) (-inf-infj) (nan+nanj) +mul (nan-2j) (-inf-16j) (nan+nanj) +mul (nan-2j) (-inf-2j) (nan+nanj) +mul (nan-2j) (-inf-0j) (nan+nanj) +mul (nan-2j) (-inf+0j) (nan+nanj) +mul (nan-2j) (-inf+2j) (nan+nanj) +mul (nan-2j) (-inf+16j) (nan+nanj) +mul (nan-2j) (-inf+infj) (nan+nanj) +mul (nan-2j) (-inf+nanj) (nan+nanj) +mul (nan-2j) (-16-infj) (nan+nanj) +mul (nan-2j) (-16-16j) (nan+nanj) +mul (nan-2j) (-16-2j) (nan+nanj) +mul (nan-2j) (-16-0j) (nan+nanj) +mul (nan-2j) (-16+0j) (nan+nanj) +mul (nan-2j) (-16+2j) (nan+nanj) +mul (nan-2j) (-16+16j) (nan+nanj) +mul (nan-2j) (-16+infj) (nan+nanj) +mul (nan-2j) (-16+nanj) (nan+nanj) +mul (nan-2j) (-2-infj) (nan+nanj) +mul (nan-2j) (-2-16j) (nan+nanj) +mul (nan-2j) (-2-2j) (nan+nanj) +mul (nan-2j) (-2-0j) (nan+nanj) +mul (nan-2j) (-2+0j) (nan+nanj) +mul (nan-2j) (-2+2j) (nan+nanj) +mul (nan-2j) (-2+16j) (nan+nanj) +mul (nan-2j) (-2+infj) (nan+nanj) +mul (nan-2j) (-2+nanj) (nan+nanj) +mul (nan-2j) (-0-infj) (nan+nanj) +mul (nan-2j) (-0-16j) (nan+nanj) +mul (nan-2j) (-0-2j) (nan+nanj) +mul (nan-2j) (-0-0j) (nan+nanj) +mul (nan-2j) (-0+0j) (nan+nanj) +mul (nan-2j) (-0+2j) (nan+nanj) +mul (nan-2j) (-0+16j) (nan+nanj) +mul (nan-2j) (-0+infj) (nan+nanj) +mul (nan-2j) (-0+nanj) (nan+nanj) +mul (nan-2j) -infj (nan+nanj) +mul (nan-2j) -16j (nan+nanj) +mul (nan-2j) -2j (nan+nanj) +mul (nan-2j) -0j (nan+nanj) +mul (nan-2j) 0j (nan+nanj) +mul (nan-2j) 2j (nan+nanj) +mul (nan-2j) 16j (nan+nanj) +mul (nan-2j) infj (nan+nanj) +mul (nan-2j) nanj (nan+nanj) +mul (nan-2j) (2-infj) (nan+nanj) +mul (nan-2j) (2-16j) (nan+nanj) +mul (nan-2j) (2-2j) (nan+nanj) +mul (nan-2j) (2-0j) (nan+nanj) +mul (nan-2j) (2+0j) (nan+nanj) +mul (nan-2j) (2+2j) (nan+nanj) +mul (nan-2j) (2+16j) (nan+nanj) +mul (nan-2j) (2+infj) (nan+nanj) +mul (nan-2j) (2+nanj) (nan+nanj) +mul (nan-2j) (16-infj) (nan+nanj) +mul (nan-2j) (16-16j) (nan+nanj) +mul (nan-2j) (16-2j) (nan+nanj) +mul (nan-2j) (16-0j) (nan+nanj) +mul (nan-2j) (16+0j) (nan+nanj) +mul (nan-2j) (16+2j) (nan+nanj) +mul (nan-2j) (16+16j) (nan+nanj) +mul (nan-2j) (16+infj) (nan+nanj) +mul (nan-2j) (16+nanj) (nan+nanj) +mul (nan-2j) (inf-infj) (nan+nanj) +mul (nan-2j) (inf-16j) (nan+nanj) +mul (nan-2j) (inf-2j) (nan+nanj) +mul (nan-2j) (inf-0j) (nan+nanj) +mul (nan-2j) (inf+0j) (nan+nanj) +mul (nan-2j) (inf+2j) (nan+nanj) +mul (nan-2j) (inf+16j) (nan+nanj) +mul (nan-2j) (inf+infj) (nan+nanj) +mul (nan-2j) (inf+nanj) (nan+nanj) +mul (nan-2j) (nan-infj) (nan+nanj) +mul (nan-2j) (nan-16j) (nan+nanj) +mul (nan-2j) (nan-2j) (nan+nanj) +mul (nan-2j) (nan-0j) (nan+nanj) +mul (nan-2j) (nan+0j) (nan+nanj) +mul (nan-2j) (nan+2j) (nan+nanj) +mul (nan-2j) (nan+16j) (nan+nanj) +mul (nan-2j) (nan+infj) (nan+nanj) +mul (nan-2j) (nan+nanj) (nan+nanj) +mul (nan-0j) (-inf-infj) (nan+nanj) +mul (nan-0j) (-inf-16j) (nan+nanj) +mul (nan-0j) (-inf-2j) (nan+nanj) +mul (nan-0j) (-inf-0j) (nan+nanj) +mul (nan-0j) (-inf+0j) (nan+nanj) +mul (nan-0j) (-inf+2j) (nan+nanj) +mul (nan-0j) (-inf+16j) (nan+nanj) +mul (nan-0j) (-inf+infj) (nan+nanj) +mul (nan-0j) (-inf+nanj) (nan+nanj) +mul (nan-0j) (-16-infj) (nan+nanj) +mul (nan-0j) (-16-16j) (nan+nanj) +mul (nan-0j) (-16-2j) (nan+nanj) +mul (nan-0j) (-16-0j) (nan+nanj) +mul (nan-0j) (-16+0j) (nan+nanj) +mul (nan-0j) (-16+2j) (nan+nanj) +mul (nan-0j) (-16+16j) (nan+nanj) +mul (nan-0j) (-16+infj) (nan+nanj) +mul (nan-0j) (-16+nanj) (nan+nanj) +mul (nan-0j) (-2-infj) (nan+nanj) +mul (nan-0j) (-2-16j) (nan+nanj) +mul (nan-0j) (-2-2j) (nan+nanj) +mul (nan-0j) (-2-0j) (nan+nanj) +mul (nan-0j) (-2+0j) (nan+nanj) +mul (nan-0j) (-2+2j) (nan+nanj) +mul (nan-0j) (-2+16j) (nan+nanj) +mul (nan-0j) (-2+infj) (nan+nanj) +mul (nan-0j) (-2+nanj) (nan+nanj) +mul (nan-0j) (-0-infj) (nan+nanj) +mul (nan-0j) (-0-16j) (nan+nanj) +mul (nan-0j) (-0-2j) (nan+nanj) +mul (nan-0j) (-0-0j) (nan+nanj) +mul (nan-0j) (-0+0j) (nan+nanj) +mul (nan-0j) (-0+2j) (nan+nanj) +mul (nan-0j) (-0+16j) (nan+nanj) +mul (nan-0j) (-0+infj) (nan+nanj) +mul (nan-0j) (-0+nanj) (nan+nanj) +mul (nan-0j) -infj (nan+nanj) +mul (nan-0j) -16j (nan+nanj) +mul (nan-0j) -2j (nan+nanj) +mul (nan-0j) -0j (nan+nanj) +mul (nan-0j) 0j (nan+nanj) +mul (nan-0j) 2j (nan+nanj) +mul (nan-0j) 16j (nan+nanj) +mul (nan-0j) infj (nan+nanj) +mul (nan-0j) nanj (nan+nanj) +mul (nan-0j) (2-infj) (nan+nanj) +mul (nan-0j) (2-16j) (nan+nanj) +mul (nan-0j) (2-2j) (nan+nanj) +mul (nan-0j) (2-0j) (nan+nanj) +mul (nan-0j) (2+0j) (nan+nanj) +mul (nan-0j) (2+2j) (nan+nanj) +mul (nan-0j) (2+16j) (nan+nanj) +mul (nan-0j) (2+infj) (nan+nanj) +mul (nan-0j) (2+nanj) (nan+nanj) +mul (nan-0j) (16-infj) (nan+nanj) +mul (nan-0j) (16-16j) (nan+nanj) +mul (nan-0j) (16-2j) (nan+nanj) +mul (nan-0j) (16-0j) (nan+nanj) +mul (nan-0j) (16+0j) (nan+nanj) +mul (nan-0j) (16+2j) (nan+nanj) +mul (nan-0j) (16+16j) (nan+nanj) +mul (nan-0j) (16+infj) (nan+nanj) +mul (nan-0j) (16+nanj) (nan+nanj) +mul (nan-0j) (inf-infj) (nan+nanj) +mul (nan-0j) (inf-16j) (nan+nanj) +mul (nan-0j) (inf-2j) (nan+nanj) +mul (nan-0j) (inf-0j) (nan+nanj) +mul (nan-0j) (inf+0j) (nan+nanj) +mul (nan-0j) (inf+2j) (nan+nanj) +mul (nan-0j) (inf+16j) (nan+nanj) +mul (nan-0j) (inf+infj) (nan+nanj) +mul (nan-0j) (inf+nanj) (nan+nanj) +mul (nan-0j) (nan-infj) (nan+nanj) +mul (nan-0j) (nan-16j) (nan+nanj) +mul (nan-0j) (nan-2j) (nan+nanj) +mul (nan-0j) (nan-0j) (nan+nanj) +mul (nan-0j) (nan+0j) (nan+nanj) +mul (nan-0j) (nan+2j) (nan+nanj) +mul (nan-0j) (nan+16j) (nan+nanj) +mul (nan-0j) (nan+infj) (nan+nanj) +mul (nan-0j) (nan+nanj) (nan+nanj) +mul (nan+0j) (-inf-infj) (nan+nanj) +mul (nan+0j) (-inf-16j) (nan+nanj) +mul (nan+0j) (-inf-2j) (nan+nanj) +mul (nan+0j) (-inf-0j) (nan+nanj) +mul (nan+0j) (-inf+0j) (nan+nanj) +mul (nan+0j) (-inf+2j) (nan+nanj) +mul (nan+0j) (-inf+16j) (nan+nanj) +mul (nan+0j) (-inf+infj) (nan+nanj) +mul (nan+0j) (-inf+nanj) (nan+nanj) +mul (nan+0j) (-16-infj) (nan+nanj) +mul (nan+0j) (-16-16j) (nan+nanj) +mul (nan+0j) (-16-2j) (nan+nanj) +mul (nan+0j) (-16-0j) (nan+nanj) +mul (nan+0j) (-16+0j) (nan+nanj) +mul (nan+0j) (-16+2j) (nan+nanj) +mul (nan+0j) (-16+16j) (nan+nanj) +mul (nan+0j) (-16+infj) (nan+nanj) +mul (nan+0j) (-16+nanj) (nan+nanj) +mul (nan+0j) (-2-infj) (nan+nanj) +mul (nan+0j) (-2-16j) (nan+nanj) +mul (nan+0j) (-2-2j) (nan+nanj) +mul (nan+0j) (-2-0j) (nan+nanj) +mul (nan+0j) (-2+0j) (nan+nanj) +mul (nan+0j) (-2+2j) (nan+nanj) +mul (nan+0j) (-2+16j) (nan+nanj) +mul (nan+0j) (-2+infj) (nan+nanj) +mul (nan+0j) (-2+nanj) (nan+nanj) +mul (nan+0j) (-0-infj) (nan+nanj) +mul (nan+0j) (-0-16j) (nan+nanj) +mul (nan+0j) (-0-2j) (nan+nanj) +mul (nan+0j) (-0-0j) (nan+nanj) +mul (nan+0j) (-0+0j) (nan+nanj) +mul (nan+0j) (-0+2j) (nan+nanj) +mul (nan+0j) (-0+16j) (nan+nanj) +mul (nan+0j) (-0+infj) (nan+nanj) +mul (nan+0j) (-0+nanj) (nan+nanj) +mul (nan+0j) -infj (nan+nanj) +mul (nan+0j) -16j (nan+nanj) +mul (nan+0j) -2j (nan+nanj) +mul (nan+0j) -0j (nan+nanj) +mul (nan+0j) 0j (nan+nanj) +mul (nan+0j) 2j (nan+nanj) +mul (nan+0j) 16j (nan+nanj) +mul (nan+0j) infj (nan+nanj) +mul (nan+0j) nanj (nan+nanj) +mul (nan+0j) (2-infj) (nan+nanj) +mul (nan+0j) (2-16j) (nan+nanj) +mul (nan+0j) (2-2j) (nan+nanj) +mul (nan+0j) (2-0j) (nan+nanj) +mul (nan+0j) (2+0j) (nan+nanj) +mul (nan+0j) (2+2j) (nan+nanj) +mul (nan+0j) (2+16j) (nan+nanj) +mul (nan+0j) (2+infj) (nan+nanj) +mul (nan+0j) (2+nanj) (nan+nanj) +mul (nan+0j) (16-infj) (nan+nanj) +mul (nan+0j) (16-16j) (nan+nanj) +mul (nan+0j) (16-2j) (nan+nanj) +mul (nan+0j) (16-0j) (nan+nanj) +mul (nan+0j) (16+0j) (nan+nanj) +mul (nan+0j) (16+2j) (nan+nanj) +mul (nan+0j) (16+16j) (nan+nanj) +mul (nan+0j) (16+infj) (nan+nanj) +mul (nan+0j) (16+nanj) (nan+nanj) +mul (nan+0j) (inf-infj) (nan+nanj) +mul (nan+0j) (inf-16j) (nan+nanj) +mul (nan+0j) (inf-2j) (nan+nanj) +mul (nan+0j) (inf-0j) (nan+nanj) +mul (nan+0j) (inf+0j) (nan+nanj) +mul (nan+0j) (inf+2j) (nan+nanj) +mul (nan+0j) (inf+16j) (nan+nanj) +mul (nan+0j) (inf+infj) (nan+nanj) +mul (nan+0j) (inf+nanj) (nan+nanj) +mul (nan+0j) (nan-infj) (nan+nanj) +mul (nan+0j) (nan-16j) (nan+nanj) +mul (nan+0j) (nan-2j) (nan+nanj) +mul (nan+0j) (nan-0j) (nan+nanj) +mul (nan+0j) (nan+0j) (nan+nanj) +mul (nan+0j) (nan+2j) (nan+nanj) +mul (nan+0j) (nan+16j) (nan+nanj) +mul (nan+0j) (nan+infj) (nan+nanj) +mul (nan+0j) (nan+nanj) (nan+nanj) +mul (nan+2j) (-inf-infj) (nan+nanj) +mul (nan+2j) (-inf-16j) (nan+nanj) +mul (nan+2j) (-inf-2j) (nan+nanj) +mul (nan+2j) (-inf-0j) (nan+nanj) +mul (nan+2j) (-inf+0j) (nan+nanj) +mul (nan+2j) (-inf+2j) (nan+nanj) +mul (nan+2j) (-inf+16j) (nan+nanj) +mul (nan+2j) (-inf+infj) (nan+nanj) +mul (nan+2j) (-inf+nanj) (nan+nanj) +mul (nan+2j) (-16-infj) (nan+nanj) +mul (nan+2j) (-16-16j) (nan+nanj) +mul (nan+2j) (-16-2j) (nan+nanj) +mul (nan+2j) (-16-0j) (nan+nanj) +mul (nan+2j) (-16+0j) (nan+nanj) +mul (nan+2j) (-16+2j) (nan+nanj) +mul (nan+2j) (-16+16j) (nan+nanj) +mul (nan+2j) (-16+infj) (nan+nanj) +mul (nan+2j) (-16+nanj) (nan+nanj) +mul (nan+2j) (-2-infj) (nan+nanj) +mul (nan+2j) (-2-16j) (nan+nanj) +mul (nan+2j) (-2-2j) (nan+nanj) +mul (nan+2j) (-2-0j) (nan+nanj) +mul (nan+2j) (-2+0j) (nan+nanj) +mul (nan+2j) (-2+2j) (nan+nanj) +mul (nan+2j) (-2+16j) (nan+nanj) +mul (nan+2j) (-2+infj) (nan+nanj) +mul (nan+2j) (-2+nanj) (nan+nanj) +mul (nan+2j) (-0-infj) (nan+nanj) +mul (nan+2j) (-0-16j) (nan+nanj) +mul (nan+2j) (-0-2j) (nan+nanj) +mul (nan+2j) (-0-0j) (nan+nanj) +mul (nan+2j) (-0+0j) (nan+nanj) +mul (nan+2j) (-0+2j) (nan+nanj) +mul (nan+2j) (-0+16j) (nan+nanj) +mul (nan+2j) (-0+infj) (nan+nanj) +mul (nan+2j) (-0+nanj) (nan+nanj) +mul (nan+2j) -infj (nan+nanj) +mul (nan+2j) -16j (nan+nanj) +mul (nan+2j) -2j (nan+nanj) +mul (nan+2j) -0j (nan+nanj) +mul (nan+2j) 0j (nan+nanj) +mul (nan+2j) 2j (nan+nanj) +mul (nan+2j) 16j (nan+nanj) +mul (nan+2j) infj (nan+nanj) +mul (nan+2j) nanj (nan+nanj) +mul (nan+2j) (2-infj) (nan+nanj) +mul (nan+2j) (2-16j) (nan+nanj) +mul (nan+2j) (2-2j) (nan+nanj) +mul (nan+2j) (2-0j) (nan+nanj) +mul (nan+2j) (2+0j) (nan+nanj) +mul (nan+2j) (2+2j) (nan+nanj) +mul (nan+2j) (2+16j) (nan+nanj) +mul (nan+2j) (2+infj) (nan+nanj) +mul (nan+2j) (2+nanj) (nan+nanj) +mul (nan+2j) (16-infj) (nan+nanj) +mul (nan+2j) (16-16j) (nan+nanj) +mul (nan+2j) (16-2j) (nan+nanj) +mul (nan+2j) (16-0j) (nan+nanj) +mul (nan+2j) (16+0j) (nan+nanj) +mul (nan+2j) (16+2j) (nan+nanj) +mul (nan+2j) (16+16j) (nan+nanj) +mul (nan+2j) (16+infj) (nan+nanj) +mul (nan+2j) (16+nanj) (nan+nanj) +mul (nan+2j) (inf-infj) (nan+nanj) +mul (nan+2j) (inf-16j) (nan+nanj) +mul (nan+2j) (inf-2j) (nan+nanj) +mul (nan+2j) (inf-0j) (nan+nanj) +mul (nan+2j) (inf+0j) (nan+nanj) +mul (nan+2j) (inf+2j) (nan+nanj) +mul (nan+2j) (inf+16j) (nan+nanj) +mul (nan+2j) (inf+infj) (nan+nanj) +mul (nan+2j) (inf+nanj) (nan+nanj) +mul (nan+2j) (nan-infj) (nan+nanj) +mul (nan+2j) (nan-16j) (nan+nanj) +mul (nan+2j) (nan-2j) (nan+nanj) +mul (nan+2j) (nan-0j) (nan+nanj) +mul (nan+2j) (nan+0j) (nan+nanj) +mul (nan+2j) (nan+2j) (nan+nanj) +mul (nan+2j) (nan+16j) (nan+nanj) +mul (nan+2j) (nan+infj) (nan+nanj) +mul (nan+2j) (nan+nanj) (nan+nanj) +mul (nan+16j) (-inf-infj) (nan+nanj) +mul (nan+16j) (-inf-16j) (nan+nanj) +mul (nan+16j) (-inf-2j) (nan+nanj) +mul (nan+16j) (-inf-0j) (nan+nanj) +mul (nan+16j) (-inf+0j) (nan+nanj) +mul (nan+16j) (-inf+2j) (nan+nanj) +mul (nan+16j) (-inf+16j) (nan+nanj) +mul (nan+16j) (-inf+infj) (nan+nanj) +mul (nan+16j) (-inf+nanj) (nan+nanj) +mul (nan+16j) (-16-infj) (nan+nanj) +mul (nan+16j) (-16-16j) (nan+nanj) +mul (nan+16j) (-16-2j) (nan+nanj) +mul (nan+16j) (-16-0j) (nan+nanj) +mul (nan+16j) (-16+0j) (nan+nanj) +mul (nan+16j) (-16+2j) (nan+nanj) +mul (nan+16j) (-16+16j) (nan+nanj) +mul (nan+16j) (-16+infj) (nan+nanj) +mul (nan+16j) (-16+nanj) (nan+nanj) +mul (nan+16j) (-2-infj) (nan+nanj) +mul (nan+16j) (-2-16j) (nan+nanj) +mul (nan+16j) (-2-2j) (nan+nanj) +mul (nan+16j) (-2-0j) (nan+nanj) +mul (nan+16j) (-2+0j) (nan+nanj) +mul (nan+16j) (-2+2j) (nan+nanj) +mul (nan+16j) (-2+16j) (nan+nanj) +mul (nan+16j) (-2+infj) (nan+nanj) +mul (nan+16j) (-2+nanj) (nan+nanj) +mul (nan+16j) (-0-infj) (nan+nanj) +mul (nan+16j) (-0-16j) (nan+nanj) +mul (nan+16j) (-0-2j) (nan+nanj) +mul (nan+16j) (-0-0j) (nan+nanj) +mul (nan+16j) (-0+0j) (nan+nanj) +mul (nan+16j) (-0+2j) (nan+nanj) +mul (nan+16j) (-0+16j) (nan+nanj) +mul (nan+16j) (-0+infj) (nan+nanj) +mul (nan+16j) (-0+nanj) (nan+nanj) +mul (nan+16j) -infj (nan+nanj) +mul (nan+16j) -16j (nan+nanj) +mul (nan+16j) -2j (nan+nanj) +mul (nan+16j) -0j (nan+nanj) +mul (nan+16j) 0j (nan+nanj) +mul (nan+16j) 2j (nan+nanj) +mul (nan+16j) 16j (nan+nanj) +mul (nan+16j) infj (nan+nanj) +mul (nan+16j) nanj (nan+nanj) +mul (nan+16j) (2-infj) (nan+nanj) +mul (nan+16j) (2-16j) (nan+nanj) +mul (nan+16j) (2-2j) (nan+nanj) +mul (nan+16j) (2-0j) (nan+nanj) +mul (nan+16j) (2+0j) (nan+nanj) +mul (nan+16j) (2+2j) (nan+nanj) +mul (nan+16j) (2+16j) (nan+nanj) +mul (nan+16j) (2+infj) (nan+nanj) +mul (nan+16j) (2+nanj) (nan+nanj) +mul (nan+16j) (16-infj) (nan+nanj) +mul (nan+16j) (16-16j) (nan+nanj) +mul (nan+16j) (16-2j) (nan+nanj) +mul (nan+16j) (16-0j) (nan+nanj) +mul (nan+16j) (16+0j) (nan+nanj) +mul (nan+16j) (16+2j) (nan+nanj) +mul (nan+16j) (16+16j) (nan+nanj) +mul (nan+16j) (16+infj) (nan+nanj) +mul (nan+16j) (16+nanj) (nan+nanj) +mul (nan+16j) (inf-infj) (nan+nanj) +mul (nan+16j) (inf-16j) (nan+nanj) +mul (nan+16j) (inf-2j) (nan+nanj) +mul (nan+16j) (inf-0j) (nan+nanj) +mul (nan+16j) (inf+0j) (nan+nanj) +mul (nan+16j) (inf+2j) (nan+nanj) +mul (nan+16j) (inf+16j) (nan+nanj) +mul (nan+16j) (inf+infj) (nan+nanj) +mul (nan+16j) (inf+nanj) (nan+nanj) +mul (nan+16j) (nan-infj) (nan+nanj) +mul (nan+16j) (nan-16j) (nan+nanj) +mul (nan+16j) (nan-2j) (nan+nanj) +mul (nan+16j) (nan-0j) (nan+nanj) +mul (nan+16j) (nan+0j) (nan+nanj) +mul (nan+16j) (nan+2j) (nan+nanj) +mul (nan+16j) (nan+16j) (nan+nanj) +mul (nan+16j) (nan+infj) (nan+nanj) +mul (nan+16j) (nan+nanj) (nan+nanj) +mul (nan+infj) (-inf-infj) (nan+nanj) +mul (nan+infj) (-inf-16j) (nan+nanj) +mul (nan+infj) (-inf-2j) (nan+nanj) +mul (nan+infj) (-inf-0j) (nan+nanj) +mul (nan+infj) (-inf+0j) (nan+nanj) +mul (nan+infj) (-inf+2j) (nan+nanj) +mul (nan+infj) (-inf+16j) (nan+nanj) +mul (nan+infj) (-inf+infj) (nan+nanj) +mul (nan+infj) (-inf+nanj) (nan+nanj) +mul (nan+infj) (-16-infj) (nan+nanj) +mul (nan+infj) (-16-16j) (nan+nanj) +mul (nan+infj) (-16-2j) (nan+nanj) +mul (nan+infj) (-16-0j) (nan+nanj) +mul (nan+infj) (-16+0j) (nan+nanj) +mul (nan+infj) (-16+2j) (nan+nanj) +mul (nan+infj) (-16+16j) (nan+nanj) +mul (nan+infj) (-16+infj) (nan+nanj) +mul (nan+infj) (-16+nanj) (nan+nanj) +mul (nan+infj) (-2-infj) (nan+nanj) +mul (nan+infj) (-2-16j) (nan+nanj) +mul (nan+infj) (-2-2j) (nan+nanj) +mul (nan+infj) (-2-0j) (nan+nanj) +mul (nan+infj) (-2+0j) (nan+nanj) +mul (nan+infj) (-2+2j) (nan+nanj) +mul (nan+infj) (-2+16j) (nan+nanj) +mul (nan+infj) (-2+infj) (nan+nanj) +mul (nan+infj) (-2+nanj) (nan+nanj) +mul (nan+infj) (-0-infj) (nan+nanj) +mul (nan+infj) (-0-16j) (nan+nanj) +mul (nan+infj) (-0-2j) (nan+nanj) +mul (nan+infj) (-0-0j) (nan+nanj) +mul (nan+infj) (-0+0j) (nan+nanj) +mul (nan+infj) (-0+2j) (nan+nanj) +mul (nan+infj) (-0+16j) (nan+nanj) +mul (nan+infj) (-0+infj) (nan+nanj) +mul (nan+infj) (-0+nanj) (nan+nanj) +mul (nan+infj) -infj (nan+nanj) +mul (nan+infj) -16j (nan+nanj) +mul (nan+infj) -2j (nan+nanj) +mul (nan+infj) -0j (nan+nanj) +mul (nan+infj) 0j (nan+nanj) +mul (nan+infj) 2j (nan+nanj) +mul (nan+infj) 16j (nan+nanj) +mul (nan+infj) infj (nan+nanj) +mul (nan+infj) nanj (nan+nanj) +mul (nan+infj) (2-infj) (nan+nanj) +mul (nan+infj) (2-16j) (nan+nanj) +mul (nan+infj) (2-2j) (nan+nanj) +mul (nan+infj) (2-0j) (nan+nanj) +mul (nan+infj) (2+0j) (nan+nanj) +mul (nan+infj) (2+2j) (nan+nanj) +mul (nan+infj) (2+16j) (nan+nanj) +mul (nan+infj) (2+infj) (nan+nanj) +mul (nan+infj) (2+nanj) (nan+nanj) +mul (nan+infj) (16-infj) (nan+nanj) +mul (nan+infj) (16-16j) (nan+nanj) +mul (nan+infj) (16-2j) (nan+nanj) +mul (nan+infj) (16-0j) (nan+nanj) +mul (nan+infj) (16+0j) (nan+nanj) +mul (nan+infj) (16+2j) (nan+nanj) +mul (nan+infj) (16+16j) (nan+nanj) +mul (nan+infj) (16+infj) (nan+nanj) +mul (nan+infj) (16+nanj) (nan+nanj) +mul (nan+infj) (inf-infj) (nan+nanj) +mul (nan+infj) (inf-16j) (nan+nanj) +mul (nan+infj) (inf-2j) (nan+nanj) +mul (nan+infj) (inf-0j) (nan+nanj) +mul (nan+infj) (inf+0j) (nan+nanj) +mul (nan+infj) (inf+2j) (nan+nanj) +mul (nan+infj) (inf+16j) (nan+nanj) +mul (nan+infj) (inf+infj) (nan+nanj) +mul (nan+infj) (inf+nanj) (nan+nanj) +mul (nan+infj) (nan-infj) (nan+nanj) +mul (nan+infj) (nan-16j) (nan+nanj) +mul (nan+infj) (nan-2j) (nan+nanj) +mul (nan+infj) (nan-0j) (nan+nanj) +mul (nan+infj) (nan+0j) (nan+nanj) +mul (nan+infj) (nan+2j) (nan+nanj) +mul (nan+infj) (nan+16j) (nan+nanj) +mul (nan+infj) (nan+infj) (nan+nanj) +mul (nan+infj) (nan+nanj) (nan+nanj) +mul (nan+nanj) (-inf-infj) (nan+nanj) +mul (nan+nanj) (-inf-16j) (nan+nanj) +mul (nan+nanj) (-inf-2j) (nan+nanj) +mul (nan+nanj) (-inf-0j) (nan+nanj) +mul (nan+nanj) (-inf+0j) (nan+nanj) +mul (nan+nanj) (-inf+2j) (nan+nanj) +mul (nan+nanj) (-inf+16j) (nan+nanj) +mul (nan+nanj) (-inf+infj) (nan+nanj) +mul (nan+nanj) (-inf+nanj) (nan+nanj) +mul (nan+nanj) (-16-infj) (nan+nanj) +mul (nan+nanj) (-16-16j) (nan+nanj) +mul (nan+nanj) (-16-2j) (nan+nanj) +mul (nan+nanj) (-16-0j) (nan+nanj) +mul (nan+nanj) (-16+0j) (nan+nanj) +mul (nan+nanj) (-16+2j) (nan+nanj) +mul (nan+nanj) (-16+16j) (nan+nanj) +mul (nan+nanj) (-16+infj) (nan+nanj) +mul (nan+nanj) (-16+nanj) (nan+nanj) +mul (nan+nanj) (-2-infj) (nan+nanj) +mul (nan+nanj) (-2-16j) (nan+nanj) +mul (nan+nanj) (-2-2j) (nan+nanj) +mul (nan+nanj) (-2-0j) (nan+nanj) +mul (nan+nanj) (-2+0j) (nan+nanj) +mul (nan+nanj) (-2+2j) (nan+nanj) +mul (nan+nanj) (-2+16j) (nan+nanj) +mul (nan+nanj) (-2+infj) (nan+nanj) +mul (nan+nanj) (-2+nanj) (nan+nanj) +mul (nan+nanj) (-0-infj) (nan+nanj) +mul (nan+nanj) (-0-16j) (nan+nanj) +mul (nan+nanj) (-0-2j) (nan+nanj) +mul (nan+nanj) (-0-0j) (nan+nanj) +mul (nan+nanj) (-0+0j) (nan+nanj) +mul (nan+nanj) (-0+2j) (nan+nanj) +mul (nan+nanj) (-0+16j) (nan+nanj) +mul (nan+nanj) (-0+infj) (nan+nanj) +mul (nan+nanj) (-0+nanj) (nan+nanj) +mul (nan+nanj) -infj (nan+nanj) +mul (nan+nanj) -16j (nan+nanj) +mul (nan+nanj) -2j (nan+nanj) +mul (nan+nanj) -0j (nan+nanj) +mul (nan+nanj) 0j (nan+nanj) +mul (nan+nanj) 2j (nan+nanj) +mul (nan+nanj) 16j (nan+nanj) +mul (nan+nanj) infj (nan+nanj) +mul (nan+nanj) nanj (nan+nanj) +mul (nan+nanj) (2-infj) (nan+nanj) +mul (nan+nanj) (2-16j) (nan+nanj) +mul (nan+nanj) (2-2j) (nan+nanj) +mul (nan+nanj) (2-0j) (nan+nanj) +mul (nan+nanj) (2+0j) (nan+nanj) +mul (nan+nanj) (2+2j) (nan+nanj) +mul (nan+nanj) (2+16j) (nan+nanj) +mul (nan+nanj) (2+infj) (nan+nanj) +mul (nan+nanj) (2+nanj) (nan+nanj) +mul (nan+nanj) (16-infj) (nan+nanj) +mul (nan+nanj) (16-16j) (nan+nanj) +mul (nan+nanj) (16-2j) (nan+nanj) +mul (nan+nanj) (16-0j) (nan+nanj) +mul (nan+nanj) (16+0j) (nan+nanj) +mul (nan+nanj) (16+2j) (nan+nanj) +mul (nan+nanj) (16+16j) (nan+nanj) +mul (nan+nanj) (16+infj) (nan+nanj) +mul (nan+nanj) (16+nanj) (nan+nanj) +mul (nan+nanj) (inf-infj) (nan+nanj) +mul (nan+nanj) (inf-16j) (nan+nanj) +mul (nan+nanj) (inf-2j) (nan+nanj) +mul (nan+nanj) (inf-0j) (nan+nanj) +mul (nan+nanj) (inf+0j) (nan+nanj) +mul (nan+nanj) (inf+2j) (nan+nanj) +mul (nan+nanj) (inf+16j) (nan+nanj) +mul (nan+nanj) (inf+infj) (nan+nanj) +mul (nan+nanj) (inf+nanj) (nan+nanj) +mul (nan+nanj) (nan-infj) (nan+nanj) +mul (nan+nanj) (nan-16j) (nan+nanj) +mul (nan+nanj) (nan-2j) (nan+nanj) +mul (nan+nanj) (nan-0j) (nan+nanj) +mul (nan+nanj) (nan+0j) (nan+nanj) +mul (nan+nanj) (nan+2j) (nan+nanj) +mul (nan+nanj) (nan+16j) (nan+nanj) +mul (nan+nanj) (nan+infj) (nan+nanj) +mul (nan+nanj) (nan+nanj) (nan+nanj) +sub (-inf-infj) (-inf-infj) (nan+nanj) +sub (-inf-infj) (-inf-16j) (nan-infj) +sub (-inf-infj) (-inf-2j) (nan-infj) +sub (-inf-infj) (-inf-0j) (nan-infj) +sub (-inf-infj) (-inf+0j) (nan-infj) +sub (-inf-infj) (-inf+2j) (nan-infj) +sub (-inf-infj) (-inf+16j) (nan-infj) +sub (-inf-infj) (-inf+infj) (nan-infj) +sub (-inf-infj) (-inf+nanj) (nan+nanj) +sub (-inf-infj) (-16-infj) (-inf+nanj) +sub (-inf-infj) (-16-16j) (-inf-infj) +sub (-inf-infj) (-16-2j) (-inf-infj) +sub (-inf-infj) (-16-0j) (-inf-infj) +sub (-inf-infj) (-16+0j) (-inf-infj) +sub (-inf-infj) (-16+2j) (-inf-infj) +sub (-inf-infj) (-16+16j) (-inf-infj) +sub (-inf-infj) (-16+infj) (-inf-infj) +sub (-inf-infj) (-16+nanj) (-inf+nanj) +sub (-inf-infj) (-2-infj) (-inf+nanj) +sub (-inf-infj) (-2-16j) (-inf-infj) +sub (-inf-infj) (-2-2j) (-inf-infj) +sub (-inf-infj) (-2-0j) (-inf-infj) +sub (-inf-infj) (-2+0j) (-inf-infj) +sub (-inf-infj) (-2+2j) (-inf-infj) +sub (-inf-infj) (-2+16j) (-inf-infj) +sub (-inf-infj) (-2+infj) (-inf-infj) +sub (-inf-infj) (-2+nanj) (-inf+nanj) +sub (-inf-infj) (-0-infj) (-inf+nanj) +sub (-inf-infj) (-0-16j) (-inf-infj) +sub (-inf-infj) (-0-2j) (-inf-infj) +sub (-inf-infj) (-0-0j) (-inf-infj) +sub (-inf-infj) (-0+0j) (-inf-infj) +sub (-inf-infj) (-0+2j) (-inf-infj) +sub (-inf-infj) (-0+16j) (-inf-infj) +sub (-inf-infj) (-0+infj) (-inf-infj) +sub (-inf-infj) (-0+nanj) (-inf+nanj) +sub (-inf-infj) -infj (-inf+nanj) +sub (-inf-infj) -16j (-inf-infj) +sub (-inf-infj) -2j (-inf-infj) +sub (-inf-infj) -0j (-inf-infj) +sub (-inf-infj) 0j (-inf-infj) +sub (-inf-infj) 2j (-inf-infj) +sub (-inf-infj) 16j (-inf-infj) +sub (-inf-infj) infj (-inf-infj) +sub (-inf-infj) nanj (-inf+nanj) +sub (-inf-infj) (2-infj) (-inf+nanj) +sub (-inf-infj) (2-16j) (-inf-infj) +sub (-inf-infj) (2-2j) (-inf-infj) +sub (-inf-infj) (2-0j) (-inf-infj) +sub (-inf-infj) (2+0j) (-inf-infj) +sub (-inf-infj) (2+2j) (-inf-infj) +sub (-inf-infj) (2+16j) (-inf-infj) +sub (-inf-infj) (2+infj) (-inf-infj) +sub (-inf-infj) (2+nanj) (-inf+nanj) +sub (-inf-infj) (16-infj) (-inf+nanj) +sub (-inf-infj) (16-16j) (-inf-infj) +sub (-inf-infj) (16-2j) (-inf-infj) +sub (-inf-infj) (16-0j) (-inf-infj) +sub (-inf-infj) (16+0j) (-inf-infj) +sub (-inf-infj) (16+2j) (-inf-infj) +sub (-inf-infj) (16+16j) (-inf-infj) +sub (-inf-infj) (16+infj) (-inf-infj) +sub (-inf-infj) (16+nanj) (-inf+nanj) +sub (-inf-infj) (inf-infj) (-inf+nanj) +sub (-inf-infj) (inf-16j) (-inf-infj) +sub (-inf-infj) (inf-2j) (-inf-infj) +sub (-inf-infj) (inf-0j) (-inf-infj) +sub (-inf-infj) (inf+0j) (-inf-infj) +sub (-inf-infj) (inf+2j) (-inf-infj) +sub (-inf-infj) (inf+16j) (-inf-infj) +sub (-inf-infj) (inf+infj) (-inf-infj) +sub (-inf-infj) (inf+nanj) (-inf+nanj) +sub (-inf-infj) (nan-infj) (nan+nanj) +sub (-inf-infj) (nan-16j) (nan-infj) +sub (-inf-infj) (nan-2j) (nan-infj) +sub (-inf-infj) (nan-0j) (nan-infj) +sub (-inf-infj) (nan+0j) (nan-infj) +sub (-inf-infj) (nan+2j) (nan-infj) +sub (-inf-infj) (nan+16j) (nan-infj) +sub (-inf-infj) (nan+infj) (nan-infj) +sub (-inf-infj) (nan+nanj) (nan+nanj) +sub (-inf-16j) (-inf-infj) (nan+infj) +sub (-inf-16j) (-inf-16j) (nan+0j) +sub (-inf-16j) (-inf-2j) (nan-14j) +sub (-inf-16j) (-inf-0j) (nan-16j) +sub (-inf-16j) (-inf+0j) (nan-16j) +sub (-inf-16j) (-inf+2j) (nan-18j) +sub (-inf-16j) (-inf+16j) (nan-32j) +sub (-inf-16j) (-inf+infj) (nan-infj) +sub (-inf-16j) (-inf+nanj) (nan+nanj) +sub (-inf-16j) (-16-infj) (-inf+infj) +sub (-inf-16j) (-16-16j) (-inf+0j) +sub (-inf-16j) (-16-2j) (-inf-14j) +sub (-inf-16j) (-16-0j) (-inf-16j) +sub (-inf-16j) (-16+0j) (-inf-16j) +sub (-inf-16j) (-16+2j) (-inf-18j) +sub (-inf-16j) (-16+16j) (-inf-32j) +sub (-inf-16j) (-16+infj) (-inf-infj) +sub (-inf-16j) (-16+nanj) (-inf+nanj) +sub (-inf-16j) (-2-infj) (-inf+infj) +sub (-inf-16j) (-2-16j) (-inf+0j) +sub (-inf-16j) (-2-2j) (-inf-14j) +sub (-inf-16j) (-2-0j) (-inf-16j) +sub (-inf-16j) (-2+0j) (-inf-16j) +sub (-inf-16j) (-2+2j) (-inf-18j) +sub (-inf-16j) (-2+16j) (-inf-32j) +sub (-inf-16j) (-2+infj) (-inf-infj) +sub (-inf-16j) (-2+nanj) (-inf+nanj) +sub (-inf-16j) (-0-infj) (-inf+infj) +sub (-inf-16j) (-0-16j) (-inf+0j) +sub (-inf-16j) (-0-2j) (-inf-14j) +sub (-inf-16j) (-0-0j) (-inf-16j) +sub (-inf-16j) (-0+0j) (-inf-16j) +sub (-inf-16j) (-0+2j) (-inf-18j) +sub (-inf-16j) (-0+16j) (-inf-32j) +sub (-inf-16j) (-0+infj) (-inf-infj) +sub (-inf-16j) (-0+nanj) (-inf+nanj) +sub (-inf-16j) -infj (-inf+infj) +sub (-inf-16j) -16j (-inf+0j) +sub (-inf-16j) -2j (-inf-14j) +sub (-inf-16j) -0j (-inf-16j) +sub (-inf-16j) 0j (-inf-16j) +sub (-inf-16j) 2j (-inf-18j) +sub (-inf-16j) 16j (-inf-32j) +sub (-inf-16j) infj (-inf-infj) +sub (-inf-16j) nanj (-inf+nanj) +sub (-inf-16j) (2-infj) (-inf+infj) +sub (-inf-16j) (2-16j) (-inf+0j) +sub (-inf-16j) (2-2j) (-inf-14j) +sub (-inf-16j) (2-0j) (-inf-16j) +sub (-inf-16j) (2+0j) (-inf-16j) +sub (-inf-16j) (2+2j) (-inf-18j) +sub (-inf-16j) (2+16j) (-inf-32j) +sub (-inf-16j) (2+infj) (-inf-infj) +sub (-inf-16j) (2+nanj) (-inf+nanj) +sub (-inf-16j) (16-infj) (-inf+infj) +sub (-inf-16j) (16-16j) (-inf+0j) +sub (-inf-16j) (16-2j) (-inf-14j) +sub (-inf-16j) (16-0j) (-inf-16j) +sub (-inf-16j) (16+0j) (-inf-16j) +sub (-inf-16j) (16+2j) (-inf-18j) +sub (-inf-16j) (16+16j) (-inf-32j) +sub (-inf-16j) (16+infj) (-inf-infj) +sub (-inf-16j) (16+nanj) (-inf+nanj) +sub (-inf-16j) (inf-infj) (-inf+infj) +sub (-inf-16j) (inf-16j) (-inf+0j) +sub (-inf-16j) (inf-2j) (-inf-14j) +sub (-inf-16j) (inf-0j) (-inf-16j) +sub (-inf-16j) (inf+0j) (-inf-16j) +sub (-inf-16j) (inf+2j) (-inf-18j) +sub (-inf-16j) (inf+16j) (-inf-32j) +sub (-inf-16j) (inf+infj) (-inf-infj) +sub (-inf-16j) (inf+nanj) (-inf+nanj) +sub (-inf-16j) (nan-infj) (nan+infj) +sub (-inf-16j) (nan-16j) (nan+0j) +sub (-inf-16j) (nan-2j) (nan-14j) +sub (-inf-16j) (nan-0j) (nan-16j) +sub (-inf-16j) (nan+0j) (nan-16j) +sub (-inf-16j) (nan+2j) (nan-18j) +sub (-inf-16j) (nan+16j) (nan-32j) +sub (-inf-16j) (nan+infj) (nan-infj) +sub (-inf-16j) (nan+nanj) (nan+nanj) +sub (-inf-2j) (-inf-infj) (nan+infj) +sub (-inf-2j) (-inf-16j) (nan+14j) +sub (-inf-2j) (-inf-2j) (nan+0j) +sub (-inf-2j) (-inf-0j) (nan-2j) +sub (-inf-2j) (-inf+0j) (nan-2j) +sub (-inf-2j) (-inf+2j) (nan-4j) +sub (-inf-2j) (-inf+16j) (nan-18j) +sub (-inf-2j) (-inf+infj) (nan-infj) +sub (-inf-2j) (-inf+nanj) (nan+nanj) +sub (-inf-2j) (-16-infj) (-inf+infj) +sub (-inf-2j) (-16-16j) (-inf+14j) +sub (-inf-2j) (-16-2j) (-inf+0j) +sub (-inf-2j) (-16-0j) (-inf-2j) +sub (-inf-2j) (-16+0j) (-inf-2j) +sub (-inf-2j) (-16+2j) (-inf-4j) +sub (-inf-2j) (-16+16j) (-inf-18j) +sub (-inf-2j) (-16+infj) (-inf-infj) +sub (-inf-2j) (-16+nanj) (-inf+nanj) +sub (-inf-2j) (-2-infj) (-inf+infj) +sub (-inf-2j) (-2-16j) (-inf+14j) +sub (-inf-2j) (-2-2j) (-inf+0j) +sub (-inf-2j) (-2-0j) (-inf-2j) +sub (-inf-2j) (-2+0j) (-inf-2j) +sub (-inf-2j) (-2+2j) (-inf-4j) +sub (-inf-2j) (-2+16j) (-inf-18j) +sub (-inf-2j) (-2+infj) (-inf-infj) +sub (-inf-2j) (-2+nanj) (-inf+nanj) +sub (-inf-2j) (-0-infj) (-inf+infj) +sub (-inf-2j) (-0-16j) (-inf+14j) +sub (-inf-2j) (-0-2j) (-inf+0j) +sub (-inf-2j) (-0-0j) (-inf-2j) +sub (-inf-2j) (-0+0j) (-inf-2j) +sub (-inf-2j) (-0+2j) (-inf-4j) +sub (-inf-2j) (-0+16j) (-inf-18j) +sub (-inf-2j) (-0+infj) (-inf-infj) +sub (-inf-2j) (-0+nanj) (-inf+nanj) +sub (-inf-2j) -infj (-inf+infj) +sub (-inf-2j) -16j (-inf+14j) +sub (-inf-2j) -2j (-inf+0j) +sub (-inf-2j) -0j (-inf-2j) +sub (-inf-2j) 0j (-inf-2j) +sub (-inf-2j) 2j (-inf-4j) +sub (-inf-2j) 16j (-inf-18j) +sub (-inf-2j) infj (-inf-infj) +sub (-inf-2j) nanj (-inf+nanj) +sub (-inf-2j) (2-infj) (-inf+infj) +sub (-inf-2j) (2-16j) (-inf+14j) +sub (-inf-2j) (2-2j) (-inf+0j) +sub (-inf-2j) (2-0j) (-inf-2j) +sub (-inf-2j) (2+0j) (-inf-2j) +sub (-inf-2j) (2+2j) (-inf-4j) +sub (-inf-2j) (2+16j) (-inf-18j) +sub (-inf-2j) (2+infj) (-inf-infj) +sub (-inf-2j) (2+nanj) (-inf+nanj) +sub (-inf-2j) (16-infj) (-inf+infj) +sub (-inf-2j) (16-16j) (-inf+14j) +sub (-inf-2j) (16-2j) (-inf+0j) +sub (-inf-2j) (16-0j) (-inf-2j) +sub (-inf-2j) (16+0j) (-inf-2j) +sub (-inf-2j) (16+2j) (-inf-4j) +sub (-inf-2j) (16+16j) (-inf-18j) +sub (-inf-2j) (16+infj) (-inf-infj) +sub (-inf-2j) (16+nanj) (-inf+nanj) +sub (-inf-2j) (inf-infj) (-inf+infj) +sub (-inf-2j) (inf-16j) (-inf+14j) +sub (-inf-2j) (inf-2j) (-inf+0j) +sub (-inf-2j) (inf-0j) (-inf-2j) +sub (-inf-2j) (inf+0j) (-inf-2j) +sub (-inf-2j) (inf+2j) (-inf-4j) +sub (-inf-2j) (inf+16j) (-inf-18j) +sub (-inf-2j) (inf+infj) (-inf-infj) +sub (-inf-2j) (inf+nanj) (-inf+nanj) +sub (-inf-2j) (nan-infj) (nan+infj) +sub (-inf-2j) (nan-16j) (nan+14j) +sub (-inf-2j) (nan-2j) (nan+0j) +sub (-inf-2j) (nan-0j) (nan-2j) +sub (-inf-2j) (nan+0j) (nan-2j) +sub (-inf-2j) (nan+2j) (nan-4j) +sub (-inf-2j) (nan+16j) (nan-18j) +sub (-inf-2j) (nan+infj) (nan-infj) +sub (-inf-2j) (nan+nanj) (nan+nanj) +sub (-inf-0j) (-inf-infj) (nan+infj) +sub (-inf-0j) (-inf-16j) (nan+16j) +sub (-inf-0j) (-inf-2j) (nan+2j) +sub (-inf-0j) (-inf-0j) (nan+0j) +sub (-inf-0j) (-inf+0j) (nan-0j) +sub (-inf-0j) (-inf+2j) (nan-2j) +sub (-inf-0j) (-inf+16j) (nan-16j) +sub (-inf-0j) (-inf+infj) (nan-infj) +sub (-inf-0j) (-inf+nanj) (nan+nanj) +sub (-inf-0j) (-16-infj) (-inf+infj) +sub (-inf-0j) (-16-16j) (-inf+16j) +sub (-inf-0j) (-16-2j) (-inf+2j) +sub (-inf-0j) (-16-0j) (-inf+0j) +sub (-inf-0j) (-16+0j) (-inf-0j) +sub (-inf-0j) (-16+2j) (-inf-2j) +sub (-inf-0j) (-16+16j) (-inf-16j) +sub (-inf-0j) (-16+infj) (-inf-infj) +sub (-inf-0j) (-16+nanj) (-inf+nanj) +sub (-inf-0j) (-2-infj) (-inf+infj) +sub (-inf-0j) (-2-16j) (-inf+16j) +sub (-inf-0j) (-2-2j) (-inf+2j) +sub (-inf-0j) (-2-0j) (-inf+0j) +sub (-inf-0j) (-2+0j) (-inf-0j) +sub (-inf-0j) (-2+2j) (-inf-2j) +sub (-inf-0j) (-2+16j) (-inf-16j) +sub (-inf-0j) (-2+infj) (-inf-infj) +sub (-inf-0j) (-2+nanj) (-inf+nanj) +sub (-inf-0j) (-0-infj) (-inf+infj) +sub (-inf-0j) (-0-16j) (-inf+16j) +sub (-inf-0j) (-0-2j) (-inf+2j) +sub (-inf-0j) (-0-0j) (-inf+0j) +sub (-inf-0j) (-0+0j) (-inf-0j) +sub (-inf-0j) (-0+2j) (-inf-2j) +sub (-inf-0j) (-0+16j) (-inf-16j) +sub (-inf-0j) (-0+infj) (-inf-infj) +sub (-inf-0j) (-0+nanj) (-inf+nanj) +sub (-inf-0j) -infj (-inf+infj) +sub (-inf-0j) -16j (-inf+16j) +sub (-inf-0j) -2j (-inf+2j) +sub (-inf-0j) -0j (-inf+0j) +sub (-inf-0j) 0j (-inf-0j) +sub (-inf-0j) 2j (-inf-2j) +sub (-inf-0j) 16j (-inf-16j) +sub (-inf-0j) infj (-inf-infj) +sub (-inf-0j) nanj (-inf+nanj) +sub (-inf-0j) (2-infj) (-inf+infj) +sub (-inf-0j) (2-16j) (-inf+16j) +sub (-inf-0j) (2-2j) (-inf+2j) +sub (-inf-0j) (2-0j) (-inf+0j) +sub (-inf-0j) (2+0j) (-inf-0j) +sub (-inf-0j) (2+2j) (-inf-2j) +sub (-inf-0j) (2+16j) (-inf-16j) +sub (-inf-0j) (2+infj) (-inf-infj) +sub (-inf-0j) (2+nanj) (-inf+nanj) +sub (-inf-0j) (16-infj) (-inf+infj) +sub (-inf-0j) (16-16j) (-inf+16j) +sub (-inf-0j) (16-2j) (-inf+2j) +sub (-inf-0j) (16-0j) (-inf+0j) +sub (-inf-0j) (16+0j) (-inf-0j) +sub (-inf-0j) (16+2j) (-inf-2j) +sub (-inf-0j) (16+16j) (-inf-16j) +sub (-inf-0j) (16+infj) (-inf-infj) +sub (-inf-0j) (16+nanj) (-inf+nanj) +sub (-inf-0j) (inf-infj) (-inf+infj) +sub (-inf-0j) (inf-16j) (-inf+16j) +sub (-inf-0j) (inf-2j) (-inf+2j) +sub (-inf-0j) (inf-0j) (-inf+0j) +sub (-inf-0j) (inf+0j) (-inf-0j) +sub (-inf-0j) (inf+2j) (-inf-2j) +sub (-inf-0j) (inf+16j) (-inf-16j) +sub (-inf-0j) (inf+infj) (-inf-infj) +sub (-inf-0j) (inf+nanj) (-inf+nanj) +sub (-inf-0j) (nan-infj) (nan+infj) +sub (-inf-0j) (nan-16j) (nan+16j) +sub (-inf-0j) (nan-2j) (nan+2j) +sub (-inf-0j) (nan-0j) (nan+0j) +sub (-inf-0j) (nan+0j) (nan-0j) +sub (-inf-0j) (nan+2j) (nan-2j) +sub (-inf-0j) (nan+16j) (nan-16j) +sub (-inf-0j) (nan+infj) (nan-infj) +sub (-inf-0j) (nan+nanj) (nan+nanj) +sub (-inf+0j) (-inf-infj) (nan+infj) +sub (-inf+0j) (-inf-16j) (nan+16j) +sub (-inf+0j) (-inf-2j) (nan+2j) +sub (-inf+0j) (-inf-0j) (nan+0j) +sub (-inf+0j) (-inf+0j) (nan+0j) +sub (-inf+0j) (-inf+2j) (nan-2j) +sub (-inf+0j) (-inf+16j) (nan-16j) +sub (-inf+0j) (-inf+infj) (nan-infj) +sub (-inf+0j) (-inf+nanj) (nan+nanj) +sub (-inf+0j) (-16-infj) (-inf+infj) +sub (-inf+0j) (-16-16j) (-inf+16j) +sub (-inf+0j) (-16-2j) (-inf+2j) +sub (-inf+0j) (-16-0j) (-inf+0j) +sub (-inf+0j) (-16+0j) (-inf+0j) +sub (-inf+0j) (-16+2j) (-inf-2j) +sub (-inf+0j) (-16+16j) (-inf-16j) +sub (-inf+0j) (-16+infj) (-inf-infj) +sub (-inf+0j) (-16+nanj) (-inf+nanj) +sub (-inf+0j) (-2-infj) (-inf+infj) +sub (-inf+0j) (-2-16j) (-inf+16j) +sub (-inf+0j) (-2-2j) (-inf+2j) +sub (-inf+0j) (-2-0j) (-inf+0j) +sub (-inf+0j) (-2+0j) (-inf+0j) +sub (-inf+0j) (-2+2j) (-inf-2j) +sub (-inf+0j) (-2+16j) (-inf-16j) +sub (-inf+0j) (-2+infj) (-inf-infj) +sub (-inf+0j) (-2+nanj) (-inf+nanj) +sub (-inf+0j) (-0-infj) (-inf+infj) +sub (-inf+0j) (-0-16j) (-inf+16j) +sub (-inf+0j) (-0-2j) (-inf+2j) +sub (-inf+0j) (-0-0j) (-inf+0j) +sub (-inf+0j) (-0+0j) (-inf+0j) +sub (-inf+0j) (-0+2j) (-inf-2j) +sub (-inf+0j) (-0+16j) (-inf-16j) +sub (-inf+0j) (-0+infj) (-inf-infj) +sub (-inf+0j) (-0+nanj) (-inf+nanj) +sub (-inf+0j) -infj (-inf+infj) +sub (-inf+0j) -16j (-inf+16j) +sub (-inf+0j) -2j (-inf+2j) +sub (-inf+0j) -0j (-inf+0j) +sub (-inf+0j) 0j (-inf+0j) +sub (-inf+0j) 2j (-inf-2j) +sub (-inf+0j) 16j (-inf-16j) +sub (-inf+0j) infj (-inf-infj) +sub (-inf+0j) nanj (-inf+nanj) +sub (-inf+0j) (2-infj) (-inf+infj) +sub (-inf+0j) (2-16j) (-inf+16j) +sub (-inf+0j) (2-2j) (-inf+2j) +sub (-inf+0j) (2-0j) (-inf+0j) +sub (-inf+0j) (2+0j) (-inf+0j) +sub (-inf+0j) (2+2j) (-inf-2j) +sub (-inf+0j) (2+16j) (-inf-16j) +sub (-inf+0j) (2+infj) (-inf-infj) +sub (-inf+0j) (2+nanj) (-inf+nanj) +sub (-inf+0j) (16-infj) (-inf+infj) +sub (-inf+0j) (16-16j) (-inf+16j) +sub (-inf+0j) (16-2j) (-inf+2j) +sub (-inf+0j) (16-0j) (-inf+0j) +sub (-inf+0j) (16+0j) (-inf+0j) +sub (-inf+0j) (16+2j) (-inf-2j) +sub (-inf+0j) (16+16j) (-inf-16j) +sub (-inf+0j) (16+infj) (-inf-infj) +sub (-inf+0j) (16+nanj) (-inf+nanj) +sub (-inf+0j) (inf-infj) (-inf+infj) +sub (-inf+0j) (inf-16j) (-inf+16j) +sub (-inf+0j) (inf-2j) (-inf+2j) +sub (-inf+0j) (inf-0j) (-inf+0j) +sub (-inf+0j) (inf+0j) (-inf+0j) +sub (-inf+0j) (inf+2j) (-inf-2j) +sub (-inf+0j) (inf+16j) (-inf-16j) +sub (-inf+0j) (inf+infj) (-inf-infj) +sub (-inf+0j) (inf+nanj) (-inf+nanj) +sub (-inf+0j) (nan-infj) (nan+infj) +sub (-inf+0j) (nan-16j) (nan+16j) +sub (-inf+0j) (nan-2j) (nan+2j) +sub (-inf+0j) (nan-0j) (nan+0j) +sub (-inf+0j) (nan+0j) (nan+0j) +sub (-inf+0j) (nan+2j) (nan-2j) +sub (-inf+0j) (nan+16j) (nan-16j) +sub (-inf+0j) (nan+infj) (nan-infj) +sub (-inf+0j) (nan+nanj) (nan+nanj) +sub (-inf+2j) (-inf-infj) (nan+infj) +sub (-inf+2j) (-inf-16j) (nan+18j) +sub (-inf+2j) (-inf-2j) (nan+4j) +sub (-inf+2j) (-inf-0j) (nan+2j) +sub (-inf+2j) (-inf+0j) (nan+2j) +sub (-inf+2j) (-inf+2j) (nan+0j) +sub (-inf+2j) (-inf+16j) (nan-14j) +sub (-inf+2j) (-inf+infj) (nan-infj) +sub (-inf+2j) (-inf+nanj) (nan+nanj) +sub (-inf+2j) (-16-infj) (-inf+infj) +sub (-inf+2j) (-16-16j) (-inf+18j) +sub (-inf+2j) (-16-2j) (-inf+4j) +sub (-inf+2j) (-16-0j) (-inf+2j) +sub (-inf+2j) (-16+0j) (-inf+2j) +sub (-inf+2j) (-16+2j) (-inf+0j) +sub (-inf+2j) (-16+16j) (-inf-14j) +sub (-inf+2j) (-16+infj) (-inf-infj) +sub (-inf+2j) (-16+nanj) (-inf+nanj) +sub (-inf+2j) (-2-infj) (-inf+infj) +sub (-inf+2j) (-2-16j) (-inf+18j) +sub (-inf+2j) (-2-2j) (-inf+4j) +sub (-inf+2j) (-2-0j) (-inf+2j) +sub (-inf+2j) (-2+0j) (-inf+2j) +sub (-inf+2j) (-2+2j) (-inf+0j) +sub (-inf+2j) (-2+16j) (-inf-14j) +sub (-inf+2j) (-2+infj) (-inf-infj) +sub (-inf+2j) (-2+nanj) (-inf+nanj) +sub (-inf+2j) (-0-infj) (-inf+infj) +sub (-inf+2j) (-0-16j) (-inf+18j) +sub (-inf+2j) (-0-2j) (-inf+4j) +sub (-inf+2j) (-0-0j) (-inf+2j) +sub (-inf+2j) (-0+0j) (-inf+2j) +sub (-inf+2j) (-0+2j) (-inf+0j) +sub (-inf+2j) (-0+16j) (-inf-14j) +sub (-inf+2j) (-0+infj) (-inf-infj) +sub (-inf+2j) (-0+nanj) (-inf+nanj) +sub (-inf+2j) -infj (-inf+infj) +sub (-inf+2j) -16j (-inf+18j) +sub (-inf+2j) -2j (-inf+4j) +sub (-inf+2j) -0j (-inf+2j) +sub (-inf+2j) 0j (-inf+2j) +sub (-inf+2j) 2j (-inf+0j) +sub (-inf+2j) 16j (-inf-14j) +sub (-inf+2j) infj (-inf-infj) +sub (-inf+2j) nanj (-inf+nanj) +sub (-inf+2j) (2-infj) (-inf+infj) +sub (-inf+2j) (2-16j) (-inf+18j) +sub (-inf+2j) (2-2j) (-inf+4j) +sub (-inf+2j) (2-0j) (-inf+2j) +sub (-inf+2j) (2+0j) (-inf+2j) +sub (-inf+2j) (2+2j) (-inf+0j) +sub (-inf+2j) (2+16j) (-inf-14j) +sub (-inf+2j) (2+infj) (-inf-infj) +sub (-inf+2j) (2+nanj) (-inf+nanj) +sub (-inf+2j) (16-infj) (-inf+infj) +sub (-inf+2j) (16-16j) (-inf+18j) +sub (-inf+2j) (16-2j) (-inf+4j) +sub (-inf+2j) (16-0j) (-inf+2j) +sub (-inf+2j) (16+0j) (-inf+2j) +sub (-inf+2j) (16+2j) (-inf+0j) +sub (-inf+2j) (16+16j) (-inf-14j) +sub (-inf+2j) (16+infj) (-inf-infj) +sub (-inf+2j) (16+nanj) (-inf+nanj) +sub (-inf+2j) (inf-infj) (-inf+infj) +sub (-inf+2j) (inf-16j) (-inf+18j) +sub (-inf+2j) (inf-2j) (-inf+4j) +sub (-inf+2j) (inf-0j) (-inf+2j) +sub (-inf+2j) (inf+0j) (-inf+2j) +sub (-inf+2j) (inf+2j) (-inf+0j) +sub (-inf+2j) (inf+16j) (-inf-14j) +sub (-inf+2j) (inf+infj) (-inf-infj) +sub (-inf+2j) (inf+nanj) (-inf+nanj) +sub (-inf+2j) (nan-infj) (nan+infj) +sub (-inf+2j) (nan-16j) (nan+18j) +sub (-inf+2j) (nan-2j) (nan+4j) +sub (-inf+2j) (nan-0j) (nan+2j) +sub (-inf+2j) (nan+0j) (nan+2j) +sub (-inf+2j) (nan+2j) (nan+0j) +sub (-inf+2j) (nan+16j) (nan-14j) +sub (-inf+2j) (nan+infj) (nan-infj) +sub (-inf+2j) (nan+nanj) (nan+nanj) +sub (-inf+16j) (-inf-infj) (nan+infj) +sub (-inf+16j) (-inf-16j) (nan+32j) +sub (-inf+16j) (-inf-2j) (nan+18j) +sub (-inf+16j) (-inf-0j) (nan+16j) +sub (-inf+16j) (-inf+0j) (nan+16j) +sub (-inf+16j) (-inf+2j) (nan+14j) +sub (-inf+16j) (-inf+16j) (nan+0j) +sub (-inf+16j) (-inf+infj) (nan-infj) +sub (-inf+16j) (-inf+nanj) (nan+nanj) +sub (-inf+16j) (-16-infj) (-inf+infj) +sub (-inf+16j) (-16-16j) (-inf+32j) +sub (-inf+16j) (-16-2j) (-inf+18j) +sub (-inf+16j) (-16-0j) (-inf+16j) +sub (-inf+16j) (-16+0j) (-inf+16j) +sub (-inf+16j) (-16+2j) (-inf+14j) +sub (-inf+16j) (-16+16j) (-inf+0j) +sub (-inf+16j) (-16+infj) (-inf-infj) +sub (-inf+16j) (-16+nanj) (-inf+nanj) +sub (-inf+16j) (-2-infj) (-inf+infj) +sub (-inf+16j) (-2-16j) (-inf+32j) +sub (-inf+16j) (-2-2j) (-inf+18j) +sub (-inf+16j) (-2-0j) (-inf+16j) +sub (-inf+16j) (-2+0j) (-inf+16j) +sub (-inf+16j) (-2+2j) (-inf+14j) +sub (-inf+16j) (-2+16j) (-inf+0j) +sub (-inf+16j) (-2+infj) (-inf-infj) +sub (-inf+16j) (-2+nanj) (-inf+nanj) +sub (-inf+16j) (-0-infj) (-inf+infj) +sub (-inf+16j) (-0-16j) (-inf+32j) +sub (-inf+16j) (-0-2j) (-inf+18j) +sub (-inf+16j) (-0-0j) (-inf+16j) +sub (-inf+16j) (-0+0j) (-inf+16j) +sub (-inf+16j) (-0+2j) (-inf+14j) +sub (-inf+16j) (-0+16j) (-inf+0j) +sub (-inf+16j) (-0+infj) (-inf-infj) +sub (-inf+16j) (-0+nanj) (-inf+nanj) +sub (-inf+16j) -infj (-inf+infj) +sub (-inf+16j) -16j (-inf+32j) +sub (-inf+16j) -2j (-inf+18j) +sub (-inf+16j) -0j (-inf+16j) +sub (-inf+16j) 0j (-inf+16j) +sub (-inf+16j) 2j (-inf+14j) +sub (-inf+16j) 16j (-inf+0j) +sub (-inf+16j) infj (-inf-infj) +sub (-inf+16j) nanj (-inf+nanj) +sub (-inf+16j) (2-infj) (-inf+infj) +sub (-inf+16j) (2-16j) (-inf+32j) +sub (-inf+16j) (2-2j) (-inf+18j) +sub (-inf+16j) (2-0j) (-inf+16j) +sub (-inf+16j) (2+0j) (-inf+16j) +sub (-inf+16j) (2+2j) (-inf+14j) +sub (-inf+16j) (2+16j) (-inf+0j) +sub (-inf+16j) (2+infj) (-inf-infj) +sub (-inf+16j) (2+nanj) (-inf+nanj) +sub (-inf+16j) (16-infj) (-inf+infj) +sub (-inf+16j) (16-16j) (-inf+32j) +sub (-inf+16j) (16-2j) (-inf+18j) +sub (-inf+16j) (16-0j) (-inf+16j) +sub (-inf+16j) (16+0j) (-inf+16j) +sub (-inf+16j) (16+2j) (-inf+14j) +sub (-inf+16j) (16+16j) (-inf+0j) +sub (-inf+16j) (16+infj) (-inf-infj) +sub (-inf+16j) (16+nanj) (-inf+nanj) +sub (-inf+16j) (inf-infj) (-inf+infj) +sub (-inf+16j) (inf-16j) (-inf+32j) +sub (-inf+16j) (inf-2j) (-inf+18j) +sub (-inf+16j) (inf-0j) (-inf+16j) +sub (-inf+16j) (inf+0j) (-inf+16j) +sub (-inf+16j) (inf+2j) (-inf+14j) +sub (-inf+16j) (inf+16j) (-inf+0j) +sub (-inf+16j) (inf+infj) (-inf-infj) +sub (-inf+16j) (inf+nanj) (-inf+nanj) +sub (-inf+16j) (nan-infj) (nan+infj) +sub (-inf+16j) (nan-16j) (nan+32j) +sub (-inf+16j) (nan-2j) (nan+18j) +sub (-inf+16j) (nan-0j) (nan+16j) +sub (-inf+16j) (nan+0j) (nan+16j) +sub (-inf+16j) (nan+2j) (nan+14j) +sub (-inf+16j) (nan+16j) (nan+0j) +sub (-inf+16j) (nan+infj) (nan-infj) +sub (-inf+16j) (nan+nanj) (nan+nanj) +sub (-inf+infj) (-inf-infj) (nan+infj) +sub (-inf+infj) (-inf-16j) (nan+infj) +sub (-inf+infj) (-inf-2j) (nan+infj) +sub (-inf+infj) (-inf-0j) (nan+infj) +sub (-inf+infj) (-inf+0j) (nan+infj) +sub (-inf+infj) (-inf+2j) (nan+infj) +sub (-inf+infj) (-inf+16j) (nan+infj) +sub (-inf+infj) (-inf+infj) (nan+nanj) +sub (-inf+infj) (-inf+nanj) (nan+nanj) +sub (-inf+infj) (-16-infj) (-inf+infj) +sub (-inf+infj) (-16-16j) (-inf+infj) +sub (-inf+infj) (-16-2j) (-inf+infj) +sub (-inf+infj) (-16-0j) (-inf+infj) +sub (-inf+infj) (-16+0j) (-inf+infj) +sub (-inf+infj) (-16+2j) (-inf+infj) +sub (-inf+infj) (-16+16j) (-inf+infj) +sub (-inf+infj) (-16+infj) (-inf+nanj) +sub (-inf+infj) (-16+nanj) (-inf+nanj) +sub (-inf+infj) (-2-infj) (-inf+infj) +sub (-inf+infj) (-2-16j) (-inf+infj) +sub (-inf+infj) (-2-2j) (-inf+infj) +sub (-inf+infj) (-2-0j) (-inf+infj) +sub (-inf+infj) (-2+0j) (-inf+infj) +sub (-inf+infj) (-2+2j) (-inf+infj) +sub (-inf+infj) (-2+16j) (-inf+infj) +sub (-inf+infj) (-2+infj) (-inf+nanj) +sub (-inf+infj) (-2+nanj) (-inf+nanj) +sub (-inf+infj) (-0-infj) (-inf+infj) +sub (-inf+infj) (-0-16j) (-inf+infj) +sub (-inf+infj) (-0-2j) (-inf+infj) +sub (-inf+infj) (-0-0j) (-inf+infj) +sub (-inf+infj) (-0+0j) (-inf+infj) +sub (-inf+infj) (-0+2j) (-inf+infj) +sub (-inf+infj) (-0+16j) (-inf+infj) +sub (-inf+infj) (-0+infj) (-inf+nanj) +sub (-inf+infj) (-0+nanj) (-inf+nanj) +sub (-inf+infj) -infj (-inf+infj) +sub (-inf+infj) -16j (-inf+infj) +sub (-inf+infj) -2j (-inf+infj) +sub (-inf+infj) -0j (-inf+infj) +sub (-inf+infj) 0j (-inf+infj) +sub (-inf+infj) 2j (-inf+infj) +sub (-inf+infj) 16j (-inf+infj) +sub (-inf+infj) infj (-inf+nanj) +sub (-inf+infj) nanj (-inf+nanj) +sub (-inf+infj) (2-infj) (-inf+infj) +sub (-inf+infj) (2-16j) (-inf+infj) +sub (-inf+infj) (2-2j) (-inf+infj) +sub (-inf+infj) (2-0j) (-inf+infj) +sub (-inf+infj) (2+0j) (-inf+infj) +sub (-inf+infj) (2+2j) (-inf+infj) +sub (-inf+infj) (2+16j) (-inf+infj) +sub (-inf+infj) (2+infj) (-inf+nanj) +sub (-inf+infj) (2+nanj) (-inf+nanj) +sub (-inf+infj) (16-infj) (-inf+infj) +sub (-inf+infj) (16-16j) (-inf+infj) +sub (-inf+infj) (16-2j) (-inf+infj) +sub (-inf+infj) (16-0j) (-inf+infj) +sub (-inf+infj) (16+0j) (-inf+infj) +sub (-inf+infj) (16+2j) (-inf+infj) +sub (-inf+infj) (16+16j) (-inf+infj) +sub (-inf+infj) (16+infj) (-inf+nanj) +sub (-inf+infj) (16+nanj) (-inf+nanj) +sub (-inf+infj) (inf-infj) (-inf+infj) +sub (-inf+infj) (inf-16j) (-inf+infj) +sub (-inf+infj) (inf-2j) (-inf+infj) +sub (-inf+infj) (inf-0j) (-inf+infj) +sub (-inf+infj) (inf+0j) (-inf+infj) +sub (-inf+infj) (inf+2j) (-inf+infj) +sub (-inf+infj) (inf+16j) (-inf+infj) +sub (-inf+infj) (inf+infj) (-inf+nanj) +sub (-inf+infj) (inf+nanj) (-inf+nanj) +sub (-inf+infj) (nan-infj) (nan+infj) +sub (-inf+infj) (nan-16j) (nan+infj) +sub (-inf+infj) (nan-2j) (nan+infj) +sub (-inf+infj) (nan-0j) (nan+infj) +sub (-inf+infj) (nan+0j) (nan+infj) +sub (-inf+infj) (nan+2j) (nan+infj) +sub (-inf+infj) (nan+16j) (nan+infj) +sub (-inf+infj) (nan+infj) (nan+nanj) +sub (-inf+infj) (nan+nanj) (nan+nanj) +sub (-inf+nanj) (-inf-infj) (nan+nanj) +sub (-inf+nanj) (-inf-16j) (nan+nanj) +sub (-inf+nanj) (-inf-2j) (nan+nanj) +sub (-inf+nanj) (-inf-0j) (nan+nanj) +sub (-inf+nanj) (-inf+0j) (nan+nanj) +sub (-inf+nanj) (-inf+2j) (nan+nanj) +sub (-inf+nanj) (-inf+16j) (nan+nanj) +sub (-inf+nanj) (-inf+infj) (nan+nanj) +sub (-inf+nanj) (-inf+nanj) (nan+nanj) +sub (-inf+nanj) (-16-infj) (-inf+nanj) +sub (-inf+nanj) (-16-16j) (-inf+nanj) +sub (-inf+nanj) (-16-2j) (-inf+nanj) +sub (-inf+nanj) (-16-0j) (-inf+nanj) +sub (-inf+nanj) (-16+0j) (-inf+nanj) +sub (-inf+nanj) (-16+2j) (-inf+nanj) +sub (-inf+nanj) (-16+16j) (-inf+nanj) +sub (-inf+nanj) (-16+infj) (-inf+nanj) +sub (-inf+nanj) (-16+nanj) (-inf+nanj) +sub (-inf+nanj) (-2-infj) (-inf+nanj) +sub (-inf+nanj) (-2-16j) (-inf+nanj) +sub (-inf+nanj) (-2-2j) (-inf+nanj) +sub (-inf+nanj) (-2-0j) (-inf+nanj) +sub (-inf+nanj) (-2+0j) (-inf+nanj) +sub (-inf+nanj) (-2+2j) (-inf+nanj) +sub (-inf+nanj) (-2+16j) (-inf+nanj) +sub (-inf+nanj) (-2+infj) (-inf+nanj) +sub (-inf+nanj) (-2+nanj) (-inf+nanj) +sub (-inf+nanj) (-0-infj) (-inf+nanj) +sub (-inf+nanj) (-0-16j) (-inf+nanj) +sub (-inf+nanj) (-0-2j) (-inf+nanj) +sub (-inf+nanj) (-0-0j) (-inf+nanj) +sub (-inf+nanj) (-0+0j) (-inf+nanj) +sub (-inf+nanj) (-0+2j) (-inf+nanj) +sub (-inf+nanj) (-0+16j) (-inf+nanj) +sub (-inf+nanj) (-0+infj) (-inf+nanj) +sub (-inf+nanj) (-0+nanj) (-inf+nanj) +sub (-inf+nanj) -infj (-inf+nanj) +sub (-inf+nanj) -16j (-inf+nanj) +sub (-inf+nanj) -2j (-inf+nanj) +sub (-inf+nanj) -0j (-inf+nanj) +sub (-inf+nanj) 0j (-inf+nanj) +sub (-inf+nanj) 2j (-inf+nanj) +sub (-inf+nanj) 16j (-inf+nanj) +sub (-inf+nanj) infj (-inf+nanj) +sub (-inf+nanj) nanj (-inf+nanj) +sub (-inf+nanj) (2-infj) (-inf+nanj) +sub (-inf+nanj) (2-16j) (-inf+nanj) +sub (-inf+nanj) (2-2j) (-inf+nanj) +sub (-inf+nanj) (2-0j) (-inf+nanj) +sub (-inf+nanj) (2+0j) (-inf+nanj) +sub (-inf+nanj) (2+2j) (-inf+nanj) +sub (-inf+nanj) (2+16j) (-inf+nanj) +sub (-inf+nanj) (2+infj) (-inf+nanj) +sub (-inf+nanj) (2+nanj) (-inf+nanj) +sub (-inf+nanj) (16-infj) (-inf+nanj) +sub (-inf+nanj) (16-16j) (-inf+nanj) +sub (-inf+nanj) (16-2j) (-inf+nanj) +sub (-inf+nanj) (16-0j) (-inf+nanj) +sub (-inf+nanj) (16+0j) (-inf+nanj) +sub (-inf+nanj) (16+2j) (-inf+nanj) +sub (-inf+nanj) (16+16j) (-inf+nanj) +sub (-inf+nanj) (16+infj) (-inf+nanj) +sub (-inf+nanj) (16+nanj) (-inf+nanj) +sub (-inf+nanj) (inf-infj) (-inf+nanj) +sub (-inf+nanj) (inf-16j) (-inf+nanj) +sub (-inf+nanj) (inf-2j) (-inf+nanj) +sub (-inf+nanj) (inf-0j) (-inf+nanj) +sub (-inf+nanj) (inf+0j) (-inf+nanj) +sub (-inf+nanj) (inf+2j) (-inf+nanj) +sub (-inf+nanj) (inf+16j) (-inf+nanj) +sub (-inf+nanj) (inf+infj) (-inf+nanj) +sub (-inf+nanj) (inf+nanj) (-inf+nanj) +sub (-inf+nanj) (nan-infj) (nan+nanj) +sub (-inf+nanj) (nan-16j) (nan+nanj) +sub (-inf+nanj) (nan-2j) (nan+nanj) +sub (-inf+nanj) (nan-0j) (nan+nanj) +sub (-inf+nanj) (nan+0j) (nan+nanj) +sub (-inf+nanj) (nan+2j) (nan+nanj) +sub (-inf+nanj) (nan+16j) (nan+nanj) +sub (-inf+nanj) (nan+infj) (nan+nanj) +sub (-inf+nanj) (nan+nanj) (nan+nanj) +sub (-16-infj) (-inf-infj) (inf+nanj) +sub (-16-infj) (-inf-16j) (inf-infj) +sub (-16-infj) (-inf-2j) (inf-infj) +sub (-16-infj) (-inf-0j) (inf-infj) +sub (-16-infj) (-inf+0j) (inf-infj) +sub (-16-infj) (-inf+2j) (inf-infj) +sub (-16-infj) (-inf+16j) (inf-infj) +sub (-16-infj) (-inf+infj) (inf-infj) +sub (-16-infj) (-inf+nanj) (inf+nanj) +sub (-16-infj) (-16-infj) nanj +sub (-16-infj) (-16-16j) -infj +sub (-16-infj) (-16-2j) -infj +sub (-16-infj) (-16-0j) -infj +sub (-16-infj) (-16+0j) -infj +sub (-16-infj) (-16+2j) -infj +sub (-16-infj) (-16+16j) -infj +sub (-16-infj) (-16+infj) -infj +sub (-16-infj) (-16+nanj) nanj +sub (-16-infj) (-2-infj) (-14+nanj) +sub (-16-infj) (-2-16j) (-14-infj) +sub (-16-infj) (-2-2j) (-14-infj) +sub (-16-infj) (-2-0j) (-14-infj) +sub (-16-infj) (-2+0j) (-14-infj) +sub (-16-infj) (-2+2j) (-14-infj) +sub (-16-infj) (-2+16j) (-14-infj) +sub (-16-infj) (-2+infj) (-14-infj) +sub (-16-infj) (-2+nanj) (-14+nanj) +sub (-16-infj) (-0-infj) (-16+nanj) +sub (-16-infj) (-0-16j) (-16-infj) +sub (-16-infj) (-0-2j) (-16-infj) +sub (-16-infj) (-0-0j) (-16-infj) +sub (-16-infj) (-0+0j) (-16-infj) +sub (-16-infj) (-0+2j) (-16-infj) +sub (-16-infj) (-0+16j) (-16-infj) +sub (-16-infj) (-0+infj) (-16-infj) +sub (-16-infj) (-0+nanj) (-16+nanj) +sub (-16-infj) -infj (-16+nanj) +sub (-16-infj) -16j (-16-infj) +sub (-16-infj) -2j (-16-infj) +sub (-16-infj) -0j (-16-infj) +sub (-16-infj) 0j (-16-infj) +sub (-16-infj) 2j (-16-infj) +sub (-16-infj) 16j (-16-infj) +sub (-16-infj) infj (-16-infj) +sub (-16-infj) nanj (-16+nanj) +sub (-16-infj) (2-infj) (-18+nanj) +sub (-16-infj) (2-16j) (-18-infj) +sub (-16-infj) (2-2j) (-18-infj) +sub (-16-infj) (2-0j) (-18-infj) +sub (-16-infj) (2+0j) (-18-infj) +sub (-16-infj) (2+2j) (-18-infj) +sub (-16-infj) (2+16j) (-18-infj) +sub (-16-infj) (2+infj) (-18-infj) +sub (-16-infj) (2+nanj) (-18+nanj) +sub (-16-infj) (16-infj) (-32+nanj) +sub (-16-infj) (16-16j) (-32-infj) +sub (-16-infj) (16-2j) (-32-infj) +sub (-16-infj) (16-0j) (-32-infj) +sub (-16-infj) (16+0j) (-32-infj) +sub (-16-infj) (16+2j) (-32-infj) +sub (-16-infj) (16+16j) (-32-infj) +sub (-16-infj) (16+infj) (-32-infj) +sub (-16-infj) (16+nanj) (-32+nanj) +sub (-16-infj) (inf-infj) (-inf+nanj) +sub (-16-infj) (inf-16j) (-inf-infj) +sub (-16-infj) (inf-2j) (-inf-infj) +sub (-16-infj) (inf-0j) (-inf-infj) +sub (-16-infj) (inf+0j) (-inf-infj) +sub (-16-infj) (inf+2j) (-inf-infj) +sub (-16-infj) (inf+16j) (-inf-infj) +sub (-16-infj) (inf+infj) (-inf-infj) +sub (-16-infj) (inf+nanj) (-inf+nanj) +sub (-16-infj) (nan-infj) (nan+nanj) +sub (-16-infj) (nan-16j) (nan-infj) +sub (-16-infj) (nan-2j) (nan-infj) +sub (-16-infj) (nan-0j) (nan-infj) +sub (-16-infj) (nan+0j) (nan-infj) +sub (-16-infj) (nan+2j) (nan-infj) +sub (-16-infj) (nan+16j) (nan-infj) +sub (-16-infj) (nan+infj) (nan-infj) +sub (-16-infj) (nan+nanj) (nan+nanj) +sub (-16-16j) (-inf-infj) (inf+infj) +sub (-16-16j) (-inf-16j) (inf+0j) +sub (-16-16j) (-inf-2j) (inf-14j) +sub (-16-16j) (-inf-0j) (inf-16j) +sub (-16-16j) (-inf+0j) (inf-16j) +sub (-16-16j) (-inf+2j) (inf-18j) +sub (-16-16j) (-inf+16j) (inf-32j) +sub (-16-16j) (-inf+infj) (inf-infj) +sub (-16-16j) (-inf+nanj) (inf+nanj) +sub (-16-16j) (-16-infj) infj +sub (-16-16j) (-16-16j) 0j +sub (-16-16j) (-16-2j) -14j +sub (-16-16j) (-16-0j) -16j +sub (-16-16j) (-16+0j) -16j +sub (-16-16j) (-16+2j) -18j +sub (-16-16j) (-16+16j) -32j +sub (-16-16j) (-16+infj) -infj +sub (-16-16j) (-16+nanj) nanj +sub (-16-16j) (-2-infj) (-14+infj) +sub (-16-16j) (-2-16j) (-14+0j) +sub (-16-16j) (-2-2j) (-14-14j) +sub (-16-16j) (-2-0j) (-14-16j) +sub (-16-16j) (-2+0j) (-14-16j) +sub (-16-16j) (-2+2j) (-14-18j) +sub (-16-16j) (-2+16j) (-14-32j) +sub (-16-16j) (-2+infj) (-14-infj) +sub (-16-16j) (-2+nanj) (-14+nanj) +sub (-16-16j) (-0-infj) (-16+infj) +sub (-16-16j) (-0-16j) (-16+0j) +sub (-16-16j) (-0-2j) (-16-14j) +sub (-16-16j) (-0-0j) (-16-16j) +sub (-16-16j) (-0+0j) (-16-16j) +sub (-16-16j) (-0+2j) (-16-18j) +sub (-16-16j) (-0+16j) (-16-32j) +sub (-16-16j) (-0+infj) (-16-infj) +sub (-16-16j) (-0+nanj) (-16+nanj) +sub (-16-16j) -infj (-16+infj) +sub (-16-16j) -16j (-16+0j) +sub (-16-16j) -2j (-16-14j) +sub (-16-16j) -0j (-16-16j) +sub (-16-16j) 0j (-16-16j) +sub (-16-16j) 2j (-16-18j) +sub (-16-16j) 16j (-16-32j) +sub (-16-16j) infj (-16-infj) +sub (-16-16j) nanj (-16+nanj) +sub (-16-16j) (2-infj) (-18+infj) +sub (-16-16j) (2-16j) (-18+0j) +sub (-16-16j) (2-2j) (-18-14j) +sub (-16-16j) (2-0j) (-18-16j) +sub (-16-16j) (2+0j) (-18-16j) +sub (-16-16j) (2+2j) (-18-18j) +sub (-16-16j) (2+16j) (-18-32j) +sub (-16-16j) (2+infj) (-18-infj) +sub (-16-16j) (2+nanj) (-18+nanj) +sub (-16-16j) (16-infj) (-32+infj) +sub (-16-16j) (16-16j) (-32+0j) +sub (-16-16j) (16-2j) (-32-14j) +sub (-16-16j) (16-0j) (-32-16j) +sub (-16-16j) (16+0j) (-32-16j) +sub (-16-16j) (16+2j) (-32-18j) +sub (-16-16j) (16+16j) (-32-32j) +sub (-16-16j) (16+infj) (-32-infj) +sub (-16-16j) (16+nanj) (-32+nanj) +sub (-16-16j) (inf-infj) (-inf+infj) +sub (-16-16j) (inf-16j) (-inf+0j) +sub (-16-16j) (inf-2j) (-inf-14j) +sub (-16-16j) (inf-0j) (-inf-16j) +sub (-16-16j) (inf+0j) (-inf-16j) +sub (-16-16j) (inf+2j) (-inf-18j) +sub (-16-16j) (inf+16j) (-inf-32j) +sub (-16-16j) (inf+infj) (-inf-infj) +sub (-16-16j) (inf+nanj) (-inf+nanj) +sub (-16-16j) (nan-infj) (nan+infj) +sub (-16-16j) (nan-16j) (nan+0j) +sub (-16-16j) (nan-2j) (nan-14j) +sub (-16-16j) (nan-0j) (nan-16j) +sub (-16-16j) (nan+0j) (nan-16j) +sub (-16-16j) (nan+2j) (nan-18j) +sub (-16-16j) (nan+16j) (nan-32j) +sub (-16-16j) (nan+infj) (nan-infj) +sub (-16-16j) (nan+nanj) (nan+nanj) +sub (-16-2j) (-inf-infj) (inf+infj) +sub (-16-2j) (-inf-16j) (inf+14j) +sub (-16-2j) (-inf-2j) (inf+0j) +sub (-16-2j) (-inf-0j) (inf-2j) +sub (-16-2j) (-inf+0j) (inf-2j) +sub (-16-2j) (-inf+2j) (inf-4j) +sub (-16-2j) (-inf+16j) (inf-18j) +sub (-16-2j) (-inf+infj) (inf-infj) +sub (-16-2j) (-inf+nanj) (inf+nanj) +sub (-16-2j) (-16-infj) infj +sub (-16-2j) (-16-16j) 14j +sub (-16-2j) (-16-2j) 0j +sub (-16-2j) (-16-0j) -2j +sub (-16-2j) (-16+0j) -2j +sub (-16-2j) (-16+2j) -4j +sub (-16-2j) (-16+16j) -18j +sub (-16-2j) (-16+infj) -infj +sub (-16-2j) (-16+nanj) nanj +sub (-16-2j) (-2-infj) (-14+infj) +sub (-16-2j) (-2-16j) (-14+14j) +sub (-16-2j) (-2-2j) (-14+0j) +sub (-16-2j) (-2-0j) (-14-2j) +sub (-16-2j) (-2+0j) (-14-2j) +sub (-16-2j) (-2+2j) (-14-4j) +sub (-16-2j) (-2+16j) (-14-18j) +sub (-16-2j) (-2+infj) (-14-infj) +sub (-16-2j) (-2+nanj) (-14+nanj) +sub (-16-2j) (-0-infj) (-16+infj) +sub (-16-2j) (-0-16j) (-16+14j) +sub (-16-2j) (-0-2j) (-16+0j) +sub (-16-2j) (-0-0j) (-16-2j) +sub (-16-2j) (-0+0j) (-16-2j) +sub (-16-2j) (-0+2j) (-16-4j) +sub (-16-2j) (-0+16j) (-16-18j) +sub (-16-2j) (-0+infj) (-16-infj) +sub (-16-2j) (-0+nanj) (-16+nanj) +sub (-16-2j) -infj (-16+infj) +sub (-16-2j) -16j (-16+14j) +sub (-16-2j) -2j (-16+0j) +sub (-16-2j) -0j (-16-2j) +sub (-16-2j) 0j (-16-2j) +sub (-16-2j) 2j (-16-4j) +sub (-16-2j) 16j (-16-18j) +sub (-16-2j) infj (-16-infj) +sub (-16-2j) nanj (-16+nanj) +sub (-16-2j) (2-infj) (-18+infj) +sub (-16-2j) (2-16j) (-18+14j) +sub (-16-2j) (2-2j) (-18+0j) +sub (-16-2j) (2-0j) (-18-2j) +sub (-16-2j) (2+0j) (-18-2j) +sub (-16-2j) (2+2j) (-18-4j) +sub (-16-2j) (2+16j) (-18-18j) +sub (-16-2j) (2+infj) (-18-infj) +sub (-16-2j) (2+nanj) (-18+nanj) +sub (-16-2j) (16-infj) (-32+infj) +sub (-16-2j) (16-16j) (-32+14j) +sub (-16-2j) (16-2j) (-32+0j) +sub (-16-2j) (16-0j) (-32-2j) +sub (-16-2j) (16+0j) (-32-2j) +sub (-16-2j) (16+2j) (-32-4j) +sub (-16-2j) (16+16j) (-32-18j) +sub (-16-2j) (16+infj) (-32-infj) +sub (-16-2j) (16+nanj) (-32+nanj) +sub (-16-2j) (inf-infj) (-inf+infj) +sub (-16-2j) (inf-16j) (-inf+14j) +sub (-16-2j) (inf-2j) (-inf+0j) +sub (-16-2j) (inf-0j) (-inf-2j) +sub (-16-2j) (inf+0j) (-inf-2j) +sub (-16-2j) (inf+2j) (-inf-4j) +sub (-16-2j) (inf+16j) (-inf-18j) +sub (-16-2j) (inf+infj) (-inf-infj) +sub (-16-2j) (inf+nanj) (-inf+nanj) +sub (-16-2j) (nan-infj) (nan+infj) +sub (-16-2j) (nan-16j) (nan+14j) +sub (-16-2j) (nan-2j) (nan+0j) +sub (-16-2j) (nan-0j) (nan-2j) +sub (-16-2j) (nan+0j) (nan-2j) +sub (-16-2j) (nan+2j) (nan-4j) +sub (-16-2j) (nan+16j) (nan-18j) +sub (-16-2j) (nan+infj) (nan-infj) +sub (-16-2j) (nan+nanj) (nan+nanj) +sub (-16-0j) (-inf-infj) (inf+infj) +sub (-16-0j) (-inf-16j) (inf+16j) +sub (-16-0j) (-inf-2j) (inf+2j) +sub (-16-0j) (-inf-0j) (inf+0j) +sub (-16-0j) (-inf+0j) (inf-0j) +sub (-16-0j) (-inf+2j) (inf-2j) +sub (-16-0j) (-inf+16j) (inf-16j) +sub (-16-0j) (-inf+infj) (inf-infj) +sub (-16-0j) (-inf+nanj) (inf+nanj) +sub (-16-0j) (-16-infj) infj +sub (-16-0j) (-16-16j) 16j +sub (-16-0j) (-16-2j) 2j +sub (-16-0j) (-16-0j) 0j +sub (-16-0j) (-16+0j) -0j +sub (-16-0j) (-16+2j) -2j +sub (-16-0j) (-16+16j) -16j +sub (-16-0j) (-16+infj) -infj +sub (-16-0j) (-16+nanj) nanj +sub (-16-0j) (-2-infj) (-14+infj) +sub (-16-0j) (-2-16j) (-14+16j) +sub (-16-0j) (-2-2j) (-14+2j) +sub (-16-0j) (-2-0j) (-14+0j) +sub (-16-0j) (-2+0j) (-14-0j) +sub (-16-0j) (-2+2j) (-14-2j) +sub (-16-0j) (-2+16j) (-14-16j) +sub (-16-0j) (-2+infj) (-14-infj) +sub (-16-0j) (-2+nanj) (-14+nanj) +sub (-16-0j) (-0-infj) (-16+infj) +sub (-16-0j) (-0-16j) (-16+16j) +sub (-16-0j) (-0-2j) (-16+2j) +sub (-16-0j) (-0-0j) (-16+0j) +sub (-16-0j) (-0+0j) (-16-0j) +sub (-16-0j) (-0+2j) (-16-2j) +sub (-16-0j) (-0+16j) (-16-16j) +sub (-16-0j) (-0+infj) (-16-infj) +sub (-16-0j) (-0+nanj) (-16+nanj) +sub (-16-0j) -infj (-16+infj) +sub (-16-0j) -16j (-16+16j) +sub (-16-0j) -2j (-16+2j) +sub (-16-0j) -0j (-16+0j) +sub (-16-0j) 0j (-16-0j) +sub (-16-0j) 2j (-16-2j) +sub (-16-0j) 16j (-16-16j) +sub (-16-0j) infj (-16-infj) +sub (-16-0j) nanj (-16+nanj) +sub (-16-0j) (2-infj) (-18+infj) +sub (-16-0j) (2-16j) (-18+16j) +sub (-16-0j) (2-2j) (-18+2j) +sub (-16-0j) (2-0j) (-18+0j) +sub (-16-0j) (2+0j) (-18-0j) +sub (-16-0j) (2+2j) (-18-2j) +sub (-16-0j) (2+16j) (-18-16j) +sub (-16-0j) (2+infj) (-18-infj) +sub (-16-0j) (2+nanj) (-18+nanj) +sub (-16-0j) (16-infj) (-32+infj) +sub (-16-0j) (16-16j) (-32+16j) +sub (-16-0j) (16-2j) (-32+2j) +sub (-16-0j) (16-0j) (-32+0j) +sub (-16-0j) (16+0j) (-32-0j) +sub (-16-0j) (16+2j) (-32-2j) +sub (-16-0j) (16+16j) (-32-16j) +sub (-16-0j) (16+infj) (-32-infj) +sub (-16-0j) (16+nanj) (-32+nanj) +sub (-16-0j) (inf-infj) (-inf+infj) +sub (-16-0j) (inf-16j) (-inf+16j) +sub (-16-0j) (inf-2j) (-inf+2j) +sub (-16-0j) (inf-0j) (-inf+0j) +sub (-16-0j) (inf+0j) (-inf-0j) +sub (-16-0j) (inf+2j) (-inf-2j) +sub (-16-0j) (inf+16j) (-inf-16j) +sub (-16-0j) (inf+infj) (-inf-infj) +sub (-16-0j) (inf+nanj) (-inf+nanj) +sub (-16-0j) (nan-infj) (nan+infj) +sub (-16-0j) (nan-16j) (nan+16j) +sub (-16-0j) (nan-2j) (nan+2j) +sub (-16-0j) (nan-0j) (nan+0j) +sub (-16-0j) (nan+0j) (nan-0j) +sub (-16-0j) (nan+2j) (nan-2j) +sub (-16-0j) (nan+16j) (nan-16j) +sub (-16-0j) (nan+infj) (nan-infj) +sub (-16-0j) (nan+nanj) (nan+nanj) +sub (-16+0j) (-inf-infj) (inf+infj) +sub (-16+0j) (-inf-16j) (inf+16j) +sub (-16+0j) (-inf-2j) (inf+2j) +sub (-16+0j) (-inf-0j) (inf+0j) +sub (-16+0j) (-inf+0j) (inf+0j) +sub (-16+0j) (-inf+2j) (inf-2j) +sub (-16+0j) (-inf+16j) (inf-16j) +sub (-16+0j) (-inf+infj) (inf-infj) +sub (-16+0j) (-inf+nanj) (inf+nanj) +sub (-16+0j) (-16-infj) infj +sub (-16+0j) (-16-16j) 16j +sub (-16+0j) (-16-2j) 2j +sub (-16+0j) (-16-0j) 0j +sub (-16+0j) (-16+0j) 0j +sub (-16+0j) (-16+2j) -2j +sub (-16+0j) (-16+16j) -16j +sub (-16+0j) (-16+infj) -infj +sub (-16+0j) (-16+nanj) nanj +sub (-16+0j) (-2-infj) (-14+infj) +sub (-16+0j) (-2-16j) (-14+16j) +sub (-16+0j) (-2-2j) (-14+2j) +sub (-16+0j) (-2-0j) (-14+0j) +sub (-16+0j) (-2+0j) (-14+0j) +sub (-16+0j) (-2+2j) (-14-2j) +sub (-16+0j) (-2+16j) (-14-16j) +sub (-16+0j) (-2+infj) (-14-infj) +sub (-16+0j) (-2+nanj) (-14+nanj) +sub (-16+0j) (-0-infj) (-16+infj) +sub (-16+0j) (-0-16j) (-16+16j) +sub (-16+0j) (-0-2j) (-16+2j) +sub (-16+0j) (-0-0j) (-16+0j) +sub (-16+0j) (-0+0j) (-16+0j) +sub (-16+0j) (-0+2j) (-16-2j) +sub (-16+0j) (-0+16j) (-16-16j) +sub (-16+0j) (-0+infj) (-16-infj) +sub (-16+0j) (-0+nanj) (-16+nanj) +sub (-16+0j) -infj (-16+infj) +sub (-16+0j) -16j (-16+16j) +sub (-16+0j) -2j (-16+2j) +sub (-16+0j) -0j (-16+0j) +sub (-16+0j) 0j (-16+0j) +sub (-16+0j) 2j (-16-2j) +sub (-16+0j) 16j (-16-16j) +sub (-16+0j) infj (-16-infj) +sub (-16+0j) nanj (-16+nanj) +sub (-16+0j) (2-infj) (-18+infj) +sub (-16+0j) (2-16j) (-18+16j) +sub (-16+0j) (2-2j) (-18+2j) +sub (-16+0j) (2-0j) (-18+0j) +sub (-16+0j) (2+0j) (-18+0j) +sub (-16+0j) (2+2j) (-18-2j) +sub (-16+0j) (2+16j) (-18-16j) +sub (-16+0j) (2+infj) (-18-infj) +sub (-16+0j) (2+nanj) (-18+nanj) +sub (-16+0j) (16-infj) (-32+infj) +sub (-16+0j) (16-16j) (-32+16j) +sub (-16+0j) (16-2j) (-32+2j) +sub (-16+0j) (16-0j) (-32+0j) +sub (-16+0j) (16+0j) (-32+0j) +sub (-16+0j) (16+2j) (-32-2j) +sub (-16+0j) (16+16j) (-32-16j) +sub (-16+0j) (16+infj) (-32-infj) +sub (-16+0j) (16+nanj) (-32+nanj) +sub (-16+0j) (inf-infj) (-inf+infj) +sub (-16+0j) (inf-16j) (-inf+16j) +sub (-16+0j) (inf-2j) (-inf+2j) +sub (-16+0j) (inf-0j) (-inf+0j) +sub (-16+0j) (inf+0j) (-inf+0j) +sub (-16+0j) (inf+2j) (-inf-2j) +sub (-16+0j) (inf+16j) (-inf-16j) +sub (-16+0j) (inf+infj) (-inf-infj) +sub (-16+0j) (inf+nanj) (-inf+nanj) +sub (-16+0j) (nan-infj) (nan+infj) +sub (-16+0j) (nan-16j) (nan+16j) +sub (-16+0j) (nan-2j) (nan+2j) +sub (-16+0j) (nan-0j) (nan+0j) +sub (-16+0j) (nan+0j) (nan+0j) +sub (-16+0j) (nan+2j) (nan-2j) +sub (-16+0j) (nan+16j) (nan-16j) +sub (-16+0j) (nan+infj) (nan-infj) +sub (-16+0j) (nan+nanj) (nan+nanj) +sub (-16+2j) (-inf-infj) (inf+infj) +sub (-16+2j) (-inf-16j) (inf+18j) +sub (-16+2j) (-inf-2j) (inf+4j) +sub (-16+2j) (-inf-0j) (inf+2j) +sub (-16+2j) (-inf+0j) (inf+2j) +sub (-16+2j) (-inf+2j) (inf+0j) +sub (-16+2j) (-inf+16j) (inf-14j) +sub (-16+2j) (-inf+infj) (inf-infj) +sub (-16+2j) (-inf+nanj) (inf+nanj) +sub (-16+2j) (-16-infj) infj +sub (-16+2j) (-16-16j) 18j +sub (-16+2j) (-16-2j) 4j +sub (-16+2j) (-16-0j) 2j +sub (-16+2j) (-16+0j) 2j +sub (-16+2j) (-16+2j) 0j +sub (-16+2j) (-16+16j) -14j +sub (-16+2j) (-16+infj) -infj +sub (-16+2j) (-16+nanj) nanj +sub (-16+2j) (-2-infj) (-14+infj) +sub (-16+2j) (-2-16j) (-14+18j) +sub (-16+2j) (-2-2j) (-14+4j) +sub (-16+2j) (-2-0j) (-14+2j) +sub (-16+2j) (-2+0j) (-14+2j) +sub (-16+2j) (-2+2j) (-14+0j) +sub (-16+2j) (-2+16j) (-14-14j) +sub (-16+2j) (-2+infj) (-14-infj) +sub (-16+2j) (-2+nanj) (-14+nanj) +sub (-16+2j) (-0-infj) (-16+infj) +sub (-16+2j) (-0-16j) (-16+18j) +sub (-16+2j) (-0-2j) (-16+4j) +sub (-16+2j) (-0-0j) (-16+2j) +sub (-16+2j) (-0+0j) (-16+2j) +sub (-16+2j) (-0+2j) (-16+0j) +sub (-16+2j) (-0+16j) (-16-14j) +sub (-16+2j) (-0+infj) (-16-infj) +sub (-16+2j) (-0+nanj) (-16+nanj) +sub (-16+2j) -infj (-16+infj) +sub (-16+2j) -16j (-16+18j) +sub (-16+2j) -2j (-16+4j) +sub (-16+2j) -0j (-16+2j) +sub (-16+2j) 0j (-16+2j) +sub (-16+2j) 2j (-16+0j) +sub (-16+2j) 16j (-16-14j) +sub (-16+2j) infj (-16-infj) +sub (-16+2j) nanj (-16+nanj) +sub (-16+2j) (2-infj) (-18+infj) +sub (-16+2j) (2-16j) (-18+18j) +sub (-16+2j) (2-2j) (-18+4j) +sub (-16+2j) (2-0j) (-18+2j) +sub (-16+2j) (2+0j) (-18+2j) +sub (-16+2j) (2+2j) (-18+0j) +sub (-16+2j) (2+16j) (-18-14j) +sub (-16+2j) (2+infj) (-18-infj) +sub (-16+2j) (2+nanj) (-18+nanj) +sub (-16+2j) (16-infj) (-32+infj) +sub (-16+2j) (16-16j) (-32+18j) +sub (-16+2j) (16-2j) (-32+4j) +sub (-16+2j) (16-0j) (-32+2j) +sub (-16+2j) (16+0j) (-32+2j) +sub (-16+2j) (16+2j) (-32+0j) +sub (-16+2j) (16+16j) (-32-14j) +sub (-16+2j) (16+infj) (-32-infj) +sub (-16+2j) (16+nanj) (-32+nanj) +sub (-16+2j) (inf-infj) (-inf+infj) +sub (-16+2j) (inf-16j) (-inf+18j) +sub (-16+2j) (inf-2j) (-inf+4j) +sub (-16+2j) (inf-0j) (-inf+2j) +sub (-16+2j) (inf+0j) (-inf+2j) +sub (-16+2j) (inf+2j) (-inf+0j) +sub (-16+2j) (inf+16j) (-inf-14j) +sub (-16+2j) (inf+infj) (-inf-infj) +sub (-16+2j) (inf+nanj) (-inf+nanj) +sub (-16+2j) (nan-infj) (nan+infj) +sub (-16+2j) (nan-16j) (nan+18j) +sub (-16+2j) (nan-2j) (nan+4j) +sub (-16+2j) (nan-0j) (nan+2j) +sub (-16+2j) (nan+0j) (nan+2j) +sub (-16+2j) (nan+2j) (nan+0j) +sub (-16+2j) (nan+16j) (nan-14j) +sub (-16+2j) (nan+infj) (nan-infj) +sub (-16+2j) (nan+nanj) (nan+nanj) +sub (-16+16j) (-inf-infj) (inf+infj) +sub (-16+16j) (-inf-16j) (inf+32j) +sub (-16+16j) (-inf-2j) (inf+18j) +sub (-16+16j) (-inf-0j) (inf+16j) +sub (-16+16j) (-inf+0j) (inf+16j) +sub (-16+16j) (-inf+2j) (inf+14j) +sub (-16+16j) (-inf+16j) (inf+0j) +sub (-16+16j) (-inf+infj) (inf-infj) +sub (-16+16j) (-inf+nanj) (inf+nanj) +sub (-16+16j) (-16-infj) infj +sub (-16+16j) (-16-16j) 32j +sub (-16+16j) (-16-2j) 18j +sub (-16+16j) (-16-0j) 16j +sub (-16+16j) (-16+0j) 16j +sub (-16+16j) (-16+2j) 14j +sub (-16+16j) (-16+16j) 0j +sub (-16+16j) (-16+infj) -infj +sub (-16+16j) (-16+nanj) nanj +sub (-16+16j) (-2-infj) (-14+infj) +sub (-16+16j) (-2-16j) (-14+32j) +sub (-16+16j) (-2-2j) (-14+18j) +sub (-16+16j) (-2-0j) (-14+16j) +sub (-16+16j) (-2+0j) (-14+16j) +sub (-16+16j) (-2+2j) (-14+14j) +sub (-16+16j) (-2+16j) (-14+0j) +sub (-16+16j) (-2+infj) (-14-infj) +sub (-16+16j) (-2+nanj) (-14+nanj) +sub (-16+16j) (-0-infj) (-16+infj) +sub (-16+16j) (-0-16j) (-16+32j) +sub (-16+16j) (-0-2j) (-16+18j) +sub (-16+16j) (-0-0j) (-16+16j) +sub (-16+16j) (-0+0j) (-16+16j) +sub (-16+16j) (-0+2j) (-16+14j) +sub (-16+16j) (-0+16j) (-16+0j) +sub (-16+16j) (-0+infj) (-16-infj) +sub (-16+16j) (-0+nanj) (-16+nanj) +sub (-16+16j) -infj (-16+infj) +sub (-16+16j) -16j (-16+32j) +sub (-16+16j) -2j (-16+18j) +sub (-16+16j) -0j (-16+16j) +sub (-16+16j) 0j (-16+16j) +sub (-16+16j) 2j (-16+14j) +sub (-16+16j) 16j (-16+0j) +sub (-16+16j) infj (-16-infj) +sub (-16+16j) nanj (-16+nanj) +sub (-16+16j) (2-infj) (-18+infj) +sub (-16+16j) (2-16j) (-18+32j) +sub (-16+16j) (2-2j) (-18+18j) +sub (-16+16j) (2-0j) (-18+16j) +sub (-16+16j) (2+0j) (-18+16j) +sub (-16+16j) (2+2j) (-18+14j) +sub (-16+16j) (2+16j) (-18+0j) +sub (-16+16j) (2+infj) (-18-infj) +sub (-16+16j) (2+nanj) (-18+nanj) +sub (-16+16j) (16-infj) (-32+infj) +sub (-16+16j) (16-16j) (-32+32j) +sub (-16+16j) (16-2j) (-32+18j) +sub (-16+16j) (16-0j) (-32+16j) +sub (-16+16j) (16+0j) (-32+16j) +sub (-16+16j) (16+2j) (-32+14j) +sub (-16+16j) (16+16j) (-32+0j) +sub (-16+16j) (16+infj) (-32-infj) +sub (-16+16j) (16+nanj) (-32+nanj) +sub (-16+16j) (inf-infj) (-inf+infj) +sub (-16+16j) (inf-16j) (-inf+32j) +sub (-16+16j) (inf-2j) (-inf+18j) +sub (-16+16j) (inf-0j) (-inf+16j) +sub (-16+16j) (inf+0j) (-inf+16j) +sub (-16+16j) (inf+2j) (-inf+14j) +sub (-16+16j) (inf+16j) (-inf+0j) +sub (-16+16j) (inf+infj) (-inf-infj) +sub (-16+16j) (inf+nanj) (-inf+nanj) +sub (-16+16j) (nan-infj) (nan+infj) +sub (-16+16j) (nan-16j) (nan+32j) +sub (-16+16j) (nan-2j) (nan+18j) +sub (-16+16j) (nan-0j) (nan+16j) +sub (-16+16j) (nan+0j) (nan+16j) +sub (-16+16j) (nan+2j) (nan+14j) +sub (-16+16j) (nan+16j) (nan+0j) +sub (-16+16j) (nan+infj) (nan-infj) +sub (-16+16j) (nan+nanj) (nan+nanj) +sub (-16+infj) (-inf-infj) (inf+infj) +sub (-16+infj) (-inf-16j) (inf+infj) +sub (-16+infj) (-inf-2j) (inf+infj) +sub (-16+infj) (-inf-0j) (inf+infj) +sub (-16+infj) (-inf+0j) (inf+infj) +sub (-16+infj) (-inf+2j) (inf+infj) +sub (-16+infj) (-inf+16j) (inf+infj) +sub (-16+infj) (-inf+infj) (inf+nanj) +sub (-16+infj) (-inf+nanj) (inf+nanj) +sub (-16+infj) (-16-infj) infj +sub (-16+infj) (-16-16j) infj +sub (-16+infj) (-16-2j) infj +sub (-16+infj) (-16-0j) infj +sub (-16+infj) (-16+0j) infj +sub (-16+infj) (-16+2j) infj +sub (-16+infj) (-16+16j) infj +sub (-16+infj) (-16+infj) nanj +sub (-16+infj) (-16+nanj) nanj +sub (-16+infj) (-2-infj) (-14+infj) +sub (-16+infj) (-2-16j) (-14+infj) +sub (-16+infj) (-2-2j) (-14+infj) +sub (-16+infj) (-2-0j) (-14+infj) +sub (-16+infj) (-2+0j) (-14+infj) +sub (-16+infj) (-2+2j) (-14+infj) +sub (-16+infj) (-2+16j) (-14+infj) +sub (-16+infj) (-2+infj) (-14+nanj) +sub (-16+infj) (-2+nanj) (-14+nanj) +sub (-16+infj) (-0-infj) (-16+infj) +sub (-16+infj) (-0-16j) (-16+infj) +sub (-16+infj) (-0-2j) (-16+infj) +sub (-16+infj) (-0-0j) (-16+infj) +sub (-16+infj) (-0+0j) (-16+infj) +sub (-16+infj) (-0+2j) (-16+infj) +sub (-16+infj) (-0+16j) (-16+infj) +sub (-16+infj) (-0+infj) (-16+nanj) +sub (-16+infj) (-0+nanj) (-16+nanj) +sub (-16+infj) -infj (-16+infj) +sub (-16+infj) -16j (-16+infj) +sub (-16+infj) -2j (-16+infj) +sub (-16+infj) -0j (-16+infj) +sub (-16+infj) 0j (-16+infj) +sub (-16+infj) 2j (-16+infj) +sub (-16+infj) 16j (-16+infj) +sub (-16+infj) infj (-16+nanj) +sub (-16+infj) nanj (-16+nanj) +sub (-16+infj) (2-infj) (-18+infj) +sub (-16+infj) (2-16j) (-18+infj) +sub (-16+infj) (2-2j) (-18+infj) +sub (-16+infj) (2-0j) (-18+infj) +sub (-16+infj) (2+0j) (-18+infj) +sub (-16+infj) (2+2j) (-18+infj) +sub (-16+infj) (2+16j) (-18+infj) +sub (-16+infj) (2+infj) (-18+nanj) +sub (-16+infj) (2+nanj) (-18+nanj) +sub (-16+infj) (16-infj) (-32+infj) +sub (-16+infj) (16-16j) (-32+infj) +sub (-16+infj) (16-2j) (-32+infj) +sub (-16+infj) (16-0j) (-32+infj) +sub (-16+infj) (16+0j) (-32+infj) +sub (-16+infj) (16+2j) (-32+infj) +sub (-16+infj) (16+16j) (-32+infj) +sub (-16+infj) (16+infj) (-32+nanj) +sub (-16+infj) (16+nanj) (-32+nanj) +sub (-16+infj) (inf-infj) (-inf+infj) +sub (-16+infj) (inf-16j) (-inf+infj) +sub (-16+infj) (inf-2j) (-inf+infj) +sub (-16+infj) (inf-0j) (-inf+infj) +sub (-16+infj) (inf+0j) (-inf+infj) +sub (-16+infj) (inf+2j) (-inf+infj) +sub (-16+infj) (inf+16j) (-inf+infj) +sub (-16+infj) (inf+infj) (-inf+nanj) +sub (-16+infj) (inf+nanj) (-inf+nanj) +sub (-16+infj) (nan-infj) (nan+infj) +sub (-16+infj) (nan-16j) (nan+infj) +sub (-16+infj) (nan-2j) (nan+infj) +sub (-16+infj) (nan-0j) (nan+infj) +sub (-16+infj) (nan+0j) (nan+infj) +sub (-16+infj) (nan+2j) (nan+infj) +sub (-16+infj) (nan+16j) (nan+infj) +sub (-16+infj) (nan+infj) (nan+nanj) +sub (-16+infj) (nan+nanj) (nan+nanj) +sub (-16+nanj) (-inf-infj) (inf+nanj) +sub (-16+nanj) (-inf-16j) (inf+nanj) +sub (-16+nanj) (-inf-2j) (inf+nanj) +sub (-16+nanj) (-inf-0j) (inf+nanj) +sub (-16+nanj) (-inf+0j) (inf+nanj) +sub (-16+nanj) (-inf+2j) (inf+nanj) +sub (-16+nanj) (-inf+16j) (inf+nanj) +sub (-16+nanj) (-inf+infj) (inf+nanj) +sub (-16+nanj) (-inf+nanj) (inf+nanj) +sub (-16+nanj) (-16-infj) nanj +sub (-16+nanj) (-16-16j) nanj +sub (-16+nanj) (-16-2j) nanj +sub (-16+nanj) (-16-0j) nanj +sub (-16+nanj) (-16+0j) nanj +sub (-16+nanj) (-16+2j) nanj +sub (-16+nanj) (-16+16j) nanj +sub (-16+nanj) (-16+infj) nanj +sub (-16+nanj) (-16+nanj) nanj +sub (-16+nanj) (-2-infj) (-14+nanj) +sub (-16+nanj) (-2-16j) (-14+nanj) +sub (-16+nanj) (-2-2j) (-14+nanj) +sub (-16+nanj) (-2-0j) (-14+nanj) +sub (-16+nanj) (-2+0j) (-14+nanj) +sub (-16+nanj) (-2+2j) (-14+nanj) +sub (-16+nanj) (-2+16j) (-14+nanj) +sub (-16+nanj) (-2+infj) (-14+nanj) +sub (-16+nanj) (-2+nanj) (-14+nanj) +sub (-16+nanj) (-0-infj) (-16+nanj) +sub (-16+nanj) (-0-16j) (-16+nanj) +sub (-16+nanj) (-0-2j) (-16+nanj) +sub (-16+nanj) (-0-0j) (-16+nanj) +sub (-16+nanj) (-0+0j) (-16+nanj) +sub (-16+nanj) (-0+2j) (-16+nanj) +sub (-16+nanj) (-0+16j) (-16+nanj) +sub (-16+nanj) (-0+infj) (-16+nanj) +sub (-16+nanj) (-0+nanj) (-16+nanj) +sub (-16+nanj) -infj (-16+nanj) +sub (-16+nanj) -16j (-16+nanj) +sub (-16+nanj) -2j (-16+nanj) +sub (-16+nanj) -0j (-16+nanj) +sub (-16+nanj) 0j (-16+nanj) +sub (-16+nanj) 2j (-16+nanj) +sub (-16+nanj) 16j (-16+nanj) +sub (-16+nanj) infj (-16+nanj) +sub (-16+nanj) nanj (-16+nanj) +sub (-16+nanj) (2-infj) (-18+nanj) +sub (-16+nanj) (2-16j) (-18+nanj) +sub (-16+nanj) (2-2j) (-18+nanj) +sub (-16+nanj) (2-0j) (-18+nanj) +sub (-16+nanj) (2+0j) (-18+nanj) +sub (-16+nanj) (2+2j) (-18+nanj) +sub (-16+nanj) (2+16j) (-18+nanj) +sub (-16+nanj) (2+infj) (-18+nanj) +sub (-16+nanj) (2+nanj) (-18+nanj) +sub (-16+nanj) (16-infj) (-32+nanj) +sub (-16+nanj) (16-16j) (-32+nanj) +sub (-16+nanj) (16-2j) (-32+nanj) +sub (-16+nanj) (16-0j) (-32+nanj) +sub (-16+nanj) (16+0j) (-32+nanj) +sub (-16+nanj) (16+2j) (-32+nanj) +sub (-16+nanj) (16+16j) (-32+nanj) +sub (-16+nanj) (16+infj) (-32+nanj) +sub (-16+nanj) (16+nanj) (-32+nanj) +sub (-16+nanj) (inf-infj) (-inf+nanj) +sub (-16+nanj) (inf-16j) (-inf+nanj) +sub (-16+nanj) (inf-2j) (-inf+nanj) +sub (-16+nanj) (inf-0j) (-inf+nanj) +sub (-16+nanj) (inf+0j) (-inf+nanj) +sub (-16+nanj) (inf+2j) (-inf+nanj) +sub (-16+nanj) (inf+16j) (-inf+nanj) +sub (-16+nanj) (inf+infj) (-inf+nanj) +sub (-16+nanj) (inf+nanj) (-inf+nanj) +sub (-16+nanj) (nan-infj) (nan+nanj) +sub (-16+nanj) (nan-16j) (nan+nanj) +sub (-16+nanj) (nan-2j) (nan+nanj) +sub (-16+nanj) (nan-0j) (nan+nanj) +sub (-16+nanj) (nan+0j) (nan+nanj) +sub (-16+nanj) (nan+2j) (nan+nanj) +sub (-16+nanj) (nan+16j) (nan+nanj) +sub (-16+nanj) (nan+infj) (nan+nanj) +sub (-16+nanj) (nan+nanj) (nan+nanj) +sub (-2-infj) (-inf-infj) (inf+nanj) +sub (-2-infj) (-inf-16j) (inf-infj) +sub (-2-infj) (-inf-2j) (inf-infj) +sub (-2-infj) (-inf-0j) (inf-infj) +sub (-2-infj) (-inf+0j) (inf-infj) +sub (-2-infj) (-inf+2j) (inf-infj) +sub (-2-infj) (-inf+16j) (inf-infj) +sub (-2-infj) (-inf+infj) (inf-infj) +sub (-2-infj) (-inf+nanj) (inf+nanj) +sub (-2-infj) (-16-infj) (14+nanj) +sub (-2-infj) (-16-16j) (14-infj) +sub (-2-infj) (-16-2j) (14-infj) +sub (-2-infj) (-16-0j) (14-infj) +sub (-2-infj) (-16+0j) (14-infj) +sub (-2-infj) (-16+2j) (14-infj) +sub (-2-infj) (-16+16j) (14-infj) +sub (-2-infj) (-16+infj) (14-infj) +sub (-2-infj) (-16+nanj) (14+nanj) +sub (-2-infj) (-2-infj) nanj +sub (-2-infj) (-2-16j) -infj +sub (-2-infj) (-2-2j) -infj +sub (-2-infj) (-2-0j) -infj +sub (-2-infj) (-2+0j) -infj +sub (-2-infj) (-2+2j) -infj +sub (-2-infj) (-2+16j) -infj +sub (-2-infj) (-2+infj) -infj +sub (-2-infj) (-2+nanj) nanj +sub (-2-infj) (-0-infj) (-2+nanj) +sub (-2-infj) (-0-16j) (-2-infj) +sub (-2-infj) (-0-2j) (-2-infj) +sub (-2-infj) (-0-0j) (-2-infj) +sub (-2-infj) (-0+0j) (-2-infj) +sub (-2-infj) (-0+2j) (-2-infj) +sub (-2-infj) (-0+16j) (-2-infj) +sub (-2-infj) (-0+infj) (-2-infj) +sub (-2-infj) (-0+nanj) (-2+nanj) +sub (-2-infj) -infj (-2+nanj) +sub (-2-infj) -16j (-2-infj) +sub (-2-infj) -2j (-2-infj) +sub (-2-infj) -0j (-2-infj) +sub (-2-infj) 0j (-2-infj) +sub (-2-infj) 2j (-2-infj) +sub (-2-infj) 16j (-2-infj) +sub (-2-infj) infj (-2-infj) +sub (-2-infj) nanj (-2+nanj) +sub (-2-infj) (2-infj) (-4+nanj) +sub (-2-infj) (2-16j) (-4-infj) +sub (-2-infj) (2-2j) (-4-infj) +sub (-2-infj) (2-0j) (-4-infj) +sub (-2-infj) (2+0j) (-4-infj) +sub (-2-infj) (2+2j) (-4-infj) +sub (-2-infj) (2+16j) (-4-infj) +sub (-2-infj) (2+infj) (-4-infj) +sub (-2-infj) (2+nanj) (-4+nanj) +sub (-2-infj) (16-infj) (-18+nanj) +sub (-2-infj) (16-16j) (-18-infj) +sub (-2-infj) (16-2j) (-18-infj) +sub (-2-infj) (16-0j) (-18-infj) +sub (-2-infj) (16+0j) (-18-infj) +sub (-2-infj) (16+2j) (-18-infj) +sub (-2-infj) (16+16j) (-18-infj) +sub (-2-infj) (16+infj) (-18-infj) +sub (-2-infj) (16+nanj) (-18+nanj) +sub (-2-infj) (inf-infj) (-inf+nanj) +sub (-2-infj) (inf-16j) (-inf-infj) +sub (-2-infj) (inf-2j) (-inf-infj) +sub (-2-infj) (inf-0j) (-inf-infj) +sub (-2-infj) (inf+0j) (-inf-infj) +sub (-2-infj) (inf+2j) (-inf-infj) +sub (-2-infj) (inf+16j) (-inf-infj) +sub (-2-infj) (inf+infj) (-inf-infj) +sub (-2-infj) (inf+nanj) (-inf+nanj) +sub (-2-infj) (nan-infj) (nan+nanj) +sub (-2-infj) (nan-16j) (nan-infj) +sub (-2-infj) (nan-2j) (nan-infj) +sub (-2-infj) (nan-0j) (nan-infj) +sub (-2-infj) (nan+0j) (nan-infj) +sub (-2-infj) (nan+2j) (nan-infj) +sub (-2-infj) (nan+16j) (nan-infj) +sub (-2-infj) (nan+infj) (nan-infj) +sub (-2-infj) (nan+nanj) (nan+nanj) +sub (-2-16j) (-inf-infj) (inf+infj) +sub (-2-16j) (-inf-16j) (inf+0j) +sub (-2-16j) (-inf-2j) (inf-14j) +sub (-2-16j) (-inf-0j) (inf-16j) +sub (-2-16j) (-inf+0j) (inf-16j) +sub (-2-16j) (-inf+2j) (inf-18j) +sub (-2-16j) (-inf+16j) (inf-32j) +sub (-2-16j) (-inf+infj) (inf-infj) +sub (-2-16j) (-inf+nanj) (inf+nanj) +sub (-2-16j) (-16-infj) (14+infj) +sub (-2-16j) (-16-16j) (14+0j) +sub (-2-16j) (-16-2j) (14-14j) +sub (-2-16j) (-16-0j) (14-16j) +sub (-2-16j) (-16+0j) (14-16j) +sub (-2-16j) (-16+2j) (14-18j) +sub (-2-16j) (-16+16j) (14-32j) +sub (-2-16j) (-16+infj) (14-infj) +sub (-2-16j) (-16+nanj) (14+nanj) +sub (-2-16j) (-2-infj) infj +sub (-2-16j) (-2-16j) 0j +sub (-2-16j) (-2-2j) -14j +sub (-2-16j) (-2-0j) -16j +sub (-2-16j) (-2+0j) -16j +sub (-2-16j) (-2+2j) -18j +sub (-2-16j) (-2+16j) -32j +sub (-2-16j) (-2+infj) -infj +sub (-2-16j) (-2+nanj) nanj +sub (-2-16j) (-0-infj) (-2+infj) +sub (-2-16j) (-0-16j) (-2+0j) +sub (-2-16j) (-0-2j) (-2-14j) +sub (-2-16j) (-0-0j) (-2-16j) +sub (-2-16j) (-0+0j) (-2-16j) +sub (-2-16j) (-0+2j) (-2-18j) +sub (-2-16j) (-0+16j) (-2-32j) +sub (-2-16j) (-0+infj) (-2-infj) +sub (-2-16j) (-0+nanj) (-2+nanj) +sub (-2-16j) -infj (-2+infj) +sub (-2-16j) -16j (-2+0j) +sub (-2-16j) -2j (-2-14j) +sub (-2-16j) -0j (-2-16j) +sub (-2-16j) 0j (-2-16j) +sub (-2-16j) 2j (-2-18j) +sub (-2-16j) 16j (-2-32j) +sub (-2-16j) infj (-2-infj) +sub (-2-16j) nanj (-2+nanj) +sub (-2-16j) (2-infj) (-4+infj) +sub (-2-16j) (2-16j) (-4+0j) +sub (-2-16j) (2-2j) (-4-14j) +sub (-2-16j) (2-0j) (-4-16j) +sub (-2-16j) (2+0j) (-4-16j) +sub (-2-16j) (2+2j) (-4-18j) +sub (-2-16j) (2+16j) (-4-32j) +sub (-2-16j) (2+infj) (-4-infj) +sub (-2-16j) (2+nanj) (-4+nanj) +sub (-2-16j) (16-infj) (-18+infj) +sub (-2-16j) (16-16j) (-18+0j) +sub (-2-16j) (16-2j) (-18-14j) +sub (-2-16j) (16-0j) (-18-16j) +sub (-2-16j) (16+0j) (-18-16j) +sub (-2-16j) (16+2j) (-18-18j) +sub (-2-16j) (16+16j) (-18-32j) +sub (-2-16j) (16+infj) (-18-infj) +sub (-2-16j) (16+nanj) (-18+nanj) +sub (-2-16j) (inf-infj) (-inf+infj) +sub (-2-16j) (inf-16j) (-inf+0j) +sub (-2-16j) (inf-2j) (-inf-14j) +sub (-2-16j) (inf-0j) (-inf-16j) +sub (-2-16j) (inf+0j) (-inf-16j) +sub (-2-16j) (inf+2j) (-inf-18j) +sub (-2-16j) (inf+16j) (-inf-32j) +sub (-2-16j) (inf+infj) (-inf-infj) +sub (-2-16j) (inf+nanj) (-inf+nanj) +sub (-2-16j) (nan-infj) (nan+infj) +sub (-2-16j) (nan-16j) (nan+0j) +sub (-2-16j) (nan-2j) (nan-14j) +sub (-2-16j) (nan-0j) (nan-16j) +sub (-2-16j) (nan+0j) (nan-16j) +sub (-2-16j) (nan+2j) (nan-18j) +sub (-2-16j) (nan+16j) (nan-32j) +sub (-2-16j) (nan+infj) (nan-infj) +sub (-2-16j) (nan+nanj) (nan+nanj) +sub (-2-2j) (-inf-infj) (inf+infj) +sub (-2-2j) (-inf-16j) (inf+14j) +sub (-2-2j) (-inf-2j) (inf+0j) +sub (-2-2j) (-inf-0j) (inf-2j) +sub (-2-2j) (-inf+0j) (inf-2j) +sub (-2-2j) (-inf+2j) (inf-4j) +sub (-2-2j) (-inf+16j) (inf-18j) +sub (-2-2j) (-inf+infj) (inf-infj) +sub (-2-2j) (-inf+nanj) (inf+nanj) +sub (-2-2j) (-16-infj) (14+infj) +sub (-2-2j) (-16-16j) (14+14j) +sub (-2-2j) (-16-2j) (14+0j) +sub (-2-2j) (-16-0j) (14-2j) +sub (-2-2j) (-16+0j) (14-2j) +sub (-2-2j) (-16+2j) (14-4j) +sub (-2-2j) (-16+16j) (14-18j) +sub (-2-2j) (-16+infj) (14-infj) +sub (-2-2j) (-16+nanj) (14+nanj) +sub (-2-2j) (-2-infj) infj +sub (-2-2j) (-2-16j) 14j +sub (-2-2j) (-2-2j) 0j +sub (-2-2j) (-2-0j) -2j +sub (-2-2j) (-2+0j) -2j +sub (-2-2j) (-2+2j) -4j +sub (-2-2j) (-2+16j) -18j +sub (-2-2j) (-2+infj) -infj +sub (-2-2j) (-2+nanj) nanj +sub (-2-2j) (-0-infj) (-2+infj) +sub (-2-2j) (-0-16j) (-2+14j) +sub (-2-2j) (-0-2j) (-2+0j) +sub (-2-2j) (-0-0j) (-2-2j) +sub (-2-2j) (-0+0j) (-2-2j) +sub (-2-2j) (-0+2j) (-2-4j) +sub (-2-2j) (-0+16j) (-2-18j) +sub (-2-2j) (-0+infj) (-2-infj) +sub (-2-2j) (-0+nanj) (-2+nanj) +sub (-2-2j) -infj (-2+infj) +sub (-2-2j) -16j (-2+14j) +sub (-2-2j) -2j (-2+0j) +sub (-2-2j) -0j (-2-2j) +sub (-2-2j) 0j (-2-2j) +sub (-2-2j) 2j (-2-4j) +sub (-2-2j) 16j (-2-18j) +sub (-2-2j) infj (-2-infj) +sub (-2-2j) nanj (-2+nanj) +sub (-2-2j) (2-infj) (-4+infj) +sub (-2-2j) (2-16j) (-4+14j) +sub (-2-2j) (2-2j) (-4+0j) +sub (-2-2j) (2-0j) (-4-2j) +sub (-2-2j) (2+0j) (-4-2j) +sub (-2-2j) (2+2j) (-4-4j) +sub (-2-2j) (2+16j) (-4-18j) +sub (-2-2j) (2+infj) (-4-infj) +sub (-2-2j) (2+nanj) (-4+nanj) +sub (-2-2j) (16-infj) (-18+infj) +sub (-2-2j) (16-16j) (-18+14j) +sub (-2-2j) (16-2j) (-18+0j) +sub (-2-2j) (16-0j) (-18-2j) +sub (-2-2j) (16+0j) (-18-2j) +sub (-2-2j) (16+2j) (-18-4j) +sub (-2-2j) (16+16j) (-18-18j) +sub (-2-2j) (16+infj) (-18-infj) +sub (-2-2j) (16+nanj) (-18+nanj) +sub (-2-2j) (inf-infj) (-inf+infj) +sub (-2-2j) (inf-16j) (-inf+14j) +sub (-2-2j) (inf-2j) (-inf+0j) +sub (-2-2j) (inf-0j) (-inf-2j) +sub (-2-2j) (inf+0j) (-inf-2j) +sub (-2-2j) (inf+2j) (-inf-4j) +sub (-2-2j) (inf+16j) (-inf-18j) +sub (-2-2j) (inf+infj) (-inf-infj) +sub (-2-2j) (inf+nanj) (-inf+nanj) +sub (-2-2j) (nan-infj) (nan+infj) +sub (-2-2j) (nan-16j) (nan+14j) +sub (-2-2j) (nan-2j) (nan+0j) +sub (-2-2j) (nan-0j) (nan-2j) +sub (-2-2j) (nan+0j) (nan-2j) +sub (-2-2j) (nan+2j) (nan-4j) +sub (-2-2j) (nan+16j) (nan-18j) +sub (-2-2j) (nan+infj) (nan-infj) +sub (-2-2j) (nan+nanj) (nan+nanj) +sub (-2-0j) (-inf-infj) (inf+infj) +sub (-2-0j) (-inf-16j) (inf+16j) +sub (-2-0j) (-inf-2j) (inf+2j) +sub (-2-0j) (-inf-0j) (inf+0j) +sub (-2-0j) (-inf+0j) (inf-0j) +sub (-2-0j) (-inf+2j) (inf-2j) +sub (-2-0j) (-inf+16j) (inf-16j) +sub (-2-0j) (-inf+infj) (inf-infj) +sub (-2-0j) (-inf+nanj) (inf+nanj) +sub (-2-0j) (-16-infj) (14+infj) +sub (-2-0j) (-16-16j) (14+16j) +sub (-2-0j) (-16-2j) (14+2j) +sub (-2-0j) (-16-0j) (14+0j) +sub (-2-0j) (-16+0j) (14-0j) +sub (-2-0j) (-16+2j) (14-2j) +sub (-2-0j) (-16+16j) (14-16j) +sub (-2-0j) (-16+infj) (14-infj) +sub (-2-0j) (-16+nanj) (14+nanj) +sub (-2-0j) (-2-infj) infj +sub (-2-0j) (-2-16j) 16j +sub (-2-0j) (-2-2j) 2j +sub (-2-0j) (-2-0j) 0j +sub (-2-0j) (-2+0j) -0j +sub (-2-0j) (-2+2j) -2j +sub (-2-0j) (-2+16j) -16j +sub (-2-0j) (-2+infj) -infj +sub (-2-0j) (-2+nanj) nanj +sub (-2-0j) (-0-infj) (-2+infj) +sub (-2-0j) (-0-16j) (-2+16j) +sub (-2-0j) (-0-2j) (-2+2j) +sub (-2-0j) (-0-0j) (-2+0j) +sub (-2-0j) (-0+0j) (-2-0j) +sub (-2-0j) (-0+2j) (-2-2j) +sub (-2-0j) (-0+16j) (-2-16j) +sub (-2-0j) (-0+infj) (-2-infj) +sub (-2-0j) (-0+nanj) (-2+nanj) +sub (-2-0j) -infj (-2+infj) +sub (-2-0j) -16j (-2+16j) +sub (-2-0j) -2j (-2+2j) +sub (-2-0j) -0j (-2+0j) +sub (-2-0j) 0j (-2-0j) +sub (-2-0j) 2j (-2-2j) +sub (-2-0j) 16j (-2-16j) +sub (-2-0j) infj (-2-infj) +sub (-2-0j) nanj (-2+nanj) +sub (-2-0j) (2-infj) (-4+infj) +sub (-2-0j) (2-16j) (-4+16j) +sub (-2-0j) (2-2j) (-4+2j) +sub (-2-0j) (2-0j) (-4+0j) +sub (-2-0j) (2+0j) (-4-0j) +sub (-2-0j) (2+2j) (-4-2j) +sub (-2-0j) (2+16j) (-4-16j) +sub (-2-0j) (2+infj) (-4-infj) +sub (-2-0j) (2+nanj) (-4+nanj) +sub (-2-0j) (16-infj) (-18+infj) +sub (-2-0j) (16-16j) (-18+16j) +sub (-2-0j) (16-2j) (-18+2j) +sub (-2-0j) (16-0j) (-18+0j) +sub (-2-0j) (16+0j) (-18-0j) +sub (-2-0j) (16+2j) (-18-2j) +sub (-2-0j) (16+16j) (-18-16j) +sub (-2-0j) (16+infj) (-18-infj) +sub (-2-0j) (16+nanj) (-18+nanj) +sub (-2-0j) (inf-infj) (-inf+infj) +sub (-2-0j) (inf-16j) (-inf+16j) +sub (-2-0j) (inf-2j) (-inf+2j) +sub (-2-0j) (inf-0j) (-inf+0j) +sub (-2-0j) (inf+0j) (-inf-0j) +sub (-2-0j) (inf+2j) (-inf-2j) +sub (-2-0j) (inf+16j) (-inf-16j) +sub (-2-0j) (inf+infj) (-inf-infj) +sub (-2-0j) (inf+nanj) (-inf+nanj) +sub (-2-0j) (nan-infj) (nan+infj) +sub (-2-0j) (nan-16j) (nan+16j) +sub (-2-0j) (nan-2j) (nan+2j) +sub (-2-0j) (nan-0j) (nan+0j) +sub (-2-0j) (nan+0j) (nan-0j) +sub (-2-0j) (nan+2j) (nan-2j) +sub (-2-0j) (nan+16j) (nan-16j) +sub (-2-0j) (nan+infj) (nan-infj) +sub (-2-0j) (nan+nanj) (nan+nanj) +sub (-2+0j) (-inf-infj) (inf+infj) +sub (-2+0j) (-inf-16j) (inf+16j) +sub (-2+0j) (-inf-2j) (inf+2j) +sub (-2+0j) (-inf-0j) (inf+0j) +sub (-2+0j) (-inf+0j) (inf+0j) +sub (-2+0j) (-inf+2j) (inf-2j) +sub (-2+0j) (-inf+16j) (inf-16j) +sub (-2+0j) (-inf+infj) (inf-infj) +sub (-2+0j) (-inf+nanj) (inf+nanj) +sub (-2+0j) (-16-infj) (14+infj) +sub (-2+0j) (-16-16j) (14+16j) +sub (-2+0j) (-16-2j) (14+2j) +sub (-2+0j) (-16-0j) (14+0j) +sub (-2+0j) (-16+0j) (14+0j) +sub (-2+0j) (-16+2j) (14-2j) +sub (-2+0j) (-16+16j) (14-16j) +sub (-2+0j) (-16+infj) (14-infj) +sub (-2+0j) (-16+nanj) (14+nanj) +sub (-2+0j) (-2-infj) infj +sub (-2+0j) (-2-16j) 16j +sub (-2+0j) (-2-2j) 2j +sub (-2+0j) (-2-0j) 0j +sub (-2+0j) (-2+0j) 0j +sub (-2+0j) (-2+2j) -2j +sub (-2+0j) (-2+16j) -16j +sub (-2+0j) (-2+infj) -infj +sub (-2+0j) (-2+nanj) nanj +sub (-2+0j) (-0-infj) (-2+infj) +sub (-2+0j) (-0-16j) (-2+16j) +sub (-2+0j) (-0-2j) (-2+2j) +sub (-2+0j) (-0-0j) (-2+0j) +sub (-2+0j) (-0+0j) (-2+0j) +sub (-2+0j) (-0+2j) (-2-2j) +sub (-2+0j) (-0+16j) (-2-16j) +sub (-2+0j) (-0+infj) (-2-infj) +sub (-2+0j) (-0+nanj) (-2+nanj) +sub (-2+0j) -infj (-2+infj) +sub (-2+0j) -16j (-2+16j) +sub (-2+0j) -2j (-2+2j) +sub (-2+0j) -0j (-2+0j) +sub (-2+0j) 0j (-2+0j) +sub (-2+0j) 2j (-2-2j) +sub (-2+0j) 16j (-2-16j) +sub (-2+0j) infj (-2-infj) +sub (-2+0j) nanj (-2+nanj) +sub (-2+0j) (2-infj) (-4+infj) +sub (-2+0j) (2-16j) (-4+16j) +sub (-2+0j) (2-2j) (-4+2j) +sub (-2+0j) (2-0j) (-4+0j) +sub (-2+0j) (2+0j) (-4+0j) +sub (-2+0j) (2+2j) (-4-2j) +sub (-2+0j) (2+16j) (-4-16j) +sub (-2+0j) (2+infj) (-4-infj) +sub (-2+0j) (2+nanj) (-4+nanj) +sub (-2+0j) (16-infj) (-18+infj) +sub (-2+0j) (16-16j) (-18+16j) +sub (-2+0j) (16-2j) (-18+2j) +sub (-2+0j) (16-0j) (-18+0j) +sub (-2+0j) (16+0j) (-18+0j) +sub (-2+0j) (16+2j) (-18-2j) +sub (-2+0j) (16+16j) (-18-16j) +sub (-2+0j) (16+infj) (-18-infj) +sub (-2+0j) (16+nanj) (-18+nanj) +sub (-2+0j) (inf-infj) (-inf+infj) +sub (-2+0j) (inf-16j) (-inf+16j) +sub (-2+0j) (inf-2j) (-inf+2j) +sub (-2+0j) (inf-0j) (-inf+0j) +sub (-2+0j) (inf+0j) (-inf+0j) +sub (-2+0j) (inf+2j) (-inf-2j) +sub (-2+0j) (inf+16j) (-inf-16j) +sub (-2+0j) (inf+infj) (-inf-infj) +sub (-2+0j) (inf+nanj) (-inf+nanj) +sub (-2+0j) (nan-infj) (nan+infj) +sub (-2+0j) (nan-16j) (nan+16j) +sub (-2+0j) (nan-2j) (nan+2j) +sub (-2+0j) (nan-0j) (nan+0j) +sub (-2+0j) (nan+0j) (nan+0j) +sub (-2+0j) (nan+2j) (nan-2j) +sub (-2+0j) (nan+16j) (nan-16j) +sub (-2+0j) (nan+infj) (nan-infj) +sub (-2+0j) (nan+nanj) (nan+nanj) +sub (-2+2j) (-inf-infj) (inf+infj) +sub (-2+2j) (-inf-16j) (inf+18j) +sub (-2+2j) (-inf-2j) (inf+4j) +sub (-2+2j) (-inf-0j) (inf+2j) +sub (-2+2j) (-inf+0j) (inf+2j) +sub (-2+2j) (-inf+2j) (inf+0j) +sub (-2+2j) (-inf+16j) (inf-14j) +sub (-2+2j) (-inf+infj) (inf-infj) +sub (-2+2j) (-inf+nanj) (inf+nanj) +sub (-2+2j) (-16-infj) (14+infj) +sub (-2+2j) (-16-16j) (14+18j) +sub (-2+2j) (-16-2j) (14+4j) +sub (-2+2j) (-16-0j) (14+2j) +sub (-2+2j) (-16+0j) (14+2j) +sub (-2+2j) (-16+2j) (14+0j) +sub (-2+2j) (-16+16j) (14-14j) +sub (-2+2j) (-16+infj) (14-infj) +sub (-2+2j) (-16+nanj) (14+nanj) +sub (-2+2j) (-2-infj) infj +sub (-2+2j) (-2-16j) 18j +sub (-2+2j) (-2-2j) 4j +sub (-2+2j) (-2-0j) 2j +sub (-2+2j) (-2+0j) 2j +sub (-2+2j) (-2+2j) 0j +sub (-2+2j) (-2+16j) -14j +sub (-2+2j) (-2+infj) -infj +sub (-2+2j) (-2+nanj) nanj +sub (-2+2j) (-0-infj) (-2+infj) +sub (-2+2j) (-0-16j) (-2+18j) +sub (-2+2j) (-0-2j) (-2+4j) +sub (-2+2j) (-0-0j) (-2+2j) +sub (-2+2j) (-0+0j) (-2+2j) +sub (-2+2j) (-0+2j) (-2+0j) +sub (-2+2j) (-0+16j) (-2-14j) +sub (-2+2j) (-0+infj) (-2-infj) +sub (-2+2j) (-0+nanj) (-2+nanj) +sub (-2+2j) -infj (-2+infj) +sub (-2+2j) -16j (-2+18j) +sub (-2+2j) -2j (-2+4j) +sub (-2+2j) -0j (-2+2j) +sub (-2+2j) 0j (-2+2j) +sub (-2+2j) 2j (-2+0j) +sub (-2+2j) 16j (-2-14j) +sub (-2+2j) infj (-2-infj) +sub (-2+2j) nanj (-2+nanj) +sub (-2+2j) (2-infj) (-4+infj) +sub (-2+2j) (2-16j) (-4+18j) +sub (-2+2j) (2-2j) (-4+4j) +sub (-2+2j) (2-0j) (-4+2j) +sub (-2+2j) (2+0j) (-4+2j) +sub (-2+2j) (2+2j) (-4+0j) +sub (-2+2j) (2+16j) (-4-14j) +sub (-2+2j) (2+infj) (-4-infj) +sub (-2+2j) (2+nanj) (-4+nanj) +sub (-2+2j) (16-infj) (-18+infj) +sub (-2+2j) (16-16j) (-18+18j) +sub (-2+2j) (16-2j) (-18+4j) +sub (-2+2j) (16-0j) (-18+2j) +sub (-2+2j) (16+0j) (-18+2j) +sub (-2+2j) (16+2j) (-18+0j) +sub (-2+2j) (16+16j) (-18-14j) +sub (-2+2j) (16+infj) (-18-infj) +sub (-2+2j) (16+nanj) (-18+nanj) +sub (-2+2j) (inf-infj) (-inf+infj) +sub (-2+2j) (inf-16j) (-inf+18j) +sub (-2+2j) (inf-2j) (-inf+4j) +sub (-2+2j) (inf-0j) (-inf+2j) +sub (-2+2j) (inf+0j) (-inf+2j) +sub (-2+2j) (inf+2j) (-inf+0j) +sub (-2+2j) (inf+16j) (-inf-14j) +sub (-2+2j) (inf+infj) (-inf-infj) +sub (-2+2j) (inf+nanj) (-inf+nanj) +sub (-2+2j) (nan-infj) (nan+infj) +sub (-2+2j) (nan-16j) (nan+18j) +sub (-2+2j) (nan-2j) (nan+4j) +sub (-2+2j) (nan-0j) (nan+2j) +sub (-2+2j) (nan+0j) (nan+2j) +sub (-2+2j) (nan+2j) (nan+0j) +sub (-2+2j) (nan+16j) (nan-14j) +sub (-2+2j) (nan+infj) (nan-infj) +sub (-2+2j) (nan+nanj) (nan+nanj) +sub (-2+16j) (-inf-infj) (inf+infj) +sub (-2+16j) (-inf-16j) (inf+32j) +sub (-2+16j) (-inf-2j) (inf+18j) +sub (-2+16j) (-inf-0j) (inf+16j) +sub (-2+16j) (-inf+0j) (inf+16j) +sub (-2+16j) (-inf+2j) (inf+14j) +sub (-2+16j) (-inf+16j) (inf+0j) +sub (-2+16j) (-inf+infj) (inf-infj) +sub (-2+16j) (-inf+nanj) (inf+nanj) +sub (-2+16j) (-16-infj) (14+infj) +sub (-2+16j) (-16-16j) (14+32j) +sub (-2+16j) (-16-2j) (14+18j) +sub (-2+16j) (-16-0j) (14+16j) +sub (-2+16j) (-16+0j) (14+16j) +sub (-2+16j) (-16+2j) (14+14j) +sub (-2+16j) (-16+16j) (14+0j) +sub (-2+16j) (-16+infj) (14-infj) +sub (-2+16j) (-16+nanj) (14+nanj) +sub (-2+16j) (-2-infj) infj +sub (-2+16j) (-2-16j) 32j +sub (-2+16j) (-2-2j) 18j +sub (-2+16j) (-2-0j) 16j +sub (-2+16j) (-2+0j) 16j +sub (-2+16j) (-2+2j) 14j +sub (-2+16j) (-2+16j) 0j +sub (-2+16j) (-2+infj) -infj +sub (-2+16j) (-2+nanj) nanj +sub (-2+16j) (-0-infj) (-2+infj) +sub (-2+16j) (-0-16j) (-2+32j) +sub (-2+16j) (-0-2j) (-2+18j) +sub (-2+16j) (-0-0j) (-2+16j) +sub (-2+16j) (-0+0j) (-2+16j) +sub (-2+16j) (-0+2j) (-2+14j) +sub (-2+16j) (-0+16j) (-2+0j) +sub (-2+16j) (-0+infj) (-2-infj) +sub (-2+16j) (-0+nanj) (-2+nanj) +sub (-2+16j) -infj (-2+infj) +sub (-2+16j) -16j (-2+32j) +sub (-2+16j) -2j (-2+18j) +sub (-2+16j) -0j (-2+16j) +sub (-2+16j) 0j (-2+16j) +sub (-2+16j) 2j (-2+14j) +sub (-2+16j) 16j (-2+0j) +sub (-2+16j) infj (-2-infj) +sub (-2+16j) nanj (-2+nanj) +sub (-2+16j) (2-infj) (-4+infj) +sub (-2+16j) (2-16j) (-4+32j) +sub (-2+16j) (2-2j) (-4+18j) +sub (-2+16j) (2-0j) (-4+16j) +sub (-2+16j) (2+0j) (-4+16j) +sub (-2+16j) (2+2j) (-4+14j) +sub (-2+16j) (2+16j) (-4+0j) +sub (-2+16j) (2+infj) (-4-infj) +sub (-2+16j) (2+nanj) (-4+nanj) +sub (-2+16j) (16-infj) (-18+infj) +sub (-2+16j) (16-16j) (-18+32j) +sub (-2+16j) (16-2j) (-18+18j) +sub (-2+16j) (16-0j) (-18+16j) +sub (-2+16j) (16+0j) (-18+16j) +sub (-2+16j) (16+2j) (-18+14j) +sub (-2+16j) (16+16j) (-18+0j) +sub (-2+16j) (16+infj) (-18-infj) +sub (-2+16j) (16+nanj) (-18+nanj) +sub (-2+16j) (inf-infj) (-inf+infj) +sub (-2+16j) (inf-16j) (-inf+32j) +sub (-2+16j) (inf-2j) (-inf+18j) +sub (-2+16j) (inf-0j) (-inf+16j) +sub (-2+16j) (inf+0j) (-inf+16j) +sub (-2+16j) (inf+2j) (-inf+14j) +sub (-2+16j) (inf+16j) (-inf+0j) +sub (-2+16j) (inf+infj) (-inf-infj) +sub (-2+16j) (inf+nanj) (-inf+nanj) +sub (-2+16j) (nan-infj) (nan+infj) +sub (-2+16j) (nan-16j) (nan+32j) +sub (-2+16j) (nan-2j) (nan+18j) +sub (-2+16j) (nan-0j) (nan+16j) +sub (-2+16j) (nan+0j) (nan+16j) +sub (-2+16j) (nan+2j) (nan+14j) +sub (-2+16j) (nan+16j) (nan+0j) +sub (-2+16j) (nan+infj) (nan-infj) +sub (-2+16j) (nan+nanj) (nan+nanj) +sub (-2+infj) (-inf-infj) (inf+infj) +sub (-2+infj) (-inf-16j) (inf+infj) +sub (-2+infj) (-inf-2j) (inf+infj) +sub (-2+infj) (-inf-0j) (inf+infj) +sub (-2+infj) (-inf+0j) (inf+infj) +sub (-2+infj) (-inf+2j) (inf+infj) +sub (-2+infj) (-inf+16j) (inf+infj) +sub (-2+infj) (-inf+infj) (inf+nanj) +sub (-2+infj) (-inf+nanj) (inf+nanj) +sub (-2+infj) (-16-infj) (14+infj) +sub (-2+infj) (-16-16j) (14+infj) +sub (-2+infj) (-16-2j) (14+infj) +sub (-2+infj) (-16-0j) (14+infj) +sub (-2+infj) (-16+0j) (14+infj) +sub (-2+infj) (-16+2j) (14+infj) +sub (-2+infj) (-16+16j) (14+infj) +sub (-2+infj) (-16+infj) (14+nanj) +sub (-2+infj) (-16+nanj) (14+nanj) +sub (-2+infj) (-2-infj) infj +sub (-2+infj) (-2-16j) infj +sub (-2+infj) (-2-2j) infj +sub (-2+infj) (-2-0j) infj +sub (-2+infj) (-2+0j) infj +sub (-2+infj) (-2+2j) infj +sub (-2+infj) (-2+16j) infj +sub (-2+infj) (-2+infj) nanj +sub (-2+infj) (-2+nanj) nanj +sub (-2+infj) (-0-infj) (-2+infj) +sub (-2+infj) (-0-16j) (-2+infj) +sub (-2+infj) (-0-2j) (-2+infj) +sub (-2+infj) (-0-0j) (-2+infj) +sub (-2+infj) (-0+0j) (-2+infj) +sub (-2+infj) (-0+2j) (-2+infj) +sub (-2+infj) (-0+16j) (-2+infj) +sub (-2+infj) (-0+infj) (-2+nanj) +sub (-2+infj) (-0+nanj) (-2+nanj) +sub (-2+infj) -infj (-2+infj) +sub (-2+infj) -16j (-2+infj) +sub (-2+infj) -2j (-2+infj) +sub (-2+infj) -0j (-2+infj) +sub (-2+infj) 0j (-2+infj) +sub (-2+infj) 2j (-2+infj) +sub (-2+infj) 16j (-2+infj) +sub (-2+infj) infj (-2+nanj) +sub (-2+infj) nanj (-2+nanj) +sub (-2+infj) (2-infj) (-4+infj) +sub (-2+infj) (2-16j) (-4+infj) +sub (-2+infj) (2-2j) (-4+infj) +sub (-2+infj) (2-0j) (-4+infj) +sub (-2+infj) (2+0j) (-4+infj) +sub (-2+infj) (2+2j) (-4+infj) +sub (-2+infj) (2+16j) (-4+infj) +sub (-2+infj) (2+infj) (-4+nanj) +sub (-2+infj) (2+nanj) (-4+nanj) +sub (-2+infj) (16-infj) (-18+infj) +sub (-2+infj) (16-16j) (-18+infj) +sub (-2+infj) (16-2j) (-18+infj) +sub (-2+infj) (16-0j) (-18+infj) +sub (-2+infj) (16+0j) (-18+infj) +sub (-2+infj) (16+2j) (-18+infj) +sub (-2+infj) (16+16j) (-18+infj) +sub (-2+infj) (16+infj) (-18+nanj) +sub (-2+infj) (16+nanj) (-18+nanj) +sub (-2+infj) (inf-infj) (-inf+infj) +sub (-2+infj) (inf-16j) (-inf+infj) +sub (-2+infj) (inf-2j) (-inf+infj) +sub (-2+infj) (inf-0j) (-inf+infj) +sub (-2+infj) (inf+0j) (-inf+infj) +sub (-2+infj) (inf+2j) (-inf+infj) +sub (-2+infj) (inf+16j) (-inf+infj) +sub (-2+infj) (inf+infj) (-inf+nanj) +sub (-2+infj) (inf+nanj) (-inf+nanj) +sub (-2+infj) (nan-infj) (nan+infj) +sub (-2+infj) (nan-16j) (nan+infj) +sub (-2+infj) (nan-2j) (nan+infj) +sub (-2+infj) (nan-0j) (nan+infj) +sub (-2+infj) (nan+0j) (nan+infj) +sub (-2+infj) (nan+2j) (nan+infj) +sub (-2+infj) (nan+16j) (nan+infj) +sub (-2+infj) (nan+infj) (nan+nanj) +sub (-2+infj) (nan+nanj) (nan+nanj) +sub (-2+nanj) (-inf-infj) (inf+nanj) +sub (-2+nanj) (-inf-16j) (inf+nanj) +sub (-2+nanj) (-inf-2j) (inf+nanj) +sub (-2+nanj) (-inf-0j) (inf+nanj) +sub (-2+nanj) (-inf+0j) (inf+nanj) +sub (-2+nanj) (-inf+2j) (inf+nanj) +sub (-2+nanj) (-inf+16j) (inf+nanj) +sub (-2+nanj) (-inf+infj) (inf+nanj) +sub (-2+nanj) (-inf+nanj) (inf+nanj) +sub (-2+nanj) (-16-infj) (14+nanj) +sub (-2+nanj) (-16-16j) (14+nanj) +sub (-2+nanj) (-16-2j) (14+nanj) +sub (-2+nanj) (-16-0j) (14+nanj) +sub (-2+nanj) (-16+0j) (14+nanj) +sub (-2+nanj) (-16+2j) (14+nanj) +sub (-2+nanj) (-16+16j) (14+nanj) +sub (-2+nanj) (-16+infj) (14+nanj) +sub (-2+nanj) (-16+nanj) (14+nanj) +sub (-2+nanj) (-2-infj) nanj +sub (-2+nanj) (-2-16j) nanj +sub (-2+nanj) (-2-2j) nanj +sub (-2+nanj) (-2-0j) nanj +sub (-2+nanj) (-2+0j) nanj +sub (-2+nanj) (-2+2j) nanj +sub (-2+nanj) (-2+16j) nanj +sub (-2+nanj) (-2+infj) nanj +sub (-2+nanj) (-2+nanj) nanj +sub (-2+nanj) (-0-infj) (-2+nanj) +sub (-2+nanj) (-0-16j) (-2+nanj) +sub (-2+nanj) (-0-2j) (-2+nanj) +sub (-2+nanj) (-0-0j) (-2+nanj) +sub (-2+nanj) (-0+0j) (-2+nanj) +sub (-2+nanj) (-0+2j) (-2+nanj) +sub (-2+nanj) (-0+16j) (-2+nanj) +sub (-2+nanj) (-0+infj) (-2+nanj) +sub (-2+nanj) (-0+nanj) (-2+nanj) +sub (-2+nanj) -infj (-2+nanj) +sub (-2+nanj) -16j (-2+nanj) +sub (-2+nanj) -2j (-2+nanj) +sub (-2+nanj) -0j (-2+nanj) +sub (-2+nanj) 0j (-2+nanj) +sub (-2+nanj) 2j (-2+nanj) +sub (-2+nanj) 16j (-2+nanj) +sub (-2+nanj) infj (-2+nanj) +sub (-2+nanj) nanj (-2+nanj) +sub (-2+nanj) (2-infj) (-4+nanj) +sub (-2+nanj) (2-16j) (-4+nanj) +sub (-2+nanj) (2-2j) (-4+nanj) +sub (-2+nanj) (2-0j) (-4+nanj) +sub (-2+nanj) (2+0j) (-4+nanj) +sub (-2+nanj) (2+2j) (-4+nanj) +sub (-2+nanj) (2+16j) (-4+nanj) +sub (-2+nanj) (2+infj) (-4+nanj) +sub (-2+nanj) (2+nanj) (-4+nanj) +sub (-2+nanj) (16-infj) (-18+nanj) +sub (-2+nanj) (16-16j) (-18+nanj) +sub (-2+nanj) (16-2j) (-18+nanj) +sub (-2+nanj) (16-0j) (-18+nanj) +sub (-2+nanj) (16+0j) (-18+nanj) +sub (-2+nanj) (16+2j) (-18+nanj) +sub (-2+nanj) (16+16j) (-18+nanj) +sub (-2+nanj) (16+infj) (-18+nanj) +sub (-2+nanj) (16+nanj) (-18+nanj) +sub (-2+nanj) (inf-infj) (-inf+nanj) +sub (-2+nanj) (inf-16j) (-inf+nanj) +sub (-2+nanj) (inf-2j) (-inf+nanj) +sub (-2+nanj) (inf-0j) (-inf+nanj) +sub (-2+nanj) (inf+0j) (-inf+nanj) +sub (-2+nanj) (inf+2j) (-inf+nanj) +sub (-2+nanj) (inf+16j) (-inf+nanj) +sub (-2+nanj) (inf+infj) (-inf+nanj) +sub (-2+nanj) (inf+nanj) (-inf+nanj) +sub (-2+nanj) (nan-infj) (nan+nanj) +sub (-2+nanj) (nan-16j) (nan+nanj) +sub (-2+nanj) (nan-2j) (nan+nanj) +sub (-2+nanj) (nan-0j) (nan+nanj) +sub (-2+nanj) (nan+0j) (nan+nanj) +sub (-2+nanj) (nan+2j) (nan+nanj) +sub (-2+nanj) (nan+16j) (nan+nanj) +sub (-2+nanj) (nan+infj) (nan+nanj) +sub (-2+nanj) (nan+nanj) (nan+nanj) +sub (-0-infj) (-inf-infj) (inf+nanj) +sub (-0-infj) (-inf-16j) (inf-infj) +sub (-0-infj) (-inf-2j) (inf-infj) +sub (-0-infj) (-inf-0j) (inf-infj) +sub (-0-infj) (-inf+0j) (inf-infj) +sub (-0-infj) (-inf+2j) (inf-infj) +sub (-0-infj) (-inf+16j) (inf-infj) +sub (-0-infj) (-inf+infj) (inf-infj) +sub (-0-infj) (-inf+nanj) (inf+nanj) +sub (-0-infj) (-16-infj) (16+nanj) +sub (-0-infj) (-16-16j) (16-infj) +sub (-0-infj) (-16-2j) (16-infj) +sub (-0-infj) (-16-0j) (16-infj) +sub (-0-infj) (-16+0j) (16-infj) +sub (-0-infj) (-16+2j) (16-infj) +sub (-0-infj) (-16+16j) (16-infj) +sub (-0-infj) (-16+infj) (16-infj) +sub (-0-infj) (-16+nanj) (16+nanj) +sub (-0-infj) (-2-infj) (2+nanj) +sub (-0-infj) (-2-16j) (2-infj) +sub (-0-infj) (-2-2j) (2-infj) +sub (-0-infj) (-2-0j) (2-infj) +sub (-0-infj) (-2+0j) (2-infj) +sub (-0-infj) (-2+2j) (2-infj) +sub (-0-infj) (-2+16j) (2-infj) +sub (-0-infj) (-2+infj) (2-infj) +sub (-0-infj) (-2+nanj) (2+nanj) +sub (-0-infj) (-0-infj) nanj +sub (-0-infj) (-0-16j) -infj +sub (-0-infj) (-0-2j) -infj +sub (-0-infj) (-0-0j) -infj +sub (-0-infj) (-0+0j) -infj +sub (-0-infj) (-0+2j) -infj +sub (-0-infj) (-0+16j) -infj +sub (-0-infj) (-0+infj) -infj +sub (-0-infj) (-0+nanj) nanj +sub (-0-infj) -infj (-0+nanj) +sub (-0-infj) -16j (-0-infj) +sub (-0-infj) -2j (-0-infj) +sub (-0-infj) -0j (-0-infj) +sub (-0-infj) 0j (-0-infj) +sub (-0-infj) 2j (-0-infj) +sub (-0-infj) 16j (-0-infj) +sub (-0-infj) infj (-0-infj) +sub (-0-infj) nanj (-0+nanj) +sub (-0-infj) (2-infj) (-2+nanj) +sub (-0-infj) (2-16j) (-2-infj) +sub (-0-infj) (2-2j) (-2-infj) +sub (-0-infj) (2-0j) (-2-infj) +sub (-0-infj) (2+0j) (-2-infj) +sub (-0-infj) (2+2j) (-2-infj) +sub (-0-infj) (2+16j) (-2-infj) +sub (-0-infj) (2+infj) (-2-infj) +sub (-0-infj) (2+nanj) (-2+nanj) +sub (-0-infj) (16-infj) (-16+nanj) +sub (-0-infj) (16-16j) (-16-infj) +sub (-0-infj) (16-2j) (-16-infj) +sub (-0-infj) (16-0j) (-16-infj) +sub (-0-infj) (16+0j) (-16-infj) +sub (-0-infj) (16+2j) (-16-infj) +sub (-0-infj) (16+16j) (-16-infj) +sub (-0-infj) (16+infj) (-16-infj) +sub (-0-infj) (16+nanj) (-16+nanj) +sub (-0-infj) (inf-infj) (-inf+nanj) +sub (-0-infj) (inf-16j) (-inf-infj) +sub (-0-infj) (inf-2j) (-inf-infj) +sub (-0-infj) (inf-0j) (-inf-infj) +sub (-0-infj) (inf+0j) (-inf-infj) +sub (-0-infj) (inf+2j) (-inf-infj) +sub (-0-infj) (inf+16j) (-inf-infj) +sub (-0-infj) (inf+infj) (-inf-infj) +sub (-0-infj) (inf+nanj) (-inf+nanj) +sub (-0-infj) (nan-infj) (nan+nanj) +sub (-0-infj) (nan-16j) (nan-infj) +sub (-0-infj) (nan-2j) (nan-infj) +sub (-0-infj) (nan-0j) (nan-infj) +sub (-0-infj) (nan+0j) (nan-infj) +sub (-0-infj) (nan+2j) (nan-infj) +sub (-0-infj) (nan+16j) (nan-infj) +sub (-0-infj) (nan+infj) (nan-infj) +sub (-0-infj) (nan+nanj) (nan+nanj) +sub (-0-16j) (-inf-infj) (inf+infj) +sub (-0-16j) (-inf-16j) (inf+0j) +sub (-0-16j) (-inf-2j) (inf-14j) +sub (-0-16j) (-inf-0j) (inf-16j) +sub (-0-16j) (-inf+0j) (inf-16j) +sub (-0-16j) (-inf+2j) (inf-18j) +sub (-0-16j) (-inf+16j) (inf-32j) +sub (-0-16j) (-inf+infj) (inf-infj) +sub (-0-16j) (-inf+nanj) (inf+nanj) +sub (-0-16j) (-16-infj) (16+infj) +sub (-0-16j) (-16-16j) (16+0j) +sub (-0-16j) (-16-2j) (16-14j) +sub (-0-16j) (-16-0j) (16-16j) +sub (-0-16j) (-16+0j) (16-16j) +sub (-0-16j) (-16+2j) (16-18j) +sub (-0-16j) (-16+16j) (16-32j) +sub (-0-16j) (-16+infj) (16-infj) +sub (-0-16j) (-16+nanj) (16+nanj) +sub (-0-16j) (-2-infj) (2+infj) +sub (-0-16j) (-2-16j) (2+0j) +sub (-0-16j) (-2-2j) (2-14j) +sub (-0-16j) (-2-0j) (2-16j) +sub (-0-16j) (-2+0j) (2-16j) +sub (-0-16j) (-2+2j) (2-18j) +sub (-0-16j) (-2+16j) (2-32j) +sub (-0-16j) (-2+infj) (2-infj) +sub (-0-16j) (-2+nanj) (2+nanj) +sub (-0-16j) (-0-infj) infj +sub (-0-16j) (-0-16j) 0j +sub (-0-16j) (-0-2j) -14j +sub (-0-16j) (-0-0j) -16j +sub (-0-16j) (-0+0j) -16j +sub (-0-16j) (-0+2j) -18j +sub (-0-16j) (-0+16j) -32j +sub (-0-16j) (-0+infj) -infj +sub (-0-16j) (-0+nanj) nanj +sub (-0-16j) -infj (-0+infj) +sub (-0-16j) -16j (-0+0j) +sub (-0-16j) -2j (-0-14j) +sub (-0-16j) -0j (-0-16j) +sub (-0-16j) 0j (-0-16j) +sub (-0-16j) 2j (-0-18j) +sub (-0-16j) 16j (-0-32j) +sub (-0-16j) infj (-0-infj) +sub (-0-16j) nanj (-0+nanj) +sub (-0-16j) (2-infj) (-2+infj) +sub (-0-16j) (2-16j) (-2+0j) +sub (-0-16j) (2-2j) (-2-14j) +sub (-0-16j) (2-0j) (-2-16j) +sub (-0-16j) (2+0j) (-2-16j) +sub (-0-16j) (2+2j) (-2-18j) +sub (-0-16j) (2+16j) (-2-32j) +sub (-0-16j) (2+infj) (-2-infj) +sub (-0-16j) (2+nanj) (-2+nanj) +sub (-0-16j) (16-infj) (-16+infj) +sub (-0-16j) (16-16j) (-16+0j) +sub (-0-16j) (16-2j) (-16-14j) +sub (-0-16j) (16-0j) (-16-16j) +sub (-0-16j) (16+0j) (-16-16j) +sub (-0-16j) (16+2j) (-16-18j) +sub (-0-16j) (16+16j) (-16-32j) +sub (-0-16j) (16+infj) (-16-infj) +sub (-0-16j) (16+nanj) (-16+nanj) +sub (-0-16j) (inf-infj) (-inf+infj) +sub (-0-16j) (inf-16j) (-inf+0j) +sub (-0-16j) (inf-2j) (-inf-14j) +sub (-0-16j) (inf-0j) (-inf-16j) +sub (-0-16j) (inf+0j) (-inf-16j) +sub (-0-16j) (inf+2j) (-inf-18j) +sub (-0-16j) (inf+16j) (-inf-32j) +sub (-0-16j) (inf+infj) (-inf-infj) +sub (-0-16j) (inf+nanj) (-inf+nanj) +sub (-0-16j) (nan-infj) (nan+infj) +sub (-0-16j) (nan-16j) (nan+0j) +sub (-0-16j) (nan-2j) (nan-14j) +sub (-0-16j) (nan-0j) (nan-16j) +sub (-0-16j) (nan+0j) (nan-16j) +sub (-0-16j) (nan+2j) (nan-18j) +sub (-0-16j) (nan+16j) (nan-32j) +sub (-0-16j) (nan+infj) (nan-infj) +sub (-0-16j) (nan+nanj) (nan+nanj) +sub (-0-2j) (-inf-infj) (inf+infj) +sub (-0-2j) (-inf-16j) (inf+14j) +sub (-0-2j) (-inf-2j) (inf+0j) +sub (-0-2j) (-inf-0j) (inf-2j) +sub (-0-2j) (-inf+0j) (inf-2j) +sub (-0-2j) (-inf+2j) (inf-4j) +sub (-0-2j) (-inf+16j) (inf-18j) +sub (-0-2j) (-inf+infj) (inf-infj) +sub (-0-2j) (-inf+nanj) (inf+nanj) +sub (-0-2j) (-16-infj) (16+infj) +sub (-0-2j) (-16-16j) (16+14j) +sub (-0-2j) (-16-2j) (16+0j) +sub (-0-2j) (-16-0j) (16-2j) +sub (-0-2j) (-16+0j) (16-2j) +sub (-0-2j) (-16+2j) (16-4j) +sub (-0-2j) (-16+16j) (16-18j) +sub (-0-2j) (-16+infj) (16-infj) +sub (-0-2j) (-16+nanj) (16+nanj) +sub (-0-2j) (-2-infj) (2+infj) +sub (-0-2j) (-2-16j) (2+14j) +sub (-0-2j) (-2-2j) (2+0j) +sub (-0-2j) (-2-0j) (2-2j) +sub (-0-2j) (-2+0j) (2-2j) +sub (-0-2j) (-2+2j) (2-4j) +sub (-0-2j) (-2+16j) (2-18j) +sub (-0-2j) (-2+infj) (2-infj) +sub (-0-2j) (-2+nanj) (2+nanj) +sub (-0-2j) (-0-infj) infj +sub (-0-2j) (-0-16j) 14j +sub (-0-2j) (-0-2j) 0j +sub (-0-2j) (-0-0j) -2j +sub (-0-2j) (-0+0j) -2j +sub (-0-2j) (-0+2j) -4j +sub (-0-2j) (-0+16j) -18j +sub (-0-2j) (-0+infj) -infj +sub (-0-2j) (-0+nanj) nanj +sub (-0-2j) -infj (-0+infj) +sub (-0-2j) -16j (-0+14j) +sub (-0-2j) -2j (-0+0j) +sub (-0-2j) -0j (-0-2j) +sub (-0-2j) 0j (-0-2j) +sub (-0-2j) 2j (-0-4j) +sub (-0-2j) 16j (-0-18j) +sub (-0-2j) infj (-0-infj) +sub (-0-2j) nanj (-0+nanj) +sub (-0-2j) (2-infj) (-2+infj) +sub (-0-2j) (2-16j) (-2+14j) +sub (-0-2j) (2-2j) (-2+0j) +sub (-0-2j) (2-0j) (-2-2j) +sub (-0-2j) (2+0j) (-2-2j) +sub (-0-2j) (2+2j) (-2-4j) +sub (-0-2j) (2+16j) (-2-18j) +sub (-0-2j) (2+infj) (-2-infj) +sub (-0-2j) (2+nanj) (-2+nanj) +sub (-0-2j) (16-infj) (-16+infj) +sub (-0-2j) (16-16j) (-16+14j) +sub (-0-2j) (16-2j) (-16+0j) +sub (-0-2j) (16-0j) (-16-2j) +sub (-0-2j) (16+0j) (-16-2j) +sub (-0-2j) (16+2j) (-16-4j) +sub (-0-2j) (16+16j) (-16-18j) +sub (-0-2j) (16+infj) (-16-infj) +sub (-0-2j) (16+nanj) (-16+nanj) +sub (-0-2j) (inf-infj) (-inf+infj) +sub (-0-2j) (inf-16j) (-inf+14j) +sub (-0-2j) (inf-2j) (-inf+0j) +sub (-0-2j) (inf-0j) (-inf-2j) +sub (-0-2j) (inf+0j) (-inf-2j) +sub (-0-2j) (inf+2j) (-inf-4j) +sub (-0-2j) (inf+16j) (-inf-18j) +sub (-0-2j) (inf+infj) (-inf-infj) +sub (-0-2j) (inf+nanj) (-inf+nanj) +sub (-0-2j) (nan-infj) (nan+infj) +sub (-0-2j) (nan-16j) (nan+14j) +sub (-0-2j) (nan-2j) (nan+0j) +sub (-0-2j) (nan-0j) (nan-2j) +sub (-0-2j) (nan+0j) (nan-2j) +sub (-0-2j) (nan+2j) (nan-4j) +sub (-0-2j) (nan+16j) (nan-18j) +sub (-0-2j) (nan+infj) (nan-infj) +sub (-0-2j) (nan+nanj) (nan+nanj) +sub (-0-0j) (-inf-infj) (inf+infj) +sub (-0-0j) (-inf-16j) (inf+16j) +sub (-0-0j) (-inf-2j) (inf+2j) +sub (-0-0j) (-inf-0j) (inf+0j) +sub (-0-0j) (-inf+0j) (inf-0j) +sub (-0-0j) (-inf+2j) (inf-2j) +sub (-0-0j) (-inf+16j) (inf-16j) +sub (-0-0j) (-inf+infj) (inf-infj) +sub (-0-0j) (-inf+nanj) (inf+nanj) +sub (-0-0j) (-16-infj) (16+infj) +sub (-0-0j) (-16-16j) (16+16j) +sub (-0-0j) (-16-2j) (16+2j) +sub (-0-0j) (-16-0j) (16+0j) +sub (-0-0j) (-16+0j) (16-0j) +sub (-0-0j) (-16+2j) (16-2j) +sub (-0-0j) (-16+16j) (16-16j) +sub (-0-0j) (-16+infj) (16-infj) +sub (-0-0j) (-16+nanj) (16+nanj) +sub (-0-0j) (-2-infj) (2+infj) +sub (-0-0j) (-2-16j) (2+16j) +sub (-0-0j) (-2-2j) (2+2j) +sub (-0-0j) (-2-0j) (2+0j) +sub (-0-0j) (-2+0j) (2-0j) +sub (-0-0j) (-2+2j) (2-2j) +sub (-0-0j) (-2+16j) (2-16j) +sub (-0-0j) (-2+infj) (2-infj) +sub (-0-0j) (-2+nanj) (2+nanj) +sub (-0-0j) (-0-infj) infj +sub (-0-0j) (-0-16j) 16j +sub (-0-0j) (-0-2j) 2j +sub (-0-0j) (-0-0j) 0j +sub (-0-0j) (-0+0j) -0j +sub (-0-0j) (-0+2j) -2j +sub (-0-0j) (-0+16j) -16j +sub (-0-0j) (-0+infj) -infj +sub (-0-0j) (-0+nanj) nanj +sub (-0-0j) -infj (-0+infj) +sub (-0-0j) -16j (-0+16j) +sub (-0-0j) -2j (-0+2j) +sub (-0-0j) -0j (-0+0j) +sub (-0-0j) 0j (-0-0j) +sub (-0-0j) 2j (-0-2j) +sub (-0-0j) 16j (-0-16j) +sub (-0-0j) infj (-0-infj) +sub (-0-0j) nanj (-0+nanj) +sub (-0-0j) (2-infj) (-2+infj) +sub (-0-0j) (2-16j) (-2+16j) +sub (-0-0j) (2-2j) (-2+2j) +sub (-0-0j) (2-0j) (-2+0j) +sub (-0-0j) (2+0j) (-2-0j) +sub (-0-0j) (2+2j) (-2-2j) +sub (-0-0j) (2+16j) (-2-16j) +sub (-0-0j) (2+infj) (-2-infj) +sub (-0-0j) (2+nanj) (-2+nanj) +sub (-0-0j) (16-infj) (-16+infj) +sub (-0-0j) (16-16j) (-16+16j) +sub (-0-0j) (16-2j) (-16+2j) +sub (-0-0j) (16-0j) (-16+0j) +sub (-0-0j) (16+0j) (-16-0j) +sub (-0-0j) (16+2j) (-16-2j) +sub (-0-0j) (16+16j) (-16-16j) +sub (-0-0j) (16+infj) (-16-infj) +sub (-0-0j) (16+nanj) (-16+nanj) +sub (-0-0j) (inf-infj) (-inf+infj) +sub (-0-0j) (inf-16j) (-inf+16j) +sub (-0-0j) (inf-2j) (-inf+2j) +sub (-0-0j) (inf-0j) (-inf+0j) +sub (-0-0j) (inf+0j) (-inf-0j) +sub (-0-0j) (inf+2j) (-inf-2j) +sub (-0-0j) (inf+16j) (-inf-16j) +sub (-0-0j) (inf+infj) (-inf-infj) +sub (-0-0j) (inf+nanj) (-inf+nanj) +sub (-0-0j) (nan-infj) (nan+infj) +sub (-0-0j) (nan-16j) (nan+16j) +sub (-0-0j) (nan-2j) (nan+2j) +sub (-0-0j) (nan-0j) (nan+0j) +sub (-0-0j) (nan+0j) (nan-0j) +sub (-0-0j) (nan+2j) (nan-2j) +sub (-0-0j) (nan+16j) (nan-16j) +sub (-0-0j) (nan+infj) (nan-infj) +sub (-0-0j) (nan+nanj) (nan+nanj) +sub (-0+0j) (-inf-infj) (inf+infj) +sub (-0+0j) (-inf-16j) (inf+16j) +sub (-0+0j) (-inf-2j) (inf+2j) +sub (-0+0j) (-inf-0j) (inf+0j) +sub (-0+0j) (-inf+0j) (inf+0j) +sub (-0+0j) (-inf+2j) (inf-2j) +sub (-0+0j) (-inf+16j) (inf-16j) +sub (-0+0j) (-inf+infj) (inf-infj) +sub (-0+0j) (-inf+nanj) (inf+nanj) +sub (-0+0j) (-16-infj) (16+infj) +sub (-0+0j) (-16-16j) (16+16j) +sub (-0+0j) (-16-2j) (16+2j) +sub (-0+0j) (-16-0j) (16+0j) +sub (-0+0j) (-16+0j) (16+0j) +sub (-0+0j) (-16+2j) (16-2j) +sub (-0+0j) (-16+16j) (16-16j) +sub (-0+0j) (-16+infj) (16-infj) +sub (-0+0j) (-16+nanj) (16+nanj) +sub (-0+0j) (-2-infj) (2+infj) +sub (-0+0j) (-2-16j) (2+16j) +sub (-0+0j) (-2-2j) (2+2j) +sub (-0+0j) (-2-0j) (2+0j) +sub (-0+0j) (-2+0j) (2+0j) +sub (-0+0j) (-2+2j) (2-2j) +sub (-0+0j) (-2+16j) (2-16j) +sub (-0+0j) (-2+infj) (2-infj) +sub (-0+0j) (-2+nanj) (2+nanj) +sub (-0+0j) (-0-infj) infj +sub (-0+0j) (-0-16j) 16j +sub (-0+0j) (-0-2j) 2j +sub (-0+0j) (-0-0j) 0j +sub (-0+0j) (-0+0j) 0j +sub (-0+0j) (-0+2j) -2j +sub (-0+0j) (-0+16j) -16j +sub (-0+0j) (-0+infj) -infj +sub (-0+0j) (-0+nanj) nanj +sub (-0+0j) -infj (-0+infj) +sub (-0+0j) -16j (-0+16j) +sub (-0+0j) -2j (-0+2j) +sub (-0+0j) -0j (-0+0j) +sub (-0+0j) 0j (-0+0j) +sub (-0+0j) 2j (-0-2j) +sub (-0+0j) 16j (-0-16j) +sub (-0+0j) infj (-0-infj) +sub (-0+0j) nanj (-0+nanj) +sub (-0+0j) (2-infj) (-2+infj) +sub (-0+0j) (2-16j) (-2+16j) +sub (-0+0j) (2-2j) (-2+2j) +sub (-0+0j) (2-0j) (-2+0j) +sub (-0+0j) (2+0j) (-2+0j) +sub (-0+0j) (2+2j) (-2-2j) +sub (-0+0j) (2+16j) (-2-16j) +sub (-0+0j) (2+infj) (-2-infj) +sub (-0+0j) (2+nanj) (-2+nanj) +sub (-0+0j) (16-infj) (-16+infj) +sub (-0+0j) (16-16j) (-16+16j) +sub (-0+0j) (16-2j) (-16+2j) +sub (-0+0j) (16-0j) (-16+0j) +sub (-0+0j) (16+0j) (-16+0j) +sub (-0+0j) (16+2j) (-16-2j) +sub (-0+0j) (16+16j) (-16-16j) +sub (-0+0j) (16+infj) (-16-infj) +sub (-0+0j) (16+nanj) (-16+nanj) +sub (-0+0j) (inf-infj) (-inf+infj) +sub (-0+0j) (inf-16j) (-inf+16j) +sub (-0+0j) (inf-2j) (-inf+2j) +sub (-0+0j) (inf-0j) (-inf+0j) +sub (-0+0j) (inf+0j) (-inf+0j) +sub (-0+0j) (inf+2j) (-inf-2j) +sub (-0+0j) (inf+16j) (-inf-16j) +sub (-0+0j) (inf+infj) (-inf-infj) +sub (-0+0j) (inf+nanj) (-inf+nanj) +sub (-0+0j) (nan-infj) (nan+infj) +sub (-0+0j) (nan-16j) (nan+16j) +sub (-0+0j) (nan-2j) (nan+2j) +sub (-0+0j) (nan-0j) (nan+0j) +sub (-0+0j) (nan+0j) (nan+0j) +sub (-0+0j) (nan+2j) (nan-2j) +sub (-0+0j) (nan+16j) (nan-16j) +sub (-0+0j) (nan+infj) (nan-infj) +sub (-0+0j) (nan+nanj) (nan+nanj) +sub (-0+2j) (-inf-infj) (inf+infj) +sub (-0+2j) (-inf-16j) (inf+18j) +sub (-0+2j) (-inf-2j) (inf+4j) +sub (-0+2j) (-inf-0j) (inf+2j) +sub (-0+2j) (-inf+0j) (inf+2j) +sub (-0+2j) (-inf+2j) (inf+0j) +sub (-0+2j) (-inf+16j) (inf-14j) +sub (-0+2j) (-inf+infj) (inf-infj) +sub (-0+2j) (-inf+nanj) (inf+nanj) +sub (-0+2j) (-16-infj) (16+infj) +sub (-0+2j) (-16-16j) (16+18j) +sub (-0+2j) (-16-2j) (16+4j) +sub (-0+2j) (-16-0j) (16+2j) +sub (-0+2j) (-16+0j) (16+2j) +sub (-0+2j) (-16+2j) (16+0j) +sub (-0+2j) (-16+16j) (16-14j) +sub (-0+2j) (-16+infj) (16-infj) +sub (-0+2j) (-16+nanj) (16+nanj) +sub (-0+2j) (-2-infj) (2+infj) +sub (-0+2j) (-2-16j) (2+18j) +sub (-0+2j) (-2-2j) (2+4j) +sub (-0+2j) (-2-0j) (2+2j) +sub (-0+2j) (-2+0j) (2+2j) +sub (-0+2j) (-2+2j) (2+0j) +sub (-0+2j) (-2+16j) (2-14j) +sub (-0+2j) (-2+infj) (2-infj) +sub (-0+2j) (-2+nanj) (2+nanj) +sub (-0+2j) (-0-infj) infj +sub (-0+2j) (-0-16j) 18j +sub (-0+2j) (-0-2j) 4j +sub (-0+2j) (-0-0j) 2j +sub (-0+2j) (-0+0j) 2j +sub (-0+2j) (-0+2j) 0j +sub (-0+2j) (-0+16j) -14j +sub (-0+2j) (-0+infj) -infj +sub (-0+2j) (-0+nanj) nanj +sub (-0+2j) -infj (-0+infj) +sub (-0+2j) -16j (-0+18j) +sub (-0+2j) -2j (-0+4j) +sub (-0+2j) -0j (-0+2j) +sub (-0+2j) 0j (-0+2j) +sub (-0+2j) 2j (-0+0j) +sub (-0+2j) 16j (-0-14j) +sub (-0+2j) infj (-0-infj) +sub (-0+2j) nanj (-0+nanj) +sub (-0+2j) (2-infj) (-2+infj) +sub (-0+2j) (2-16j) (-2+18j) +sub (-0+2j) (2-2j) (-2+4j) +sub (-0+2j) (2-0j) (-2+2j) +sub (-0+2j) (2+0j) (-2+2j) +sub (-0+2j) (2+2j) (-2+0j) +sub (-0+2j) (2+16j) (-2-14j) +sub (-0+2j) (2+infj) (-2-infj) +sub (-0+2j) (2+nanj) (-2+nanj) +sub (-0+2j) (16-infj) (-16+infj) +sub (-0+2j) (16-16j) (-16+18j) +sub (-0+2j) (16-2j) (-16+4j) +sub (-0+2j) (16-0j) (-16+2j) +sub (-0+2j) (16+0j) (-16+2j) +sub (-0+2j) (16+2j) (-16+0j) +sub (-0+2j) (16+16j) (-16-14j) +sub (-0+2j) (16+infj) (-16-infj) +sub (-0+2j) (16+nanj) (-16+nanj) +sub (-0+2j) (inf-infj) (-inf+infj) +sub (-0+2j) (inf-16j) (-inf+18j) +sub (-0+2j) (inf-2j) (-inf+4j) +sub (-0+2j) (inf-0j) (-inf+2j) +sub (-0+2j) (inf+0j) (-inf+2j) +sub (-0+2j) (inf+2j) (-inf+0j) +sub (-0+2j) (inf+16j) (-inf-14j) +sub (-0+2j) (inf+infj) (-inf-infj) +sub (-0+2j) (inf+nanj) (-inf+nanj) +sub (-0+2j) (nan-infj) (nan+infj) +sub (-0+2j) (nan-16j) (nan+18j) +sub (-0+2j) (nan-2j) (nan+4j) +sub (-0+2j) (nan-0j) (nan+2j) +sub (-0+2j) (nan+0j) (nan+2j) +sub (-0+2j) (nan+2j) (nan+0j) +sub (-0+2j) (nan+16j) (nan-14j) +sub (-0+2j) (nan+infj) (nan-infj) +sub (-0+2j) (nan+nanj) (nan+nanj) +sub (-0+16j) (-inf-infj) (inf+infj) +sub (-0+16j) (-inf-16j) (inf+32j) +sub (-0+16j) (-inf-2j) (inf+18j) +sub (-0+16j) (-inf-0j) (inf+16j) +sub (-0+16j) (-inf+0j) (inf+16j) +sub (-0+16j) (-inf+2j) (inf+14j) +sub (-0+16j) (-inf+16j) (inf+0j) +sub (-0+16j) (-inf+infj) (inf-infj) +sub (-0+16j) (-inf+nanj) (inf+nanj) +sub (-0+16j) (-16-infj) (16+infj) +sub (-0+16j) (-16-16j) (16+32j) +sub (-0+16j) (-16-2j) (16+18j) +sub (-0+16j) (-16-0j) (16+16j) +sub (-0+16j) (-16+0j) (16+16j) +sub (-0+16j) (-16+2j) (16+14j) +sub (-0+16j) (-16+16j) (16+0j) +sub (-0+16j) (-16+infj) (16-infj) +sub (-0+16j) (-16+nanj) (16+nanj) +sub (-0+16j) (-2-infj) (2+infj) +sub (-0+16j) (-2-16j) (2+32j) +sub (-0+16j) (-2-2j) (2+18j) +sub (-0+16j) (-2-0j) (2+16j) +sub (-0+16j) (-2+0j) (2+16j) +sub (-0+16j) (-2+2j) (2+14j) +sub (-0+16j) (-2+16j) (2+0j) +sub (-0+16j) (-2+infj) (2-infj) +sub (-0+16j) (-2+nanj) (2+nanj) +sub (-0+16j) (-0-infj) infj +sub (-0+16j) (-0-16j) 32j +sub (-0+16j) (-0-2j) 18j +sub (-0+16j) (-0-0j) 16j +sub (-0+16j) (-0+0j) 16j +sub (-0+16j) (-0+2j) 14j +sub (-0+16j) (-0+16j) 0j +sub (-0+16j) (-0+infj) -infj +sub (-0+16j) (-0+nanj) nanj +sub (-0+16j) -infj (-0+infj) +sub (-0+16j) -16j (-0+32j) +sub (-0+16j) -2j (-0+18j) +sub (-0+16j) -0j (-0+16j) +sub (-0+16j) 0j (-0+16j) +sub (-0+16j) 2j (-0+14j) +sub (-0+16j) 16j (-0+0j) +sub (-0+16j) infj (-0-infj) +sub (-0+16j) nanj (-0+nanj) +sub (-0+16j) (2-infj) (-2+infj) +sub (-0+16j) (2-16j) (-2+32j) +sub (-0+16j) (2-2j) (-2+18j) +sub (-0+16j) (2-0j) (-2+16j) +sub (-0+16j) (2+0j) (-2+16j) +sub (-0+16j) (2+2j) (-2+14j) +sub (-0+16j) (2+16j) (-2+0j) +sub (-0+16j) (2+infj) (-2-infj) +sub (-0+16j) (2+nanj) (-2+nanj) +sub (-0+16j) (16-infj) (-16+infj) +sub (-0+16j) (16-16j) (-16+32j) +sub (-0+16j) (16-2j) (-16+18j) +sub (-0+16j) (16-0j) (-16+16j) +sub (-0+16j) (16+0j) (-16+16j) +sub (-0+16j) (16+2j) (-16+14j) +sub (-0+16j) (16+16j) (-16+0j) +sub (-0+16j) (16+infj) (-16-infj) +sub (-0+16j) (16+nanj) (-16+nanj) +sub (-0+16j) (inf-infj) (-inf+infj) +sub (-0+16j) (inf-16j) (-inf+32j) +sub (-0+16j) (inf-2j) (-inf+18j) +sub (-0+16j) (inf-0j) (-inf+16j) +sub (-0+16j) (inf+0j) (-inf+16j) +sub (-0+16j) (inf+2j) (-inf+14j) +sub (-0+16j) (inf+16j) (-inf+0j) +sub (-0+16j) (inf+infj) (-inf-infj) +sub (-0+16j) (inf+nanj) (-inf+nanj) +sub (-0+16j) (nan-infj) (nan+infj) +sub (-0+16j) (nan-16j) (nan+32j) +sub (-0+16j) (nan-2j) (nan+18j) +sub (-0+16j) (nan-0j) (nan+16j) +sub (-0+16j) (nan+0j) (nan+16j) +sub (-0+16j) (nan+2j) (nan+14j) +sub (-0+16j) (nan+16j) (nan+0j) +sub (-0+16j) (nan+infj) (nan-infj) +sub (-0+16j) (nan+nanj) (nan+nanj) +sub (-0+infj) (-inf-infj) (inf+infj) +sub (-0+infj) (-inf-16j) (inf+infj) +sub (-0+infj) (-inf-2j) (inf+infj) +sub (-0+infj) (-inf-0j) (inf+infj) +sub (-0+infj) (-inf+0j) (inf+infj) +sub (-0+infj) (-inf+2j) (inf+infj) +sub (-0+infj) (-inf+16j) (inf+infj) +sub (-0+infj) (-inf+infj) (inf+nanj) +sub (-0+infj) (-inf+nanj) (inf+nanj) +sub (-0+infj) (-16-infj) (16+infj) +sub (-0+infj) (-16-16j) (16+infj) +sub (-0+infj) (-16-2j) (16+infj) +sub (-0+infj) (-16-0j) (16+infj) +sub (-0+infj) (-16+0j) (16+infj) +sub (-0+infj) (-16+2j) (16+infj) +sub (-0+infj) (-16+16j) (16+infj) +sub (-0+infj) (-16+infj) (16+nanj) +sub (-0+infj) (-16+nanj) (16+nanj) +sub (-0+infj) (-2-infj) (2+infj) +sub (-0+infj) (-2-16j) (2+infj) +sub (-0+infj) (-2-2j) (2+infj) +sub (-0+infj) (-2-0j) (2+infj) +sub (-0+infj) (-2+0j) (2+infj) +sub (-0+infj) (-2+2j) (2+infj) +sub (-0+infj) (-2+16j) (2+infj) +sub (-0+infj) (-2+infj) (2+nanj) +sub (-0+infj) (-2+nanj) (2+nanj) +sub (-0+infj) (-0-infj) infj +sub (-0+infj) (-0-16j) infj +sub (-0+infj) (-0-2j) infj +sub (-0+infj) (-0-0j) infj +sub (-0+infj) (-0+0j) infj +sub (-0+infj) (-0+2j) infj +sub (-0+infj) (-0+16j) infj +sub (-0+infj) (-0+infj) nanj +sub (-0+infj) (-0+nanj) nanj +sub (-0+infj) -infj (-0+infj) +sub (-0+infj) -16j (-0+infj) +sub (-0+infj) -2j (-0+infj) +sub (-0+infj) -0j (-0+infj) +sub (-0+infj) 0j (-0+infj) +sub (-0+infj) 2j (-0+infj) +sub (-0+infj) 16j (-0+infj) +sub (-0+infj) infj (-0+nanj) +sub (-0+infj) nanj (-0+nanj) +sub (-0+infj) (2-infj) (-2+infj) +sub (-0+infj) (2-16j) (-2+infj) +sub (-0+infj) (2-2j) (-2+infj) +sub (-0+infj) (2-0j) (-2+infj) +sub (-0+infj) (2+0j) (-2+infj) +sub (-0+infj) (2+2j) (-2+infj) +sub (-0+infj) (2+16j) (-2+infj) +sub (-0+infj) (2+infj) (-2+nanj) +sub (-0+infj) (2+nanj) (-2+nanj) +sub (-0+infj) (16-infj) (-16+infj) +sub (-0+infj) (16-16j) (-16+infj) +sub (-0+infj) (16-2j) (-16+infj) +sub (-0+infj) (16-0j) (-16+infj) +sub (-0+infj) (16+0j) (-16+infj) +sub (-0+infj) (16+2j) (-16+infj) +sub (-0+infj) (16+16j) (-16+infj) +sub (-0+infj) (16+infj) (-16+nanj) +sub (-0+infj) (16+nanj) (-16+nanj) +sub (-0+infj) (inf-infj) (-inf+infj) +sub (-0+infj) (inf-16j) (-inf+infj) +sub (-0+infj) (inf-2j) (-inf+infj) +sub (-0+infj) (inf-0j) (-inf+infj) +sub (-0+infj) (inf+0j) (-inf+infj) +sub (-0+infj) (inf+2j) (-inf+infj) +sub (-0+infj) (inf+16j) (-inf+infj) +sub (-0+infj) (inf+infj) (-inf+nanj) +sub (-0+infj) (inf+nanj) (-inf+nanj) +sub (-0+infj) (nan-infj) (nan+infj) +sub (-0+infj) (nan-16j) (nan+infj) +sub (-0+infj) (nan-2j) (nan+infj) +sub (-0+infj) (nan-0j) (nan+infj) +sub (-0+infj) (nan+0j) (nan+infj) +sub (-0+infj) (nan+2j) (nan+infj) +sub (-0+infj) (nan+16j) (nan+infj) +sub (-0+infj) (nan+infj) (nan+nanj) +sub (-0+infj) (nan+nanj) (nan+nanj) +sub (-0+nanj) (-inf-infj) (inf+nanj) +sub (-0+nanj) (-inf-16j) (inf+nanj) +sub (-0+nanj) (-inf-2j) (inf+nanj) +sub (-0+nanj) (-inf-0j) (inf+nanj) +sub (-0+nanj) (-inf+0j) (inf+nanj) +sub (-0+nanj) (-inf+2j) (inf+nanj) +sub (-0+nanj) (-inf+16j) (inf+nanj) +sub (-0+nanj) (-inf+infj) (inf+nanj) +sub (-0+nanj) (-inf+nanj) (inf+nanj) +sub (-0+nanj) (-16-infj) (16+nanj) +sub (-0+nanj) (-16-16j) (16+nanj) +sub (-0+nanj) (-16-2j) (16+nanj) +sub (-0+nanj) (-16-0j) (16+nanj) +sub (-0+nanj) (-16+0j) (16+nanj) +sub (-0+nanj) (-16+2j) (16+nanj) +sub (-0+nanj) (-16+16j) (16+nanj) +sub (-0+nanj) (-16+infj) (16+nanj) +sub (-0+nanj) (-16+nanj) (16+nanj) +sub (-0+nanj) (-2-infj) (2+nanj) +sub (-0+nanj) (-2-16j) (2+nanj) +sub (-0+nanj) (-2-2j) (2+nanj) +sub (-0+nanj) (-2-0j) (2+nanj) +sub (-0+nanj) (-2+0j) (2+nanj) +sub (-0+nanj) (-2+2j) (2+nanj) +sub (-0+nanj) (-2+16j) (2+nanj) +sub (-0+nanj) (-2+infj) (2+nanj) +sub (-0+nanj) (-2+nanj) (2+nanj) +sub (-0+nanj) (-0-infj) nanj +sub (-0+nanj) (-0-16j) nanj +sub (-0+nanj) (-0-2j) nanj +sub (-0+nanj) (-0-0j) nanj +sub (-0+nanj) (-0+0j) nanj +sub (-0+nanj) (-0+2j) nanj +sub (-0+nanj) (-0+16j) nanj +sub (-0+nanj) (-0+infj) nanj +sub (-0+nanj) (-0+nanj) nanj +sub (-0+nanj) -infj (-0+nanj) +sub (-0+nanj) -16j (-0+nanj) +sub (-0+nanj) -2j (-0+nanj) +sub (-0+nanj) -0j (-0+nanj) +sub (-0+nanj) 0j (-0+nanj) +sub (-0+nanj) 2j (-0+nanj) +sub (-0+nanj) 16j (-0+nanj) +sub (-0+nanj) infj (-0+nanj) +sub (-0+nanj) nanj (-0+nanj) +sub (-0+nanj) (2-infj) (-2+nanj) +sub (-0+nanj) (2-16j) (-2+nanj) +sub (-0+nanj) (2-2j) (-2+nanj) +sub (-0+nanj) (2-0j) (-2+nanj) +sub (-0+nanj) (2+0j) (-2+nanj) +sub (-0+nanj) (2+2j) (-2+nanj) +sub (-0+nanj) (2+16j) (-2+nanj) +sub (-0+nanj) (2+infj) (-2+nanj) +sub (-0+nanj) (2+nanj) (-2+nanj) +sub (-0+nanj) (16-infj) (-16+nanj) +sub (-0+nanj) (16-16j) (-16+nanj) +sub (-0+nanj) (16-2j) (-16+nanj) +sub (-0+nanj) (16-0j) (-16+nanj) +sub (-0+nanj) (16+0j) (-16+nanj) +sub (-0+nanj) (16+2j) (-16+nanj) +sub (-0+nanj) (16+16j) (-16+nanj) +sub (-0+nanj) (16+infj) (-16+nanj) +sub (-0+nanj) (16+nanj) (-16+nanj) +sub (-0+nanj) (inf-infj) (-inf+nanj) +sub (-0+nanj) (inf-16j) (-inf+nanj) +sub (-0+nanj) (inf-2j) (-inf+nanj) +sub (-0+nanj) (inf-0j) (-inf+nanj) +sub (-0+nanj) (inf+0j) (-inf+nanj) +sub (-0+nanj) (inf+2j) (-inf+nanj) +sub (-0+nanj) (inf+16j) (-inf+nanj) +sub (-0+nanj) (inf+infj) (-inf+nanj) +sub (-0+nanj) (inf+nanj) (-inf+nanj) +sub (-0+nanj) (nan-infj) (nan+nanj) +sub (-0+nanj) (nan-16j) (nan+nanj) +sub (-0+nanj) (nan-2j) (nan+nanj) +sub (-0+nanj) (nan-0j) (nan+nanj) +sub (-0+nanj) (nan+0j) (nan+nanj) +sub (-0+nanj) (nan+2j) (nan+nanj) +sub (-0+nanj) (nan+16j) (nan+nanj) +sub (-0+nanj) (nan+infj) (nan+nanj) +sub (-0+nanj) (nan+nanj) (nan+nanj) +sub -infj (-inf-infj) (inf+nanj) +sub -infj (-inf-16j) (inf-infj) +sub -infj (-inf-2j) (inf-infj) +sub -infj (-inf-0j) (inf-infj) +sub -infj (-inf+0j) (inf-infj) +sub -infj (-inf+2j) (inf-infj) +sub -infj (-inf+16j) (inf-infj) +sub -infj (-inf+infj) (inf-infj) +sub -infj (-inf+nanj) (inf+nanj) +sub -infj (-16-infj) (16+nanj) +sub -infj (-16-16j) (16-infj) +sub -infj (-16-2j) (16-infj) +sub -infj (-16-0j) (16-infj) +sub -infj (-16+0j) (16-infj) +sub -infj (-16+2j) (16-infj) +sub -infj (-16+16j) (16-infj) +sub -infj (-16+infj) (16-infj) +sub -infj (-16+nanj) (16+nanj) +sub -infj (-2-infj) (2+nanj) +sub -infj (-2-16j) (2-infj) +sub -infj (-2-2j) (2-infj) +sub -infj (-2-0j) (2-infj) +sub -infj (-2+0j) (2-infj) +sub -infj (-2+2j) (2-infj) +sub -infj (-2+16j) (2-infj) +sub -infj (-2+infj) (2-infj) +sub -infj (-2+nanj) (2+nanj) +sub -infj (-0-infj) nanj +sub -infj (-0-16j) -infj +sub -infj (-0-2j) -infj +sub -infj (-0-0j) -infj +sub -infj (-0+0j) -infj +sub -infj (-0+2j) -infj +sub -infj (-0+16j) -infj +sub -infj (-0+infj) -infj +sub -infj (-0+nanj) nanj +sub -infj -infj nanj +sub -infj -16j -infj +sub -infj -2j -infj +sub -infj -0j -infj +sub -infj 0j -infj +sub -infj 2j -infj +sub -infj 16j -infj +sub -infj infj -infj +sub -infj nanj nanj +sub -infj (2-infj) (-2+nanj) +sub -infj (2-16j) (-2-infj) +sub -infj (2-2j) (-2-infj) +sub -infj (2-0j) (-2-infj) +sub -infj (2+0j) (-2-infj) +sub -infj (2+2j) (-2-infj) +sub -infj (2+16j) (-2-infj) +sub -infj (2+infj) (-2-infj) +sub -infj (2+nanj) (-2+nanj) +sub -infj (16-infj) (-16+nanj) +sub -infj (16-16j) (-16-infj) +sub -infj (16-2j) (-16-infj) +sub -infj (16-0j) (-16-infj) +sub -infj (16+0j) (-16-infj) +sub -infj (16+2j) (-16-infj) +sub -infj (16+16j) (-16-infj) +sub -infj (16+infj) (-16-infj) +sub -infj (16+nanj) (-16+nanj) +sub -infj (inf-infj) (-inf+nanj) +sub -infj (inf-16j) (-inf-infj) +sub -infj (inf-2j) (-inf-infj) +sub -infj (inf-0j) (-inf-infj) +sub -infj (inf+0j) (-inf-infj) +sub -infj (inf+2j) (-inf-infj) +sub -infj (inf+16j) (-inf-infj) +sub -infj (inf+infj) (-inf-infj) +sub -infj (inf+nanj) (-inf+nanj) +sub -infj (nan-infj) (nan+nanj) +sub -infj (nan-16j) (nan-infj) +sub -infj (nan-2j) (nan-infj) +sub -infj (nan-0j) (nan-infj) +sub -infj (nan+0j) (nan-infj) +sub -infj (nan+2j) (nan-infj) +sub -infj (nan+16j) (nan-infj) +sub -infj (nan+infj) (nan-infj) +sub -infj (nan+nanj) (nan+nanj) +sub -16j (-inf-infj) (inf+infj) +sub -16j (-inf-16j) (inf+0j) +sub -16j (-inf-2j) (inf-14j) +sub -16j (-inf-0j) (inf-16j) +sub -16j (-inf+0j) (inf-16j) +sub -16j (-inf+2j) (inf-18j) +sub -16j (-inf+16j) (inf-32j) +sub -16j (-inf+infj) (inf-infj) +sub -16j (-inf+nanj) (inf+nanj) +sub -16j (-16-infj) (16+infj) +sub -16j (-16-16j) (16+0j) +sub -16j (-16-2j) (16-14j) +sub -16j (-16-0j) (16-16j) +sub -16j (-16+0j) (16-16j) +sub -16j (-16+2j) (16-18j) +sub -16j (-16+16j) (16-32j) +sub -16j (-16+infj) (16-infj) +sub -16j (-16+nanj) (16+nanj) +sub -16j (-2-infj) (2+infj) +sub -16j (-2-16j) (2+0j) +sub -16j (-2-2j) (2-14j) +sub -16j (-2-0j) (2-16j) +sub -16j (-2+0j) (2-16j) +sub -16j (-2+2j) (2-18j) +sub -16j (-2+16j) (2-32j) +sub -16j (-2+infj) (2-infj) +sub -16j (-2+nanj) (2+nanj) +sub -16j (-0-infj) infj +sub -16j (-0-16j) 0j +sub -16j (-0-2j) -14j +sub -16j (-0-0j) -16j +sub -16j (-0+0j) -16j +sub -16j (-0+2j) -18j +sub -16j (-0+16j) -32j +sub -16j (-0+infj) -infj +sub -16j (-0+nanj) nanj +sub -16j -infj infj +sub -16j -16j 0j +sub -16j -2j -14j +sub -16j -0j -16j +sub -16j 0j -16j +sub -16j 2j -18j +sub -16j 16j -32j +sub -16j infj -infj +sub -16j nanj nanj +sub -16j (2-infj) (-2+infj) +sub -16j (2-16j) (-2+0j) +sub -16j (2-2j) (-2-14j) +sub -16j (2-0j) (-2-16j) +sub -16j (2+0j) (-2-16j) +sub -16j (2+2j) (-2-18j) +sub -16j (2+16j) (-2-32j) +sub -16j (2+infj) (-2-infj) +sub -16j (2+nanj) (-2+nanj) +sub -16j (16-infj) (-16+infj) +sub -16j (16-16j) (-16+0j) +sub -16j (16-2j) (-16-14j) +sub -16j (16-0j) (-16-16j) +sub -16j (16+0j) (-16-16j) +sub -16j (16+2j) (-16-18j) +sub -16j (16+16j) (-16-32j) +sub -16j (16+infj) (-16-infj) +sub -16j (16+nanj) (-16+nanj) +sub -16j (inf-infj) (-inf+infj) +sub -16j (inf-16j) (-inf+0j) +sub -16j (inf-2j) (-inf-14j) +sub -16j (inf-0j) (-inf-16j) +sub -16j (inf+0j) (-inf-16j) +sub -16j (inf+2j) (-inf-18j) +sub -16j (inf+16j) (-inf-32j) +sub -16j (inf+infj) (-inf-infj) +sub -16j (inf+nanj) (-inf+nanj) +sub -16j (nan-infj) (nan+infj) +sub -16j (nan-16j) (nan+0j) +sub -16j (nan-2j) (nan-14j) +sub -16j (nan-0j) (nan-16j) +sub -16j (nan+0j) (nan-16j) +sub -16j (nan+2j) (nan-18j) +sub -16j (nan+16j) (nan-32j) +sub -16j (nan+infj) (nan-infj) +sub -16j (nan+nanj) (nan+nanj) +sub -2j (-inf-infj) (inf+infj) +sub -2j (-inf-16j) (inf+14j) +sub -2j (-inf-2j) (inf+0j) +sub -2j (-inf-0j) (inf-2j) +sub -2j (-inf+0j) (inf-2j) +sub -2j (-inf+2j) (inf-4j) +sub -2j (-inf+16j) (inf-18j) +sub -2j (-inf+infj) (inf-infj) +sub -2j (-inf+nanj) (inf+nanj) +sub -2j (-16-infj) (16+infj) +sub -2j (-16-16j) (16+14j) +sub -2j (-16-2j) (16+0j) +sub -2j (-16-0j) (16-2j) +sub -2j (-16+0j) (16-2j) +sub -2j (-16+2j) (16-4j) +sub -2j (-16+16j) (16-18j) +sub -2j (-16+infj) (16-infj) +sub -2j (-16+nanj) (16+nanj) +sub -2j (-2-infj) (2+infj) +sub -2j (-2-16j) (2+14j) +sub -2j (-2-2j) (2+0j) +sub -2j (-2-0j) (2-2j) +sub -2j (-2+0j) (2-2j) +sub -2j (-2+2j) (2-4j) +sub -2j (-2+16j) (2-18j) +sub -2j (-2+infj) (2-infj) +sub -2j (-2+nanj) (2+nanj) +sub -2j (-0-infj) infj +sub -2j (-0-16j) 14j +sub -2j (-0-2j) 0j +sub -2j (-0-0j) -2j +sub -2j (-0+0j) -2j +sub -2j (-0+2j) -4j +sub -2j (-0+16j) -18j +sub -2j (-0+infj) -infj +sub -2j (-0+nanj) nanj +sub -2j -infj infj +sub -2j -16j 14j +sub -2j -2j 0j +sub -2j -0j -2j +sub -2j 0j -2j +sub -2j 2j -4j +sub -2j 16j -18j +sub -2j infj -infj +sub -2j nanj nanj +sub -2j (2-infj) (-2+infj) +sub -2j (2-16j) (-2+14j) +sub -2j (2-2j) (-2+0j) +sub -2j (2-0j) (-2-2j) +sub -2j (2+0j) (-2-2j) +sub -2j (2+2j) (-2-4j) +sub -2j (2+16j) (-2-18j) +sub -2j (2+infj) (-2-infj) +sub -2j (2+nanj) (-2+nanj) +sub -2j (16-infj) (-16+infj) +sub -2j (16-16j) (-16+14j) +sub -2j (16-2j) (-16+0j) +sub -2j (16-0j) (-16-2j) +sub -2j (16+0j) (-16-2j) +sub -2j (16+2j) (-16-4j) +sub -2j (16+16j) (-16-18j) +sub -2j (16+infj) (-16-infj) +sub -2j (16+nanj) (-16+nanj) +sub -2j (inf-infj) (-inf+infj) +sub -2j (inf-16j) (-inf+14j) +sub -2j (inf-2j) (-inf+0j) +sub -2j (inf-0j) (-inf-2j) +sub -2j (inf+0j) (-inf-2j) +sub -2j (inf+2j) (-inf-4j) +sub -2j (inf+16j) (-inf-18j) +sub -2j (inf+infj) (-inf-infj) +sub -2j (inf+nanj) (-inf+nanj) +sub -2j (nan-infj) (nan+infj) +sub -2j (nan-16j) (nan+14j) +sub -2j (nan-2j) (nan+0j) +sub -2j (nan-0j) (nan-2j) +sub -2j (nan+0j) (nan-2j) +sub -2j (nan+2j) (nan-4j) +sub -2j (nan+16j) (nan-18j) +sub -2j (nan+infj) (nan-infj) +sub -2j (nan+nanj) (nan+nanj) +sub -0j (-inf-infj) (inf+infj) +sub -0j (-inf-16j) (inf+16j) +sub -0j (-inf-2j) (inf+2j) +sub -0j (-inf-0j) (inf+0j) +sub -0j (-inf+0j) (inf-0j) +sub -0j (-inf+2j) (inf-2j) +sub -0j (-inf+16j) (inf-16j) +sub -0j (-inf+infj) (inf-infj) +sub -0j (-inf+nanj) (inf+nanj) +sub -0j (-16-infj) (16+infj) +sub -0j (-16-16j) (16+16j) +sub -0j (-16-2j) (16+2j) +sub -0j (-16-0j) (16+0j) +sub -0j (-16+0j) (16-0j) +sub -0j (-16+2j) (16-2j) +sub -0j (-16+16j) (16-16j) +sub -0j (-16+infj) (16-infj) +sub -0j (-16+nanj) (16+nanj) +sub -0j (-2-infj) (2+infj) +sub -0j (-2-16j) (2+16j) +sub -0j (-2-2j) (2+2j) +sub -0j (-2-0j) (2+0j) +sub -0j (-2+0j) (2-0j) +sub -0j (-2+2j) (2-2j) +sub -0j (-2+16j) (2-16j) +sub -0j (-2+infj) (2-infj) +sub -0j (-2+nanj) (2+nanj) +sub -0j (-0-infj) infj +sub -0j (-0-16j) 16j +sub -0j (-0-2j) 2j +sub -0j (-0-0j) 0j +sub -0j (-0+0j) -0j +sub -0j (-0+2j) -2j +sub -0j (-0+16j) -16j +sub -0j (-0+infj) -infj +sub -0j (-0+nanj) nanj +sub -0j -infj infj +sub -0j -16j 16j +sub -0j -2j 2j +sub -0j -0j 0j +sub -0j 0j -0j +sub -0j 2j -2j +sub -0j 16j -16j +sub -0j infj -infj +sub -0j nanj nanj +sub -0j (2-infj) (-2+infj) +sub -0j (2-16j) (-2+16j) +sub -0j (2-2j) (-2+2j) +sub -0j (2-0j) (-2+0j) +sub -0j (2+0j) (-2-0j) +sub -0j (2+2j) (-2-2j) +sub -0j (2+16j) (-2-16j) +sub -0j (2+infj) (-2-infj) +sub -0j (2+nanj) (-2+nanj) +sub -0j (16-infj) (-16+infj) +sub -0j (16-16j) (-16+16j) +sub -0j (16-2j) (-16+2j) +sub -0j (16-0j) (-16+0j) +sub -0j (16+0j) (-16-0j) +sub -0j (16+2j) (-16-2j) +sub -0j (16+16j) (-16-16j) +sub -0j (16+infj) (-16-infj) +sub -0j (16+nanj) (-16+nanj) +sub -0j (inf-infj) (-inf+infj) +sub -0j (inf-16j) (-inf+16j) +sub -0j (inf-2j) (-inf+2j) +sub -0j (inf-0j) (-inf+0j) +sub -0j (inf+0j) (-inf-0j) +sub -0j (inf+2j) (-inf-2j) +sub -0j (inf+16j) (-inf-16j) +sub -0j (inf+infj) (-inf-infj) +sub -0j (inf+nanj) (-inf+nanj) +sub -0j (nan-infj) (nan+infj) +sub -0j (nan-16j) (nan+16j) +sub -0j (nan-2j) (nan+2j) +sub -0j (nan-0j) (nan+0j) +sub -0j (nan+0j) (nan-0j) +sub -0j (nan+2j) (nan-2j) +sub -0j (nan+16j) (nan-16j) +sub -0j (nan+infj) (nan-infj) +sub -0j (nan+nanj) (nan+nanj) +sub 0j (-inf-infj) (inf+infj) +sub 0j (-inf-16j) (inf+16j) +sub 0j (-inf-2j) (inf+2j) +sub 0j (-inf-0j) (inf+0j) +sub 0j (-inf+0j) (inf+0j) +sub 0j (-inf+2j) (inf-2j) +sub 0j (-inf+16j) (inf-16j) +sub 0j (-inf+infj) (inf-infj) +sub 0j (-inf+nanj) (inf+nanj) +sub 0j (-16-infj) (16+infj) +sub 0j (-16-16j) (16+16j) +sub 0j (-16-2j) (16+2j) +sub 0j (-16-0j) (16+0j) +sub 0j (-16+0j) (16+0j) +sub 0j (-16+2j) (16-2j) +sub 0j (-16+16j) (16-16j) +sub 0j (-16+infj) (16-infj) +sub 0j (-16+nanj) (16+nanj) +sub 0j (-2-infj) (2+infj) +sub 0j (-2-16j) (2+16j) +sub 0j (-2-2j) (2+2j) +sub 0j (-2-0j) (2+0j) +sub 0j (-2+0j) (2+0j) +sub 0j (-2+2j) (2-2j) +sub 0j (-2+16j) (2-16j) +sub 0j (-2+infj) (2-infj) +sub 0j (-2+nanj) (2+nanj) +sub 0j (-0-infj) infj +sub 0j (-0-16j) 16j +sub 0j (-0-2j) 2j +sub 0j (-0-0j) 0j +sub 0j (-0+0j) 0j +sub 0j (-0+2j) -2j +sub 0j (-0+16j) -16j +sub 0j (-0+infj) -infj +sub 0j (-0+nanj) nanj +sub 0j -infj infj +sub 0j -16j 16j +sub 0j -2j 2j +sub 0j -0j 0j +sub 0j 0j 0j +sub 0j 2j -2j +sub 0j 16j -16j +sub 0j infj -infj +sub 0j nanj nanj +sub 0j (2-infj) (-2+infj) +sub 0j (2-16j) (-2+16j) +sub 0j (2-2j) (-2+2j) +sub 0j (2-0j) (-2+0j) +sub 0j (2+0j) (-2+0j) +sub 0j (2+2j) (-2-2j) +sub 0j (2+16j) (-2-16j) +sub 0j (2+infj) (-2-infj) +sub 0j (2+nanj) (-2+nanj) +sub 0j (16-infj) (-16+infj) +sub 0j (16-16j) (-16+16j) +sub 0j (16-2j) (-16+2j) +sub 0j (16-0j) (-16+0j) +sub 0j (16+0j) (-16+0j) +sub 0j (16+2j) (-16-2j) +sub 0j (16+16j) (-16-16j) +sub 0j (16+infj) (-16-infj) +sub 0j (16+nanj) (-16+nanj) +sub 0j (inf-infj) (-inf+infj) +sub 0j (inf-16j) (-inf+16j) +sub 0j (inf-2j) (-inf+2j) +sub 0j (inf-0j) (-inf+0j) +sub 0j (inf+0j) (-inf+0j) +sub 0j (inf+2j) (-inf-2j) +sub 0j (inf+16j) (-inf-16j) +sub 0j (inf+infj) (-inf-infj) +sub 0j (inf+nanj) (-inf+nanj) +sub 0j (nan-infj) (nan+infj) +sub 0j (nan-16j) (nan+16j) +sub 0j (nan-2j) (nan+2j) +sub 0j (nan-0j) (nan+0j) +sub 0j (nan+0j) (nan+0j) +sub 0j (nan+2j) (nan-2j) +sub 0j (nan+16j) (nan-16j) +sub 0j (nan+infj) (nan-infj) +sub 0j (nan+nanj) (nan+nanj) +sub 2j (-inf-infj) (inf+infj) +sub 2j (-inf-16j) (inf+18j) +sub 2j (-inf-2j) (inf+4j) +sub 2j (-inf-0j) (inf+2j) +sub 2j (-inf+0j) (inf+2j) +sub 2j (-inf+2j) (inf+0j) +sub 2j (-inf+16j) (inf-14j) +sub 2j (-inf+infj) (inf-infj) +sub 2j (-inf+nanj) (inf+nanj) +sub 2j (-16-infj) (16+infj) +sub 2j (-16-16j) (16+18j) +sub 2j (-16-2j) (16+4j) +sub 2j (-16-0j) (16+2j) +sub 2j (-16+0j) (16+2j) +sub 2j (-16+2j) (16+0j) +sub 2j (-16+16j) (16-14j) +sub 2j (-16+infj) (16-infj) +sub 2j (-16+nanj) (16+nanj) +sub 2j (-2-infj) (2+infj) +sub 2j (-2-16j) (2+18j) +sub 2j (-2-2j) (2+4j) +sub 2j (-2-0j) (2+2j) +sub 2j (-2+0j) (2+2j) +sub 2j (-2+2j) (2+0j) +sub 2j (-2+16j) (2-14j) +sub 2j (-2+infj) (2-infj) +sub 2j (-2+nanj) (2+nanj) +sub 2j (-0-infj) infj +sub 2j (-0-16j) 18j +sub 2j (-0-2j) 4j +sub 2j (-0-0j) 2j +sub 2j (-0+0j) 2j +sub 2j (-0+2j) 0j +sub 2j (-0+16j) -14j +sub 2j (-0+infj) -infj +sub 2j (-0+nanj) nanj +sub 2j -infj infj +sub 2j -16j 18j +sub 2j -2j 4j +sub 2j -0j 2j +sub 2j 0j 2j +sub 2j 2j 0j +sub 2j 16j -14j +sub 2j infj -infj +sub 2j nanj nanj +sub 2j (2-infj) (-2+infj) +sub 2j (2-16j) (-2+18j) +sub 2j (2-2j) (-2+4j) +sub 2j (2-0j) (-2+2j) +sub 2j (2+0j) (-2+2j) +sub 2j (2+2j) (-2+0j) +sub 2j (2+16j) (-2-14j) +sub 2j (2+infj) (-2-infj) +sub 2j (2+nanj) (-2+nanj) +sub 2j (16-infj) (-16+infj) +sub 2j (16-16j) (-16+18j) +sub 2j (16-2j) (-16+4j) +sub 2j (16-0j) (-16+2j) +sub 2j (16+0j) (-16+2j) +sub 2j (16+2j) (-16+0j) +sub 2j (16+16j) (-16-14j) +sub 2j (16+infj) (-16-infj) +sub 2j (16+nanj) (-16+nanj) +sub 2j (inf-infj) (-inf+infj) +sub 2j (inf-16j) (-inf+18j) +sub 2j (inf-2j) (-inf+4j) +sub 2j (inf-0j) (-inf+2j) +sub 2j (inf+0j) (-inf+2j) +sub 2j (inf+2j) (-inf+0j) +sub 2j (inf+16j) (-inf-14j) +sub 2j (inf+infj) (-inf-infj) +sub 2j (inf+nanj) (-inf+nanj) +sub 2j (nan-infj) (nan+infj) +sub 2j (nan-16j) (nan+18j) +sub 2j (nan-2j) (nan+4j) +sub 2j (nan-0j) (nan+2j) +sub 2j (nan+0j) (nan+2j) +sub 2j (nan+2j) (nan+0j) +sub 2j (nan+16j) (nan-14j) +sub 2j (nan+infj) (nan-infj) +sub 2j (nan+nanj) (nan+nanj) +sub 16j (-inf-infj) (inf+infj) +sub 16j (-inf-16j) (inf+32j) +sub 16j (-inf-2j) (inf+18j) +sub 16j (-inf-0j) (inf+16j) +sub 16j (-inf+0j) (inf+16j) +sub 16j (-inf+2j) (inf+14j) +sub 16j (-inf+16j) (inf+0j) +sub 16j (-inf+infj) (inf-infj) +sub 16j (-inf+nanj) (inf+nanj) +sub 16j (-16-infj) (16+infj) +sub 16j (-16-16j) (16+32j) +sub 16j (-16-2j) (16+18j) +sub 16j (-16-0j) (16+16j) +sub 16j (-16+0j) (16+16j) +sub 16j (-16+2j) (16+14j) +sub 16j (-16+16j) (16+0j) +sub 16j (-16+infj) (16-infj) +sub 16j (-16+nanj) (16+nanj) +sub 16j (-2-infj) (2+infj) +sub 16j (-2-16j) (2+32j) +sub 16j (-2-2j) (2+18j) +sub 16j (-2-0j) (2+16j) +sub 16j (-2+0j) (2+16j) +sub 16j (-2+2j) (2+14j) +sub 16j (-2+16j) (2+0j) +sub 16j (-2+infj) (2-infj) +sub 16j (-2+nanj) (2+nanj) +sub 16j (-0-infj) infj +sub 16j (-0-16j) 32j +sub 16j (-0-2j) 18j +sub 16j (-0-0j) 16j +sub 16j (-0+0j) 16j +sub 16j (-0+2j) 14j +sub 16j (-0+16j) 0j +sub 16j (-0+infj) -infj +sub 16j (-0+nanj) nanj +sub 16j -infj infj +sub 16j -16j 32j +sub 16j -2j 18j +sub 16j -0j 16j +sub 16j 0j 16j +sub 16j 2j 14j +sub 16j 16j 0j +sub 16j infj -infj +sub 16j nanj nanj +sub 16j (2-infj) (-2+infj) +sub 16j (2-16j) (-2+32j) +sub 16j (2-2j) (-2+18j) +sub 16j (2-0j) (-2+16j) +sub 16j (2+0j) (-2+16j) +sub 16j (2+2j) (-2+14j) +sub 16j (2+16j) (-2+0j) +sub 16j (2+infj) (-2-infj) +sub 16j (2+nanj) (-2+nanj) +sub 16j (16-infj) (-16+infj) +sub 16j (16-16j) (-16+32j) +sub 16j (16-2j) (-16+18j) +sub 16j (16-0j) (-16+16j) +sub 16j (16+0j) (-16+16j) +sub 16j (16+2j) (-16+14j) +sub 16j (16+16j) (-16+0j) +sub 16j (16+infj) (-16-infj) +sub 16j (16+nanj) (-16+nanj) +sub 16j (inf-infj) (-inf+infj) +sub 16j (inf-16j) (-inf+32j) +sub 16j (inf-2j) (-inf+18j) +sub 16j (inf-0j) (-inf+16j) +sub 16j (inf+0j) (-inf+16j) +sub 16j (inf+2j) (-inf+14j) +sub 16j (inf+16j) (-inf+0j) +sub 16j (inf+infj) (-inf-infj) +sub 16j (inf+nanj) (-inf+nanj) +sub 16j (nan-infj) (nan+infj) +sub 16j (nan-16j) (nan+32j) +sub 16j (nan-2j) (nan+18j) +sub 16j (nan-0j) (nan+16j) +sub 16j (nan+0j) (nan+16j) +sub 16j (nan+2j) (nan+14j) +sub 16j (nan+16j) (nan+0j) +sub 16j (nan+infj) (nan-infj) +sub 16j (nan+nanj) (nan+nanj) +sub infj (-inf-infj) (inf+infj) +sub infj (-inf-16j) (inf+infj) +sub infj (-inf-2j) (inf+infj) +sub infj (-inf-0j) (inf+infj) +sub infj (-inf+0j) (inf+infj) +sub infj (-inf+2j) (inf+infj) +sub infj (-inf+16j) (inf+infj) +sub infj (-inf+infj) (inf+nanj) +sub infj (-inf+nanj) (inf+nanj) +sub infj (-16-infj) (16+infj) +sub infj (-16-16j) (16+infj) +sub infj (-16-2j) (16+infj) +sub infj (-16-0j) (16+infj) +sub infj (-16+0j) (16+infj) +sub infj (-16+2j) (16+infj) +sub infj (-16+16j) (16+infj) +sub infj (-16+infj) (16+nanj) +sub infj (-16+nanj) (16+nanj) +sub infj (-2-infj) (2+infj) +sub infj (-2-16j) (2+infj) +sub infj (-2-2j) (2+infj) +sub infj (-2-0j) (2+infj) +sub infj (-2+0j) (2+infj) +sub infj (-2+2j) (2+infj) +sub infj (-2+16j) (2+infj) +sub infj (-2+infj) (2+nanj) +sub infj (-2+nanj) (2+nanj) +sub infj (-0-infj) infj +sub infj (-0-16j) infj +sub infj (-0-2j) infj +sub infj (-0-0j) infj +sub infj (-0+0j) infj +sub infj (-0+2j) infj +sub infj (-0+16j) infj +sub infj (-0+infj) nanj +sub infj (-0+nanj) nanj +sub infj -infj infj +sub infj -16j infj +sub infj -2j infj +sub infj -0j infj +sub infj 0j infj +sub infj 2j infj +sub infj 16j infj +sub infj infj nanj +sub infj nanj nanj +sub infj (2-infj) (-2+infj) +sub infj (2-16j) (-2+infj) +sub infj (2-2j) (-2+infj) +sub infj (2-0j) (-2+infj) +sub infj (2+0j) (-2+infj) +sub infj (2+2j) (-2+infj) +sub infj (2+16j) (-2+infj) +sub infj (2+infj) (-2+nanj) +sub infj (2+nanj) (-2+nanj) +sub infj (16-infj) (-16+infj) +sub infj (16-16j) (-16+infj) +sub infj (16-2j) (-16+infj) +sub infj (16-0j) (-16+infj) +sub infj (16+0j) (-16+infj) +sub infj (16+2j) (-16+infj) +sub infj (16+16j) (-16+infj) +sub infj (16+infj) (-16+nanj) +sub infj (16+nanj) (-16+nanj) +sub infj (inf-infj) (-inf+infj) +sub infj (inf-16j) (-inf+infj) +sub infj (inf-2j) (-inf+infj) +sub infj (inf-0j) (-inf+infj) +sub infj (inf+0j) (-inf+infj) +sub infj (inf+2j) (-inf+infj) +sub infj (inf+16j) (-inf+infj) +sub infj (inf+infj) (-inf+nanj) +sub infj (inf+nanj) (-inf+nanj) +sub infj (nan-infj) (nan+infj) +sub infj (nan-16j) (nan+infj) +sub infj (nan-2j) (nan+infj) +sub infj (nan-0j) (nan+infj) +sub infj (nan+0j) (nan+infj) +sub infj (nan+2j) (nan+infj) +sub infj (nan+16j) (nan+infj) +sub infj (nan+infj) (nan+nanj) +sub infj (nan+nanj) (nan+nanj) +sub nanj (-inf-infj) (inf+nanj) +sub nanj (-inf-16j) (inf+nanj) +sub nanj (-inf-2j) (inf+nanj) +sub nanj (-inf-0j) (inf+nanj) +sub nanj (-inf+0j) (inf+nanj) +sub nanj (-inf+2j) (inf+nanj) +sub nanj (-inf+16j) (inf+nanj) +sub nanj (-inf+infj) (inf+nanj) +sub nanj (-inf+nanj) (inf+nanj) +sub nanj (-16-infj) (16+nanj) +sub nanj (-16-16j) (16+nanj) +sub nanj (-16-2j) (16+nanj) +sub nanj (-16-0j) (16+nanj) +sub nanj (-16+0j) (16+nanj) +sub nanj (-16+2j) (16+nanj) +sub nanj (-16+16j) (16+nanj) +sub nanj (-16+infj) (16+nanj) +sub nanj (-16+nanj) (16+nanj) +sub nanj (-2-infj) (2+nanj) +sub nanj (-2-16j) (2+nanj) +sub nanj (-2-2j) (2+nanj) +sub nanj (-2-0j) (2+nanj) +sub nanj (-2+0j) (2+nanj) +sub nanj (-2+2j) (2+nanj) +sub nanj (-2+16j) (2+nanj) +sub nanj (-2+infj) (2+nanj) +sub nanj (-2+nanj) (2+nanj) +sub nanj (-0-infj) nanj +sub nanj (-0-16j) nanj +sub nanj (-0-2j) nanj +sub nanj (-0-0j) nanj +sub nanj (-0+0j) nanj +sub nanj (-0+2j) nanj +sub nanj (-0+16j) nanj +sub nanj (-0+infj) nanj +sub nanj (-0+nanj) nanj +sub nanj -infj nanj +sub nanj -16j nanj +sub nanj -2j nanj +sub nanj -0j nanj +sub nanj 0j nanj +sub nanj 2j nanj +sub nanj 16j nanj +sub nanj infj nanj +sub nanj nanj nanj +sub nanj (2-infj) (-2+nanj) +sub nanj (2-16j) (-2+nanj) +sub nanj (2-2j) (-2+nanj) +sub nanj (2-0j) (-2+nanj) +sub nanj (2+0j) (-2+nanj) +sub nanj (2+2j) (-2+nanj) +sub nanj (2+16j) (-2+nanj) +sub nanj (2+infj) (-2+nanj) +sub nanj (2+nanj) (-2+nanj) +sub nanj (16-infj) (-16+nanj) +sub nanj (16-16j) (-16+nanj) +sub nanj (16-2j) (-16+nanj) +sub nanj (16-0j) (-16+nanj) +sub nanj (16+0j) (-16+nanj) +sub nanj (16+2j) (-16+nanj) +sub nanj (16+16j) (-16+nanj) +sub nanj (16+infj) (-16+nanj) +sub nanj (16+nanj) (-16+nanj) +sub nanj (inf-infj) (-inf+nanj) +sub nanj (inf-16j) (-inf+nanj) +sub nanj (inf-2j) (-inf+nanj) +sub nanj (inf-0j) (-inf+nanj) +sub nanj (inf+0j) (-inf+nanj) +sub nanj (inf+2j) (-inf+nanj) +sub nanj (inf+16j) (-inf+nanj) +sub nanj (inf+infj) (-inf+nanj) +sub nanj (inf+nanj) (-inf+nanj) +sub nanj (nan-infj) (nan+nanj) +sub nanj (nan-16j) (nan+nanj) +sub nanj (nan-2j) (nan+nanj) +sub nanj (nan-0j) (nan+nanj) +sub nanj (nan+0j) (nan+nanj) +sub nanj (nan+2j) (nan+nanj) +sub nanj (nan+16j) (nan+nanj) +sub nanj (nan+infj) (nan+nanj) +sub nanj (nan+nanj) (nan+nanj) +sub (2-infj) (-inf-infj) (inf+nanj) +sub (2-infj) (-inf-16j) (inf-infj) +sub (2-infj) (-inf-2j) (inf-infj) +sub (2-infj) (-inf-0j) (inf-infj) +sub (2-infj) (-inf+0j) (inf-infj) +sub (2-infj) (-inf+2j) (inf-infj) +sub (2-infj) (-inf+16j) (inf-infj) +sub (2-infj) (-inf+infj) (inf-infj) +sub (2-infj) (-inf+nanj) (inf+nanj) +sub (2-infj) (-16-infj) (18+nanj) +sub (2-infj) (-16-16j) (18-infj) +sub (2-infj) (-16-2j) (18-infj) +sub (2-infj) (-16-0j) (18-infj) +sub (2-infj) (-16+0j) (18-infj) +sub (2-infj) (-16+2j) (18-infj) +sub (2-infj) (-16+16j) (18-infj) +sub (2-infj) (-16+infj) (18-infj) +sub (2-infj) (-16+nanj) (18+nanj) +sub (2-infj) (-2-infj) (4+nanj) +sub (2-infj) (-2-16j) (4-infj) +sub (2-infj) (-2-2j) (4-infj) +sub (2-infj) (-2-0j) (4-infj) +sub (2-infj) (-2+0j) (4-infj) +sub (2-infj) (-2+2j) (4-infj) +sub (2-infj) (-2+16j) (4-infj) +sub (2-infj) (-2+infj) (4-infj) +sub (2-infj) (-2+nanj) (4+nanj) +sub (2-infj) (-0-infj) (2+nanj) +sub (2-infj) (-0-16j) (2-infj) +sub (2-infj) (-0-2j) (2-infj) +sub (2-infj) (-0-0j) (2-infj) +sub (2-infj) (-0+0j) (2-infj) +sub (2-infj) (-0+2j) (2-infj) +sub (2-infj) (-0+16j) (2-infj) +sub (2-infj) (-0+infj) (2-infj) +sub (2-infj) (-0+nanj) (2+nanj) +sub (2-infj) -infj (2+nanj) +sub (2-infj) -16j (2-infj) +sub (2-infj) -2j (2-infj) +sub (2-infj) -0j (2-infj) +sub (2-infj) 0j (2-infj) +sub (2-infj) 2j (2-infj) +sub (2-infj) 16j (2-infj) +sub (2-infj) infj (2-infj) +sub (2-infj) nanj (2+nanj) +sub (2-infj) (2-infj) nanj +sub (2-infj) (2-16j) -infj +sub (2-infj) (2-2j) -infj +sub (2-infj) (2-0j) -infj +sub (2-infj) (2+0j) -infj +sub (2-infj) (2+2j) -infj +sub (2-infj) (2+16j) -infj +sub (2-infj) (2+infj) -infj +sub (2-infj) (2+nanj) nanj +sub (2-infj) (16-infj) (-14+nanj) +sub (2-infj) (16-16j) (-14-infj) +sub (2-infj) (16-2j) (-14-infj) +sub (2-infj) (16-0j) (-14-infj) +sub (2-infj) (16+0j) (-14-infj) +sub (2-infj) (16+2j) (-14-infj) +sub (2-infj) (16+16j) (-14-infj) +sub (2-infj) (16+infj) (-14-infj) +sub (2-infj) (16+nanj) (-14+nanj) +sub (2-infj) (inf-infj) (-inf+nanj) +sub (2-infj) (inf-16j) (-inf-infj) +sub (2-infj) (inf-2j) (-inf-infj) +sub (2-infj) (inf-0j) (-inf-infj) +sub (2-infj) (inf+0j) (-inf-infj) +sub (2-infj) (inf+2j) (-inf-infj) +sub (2-infj) (inf+16j) (-inf-infj) +sub (2-infj) (inf+infj) (-inf-infj) +sub (2-infj) (inf+nanj) (-inf+nanj) +sub (2-infj) (nan-infj) (nan+nanj) +sub (2-infj) (nan-16j) (nan-infj) +sub (2-infj) (nan-2j) (nan-infj) +sub (2-infj) (nan-0j) (nan-infj) +sub (2-infj) (nan+0j) (nan-infj) +sub (2-infj) (nan+2j) (nan-infj) +sub (2-infj) (nan+16j) (nan-infj) +sub (2-infj) (nan+infj) (nan-infj) +sub (2-infj) (nan+nanj) (nan+nanj) +sub (2-16j) (-inf-infj) (inf+infj) +sub (2-16j) (-inf-16j) (inf+0j) +sub (2-16j) (-inf-2j) (inf-14j) +sub (2-16j) (-inf-0j) (inf-16j) +sub (2-16j) (-inf+0j) (inf-16j) +sub (2-16j) (-inf+2j) (inf-18j) +sub (2-16j) (-inf+16j) (inf-32j) +sub (2-16j) (-inf+infj) (inf-infj) +sub (2-16j) (-inf+nanj) (inf+nanj) +sub (2-16j) (-16-infj) (18+infj) +sub (2-16j) (-16-16j) (18+0j) +sub (2-16j) (-16-2j) (18-14j) +sub (2-16j) (-16-0j) (18-16j) +sub (2-16j) (-16+0j) (18-16j) +sub (2-16j) (-16+2j) (18-18j) +sub (2-16j) (-16+16j) (18-32j) +sub (2-16j) (-16+infj) (18-infj) +sub (2-16j) (-16+nanj) (18+nanj) +sub (2-16j) (-2-infj) (4+infj) +sub (2-16j) (-2-16j) (4+0j) +sub (2-16j) (-2-2j) (4-14j) +sub (2-16j) (-2-0j) (4-16j) +sub (2-16j) (-2+0j) (4-16j) +sub (2-16j) (-2+2j) (4-18j) +sub (2-16j) (-2+16j) (4-32j) +sub (2-16j) (-2+infj) (4-infj) +sub (2-16j) (-2+nanj) (4+nanj) +sub (2-16j) (-0-infj) (2+infj) +sub (2-16j) (-0-16j) (2+0j) +sub (2-16j) (-0-2j) (2-14j) +sub (2-16j) (-0-0j) (2-16j) +sub (2-16j) (-0+0j) (2-16j) +sub (2-16j) (-0+2j) (2-18j) +sub (2-16j) (-0+16j) (2-32j) +sub (2-16j) (-0+infj) (2-infj) +sub (2-16j) (-0+nanj) (2+nanj) +sub (2-16j) -infj (2+infj) +sub (2-16j) -16j (2+0j) +sub (2-16j) -2j (2-14j) +sub (2-16j) -0j (2-16j) +sub (2-16j) 0j (2-16j) +sub (2-16j) 2j (2-18j) +sub (2-16j) 16j (2-32j) +sub (2-16j) infj (2-infj) +sub (2-16j) nanj (2+nanj) +sub (2-16j) (2-infj) infj +sub (2-16j) (2-16j) 0j +sub (2-16j) (2-2j) -14j +sub (2-16j) (2-0j) -16j +sub (2-16j) (2+0j) -16j +sub (2-16j) (2+2j) -18j +sub (2-16j) (2+16j) -32j +sub (2-16j) (2+infj) -infj +sub (2-16j) (2+nanj) nanj +sub (2-16j) (16-infj) (-14+infj) +sub (2-16j) (16-16j) (-14+0j) +sub (2-16j) (16-2j) (-14-14j) +sub (2-16j) (16-0j) (-14-16j) +sub (2-16j) (16+0j) (-14-16j) +sub (2-16j) (16+2j) (-14-18j) +sub (2-16j) (16+16j) (-14-32j) +sub (2-16j) (16+infj) (-14-infj) +sub (2-16j) (16+nanj) (-14+nanj) +sub (2-16j) (inf-infj) (-inf+infj) +sub (2-16j) (inf-16j) (-inf+0j) +sub (2-16j) (inf-2j) (-inf-14j) +sub (2-16j) (inf-0j) (-inf-16j) +sub (2-16j) (inf+0j) (-inf-16j) +sub (2-16j) (inf+2j) (-inf-18j) +sub (2-16j) (inf+16j) (-inf-32j) +sub (2-16j) (inf+infj) (-inf-infj) +sub (2-16j) (inf+nanj) (-inf+nanj) +sub (2-16j) (nan-infj) (nan+infj) +sub (2-16j) (nan-16j) (nan+0j) +sub (2-16j) (nan-2j) (nan-14j) +sub (2-16j) (nan-0j) (nan-16j) +sub (2-16j) (nan+0j) (nan-16j) +sub (2-16j) (nan+2j) (nan-18j) +sub (2-16j) (nan+16j) (nan-32j) +sub (2-16j) (nan+infj) (nan-infj) +sub (2-16j) (nan+nanj) (nan+nanj) +sub (2-2j) (-inf-infj) (inf+infj) +sub (2-2j) (-inf-16j) (inf+14j) +sub (2-2j) (-inf-2j) (inf+0j) +sub (2-2j) (-inf-0j) (inf-2j) +sub (2-2j) (-inf+0j) (inf-2j) +sub (2-2j) (-inf+2j) (inf-4j) +sub (2-2j) (-inf+16j) (inf-18j) +sub (2-2j) (-inf+infj) (inf-infj) +sub (2-2j) (-inf+nanj) (inf+nanj) +sub (2-2j) (-16-infj) (18+infj) +sub (2-2j) (-16-16j) (18+14j) +sub (2-2j) (-16-2j) (18+0j) +sub (2-2j) (-16-0j) (18-2j) +sub (2-2j) (-16+0j) (18-2j) +sub (2-2j) (-16+2j) (18-4j) +sub (2-2j) (-16+16j) (18-18j) +sub (2-2j) (-16+infj) (18-infj) +sub (2-2j) (-16+nanj) (18+nanj) +sub (2-2j) (-2-infj) (4+infj) +sub (2-2j) (-2-16j) (4+14j) +sub (2-2j) (-2-2j) (4+0j) +sub (2-2j) (-2-0j) (4-2j) +sub (2-2j) (-2+0j) (4-2j) +sub (2-2j) (-2+2j) (4-4j) +sub (2-2j) (-2+16j) (4-18j) +sub (2-2j) (-2+infj) (4-infj) +sub (2-2j) (-2+nanj) (4+nanj) +sub (2-2j) (-0-infj) (2+infj) +sub (2-2j) (-0-16j) (2+14j) +sub (2-2j) (-0-2j) (2+0j) +sub (2-2j) (-0-0j) (2-2j) +sub (2-2j) (-0+0j) (2-2j) +sub (2-2j) (-0+2j) (2-4j) +sub (2-2j) (-0+16j) (2-18j) +sub (2-2j) (-0+infj) (2-infj) +sub (2-2j) (-0+nanj) (2+nanj) +sub (2-2j) -infj (2+infj) +sub (2-2j) -16j (2+14j) +sub (2-2j) -2j (2+0j) +sub (2-2j) -0j (2-2j) +sub (2-2j) 0j (2-2j) +sub (2-2j) 2j (2-4j) +sub (2-2j) 16j (2-18j) +sub (2-2j) infj (2-infj) +sub (2-2j) nanj (2+nanj) +sub (2-2j) (2-infj) infj +sub (2-2j) (2-16j) 14j +sub (2-2j) (2-2j) 0j +sub (2-2j) (2-0j) -2j +sub (2-2j) (2+0j) -2j +sub (2-2j) (2+2j) -4j +sub (2-2j) (2+16j) -18j +sub (2-2j) (2+infj) -infj +sub (2-2j) (2+nanj) nanj +sub (2-2j) (16-infj) (-14+infj) +sub (2-2j) (16-16j) (-14+14j) +sub (2-2j) (16-2j) (-14+0j) +sub (2-2j) (16-0j) (-14-2j) +sub (2-2j) (16+0j) (-14-2j) +sub (2-2j) (16+2j) (-14-4j) +sub (2-2j) (16+16j) (-14-18j) +sub (2-2j) (16+infj) (-14-infj) +sub (2-2j) (16+nanj) (-14+nanj) +sub (2-2j) (inf-infj) (-inf+infj) +sub (2-2j) (inf-16j) (-inf+14j) +sub (2-2j) (inf-2j) (-inf+0j) +sub (2-2j) (inf-0j) (-inf-2j) +sub (2-2j) (inf+0j) (-inf-2j) +sub (2-2j) (inf+2j) (-inf-4j) +sub (2-2j) (inf+16j) (-inf-18j) +sub (2-2j) (inf+infj) (-inf-infj) +sub (2-2j) (inf+nanj) (-inf+nanj) +sub (2-2j) (nan-infj) (nan+infj) +sub (2-2j) (nan-16j) (nan+14j) +sub (2-2j) (nan-2j) (nan+0j) +sub (2-2j) (nan-0j) (nan-2j) +sub (2-2j) (nan+0j) (nan-2j) +sub (2-2j) (nan+2j) (nan-4j) +sub (2-2j) (nan+16j) (nan-18j) +sub (2-2j) (nan+infj) (nan-infj) +sub (2-2j) (nan+nanj) (nan+nanj) +sub (2-0j) (-inf-infj) (inf+infj) +sub (2-0j) (-inf-16j) (inf+16j) +sub (2-0j) (-inf-2j) (inf+2j) +sub (2-0j) (-inf-0j) (inf+0j) +sub (2-0j) (-inf+0j) (inf-0j) +sub (2-0j) (-inf+2j) (inf-2j) +sub (2-0j) (-inf+16j) (inf-16j) +sub (2-0j) (-inf+infj) (inf-infj) +sub (2-0j) (-inf+nanj) (inf+nanj) +sub (2-0j) (-16-infj) (18+infj) +sub (2-0j) (-16-16j) (18+16j) +sub (2-0j) (-16-2j) (18+2j) +sub (2-0j) (-16-0j) (18+0j) +sub (2-0j) (-16+0j) (18-0j) +sub (2-0j) (-16+2j) (18-2j) +sub (2-0j) (-16+16j) (18-16j) +sub (2-0j) (-16+infj) (18-infj) +sub (2-0j) (-16+nanj) (18+nanj) +sub (2-0j) (-2-infj) (4+infj) +sub (2-0j) (-2-16j) (4+16j) +sub (2-0j) (-2-2j) (4+2j) +sub (2-0j) (-2-0j) (4+0j) +sub (2-0j) (-2+0j) (4-0j) +sub (2-0j) (-2+2j) (4-2j) +sub (2-0j) (-2+16j) (4-16j) +sub (2-0j) (-2+infj) (4-infj) +sub (2-0j) (-2+nanj) (4+nanj) +sub (2-0j) (-0-infj) (2+infj) +sub (2-0j) (-0-16j) (2+16j) +sub (2-0j) (-0-2j) (2+2j) +sub (2-0j) (-0-0j) (2+0j) +sub (2-0j) (-0+0j) (2-0j) +sub (2-0j) (-0+2j) (2-2j) +sub (2-0j) (-0+16j) (2-16j) +sub (2-0j) (-0+infj) (2-infj) +sub (2-0j) (-0+nanj) (2+nanj) +sub (2-0j) -infj (2+infj) +sub (2-0j) -16j (2+16j) +sub (2-0j) -2j (2+2j) +sub (2-0j) -0j (2+0j) +sub (2-0j) 0j (2-0j) +sub (2-0j) 2j (2-2j) +sub (2-0j) 16j (2-16j) +sub (2-0j) infj (2-infj) +sub (2-0j) nanj (2+nanj) +sub (2-0j) (2-infj) infj +sub (2-0j) (2-16j) 16j +sub (2-0j) (2-2j) 2j +sub (2-0j) (2-0j) 0j +sub (2-0j) (2+0j) -0j +sub (2-0j) (2+2j) -2j +sub (2-0j) (2+16j) -16j +sub (2-0j) (2+infj) -infj +sub (2-0j) (2+nanj) nanj +sub (2-0j) (16-infj) (-14+infj) +sub (2-0j) (16-16j) (-14+16j) +sub (2-0j) (16-2j) (-14+2j) +sub (2-0j) (16-0j) (-14+0j) +sub (2-0j) (16+0j) (-14-0j) +sub (2-0j) (16+2j) (-14-2j) +sub (2-0j) (16+16j) (-14-16j) +sub (2-0j) (16+infj) (-14-infj) +sub (2-0j) (16+nanj) (-14+nanj) +sub (2-0j) (inf-infj) (-inf+infj) +sub (2-0j) (inf-16j) (-inf+16j) +sub (2-0j) (inf-2j) (-inf+2j) +sub (2-0j) (inf-0j) (-inf+0j) +sub (2-0j) (inf+0j) (-inf-0j) +sub (2-0j) (inf+2j) (-inf-2j) +sub (2-0j) (inf+16j) (-inf-16j) +sub (2-0j) (inf+infj) (-inf-infj) +sub (2-0j) (inf+nanj) (-inf+nanj) +sub (2-0j) (nan-infj) (nan+infj) +sub (2-0j) (nan-16j) (nan+16j) +sub (2-0j) (nan-2j) (nan+2j) +sub (2-0j) (nan-0j) (nan+0j) +sub (2-0j) (nan+0j) (nan-0j) +sub (2-0j) (nan+2j) (nan-2j) +sub (2-0j) (nan+16j) (nan-16j) +sub (2-0j) (nan+infj) (nan-infj) +sub (2-0j) (nan+nanj) (nan+nanj) +sub (2+0j) (-inf-infj) (inf+infj) +sub (2+0j) (-inf-16j) (inf+16j) +sub (2+0j) (-inf-2j) (inf+2j) +sub (2+0j) (-inf-0j) (inf+0j) +sub (2+0j) (-inf+0j) (inf+0j) +sub (2+0j) (-inf+2j) (inf-2j) +sub (2+0j) (-inf+16j) (inf-16j) +sub (2+0j) (-inf+infj) (inf-infj) +sub (2+0j) (-inf+nanj) (inf+nanj) +sub (2+0j) (-16-infj) (18+infj) +sub (2+0j) (-16-16j) (18+16j) +sub (2+0j) (-16-2j) (18+2j) +sub (2+0j) (-16-0j) (18+0j) +sub (2+0j) (-16+0j) (18+0j) +sub (2+0j) (-16+2j) (18-2j) +sub (2+0j) (-16+16j) (18-16j) +sub (2+0j) (-16+infj) (18-infj) +sub (2+0j) (-16+nanj) (18+nanj) +sub (2+0j) (-2-infj) (4+infj) +sub (2+0j) (-2-16j) (4+16j) +sub (2+0j) (-2-2j) (4+2j) +sub (2+0j) (-2-0j) (4+0j) +sub (2+0j) (-2+0j) (4+0j) +sub (2+0j) (-2+2j) (4-2j) +sub (2+0j) (-2+16j) (4-16j) +sub (2+0j) (-2+infj) (4-infj) +sub (2+0j) (-2+nanj) (4+nanj) +sub (2+0j) (-0-infj) (2+infj) +sub (2+0j) (-0-16j) (2+16j) +sub (2+0j) (-0-2j) (2+2j) +sub (2+0j) (-0-0j) (2+0j) +sub (2+0j) (-0+0j) (2+0j) +sub (2+0j) (-0+2j) (2-2j) +sub (2+0j) (-0+16j) (2-16j) +sub (2+0j) (-0+infj) (2-infj) +sub (2+0j) (-0+nanj) (2+nanj) +sub (2+0j) -infj (2+infj) +sub (2+0j) -16j (2+16j) +sub (2+0j) -2j (2+2j) +sub (2+0j) -0j (2+0j) +sub (2+0j) 0j (2+0j) +sub (2+0j) 2j (2-2j) +sub (2+0j) 16j (2-16j) +sub (2+0j) infj (2-infj) +sub (2+0j) nanj (2+nanj) +sub (2+0j) (2-infj) infj +sub (2+0j) (2-16j) 16j +sub (2+0j) (2-2j) 2j +sub (2+0j) (2-0j) 0j +sub (2+0j) (2+0j) 0j +sub (2+0j) (2+2j) -2j +sub (2+0j) (2+16j) -16j +sub (2+0j) (2+infj) -infj +sub (2+0j) (2+nanj) nanj +sub (2+0j) (16-infj) (-14+infj) +sub (2+0j) (16-16j) (-14+16j) +sub (2+0j) (16-2j) (-14+2j) +sub (2+0j) (16-0j) (-14+0j) +sub (2+0j) (16+0j) (-14+0j) +sub (2+0j) (16+2j) (-14-2j) +sub (2+0j) (16+16j) (-14-16j) +sub (2+0j) (16+infj) (-14-infj) +sub (2+0j) (16+nanj) (-14+nanj) +sub (2+0j) (inf-infj) (-inf+infj) +sub (2+0j) (inf-16j) (-inf+16j) +sub (2+0j) (inf-2j) (-inf+2j) +sub (2+0j) (inf-0j) (-inf+0j) +sub (2+0j) (inf+0j) (-inf+0j) +sub (2+0j) (inf+2j) (-inf-2j) +sub (2+0j) (inf+16j) (-inf-16j) +sub (2+0j) (inf+infj) (-inf-infj) +sub (2+0j) (inf+nanj) (-inf+nanj) +sub (2+0j) (nan-infj) (nan+infj) +sub (2+0j) (nan-16j) (nan+16j) +sub (2+0j) (nan-2j) (nan+2j) +sub (2+0j) (nan-0j) (nan+0j) +sub (2+0j) (nan+0j) (nan+0j) +sub (2+0j) (nan+2j) (nan-2j) +sub (2+0j) (nan+16j) (nan-16j) +sub (2+0j) (nan+infj) (nan-infj) +sub (2+0j) (nan+nanj) (nan+nanj) +sub (2+2j) (-inf-infj) (inf+infj) +sub (2+2j) (-inf-16j) (inf+18j) +sub (2+2j) (-inf-2j) (inf+4j) +sub (2+2j) (-inf-0j) (inf+2j) +sub (2+2j) (-inf+0j) (inf+2j) +sub (2+2j) (-inf+2j) (inf+0j) +sub (2+2j) (-inf+16j) (inf-14j) +sub (2+2j) (-inf+infj) (inf-infj) +sub (2+2j) (-inf+nanj) (inf+nanj) +sub (2+2j) (-16-infj) (18+infj) +sub (2+2j) (-16-16j) (18+18j) +sub (2+2j) (-16-2j) (18+4j) +sub (2+2j) (-16-0j) (18+2j) +sub (2+2j) (-16+0j) (18+2j) +sub (2+2j) (-16+2j) (18+0j) +sub (2+2j) (-16+16j) (18-14j) +sub (2+2j) (-16+infj) (18-infj) +sub (2+2j) (-16+nanj) (18+nanj) +sub (2+2j) (-2-infj) (4+infj) +sub (2+2j) (-2-16j) (4+18j) +sub (2+2j) (-2-2j) (4+4j) +sub (2+2j) (-2-0j) (4+2j) +sub (2+2j) (-2+0j) (4+2j) +sub (2+2j) (-2+2j) (4+0j) +sub (2+2j) (-2+16j) (4-14j) +sub (2+2j) (-2+infj) (4-infj) +sub (2+2j) (-2+nanj) (4+nanj) +sub (2+2j) (-0-infj) (2+infj) +sub (2+2j) (-0-16j) (2+18j) +sub (2+2j) (-0-2j) (2+4j) +sub (2+2j) (-0-0j) (2+2j) +sub (2+2j) (-0+0j) (2+2j) +sub (2+2j) (-0+2j) (2+0j) +sub (2+2j) (-0+16j) (2-14j) +sub (2+2j) (-0+infj) (2-infj) +sub (2+2j) (-0+nanj) (2+nanj) +sub (2+2j) -infj (2+infj) +sub (2+2j) -16j (2+18j) +sub (2+2j) -2j (2+4j) +sub (2+2j) -0j (2+2j) +sub (2+2j) 0j (2+2j) +sub (2+2j) 2j (2+0j) +sub (2+2j) 16j (2-14j) +sub (2+2j) infj (2-infj) +sub (2+2j) nanj (2+nanj) +sub (2+2j) (2-infj) infj +sub (2+2j) (2-16j) 18j +sub (2+2j) (2-2j) 4j +sub (2+2j) (2-0j) 2j +sub (2+2j) (2+0j) 2j +sub (2+2j) (2+2j) 0j +sub (2+2j) (2+16j) -14j +sub (2+2j) (2+infj) -infj +sub (2+2j) (2+nanj) nanj +sub (2+2j) (16-infj) (-14+infj) +sub (2+2j) (16-16j) (-14+18j) +sub (2+2j) (16-2j) (-14+4j) +sub (2+2j) (16-0j) (-14+2j) +sub (2+2j) (16+0j) (-14+2j) +sub (2+2j) (16+2j) (-14+0j) +sub (2+2j) (16+16j) (-14-14j) +sub (2+2j) (16+infj) (-14-infj) +sub (2+2j) (16+nanj) (-14+nanj) +sub (2+2j) (inf-infj) (-inf+infj) +sub (2+2j) (inf-16j) (-inf+18j) +sub (2+2j) (inf-2j) (-inf+4j) +sub (2+2j) (inf-0j) (-inf+2j) +sub (2+2j) (inf+0j) (-inf+2j) +sub (2+2j) (inf+2j) (-inf+0j) +sub (2+2j) (inf+16j) (-inf-14j) +sub (2+2j) (inf+infj) (-inf-infj) +sub (2+2j) (inf+nanj) (-inf+nanj) +sub (2+2j) (nan-infj) (nan+infj) +sub (2+2j) (nan-16j) (nan+18j) +sub (2+2j) (nan-2j) (nan+4j) +sub (2+2j) (nan-0j) (nan+2j) +sub (2+2j) (nan+0j) (nan+2j) +sub (2+2j) (nan+2j) (nan+0j) +sub (2+2j) (nan+16j) (nan-14j) +sub (2+2j) (nan+infj) (nan-infj) +sub (2+2j) (nan+nanj) (nan+nanj) +sub (2+16j) (-inf-infj) (inf+infj) +sub (2+16j) (-inf-16j) (inf+32j) +sub (2+16j) (-inf-2j) (inf+18j) +sub (2+16j) (-inf-0j) (inf+16j) +sub (2+16j) (-inf+0j) (inf+16j) +sub (2+16j) (-inf+2j) (inf+14j) +sub (2+16j) (-inf+16j) (inf+0j) +sub (2+16j) (-inf+infj) (inf-infj) +sub (2+16j) (-inf+nanj) (inf+nanj) +sub (2+16j) (-16-infj) (18+infj) +sub (2+16j) (-16-16j) (18+32j) +sub (2+16j) (-16-2j) (18+18j) +sub (2+16j) (-16-0j) (18+16j) +sub (2+16j) (-16+0j) (18+16j) +sub (2+16j) (-16+2j) (18+14j) +sub (2+16j) (-16+16j) (18+0j) +sub (2+16j) (-16+infj) (18-infj) +sub (2+16j) (-16+nanj) (18+nanj) +sub (2+16j) (-2-infj) (4+infj) +sub (2+16j) (-2-16j) (4+32j) +sub (2+16j) (-2-2j) (4+18j) +sub (2+16j) (-2-0j) (4+16j) +sub (2+16j) (-2+0j) (4+16j) +sub (2+16j) (-2+2j) (4+14j) +sub (2+16j) (-2+16j) (4+0j) +sub (2+16j) (-2+infj) (4-infj) +sub (2+16j) (-2+nanj) (4+nanj) +sub (2+16j) (-0-infj) (2+infj) +sub (2+16j) (-0-16j) (2+32j) +sub (2+16j) (-0-2j) (2+18j) +sub (2+16j) (-0-0j) (2+16j) +sub (2+16j) (-0+0j) (2+16j) +sub (2+16j) (-0+2j) (2+14j) +sub (2+16j) (-0+16j) (2+0j) +sub (2+16j) (-0+infj) (2-infj) +sub (2+16j) (-0+nanj) (2+nanj) +sub (2+16j) -infj (2+infj) +sub (2+16j) -16j (2+32j) +sub (2+16j) -2j (2+18j) +sub (2+16j) -0j (2+16j) +sub (2+16j) 0j (2+16j) +sub (2+16j) 2j (2+14j) +sub (2+16j) 16j (2+0j) +sub (2+16j) infj (2-infj) +sub (2+16j) nanj (2+nanj) +sub (2+16j) (2-infj) infj +sub (2+16j) (2-16j) 32j +sub (2+16j) (2-2j) 18j +sub (2+16j) (2-0j) 16j +sub (2+16j) (2+0j) 16j +sub (2+16j) (2+2j) 14j +sub (2+16j) (2+16j) 0j +sub (2+16j) (2+infj) -infj +sub (2+16j) (2+nanj) nanj +sub (2+16j) (16-infj) (-14+infj) +sub (2+16j) (16-16j) (-14+32j) +sub (2+16j) (16-2j) (-14+18j) +sub (2+16j) (16-0j) (-14+16j) +sub (2+16j) (16+0j) (-14+16j) +sub (2+16j) (16+2j) (-14+14j) +sub (2+16j) (16+16j) (-14+0j) +sub (2+16j) (16+infj) (-14-infj) +sub (2+16j) (16+nanj) (-14+nanj) +sub (2+16j) (inf-infj) (-inf+infj) +sub (2+16j) (inf-16j) (-inf+32j) +sub (2+16j) (inf-2j) (-inf+18j) +sub (2+16j) (inf-0j) (-inf+16j) +sub (2+16j) (inf+0j) (-inf+16j) +sub (2+16j) (inf+2j) (-inf+14j) +sub (2+16j) (inf+16j) (-inf+0j) +sub (2+16j) (inf+infj) (-inf-infj) +sub (2+16j) (inf+nanj) (-inf+nanj) +sub (2+16j) (nan-infj) (nan+infj) +sub (2+16j) (nan-16j) (nan+32j) +sub (2+16j) (nan-2j) (nan+18j) +sub (2+16j) (nan-0j) (nan+16j) +sub (2+16j) (nan+0j) (nan+16j) +sub (2+16j) (nan+2j) (nan+14j) +sub (2+16j) (nan+16j) (nan+0j) +sub (2+16j) (nan+infj) (nan-infj) +sub (2+16j) (nan+nanj) (nan+nanj) +sub (2+infj) (-inf-infj) (inf+infj) +sub (2+infj) (-inf-16j) (inf+infj) +sub (2+infj) (-inf-2j) (inf+infj) +sub (2+infj) (-inf-0j) (inf+infj) +sub (2+infj) (-inf+0j) (inf+infj) +sub (2+infj) (-inf+2j) (inf+infj) +sub (2+infj) (-inf+16j) (inf+infj) +sub (2+infj) (-inf+infj) (inf+nanj) +sub (2+infj) (-inf+nanj) (inf+nanj) +sub (2+infj) (-16-infj) (18+infj) +sub (2+infj) (-16-16j) (18+infj) +sub (2+infj) (-16-2j) (18+infj) +sub (2+infj) (-16-0j) (18+infj) +sub (2+infj) (-16+0j) (18+infj) +sub (2+infj) (-16+2j) (18+infj) +sub (2+infj) (-16+16j) (18+infj) +sub (2+infj) (-16+infj) (18+nanj) +sub (2+infj) (-16+nanj) (18+nanj) +sub (2+infj) (-2-infj) (4+infj) +sub (2+infj) (-2-16j) (4+infj) +sub (2+infj) (-2-2j) (4+infj) +sub (2+infj) (-2-0j) (4+infj) +sub (2+infj) (-2+0j) (4+infj) +sub (2+infj) (-2+2j) (4+infj) +sub (2+infj) (-2+16j) (4+infj) +sub (2+infj) (-2+infj) (4+nanj) +sub (2+infj) (-2+nanj) (4+nanj) +sub (2+infj) (-0-infj) (2+infj) +sub (2+infj) (-0-16j) (2+infj) +sub (2+infj) (-0-2j) (2+infj) +sub (2+infj) (-0-0j) (2+infj) +sub (2+infj) (-0+0j) (2+infj) +sub (2+infj) (-0+2j) (2+infj) +sub (2+infj) (-0+16j) (2+infj) +sub (2+infj) (-0+infj) (2+nanj) +sub (2+infj) (-0+nanj) (2+nanj) +sub (2+infj) -infj (2+infj) +sub (2+infj) -16j (2+infj) +sub (2+infj) -2j (2+infj) +sub (2+infj) -0j (2+infj) +sub (2+infj) 0j (2+infj) +sub (2+infj) 2j (2+infj) +sub (2+infj) 16j (2+infj) +sub (2+infj) infj (2+nanj) +sub (2+infj) nanj (2+nanj) +sub (2+infj) (2-infj) infj +sub (2+infj) (2-16j) infj +sub (2+infj) (2-2j) infj +sub (2+infj) (2-0j) infj +sub (2+infj) (2+0j) infj +sub (2+infj) (2+2j) infj +sub (2+infj) (2+16j) infj +sub (2+infj) (2+infj) nanj +sub (2+infj) (2+nanj) nanj +sub (2+infj) (16-infj) (-14+infj) +sub (2+infj) (16-16j) (-14+infj) +sub (2+infj) (16-2j) (-14+infj) +sub (2+infj) (16-0j) (-14+infj) +sub (2+infj) (16+0j) (-14+infj) +sub (2+infj) (16+2j) (-14+infj) +sub (2+infj) (16+16j) (-14+infj) +sub (2+infj) (16+infj) (-14+nanj) +sub (2+infj) (16+nanj) (-14+nanj) +sub (2+infj) (inf-infj) (-inf+infj) +sub (2+infj) (inf-16j) (-inf+infj) +sub (2+infj) (inf-2j) (-inf+infj) +sub (2+infj) (inf-0j) (-inf+infj) +sub (2+infj) (inf+0j) (-inf+infj) +sub (2+infj) (inf+2j) (-inf+infj) +sub (2+infj) (inf+16j) (-inf+infj) +sub (2+infj) (inf+infj) (-inf+nanj) +sub (2+infj) (inf+nanj) (-inf+nanj) +sub (2+infj) (nan-infj) (nan+infj) +sub (2+infj) (nan-16j) (nan+infj) +sub (2+infj) (nan-2j) (nan+infj) +sub (2+infj) (nan-0j) (nan+infj) +sub (2+infj) (nan+0j) (nan+infj) +sub (2+infj) (nan+2j) (nan+infj) +sub (2+infj) (nan+16j) (nan+infj) +sub (2+infj) (nan+infj) (nan+nanj) +sub (2+infj) (nan+nanj) (nan+nanj) +sub (2+nanj) (-inf-infj) (inf+nanj) +sub (2+nanj) (-inf-16j) (inf+nanj) +sub (2+nanj) (-inf-2j) (inf+nanj) +sub (2+nanj) (-inf-0j) (inf+nanj) +sub (2+nanj) (-inf+0j) (inf+nanj) +sub (2+nanj) (-inf+2j) (inf+nanj) +sub (2+nanj) (-inf+16j) (inf+nanj) +sub (2+nanj) (-inf+infj) (inf+nanj) +sub (2+nanj) (-inf+nanj) (inf+nanj) +sub (2+nanj) (-16-infj) (18+nanj) +sub (2+nanj) (-16-16j) (18+nanj) +sub (2+nanj) (-16-2j) (18+nanj) +sub (2+nanj) (-16-0j) (18+nanj) +sub (2+nanj) (-16+0j) (18+nanj) +sub (2+nanj) (-16+2j) (18+nanj) +sub (2+nanj) (-16+16j) (18+nanj) +sub (2+nanj) (-16+infj) (18+nanj) +sub (2+nanj) (-16+nanj) (18+nanj) +sub (2+nanj) (-2-infj) (4+nanj) +sub (2+nanj) (-2-16j) (4+nanj) +sub (2+nanj) (-2-2j) (4+nanj) +sub (2+nanj) (-2-0j) (4+nanj) +sub (2+nanj) (-2+0j) (4+nanj) +sub (2+nanj) (-2+2j) (4+nanj) +sub (2+nanj) (-2+16j) (4+nanj) +sub (2+nanj) (-2+infj) (4+nanj) +sub (2+nanj) (-2+nanj) (4+nanj) +sub (2+nanj) (-0-infj) (2+nanj) +sub (2+nanj) (-0-16j) (2+nanj) +sub (2+nanj) (-0-2j) (2+nanj) +sub (2+nanj) (-0-0j) (2+nanj) +sub (2+nanj) (-0+0j) (2+nanj) +sub (2+nanj) (-0+2j) (2+nanj) +sub (2+nanj) (-0+16j) (2+nanj) +sub (2+nanj) (-0+infj) (2+nanj) +sub (2+nanj) (-0+nanj) (2+nanj) +sub (2+nanj) -infj (2+nanj) +sub (2+nanj) -16j (2+nanj) +sub (2+nanj) -2j (2+nanj) +sub (2+nanj) -0j (2+nanj) +sub (2+nanj) 0j (2+nanj) +sub (2+nanj) 2j (2+nanj) +sub (2+nanj) 16j (2+nanj) +sub (2+nanj) infj (2+nanj) +sub (2+nanj) nanj (2+nanj) +sub (2+nanj) (2-infj) nanj +sub (2+nanj) (2-16j) nanj +sub (2+nanj) (2-2j) nanj +sub (2+nanj) (2-0j) nanj +sub (2+nanj) (2+0j) nanj +sub (2+nanj) (2+2j) nanj +sub (2+nanj) (2+16j) nanj +sub (2+nanj) (2+infj) nanj +sub (2+nanj) (2+nanj) nanj +sub (2+nanj) (16-infj) (-14+nanj) +sub (2+nanj) (16-16j) (-14+nanj) +sub (2+nanj) (16-2j) (-14+nanj) +sub (2+nanj) (16-0j) (-14+nanj) +sub (2+nanj) (16+0j) (-14+nanj) +sub (2+nanj) (16+2j) (-14+nanj) +sub (2+nanj) (16+16j) (-14+nanj) +sub (2+nanj) (16+infj) (-14+nanj) +sub (2+nanj) (16+nanj) (-14+nanj) +sub (2+nanj) (inf-infj) (-inf+nanj) +sub (2+nanj) (inf-16j) (-inf+nanj) +sub (2+nanj) (inf-2j) (-inf+nanj) +sub (2+nanj) (inf-0j) (-inf+nanj) +sub (2+nanj) (inf+0j) (-inf+nanj) +sub (2+nanj) (inf+2j) (-inf+nanj) +sub (2+nanj) (inf+16j) (-inf+nanj) +sub (2+nanj) (inf+infj) (-inf+nanj) +sub (2+nanj) (inf+nanj) (-inf+nanj) +sub (2+nanj) (nan-infj) (nan+nanj) +sub (2+nanj) (nan-16j) (nan+nanj) +sub (2+nanj) (nan-2j) (nan+nanj) +sub (2+nanj) (nan-0j) (nan+nanj) +sub (2+nanj) (nan+0j) (nan+nanj) +sub (2+nanj) (nan+2j) (nan+nanj) +sub (2+nanj) (nan+16j) (nan+nanj) +sub (2+nanj) (nan+infj) (nan+nanj) +sub (2+nanj) (nan+nanj) (nan+nanj) +sub (16-infj) (-inf-infj) (inf+nanj) +sub (16-infj) (-inf-16j) (inf-infj) +sub (16-infj) (-inf-2j) (inf-infj) +sub (16-infj) (-inf-0j) (inf-infj) +sub (16-infj) (-inf+0j) (inf-infj) +sub (16-infj) (-inf+2j) (inf-infj) +sub (16-infj) (-inf+16j) (inf-infj) +sub (16-infj) (-inf+infj) (inf-infj) +sub (16-infj) (-inf+nanj) (inf+nanj) +sub (16-infj) (-16-infj) (32+nanj) +sub (16-infj) (-16-16j) (32-infj) +sub (16-infj) (-16-2j) (32-infj) +sub (16-infj) (-16-0j) (32-infj) +sub (16-infj) (-16+0j) (32-infj) +sub (16-infj) (-16+2j) (32-infj) +sub (16-infj) (-16+16j) (32-infj) +sub (16-infj) (-16+infj) (32-infj) +sub (16-infj) (-16+nanj) (32+nanj) +sub (16-infj) (-2-infj) (18+nanj) +sub (16-infj) (-2-16j) (18-infj) +sub (16-infj) (-2-2j) (18-infj) +sub (16-infj) (-2-0j) (18-infj) +sub (16-infj) (-2+0j) (18-infj) +sub (16-infj) (-2+2j) (18-infj) +sub (16-infj) (-2+16j) (18-infj) +sub (16-infj) (-2+infj) (18-infj) +sub (16-infj) (-2+nanj) (18+nanj) +sub (16-infj) (-0-infj) (16+nanj) +sub (16-infj) (-0-16j) (16-infj) +sub (16-infj) (-0-2j) (16-infj) +sub (16-infj) (-0-0j) (16-infj) +sub (16-infj) (-0+0j) (16-infj) +sub (16-infj) (-0+2j) (16-infj) +sub (16-infj) (-0+16j) (16-infj) +sub (16-infj) (-0+infj) (16-infj) +sub (16-infj) (-0+nanj) (16+nanj) +sub (16-infj) -infj (16+nanj) +sub (16-infj) -16j (16-infj) +sub (16-infj) -2j (16-infj) +sub (16-infj) -0j (16-infj) +sub (16-infj) 0j (16-infj) +sub (16-infj) 2j (16-infj) +sub (16-infj) 16j (16-infj) +sub (16-infj) infj (16-infj) +sub (16-infj) nanj (16+nanj) +sub (16-infj) (2-infj) (14+nanj) +sub (16-infj) (2-16j) (14-infj) +sub (16-infj) (2-2j) (14-infj) +sub (16-infj) (2-0j) (14-infj) +sub (16-infj) (2+0j) (14-infj) +sub (16-infj) (2+2j) (14-infj) +sub (16-infj) (2+16j) (14-infj) +sub (16-infj) (2+infj) (14-infj) +sub (16-infj) (2+nanj) (14+nanj) +sub (16-infj) (16-infj) nanj +sub (16-infj) (16-16j) -infj +sub (16-infj) (16-2j) -infj +sub (16-infj) (16-0j) -infj +sub (16-infj) (16+0j) -infj +sub (16-infj) (16+2j) -infj +sub (16-infj) (16+16j) -infj +sub (16-infj) (16+infj) -infj +sub (16-infj) (16+nanj) nanj +sub (16-infj) (inf-infj) (-inf+nanj) +sub (16-infj) (inf-16j) (-inf-infj) +sub (16-infj) (inf-2j) (-inf-infj) +sub (16-infj) (inf-0j) (-inf-infj) +sub (16-infj) (inf+0j) (-inf-infj) +sub (16-infj) (inf+2j) (-inf-infj) +sub (16-infj) (inf+16j) (-inf-infj) +sub (16-infj) (inf+infj) (-inf-infj) +sub (16-infj) (inf+nanj) (-inf+nanj) +sub (16-infj) (nan-infj) (nan+nanj) +sub (16-infj) (nan-16j) (nan-infj) +sub (16-infj) (nan-2j) (nan-infj) +sub (16-infj) (nan-0j) (nan-infj) +sub (16-infj) (nan+0j) (nan-infj) +sub (16-infj) (nan+2j) (nan-infj) +sub (16-infj) (nan+16j) (nan-infj) +sub (16-infj) (nan+infj) (nan-infj) +sub (16-infj) (nan+nanj) (nan+nanj) +sub (16-16j) (-inf-infj) (inf+infj) +sub (16-16j) (-inf-16j) (inf+0j) +sub (16-16j) (-inf-2j) (inf-14j) +sub (16-16j) (-inf-0j) (inf-16j) +sub (16-16j) (-inf+0j) (inf-16j) +sub (16-16j) (-inf+2j) (inf-18j) +sub (16-16j) (-inf+16j) (inf-32j) +sub (16-16j) (-inf+infj) (inf-infj) +sub (16-16j) (-inf+nanj) (inf+nanj) +sub (16-16j) (-16-infj) (32+infj) +sub (16-16j) (-16-16j) (32+0j) +sub (16-16j) (-16-2j) (32-14j) +sub (16-16j) (-16-0j) (32-16j) +sub (16-16j) (-16+0j) (32-16j) +sub (16-16j) (-16+2j) (32-18j) +sub (16-16j) (-16+16j) (32-32j) +sub (16-16j) (-16+infj) (32-infj) +sub (16-16j) (-16+nanj) (32+nanj) +sub (16-16j) (-2-infj) (18+infj) +sub (16-16j) (-2-16j) (18+0j) +sub (16-16j) (-2-2j) (18-14j) +sub (16-16j) (-2-0j) (18-16j) +sub (16-16j) (-2+0j) (18-16j) +sub (16-16j) (-2+2j) (18-18j) +sub (16-16j) (-2+16j) (18-32j) +sub (16-16j) (-2+infj) (18-infj) +sub (16-16j) (-2+nanj) (18+nanj) +sub (16-16j) (-0-infj) (16+infj) +sub (16-16j) (-0-16j) (16+0j) +sub (16-16j) (-0-2j) (16-14j) +sub (16-16j) (-0-0j) (16-16j) +sub (16-16j) (-0+0j) (16-16j) +sub (16-16j) (-0+2j) (16-18j) +sub (16-16j) (-0+16j) (16-32j) +sub (16-16j) (-0+infj) (16-infj) +sub (16-16j) (-0+nanj) (16+nanj) +sub (16-16j) -infj (16+infj) +sub (16-16j) -16j (16+0j) +sub (16-16j) -2j (16-14j) +sub (16-16j) -0j (16-16j) +sub (16-16j) 0j (16-16j) +sub (16-16j) 2j (16-18j) +sub (16-16j) 16j (16-32j) +sub (16-16j) infj (16-infj) +sub (16-16j) nanj (16+nanj) +sub (16-16j) (2-infj) (14+infj) +sub (16-16j) (2-16j) (14+0j) +sub (16-16j) (2-2j) (14-14j) +sub (16-16j) (2-0j) (14-16j) +sub (16-16j) (2+0j) (14-16j) +sub (16-16j) (2+2j) (14-18j) +sub (16-16j) (2+16j) (14-32j) +sub (16-16j) (2+infj) (14-infj) +sub (16-16j) (2+nanj) (14+nanj) +sub (16-16j) (16-infj) infj +sub (16-16j) (16-16j) 0j +sub (16-16j) (16-2j) -14j +sub (16-16j) (16-0j) -16j +sub (16-16j) (16+0j) -16j +sub (16-16j) (16+2j) -18j +sub (16-16j) (16+16j) -32j +sub (16-16j) (16+infj) -infj +sub (16-16j) (16+nanj) nanj +sub (16-16j) (inf-infj) (-inf+infj) +sub (16-16j) (inf-16j) (-inf+0j) +sub (16-16j) (inf-2j) (-inf-14j) +sub (16-16j) (inf-0j) (-inf-16j) +sub (16-16j) (inf+0j) (-inf-16j) +sub (16-16j) (inf+2j) (-inf-18j) +sub (16-16j) (inf+16j) (-inf-32j) +sub (16-16j) (inf+infj) (-inf-infj) +sub (16-16j) (inf+nanj) (-inf+nanj) +sub (16-16j) (nan-infj) (nan+infj) +sub (16-16j) (nan-16j) (nan+0j) +sub (16-16j) (nan-2j) (nan-14j) +sub (16-16j) (nan-0j) (nan-16j) +sub (16-16j) (nan+0j) (nan-16j) +sub (16-16j) (nan+2j) (nan-18j) +sub (16-16j) (nan+16j) (nan-32j) +sub (16-16j) (nan+infj) (nan-infj) +sub (16-16j) (nan+nanj) (nan+nanj) +sub (16-2j) (-inf-infj) (inf+infj) +sub (16-2j) (-inf-16j) (inf+14j) +sub (16-2j) (-inf-2j) (inf+0j) +sub (16-2j) (-inf-0j) (inf-2j) +sub (16-2j) (-inf+0j) (inf-2j) +sub (16-2j) (-inf+2j) (inf-4j) +sub (16-2j) (-inf+16j) (inf-18j) +sub (16-2j) (-inf+infj) (inf-infj) +sub (16-2j) (-inf+nanj) (inf+nanj) +sub (16-2j) (-16-infj) (32+infj) +sub (16-2j) (-16-16j) (32+14j) +sub (16-2j) (-16-2j) (32+0j) +sub (16-2j) (-16-0j) (32-2j) +sub (16-2j) (-16+0j) (32-2j) +sub (16-2j) (-16+2j) (32-4j) +sub (16-2j) (-16+16j) (32-18j) +sub (16-2j) (-16+infj) (32-infj) +sub (16-2j) (-16+nanj) (32+nanj) +sub (16-2j) (-2-infj) (18+infj) +sub (16-2j) (-2-16j) (18+14j) +sub (16-2j) (-2-2j) (18+0j) +sub (16-2j) (-2-0j) (18-2j) +sub (16-2j) (-2+0j) (18-2j) +sub (16-2j) (-2+2j) (18-4j) +sub (16-2j) (-2+16j) (18-18j) +sub (16-2j) (-2+infj) (18-infj) +sub (16-2j) (-2+nanj) (18+nanj) +sub (16-2j) (-0-infj) (16+infj) +sub (16-2j) (-0-16j) (16+14j) +sub (16-2j) (-0-2j) (16+0j) +sub (16-2j) (-0-0j) (16-2j) +sub (16-2j) (-0+0j) (16-2j) +sub (16-2j) (-0+2j) (16-4j) +sub (16-2j) (-0+16j) (16-18j) +sub (16-2j) (-0+infj) (16-infj) +sub (16-2j) (-0+nanj) (16+nanj) +sub (16-2j) -infj (16+infj) +sub (16-2j) -16j (16+14j) +sub (16-2j) -2j (16+0j) +sub (16-2j) -0j (16-2j) +sub (16-2j) 0j (16-2j) +sub (16-2j) 2j (16-4j) +sub (16-2j) 16j (16-18j) +sub (16-2j) infj (16-infj) +sub (16-2j) nanj (16+nanj) +sub (16-2j) (2-infj) (14+infj) +sub (16-2j) (2-16j) (14+14j) +sub (16-2j) (2-2j) (14+0j) +sub (16-2j) (2-0j) (14-2j) +sub (16-2j) (2+0j) (14-2j) +sub (16-2j) (2+2j) (14-4j) +sub (16-2j) (2+16j) (14-18j) +sub (16-2j) (2+infj) (14-infj) +sub (16-2j) (2+nanj) (14+nanj) +sub (16-2j) (16-infj) infj +sub (16-2j) (16-16j) 14j +sub (16-2j) (16-2j) 0j +sub (16-2j) (16-0j) -2j +sub (16-2j) (16+0j) -2j +sub (16-2j) (16+2j) -4j +sub (16-2j) (16+16j) -18j +sub (16-2j) (16+infj) -infj +sub (16-2j) (16+nanj) nanj +sub (16-2j) (inf-infj) (-inf+infj) +sub (16-2j) (inf-16j) (-inf+14j) +sub (16-2j) (inf-2j) (-inf+0j) +sub (16-2j) (inf-0j) (-inf-2j) +sub (16-2j) (inf+0j) (-inf-2j) +sub (16-2j) (inf+2j) (-inf-4j) +sub (16-2j) (inf+16j) (-inf-18j) +sub (16-2j) (inf+infj) (-inf-infj) +sub (16-2j) (inf+nanj) (-inf+nanj) +sub (16-2j) (nan-infj) (nan+infj) +sub (16-2j) (nan-16j) (nan+14j) +sub (16-2j) (nan-2j) (nan+0j) +sub (16-2j) (nan-0j) (nan-2j) +sub (16-2j) (nan+0j) (nan-2j) +sub (16-2j) (nan+2j) (nan-4j) +sub (16-2j) (nan+16j) (nan-18j) +sub (16-2j) (nan+infj) (nan-infj) +sub (16-2j) (nan+nanj) (nan+nanj) +sub (16-0j) (-inf-infj) (inf+infj) +sub (16-0j) (-inf-16j) (inf+16j) +sub (16-0j) (-inf-2j) (inf+2j) +sub (16-0j) (-inf-0j) (inf+0j) +sub (16-0j) (-inf+0j) (inf-0j) +sub (16-0j) (-inf+2j) (inf-2j) +sub (16-0j) (-inf+16j) (inf-16j) +sub (16-0j) (-inf+infj) (inf-infj) +sub (16-0j) (-inf+nanj) (inf+nanj) +sub (16-0j) (-16-infj) (32+infj) +sub (16-0j) (-16-16j) (32+16j) +sub (16-0j) (-16-2j) (32+2j) +sub (16-0j) (-16-0j) (32+0j) +sub (16-0j) (-16+0j) (32-0j) +sub (16-0j) (-16+2j) (32-2j) +sub (16-0j) (-16+16j) (32-16j) +sub (16-0j) (-16+infj) (32-infj) +sub (16-0j) (-16+nanj) (32+nanj) +sub (16-0j) (-2-infj) (18+infj) +sub (16-0j) (-2-16j) (18+16j) +sub (16-0j) (-2-2j) (18+2j) +sub (16-0j) (-2-0j) (18+0j) +sub (16-0j) (-2+0j) (18-0j) +sub (16-0j) (-2+2j) (18-2j) +sub (16-0j) (-2+16j) (18-16j) +sub (16-0j) (-2+infj) (18-infj) +sub (16-0j) (-2+nanj) (18+nanj) +sub (16-0j) (-0-infj) (16+infj) +sub (16-0j) (-0-16j) (16+16j) +sub (16-0j) (-0-2j) (16+2j) +sub (16-0j) (-0-0j) (16+0j) +sub (16-0j) (-0+0j) (16-0j) +sub (16-0j) (-0+2j) (16-2j) +sub (16-0j) (-0+16j) (16-16j) +sub (16-0j) (-0+infj) (16-infj) +sub (16-0j) (-0+nanj) (16+nanj) +sub (16-0j) -infj (16+infj) +sub (16-0j) -16j (16+16j) +sub (16-0j) -2j (16+2j) +sub (16-0j) -0j (16+0j) +sub (16-0j) 0j (16-0j) +sub (16-0j) 2j (16-2j) +sub (16-0j) 16j (16-16j) +sub (16-0j) infj (16-infj) +sub (16-0j) nanj (16+nanj) +sub (16-0j) (2-infj) (14+infj) +sub (16-0j) (2-16j) (14+16j) +sub (16-0j) (2-2j) (14+2j) +sub (16-0j) (2-0j) (14+0j) +sub (16-0j) (2+0j) (14-0j) +sub (16-0j) (2+2j) (14-2j) +sub (16-0j) (2+16j) (14-16j) +sub (16-0j) (2+infj) (14-infj) +sub (16-0j) (2+nanj) (14+nanj) +sub (16-0j) (16-infj) infj +sub (16-0j) (16-16j) 16j +sub (16-0j) (16-2j) 2j +sub (16-0j) (16-0j) 0j +sub (16-0j) (16+0j) -0j +sub (16-0j) (16+2j) -2j +sub (16-0j) (16+16j) -16j +sub (16-0j) (16+infj) -infj +sub (16-0j) (16+nanj) nanj +sub (16-0j) (inf-infj) (-inf+infj) +sub (16-0j) (inf-16j) (-inf+16j) +sub (16-0j) (inf-2j) (-inf+2j) +sub (16-0j) (inf-0j) (-inf+0j) +sub (16-0j) (inf+0j) (-inf-0j) +sub (16-0j) (inf+2j) (-inf-2j) +sub (16-0j) (inf+16j) (-inf-16j) +sub (16-0j) (inf+infj) (-inf-infj) +sub (16-0j) (inf+nanj) (-inf+nanj) +sub (16-0j) (nan-infj) (nan+infj) +sub (16-0j) (nan-16j) (nan+16j) +sub (16-0j) (nan-2j) (nan+2j) +sub (16-0j) (nan-0j) (nan+0j) +sub (16-0j) (nan+0j) (nan-0j) +sub (16-0j) (nan+2j) (nan-2j) +sub (16-0j) (nan+16j) (nan-16j) +sub (16-0j) (nan+infj) (nan-infj) +sub (16-0j) (nan+nanj) (nan+nanj) +sub (16+0j) (-inf-infj) (inf+infj) +sub (16+0j) (-inf-16j) (inf+16j) +sub (16+0j) (-inf-2j) (inf+2j) +sub (16+0j) (-inf-0j) (inf+0j) +sub (16+0j) (-inf+0j) (inf+0j) +sub (16+0j) (-inf+2j) (inf-2j) +sub (16+0j) (-inf+16j) (inf-16j) +sub (16+0j) (-inf+infj) (inf-infj) +sub (16+0j) (-inf+nanj) (inf+nanj) +sub (16+0j) (-16-infj) (32+infj) +sub (16+0j) (-16-16j) (32+16j) +sub (16+0j) (-16-2j) (32+2j) +sub (16+0j) (-16-0j) (32+0j) +sub (16+0j) (-16+0j) (32+0j) +sub (16+0j) (-16+2j) (32-2j) +sub (16+0j) (-16+16j) (32-16j) +sub (16+0j) (-16+infj) (32-infj) +sub (16+0j) (-16+nanj) (32+nanj) +sub (16+0j) (-2-infj) (18+infj) +sub (16+0j) (-2-16j) (18+16j) +sub (16+0j) (-2-2j) (18+2j) +sub (16+0j) (-2-0j) (18+0j) +sub (16+0j) (-2+0j) (18+0j) +sub (16+0j) (-2+2j) (18-2j) +sub (16+0j) (-2+16j) (18-16j) +sub (16+0j) (-2+infj) (18-infj) +sub (16+0j) (-2+nanj) (18+nanj) +sub (16+0j) (-0-infj) (16+infj) +sub (16+0j) (-0-16j) (16+16j) +sub (16+0j) (-0-2j) (16+2j) +sub (16+0j) (-0-0j) (16+0j) +sub (16+0j) (-0+0j) (16+0j) +sub (16+0j) (-0+2j) (16-2j) +sub (16+0j) (-0+16j) (16-16j) +sub (16+0j) (-0+infj) (16-infj) +sub (16+0j) (-0+nanj) (16+nanj) +sub (16+0j) -infj (16+infj) +sub (16+0j) -16j (16+16j) +sub (16+0j) -2j (16+2j) +sub (16+0j) -0j (16+0j) +sub (16+0j) 0j (16+0j) +sub (16+0j) 2j (16-2j) +sub (16+0j) 16j (16-16j) +sub (16+0j) infj (16-infj) +sub (16+0j) nanj (16+nanj) +sub (16+0j) (2-infj) (14+infj) +sub (16+0j) (2-16j) (14+16j) +sub (16+0j) (2-2j) (14+2j) +sub (16+0j) (2-0j) (14+0j) +sub (16+0j) (2+0j) (14+0j) +sub (16+0j) (2+2j) (14-2j) +sub (16+0j) (2+16j) (14-16j) +sub (16+0j) (2+infj) (14-infj) +sub (16+0j) (2+nanj) (14+nanj) +sub (16+0j) (16-infj) infj +sub (16+0j) (16-16j) 16j +sub (16+0j) (16-2j) 2j +sub (16+0j) (16-0j) 0j +sub (16+0j) (16+0j) 0j +sub (16+0j) (16+2j) -2j +sub (16+0j) (16+16j) -16j +sub (16+0j) (16+infj) -infj +sub (16+0j) (16+nanj) nanj +sub (16+0j) (inf-infj) (-inf+infj) +sub (16+0j) (inf-16j) (-inf+16j) +sub (16+0j) (inf-2j) (-inf+2j) +sub (16+0j) (inf-0j) (-inf+0j) +sub (16+0j) (inf+0j) (-inf+0j) +sub (16+0j) (inf+2j) (-inf-2j) +sub (16+0j) (inf+16j) (-inf-16j) +sub (16+0j) (inf+infj) (-inf-infj) +sub (16+0j) (inf+nanj) (-inf+nanj) +sub (16+0j) (nan-infj) (nan+infj) +sub (16+0j) (nan-16j) (nan+16j) +sub (16+0j) (nan-2j) (nan+2j) +sub (16+0j) (nan-0j) (nan+0j) +sub (16+0j) (nan+0j) (nan+0j) +sub (16+0j) (nan+2j) (nan-2j) +sub (16+0j) (nan+16j) (nan-16j) +sub (16+0j) (nan+infj) (nan-infj) +sub (16+0j) (nan+nanj) (nan+nanj) +sub (16+2j) (-inf-infj) (inf+infj) +sub (16+2j) (-inf-16j) (inf+18j) +sub (16+2j) (-inf-2j) (inf+4j) +sub (16+2j) (-inf-0j) (inf+2j) +sub (16+2j) (-inf+0j) (inf+2j) +sub (16+2j) (-inf+2j) (inf+0j) +sub (16+2j) (-inf+16j) (inf-14j) +sub (16+2j) (-inf+infj) (inf-infj) +sub (16+2j) (-inf+nanj) (inf+nanj) +sub (16+2j) (-16-infj) (32+infj) +sub (16+2j) (-16-16j) (32+18j) +sub (16+2j) (-16-2j) (32+4j) +sub (16+2j) (-16-0j) (32+2j) +sub (16+2j) (-16+0j) (32+2j) +sub (16+2j) (-16+2j) (32+0j) +sub (16+2j) (-16+16j) (32-14j) +sub (16+2j) (-16+infj) (32-infj) +sub (16+2j) (-16+nanj) (32+nanj) +sub (16+2j) (-2-infj) (18+infj) +sub (16+2j) (-2-16j) (18+18j) +sub (16+2j) (-2-2j) (18+4j) +sub (16+2j) (-2-0j) (18+2j) +sub (16+2j) (-2+0j) (18+2j) +sub (16+2j) (-2+2j) (18+0j) +sub (16+2j) (-2+16j) (18-14j) +sub (16+2j) (-2+infj) (18-infj) +sub (16+2j) (-2+nanj) (18+nanj) +sub (16+2j) (-0-infj) (16+infj) +sub (16+2j) (-0-16j) (16+18j) +sub (16+2j) (-0-2j) (16+4j) +sub (16+2j) (-0-0j) (16+2j) +sub (16+2j) (-0+0j) (16+2j) +sub (16+2j) (-0+2j) (16+0j) +sub (16+2j) (-0+16j) (16-14j) +sub (16+2j) (-0+infj) (16-infj) +sub (16+2j) (-0+nanj) (16+nanj) +sub (16+2j) -infj (16+infj) +sub (16+2j) -16j (16+18j) +sub (16+2j) -2j (16+4j) +sub (16+2j) -0j (16+2j) +sub (16+2j) 0j (16+2j) +sub (16+2j) 2j (16+0j) +sub (16+2j) 16j (16-14j) +sub (16+2j) infj (16-infj) +sub (16+2j) nanj (16+nanj) +sub (16+2j) (2-infj) (14+infj) +sub (16+2j) (2-16j) (14+18j) +sub (16+2j) (2-2j) (14+4j) +sub (16+2j) (2-0j) (14+2j) +sub (16+2j) (2+0j) (14+2j) +sub (16+2j) (2+2j) (14+0j) +sub (16+2j) (2+16j) (14-14j) +sub (16+2j) (2+infj) (14-infj) +sub (16+2j) (2+nanj) (14+nanj) +sub (16+2j) (16-infj) infj +sub (16+2j) (16-16j) 18j +sub (16+2j) (16-2j) 4j +sub (16+2j) (16-0j) 2j +sub (16+2j) (16+0j) 2j +sub (16+2j) (16+2j) 0j +sub (16+2j) (16+16j) -14j +sub (16+2j) (16+infj) -infj +sub (16+2j) (16+nanj) nanj +sub (16+2j) (inf-infj) (-inf+infj) +sub (16+2j) (inf-16j) (-inf+18j) +sub (16+2j) (inf-2j) (-inf+4j) +sub (16+2j) (inf-0j) (-inf+2j) +sub (16+2j) (inf+0j) (-inf+2j) +sub (16+2j) (inf+2j) (-inf+0j) +sub (16+2j) (inf+16j) (-inf-14j) +sub (16+2j) (inf+infj) (-inf-infj) +sub (16+2j) (inf+nanj) (-inf+nanj) +sub (16+2j) (nan-infj) (nan+infj) +sub (16+2j) (nan-16j) (nan+18j) +sub (16+2j) (nan-2j) (nan+4j) +sub (16+2j) (nan-0j) (nan+2j) +sub (16+2j) (nan+0j) (nan+2j) +sub (16+2j) (nan+2j) (nan+0j) +sub (16+2j) (nan+16j) (nan-14j) +sub (16+2j) (nan+infj) (nan-infj) +sub (16+2j) (nan+nanj) (nan+nanj) +sub (16+16j) (-inf-infj) (inf+infj) +sub (16+16j) (-inf-16j) (inf+32j) +sub (16+16j) (-inf-2j) (inf+18j) +sub (16+16j) (-inf-0j) (inf+16j) +sub (16+16j) (-inf+0j) (inf+16j) +sub (16+16j) (-inf+2j) (inf+14j) +sub (16+16j) (-inf+16j) (inf+0j) +sub (16+16j) (-inf+infj) (inf-infj) +sub (16+16j) (-inf+nanj) (inf+nanj) +sub (16+16j) (-16-infj) (32+infj) +sub (16+16j) (-16-16j) (32+32j) +sub (16+16j) (-16-2j) (32+18j) +sub (16+16j) (-16-0j) (32+16j) +sub (16+16j) (-16+0j) (32+16j) +sub (16+16j) (-16+2j) (32+14j) +sub (16+16j) (-16+16j) (32+0j) +sub (16+16j) (-16+infj) (32-infj) +sub (16+16j) (-16+nanj) (32+nanj) +sub (16+16j) (-2-infj) (18+infj) +sub (16+16j) (-2-16j) (18+32j) +sub (16+16j) (-2-2j) (18+18j) +sub (16+16j) (-2-0j) (18+16j) +sub (16+16j) (-2+0j) (18+16j) +sub (16+16j) (-2+2j) (18+14j) +sub (16+16j) (-2+16j) (18+0j) +sub (16+16j) (-2+infj) (18-infj) +sub (16+16j) (-2+nanj) (18+nanj) +sub (16+16j) (-0-infj) (16+infj) +sub (16+16j) (-0-16j) (16+32j) +sub (16+16j) (-0-2j) (16+18j) +sub (16+16j) (-0-0j) (16+16j) +sub (16+16j) (-0+0j) (16+16j) +sub (16+16j) (-0+2j) (16+14j) +sub (16+16j) (-0+16j) (16+0j) +sub (16+16j) (-0+infj) (16-infj) +sub (16+16j) (-0+nanj) (16+nanj) +sub (16+16j) -infj (16+infj) +sub (16+16j) -16j (16+32j) +sub (16+16j) -2j (16+18j) +sub (16+16j) -0j (16+16j) +sub (16+16j) 0j (16+16j) +sub (16+16j) 2j (16+14j) +sub (16+16j) 16j (16+0j) +sub (16+16j) infj (16-infj) +sub (16+16j) nanj (16+nanj) +sub (16+16j) (2-infj) (14+infj) +sub (16+16j) (2-16j) (14+32j) +sub (16+16j) (2-2j) (14+18j) +sub (16+16j) (2-0j) (14+16j) +sub (16+16j) (2+0j) (14+16j) +sub (16+16j) (2+2j) (14+14j) +sub (16+16j) (2+16j) (14+0j) +sub (16+16j) (2+infj) (14-infj) +sub (16+16j) (2+nanj) (14+nanj) +sub (16+16j) (16-infj) infj +sub (16+16j) (16-16j) 32j +sub (16+16j) (16-2j) 18j +sub (16+16j) (16-0j) 16j +sub (16+16j) (16+0j) 16j +sub (16+16j) (16+2j) 14j +sub (16+16j) (16+16j) 0j +sub (16+16j) (16+infj) -infj +sub (16+16j) (16+nanj) nanj +sub (16+16j) (inf-infj) (-inf+infj) +sub (16+16j) (inf-16j) (-inf+32j) +sub (16+16j) (inf-2j) (-inf+18j) +sub (16+16j) (inf-0j) (-inf+16j) +sub (16+16j) (inf+0j) (-inf+16j) +sub (16+16j) (inf+2j) (-inf+14j) +sub (16+16j) (inf+16j) (-inf+0j) +sub (16+16j) (inf+infj) (-inf-infj) +sub (16+16j) (inf+nanj) (-inf+nanj) +sub (16+16j) (nan-infj) (nan+infj) +sub (16+16j) (nan-16j) (nan+32j) +sub (16+16j) (nan-2j) (nan+18j) +sub (16+16j) (nan-0j) (nan+16j) +sub (16+16j) (nan+0j) (nan+16j) +sub (16+16j) (nan+2j) (nan+14j) +sub (16+16j) (nan+16j) (nan+0j) +sub (16+16j) (nan+infj) (nan-infj) +sub (16+16j) (nan+nanj) (nan+nanj) +sub (16+infj) (-inf-infj) (inf+infj) +sub (16+infj) (-inf-16j) (inf+infj) +sub (16+infj) (-inf-2j) (inf+infj) +sub (16+infj) (-inf-0j) (inf+infj) +sub (16+infj) (-inf+0j) (inf+infj) +sub (16+infj) (-inf+2j) (inf+infj) +sub (16+infj) (-inf+16j) (inf+infj) +sub (16+infj) (-inf+infj) (inf+nanj) +sub (16+infj) (-inf+nanj) (inf+nanj) +sub (16+infj) (-16-infj) (32+infj) +sub (16+infj) (-16-16j) (32+infj) +sub (16+infj) (-16-2j) (32+infj) +sub (16+infj) (-16-0j) (32+infj) +sub (16+infj) (-16+0j) (32+infj) +sub (16+infj) (-16+2j) (32+infj) +sub (16+infj) (-16+16j) (32+infj) +sub (16+infj) (-16+infj) (32+nanj) +sub (16+infj) (-16+nanj) (32+nanj) +sub (16+infj) (-2-infj) (18+infj) +sub (16+infj) (-2-16j) (18+infj) +sub (16+infj) (-2-2j) (18+infj) +sub (16+infj) (-2-0j) (18+infj) +sub (16+infj) (-2+0j) (18+infj) +sub (16+infj) (-2+2j) (18+infj) +sub (16+infj) (-2+16j) (18+infj) +sub (16+infj) (-2+infj) (18+nanj) +sub (16+infj) (-2+nanj) (18+nanj) +sub (16+infj) (-0-infj) (16+infj) +sub (16+infj) (-0-16j) (16+infj) +sub (16+infj) (-0-2j) (16+infj) +sub (16+infj) (-0-0j) (16+infj) +sub (16+infj) (-0+0j) (16+infj) +sub (16+infj) (-0+2j) (16+infj) +sub (16+infj) (-0+16j) (16+infj) +sub (16+infj) (-0+infj) (16+nanj) +sub (16+infj) (-0+nanj) (16+nanj) +sub (16+infj) -infj (16+infj) +sub (16+infj) -16j (16+infj) +sub (16+infj) -2j (16+infj) +sub (16+infj) -0j (16+infj) +sub (16+infj) 0j (16+infj) +sub (16+infj) 2j (16+infj) +sub (16+infj) 16j (16+infj) +sub (16+infj) infj (16+nanj) +sub (16+infj) nanj (16+nanj) +sub (16+infj) (2-infj) (14+infj) +sub (16+infj) (2-16j) (14+infj) +sub (16+infj) (2-2j) (14+infj) +sub (16+infj) (2-0j) (14+infj) +sub (16+infj) (2+0j) (14+infj) +sub (16+infj) (2+2j) (14+infj) +sub (16+infj) (2+16j) (14+infj) +sub (16+infj) (2+infj) (14+nanj) +sub (16+infj) (2+nanj) (14+nanj) +sub (16+infj) (16-infj) infj +sub (16+infj) (16-16j) infj +sub (16+infj) (16-2j) infj +sub (16+infj) (16-0j) infj +sub (16+infj) (16+0j) infj +sub (16+infj) (16+2j) infj +sub (16+infj) (16+16j) infj +sub (16+infj) (16+infj) nanj +sub (16+infj) (16+nanj) nanj +sub (16+infj) (inf-infj) (-inf+infj) +sub (16+infj) (inf-16j) (-inf+infj) +sub (16+infj) (inf-2j) (-inf+infj) +sub (16+infj) (inf-0j) (-inf+infj) +sub (16+infj) (inf+0j) (-inf+infj) +sub (16+infj) (inf+2j) (-inf+infj) +sub (16+infj) (inf+16j) (-inf+infj) +sub (16+infj) (inf+infj) (-inf+nanj) +sub (16+infj) (inf+nanj) (-inf+nanj) +sub (16+infj) (nan-infj) (nan+infj) +sub (16+infj) (nan-16j) (nan+infj) +sub (16+infj) (nan-2j) (nan+infj) +sub (16+infj) (nan-0j) (nan+infj) +sub (16+infj) (nan+0j) (nan+infj) +sub (16+infj) (nan+2j) (nan+infj) +sub (16+infj) (nan+16j) (nan+infj) +sub (16+infj) (nan+infj) (nan+nanj) +sub (16+infj) (nan+nanj) (nan+nanj) +sub (16+nanj) (-inf-infj) (inf+nanj) +sub (16+nanj) (-inf-16j) (inf+nanj) +sub (16+nanj) (-inf-2j) (inf+nanj) +sub (16+nanj) (-inf-0j) (inf+nanj) +sub (16+nanj) (-inf+0j) (inf+nanj) +sub (16+nanj) (-inf+2j) (inf+nanj) +sub (16+nanj) (-inf+16j) (inf+nanj) +sub (16+nanj) (-inf+infj) (inf+nanj) +sub (16+nanj) (-inf+nanj) (inf+nanj) +sub (16+nanj) (-16-infj) (32+nanj) +sub (16+nanj) (-16-16j) (32+nanj) +sub (16+nanj) (-16-2j) (32+nanj) +sub (16+nanj) (-16-0j) (32+nanj) +sub (16+nanj) (-16+0j) (32+nanj) +sub (16+nanj) (-16+2j) (32+nanj) +sub (16+nanj) (-16+16j) (32+nanj) +sub (16+nanj) (-16+infj) (32+nanj) +sub (16+nanj) (-16+nanj) (32+nanj) +sub (16+nanj) (-2-infj) (18+nanj) +sub (16+nanj) (-2-16j) (18+nanj) +sub (16+nanj) (-2-2j) (18+nanj) +sub (16+nanj) (-2-0j) (18+nanj) +sub (16+nanj) (-2+0j) (18+nanj) +sub (16+nanj) (-2+2j) (18+nanj) +sub (16+nanj) (-2+16j) (18+nanj) +sub (16+nanj) (-2+infj) (18+nanj) +sub (16+nanj) (-2+nanj) (18+nanj) +sub (16+nanj) (-0-infj) (16+nanj) +sub (16+nanj) (-0-16j) (16+nanj) +sub (16+nanj) (-0-2j) (16+nanj) +sub (16+nanj) (-0-0j) (16+nanj) +sub (16+nanj) (-0+0j) (16+nanj) +sub (16+nanj) (-0+2j) (16+nanj) +sub (16+nanj) (-0+16j) (16+nanj) +sub (16+nanj) (-0+infj) (16+nanj) +sub (16+nanj) (-0+nanj) (16+nanj) +sub (16+nanj) -infj (16+nanj) +sub (16+nanj) -16j (16+nanj) +sub (16+nanj) -2j (16+nanj) +sub (16+nanj) -0j (16+nanj) +sub (16+nanj) 0j (16+nanj) +sub (16+nanj) 2j (16+nanj) +sub (16+nanj) 16j (16+nanj) +sub (16+nanj) infj (16+nanj) +sub (16+nanj) nanj (16+nanj) +sub (16+nanj) (2-infj) (14+nanj) +sub (16+nanj) (2-16j) (14+nanj) +sub (16+nanj) (2-2j) (14+nanj) +sub (16+nanj) (2-0j) (14+nanj) +sub (16+nanj) (2+0j) (14+nanj) +sub (16+nanj) (2+2j) (14+nanj) +sub (16+nanj) (2+16j) (14+nanj) +sub (16+nanj) (2+infj) (14+nanj) +sub (16+nanj) (2+nanj) (14+nanj) +sub (16+nanj) (16-infj) nanj +sub (16+nanj) (16-16j) nanj +sub (16+nanj) (16-2j) nanj +sub (16+nanj) (16-0j) nanj +sub (16+nanj) (16+0j) nanj +sub (16+nanj) (16+2j) nanj +sub (16+nanj) (16+16j) nanj +sub (16+nanj) (16+infj) nanj +sub (16+nanj) (16+nanj) nanj +sub (16+nanj) (inf-infj) (-inf+nanj) +sub (16+nanj) (inf-16j) (-inf+nanj) +sub (16+nanj) (inf-2j) (-inf+nanj) +sub (16+nanj) (inf-0j) (-inf+nanj) +sub (16+nanj) (inf+0j) (-inf+nanj) +sub (16+nanj) (inf+2j) (-inf+nanj) +sub (16+nanj) (inf+16j) (-inf+nanj) +sub (16+nanj) (inf+infj) (-inf+nanj) +sub (16+nanj) (inf+nanj) (-inf+nanj) +sub (16+nanj) (nan-infj) (nan+nanj) +sub (16+nanj) (nan-16j) (nan+nanj) +sub (16+nanj) (nan-2j) (nan+nanj) +sub (16+nanj) (nan-0j) (nan+nanj) +sub (16+nanj) (nan+0j) (nan+nanj) +sub (16+nanj) (nan+2j) (nan+nanj) +sub (16+nanj) (nan+16j) (nan+nanj) +sub (16+nanj) (nan+infj) (nan+nanj) +sub (16+nanj) (nan+nanj) (nan+nanj) +sub (inf-infj) (-inf-infj) (inf+nanj) +sub (inf-infj) (-inf-16j) (inf-infj) +sub (inf-infj) (-inf-2j) (inf-infj) +sub (inf-infj) (-inf-0j) (inf-infj) +sub (inf-infj) (-inf+0j) (inf-infj) +sub (inf-infj) (-inf+2j) (inf-infj) +sub (inf-infj) (-inf+16j) (inf-infj) +sub (inf-infj) (-inf+infj) (inf-infj) +sub (inf-infj) (-inf+nanj) (inf+nanj) +sub (inf-infj) (-16-infj) (inf+nanj) +sub (inf-infj) (-16-16j) (inf-infj) +sub (inf-infj) (-16-2j) (inf-infj) +sub (inf-infj) (-16-0j) (inf-infj) +sub (inf-infj) (-16+0j) (inf-infj) +sub (inf-infj) (-16+2j) (inf-infj) +sub (inf-infj) (-16+16j) (inf-infj) +sub (inf-infj) (-16+infj) (inf-infj) +sub (inf-infj) (-16+nanj) (inf+nanj) +sub (inf-infj) (-2-infj) (inf+nanj) +sub (inf-infj) (-2-16j) (inf-infj) +sub (inf-infj) (-2-2j) (inf-infj) +sub (inf-infj) (-2-0j) (inf-infj) +sub (inf-infj) (-2+0j) (inf-infj) +sub (inf-infj) (-2+2j) (inf-infj) +sub (inf-infj) (-2+16j) (inf-infj) +sub (inf-infj) (-2+infj) (inf-infj) +sub (inf-infj) (-2+nanj) (inf+nanj) +sub (inf-infj) (-0-infj) (inf+nanj) +sub (inf-infj) (-0-16j) (inf-infj) +sub (inf-infj) (-0-2j) (inf-infj) +sub (inf-infj) (-0-0j) (inf-infj) +sub (inf-infj) (-0+0j) (inf-infj) +sub (inf-infj) (-0+2j) (inf-infj) +sub (inf-infj) (-0+16j) (inf-infj) +sub (inf-infj) (-0+infj) (inf-infj) +sub (inf-infj) (-0+nanj) (inf+nanj) +sub (inf-infj) -infj (inf+nanj) +sub (inf-infj) -16j (inf-infj) +sub (inf-infj) -2j (inf-infj) +sub (inf-infj) -0j (inf-infj) +sub (inf-infj) 0j (inf-infj) +sub (inf-infj) 2j (inf-infj) +sub (inf-infj) 16j (inf-infj) +sub (inf-infj) infj (inf-infj) +sub (inf-infj) nanj (inf+nanj) +sub (inf-infj) (2-infj) (inf+nanj) +sub (inf-infj) (2-16j) (inf-infj) +sub (inf-infj) (2-2j) (inf-infj) +sub (inf-infj) (2-0j) (inf-infj) +sub (inf-infj) (2+0j) (inf-infj) +sub (inf-infj) (2+2j) (inf-infj) +sub (inf-infj) (2+16j) (inf-infj) +sub (inf-infj) (2+infj) (inf-infj) +sub (inf-infj) (2+nanj) (inf+nanj) +sub (inf-infj) (16-infj) (inf+nanj) +sub (inf-infj) (16-16j) (inf-infj) +sub (inf-infj) (16-2j) (inf-infj) +sub (inf-infj) (16-0j) (inf-infj) +sub (inf-infj) (16+0j) (inf-infj) +sub (inf-infj) (16+2j) (inf-infj) +sub (inf-infj) (16+16j) (inf-infj) +sub (inf-infj) (16+infj) (inf-infj) +sub (inf-infj) (16+nanj) (inf+nanj) +sub (inf-infj) (inf-infj) (nan+nanj) +sub (inf-infj) (inf-16j) (nan-infj) +sub (inf-infj) (inf-2j) (nan-infj) +sub (inf-infj) (inf-0j) (nan-infj) +sub (inf-infj) (inf+0j) (nan-infj) +sub (inf-infj) (inf+2j) (nan-infj) +sub (inf-infj) (inf+16j) (nan-infj) +sub (inf-infj) (inf+infj) (nan-infj) +sub (inf-infj) (inf+nanj) (nan+nanj) +sub (inf-infj) (nan-infj) (nan+nanj) +sub (inf-infj) (nan-16j) (nan-infj) +sub (inf-infj) (nan-2j) (nan-infj) +sub (inf-infj) (nan-0j) (nan-infj) +sub (inf-infj) (nan+0j) (nan-infj) +sub (inf-infj) (nan+2j) (nan-infj) +sub (inf-infj) (nan+16j) (nan-infj) +sub (inf-infj) (nan+infj) (nan-infj) +sub (inf-infj) (nan+nanj) (nan+nanj) +sub (inf-16j) (-inf-infj) (inf+infj) +sub (inf-16j) (-inf-16j) (inf+0j) +sub (inf-16j) (-inf-2j) (inf-14j) +sub (inf-16j) (-inf-0j) (inf-16j) +sub (inf-16j) (-inf+0j) (inf-16j) +sub (inf-16j) (-inf+2j) (inf-18j) +sub (inf-16j) (-inf+16j) (inf-32j) +sub (inf-16j) (-inf+infj) (inf-infj) +sub (inf-16j) (-inf+nanj) (inf+nanj) +sub (inf-16j) (-16-infj) (inf+infj) +sub (inf-16j) (-16-16j) (inf+0j) +sub (inf-16j) (-16-2j) (inf-14j) +sub (inf-16j) (-16-0j) (inf-16j) +sub (inf-16j) (-16+0j) (inf-16j) +sub (inf-16j) (-16+2j) (inf-18j) +sub (inf-16j) (-16+16j) (inf-32j) +sub (inf-16j) (-16+infj) (inf-infj) +sub (inf-16j) (-16+nanj) (inf+nanj) +sub (inf-16j) (-2-infj) (inf+infj) +sub (inf-16j) (-2-16j) (inf+0j) +sub (inf-16j) (-2-2j) (inf-14j) +sub (inf-16j) (-2-0j) (inf-16j) +sub (inf-16j) (-2+0j) (inf-16j) +sub (inf-16j) (-2+2j) (inf-18j) +sub (inf-16j) (-2+16j) (inf-32j) +sub (inf-16j) (-2+infj) (inf-infj) +sub (inf-16j) (-2+nanj) (inf+nanj) +sub (inf-16j) (-0-infj) (inf+infj) +sub (inf-16j) (-0-16j) (inf+0j) +sub (inf-16j) (-0-2j) (inf-14j) +sub (inf-16j) (-0-0j) (inf-16j) +sub (inf-16j) (-0+0j) (inf-16j) +sub (inf-16j) (-0+2j) (inf-18j) +sub (inf-16j) (-0+16j) (inf-32j) +sub (inf-16j) (-0+infj) (inf-infj) +sub (inf-16j) (-0+nanj) (inf+nanj) +sub (inf-16j) -infj (inf+infj) +sub (inf-16j) -16j (inf+0j) +sub (inf-16j) -2j (inf-14j) +sub (inf-16j) -0j (inf-16j) +sub (inf-16j) 0j (inf-16j) +sub (inf-16j) 2j (inf-18j) +sub (inf-16j) 16j (inf-32j) +sub (inf-16j) infj (inf-infj) +sub (inf-16j) nanj (inf+nanj) +sub (inf-16j) (2-infj) (inf+infj) +sub (inf-16j) (2-16j) (inf+0j) +sub (inf-16j) (2-2j) (inf-14j) +sub (inf-16j) (2-0j) (inf-16j) +sub (inf-16j) (2+0j) (inf-16j) +sub (inf-16j) (2+2j) (inf-18j) +sub (inf-16j) (2+16j) (inf-32j) +sub (inf-16j) (2+infj) (inf-infj) +sub (inf-16j) (2+nanj) (inf+nanj) +sub (inf-16j) (16-infj) (inf+infj) +sub (inf-16j) (16-16j) (inf+0j) +sub (inf-16j) (16-2j) (inf-14j) +sub (inf-16j) (16-0j) (inf-16j) +sub (inf-16j) (16+0j) (inf-16j) +sub (inf-16j) (16+2j) (inf-18j) +sub (inf-16j) (16+16j) (inf-32j) +sub (inf-16j) (16+infj) (inf-infj) +sub (inf-16j) (16+nanj) (inf+nanj) +sub (inf-16j) (inf-infj) (nan+infj) +sub (inf-16j) (inf-16j) (nan+0j) +sub (inf-16j) (inf-2j) (nan-14j) +sub (inf-16j) (inf-0j) (nan-16j) +sub (inf-16j) (inf+0j) (nan-16j) +sub (inf-16j) (inf+2j) (nan-18j) +sub (inf-16j) (inf+16j) (nan-32j) +sub (inf-16j) (inf+infj) (nan-infj) +sub (inf-16j) (inf+nanj) (nan+nanj) +sub (inf-16j) (nan-infj) (nan+infj) +sub (inf-16j) (nan-16j) (nan+0j) +sub (inf-16j) (nan-2j) (nan-14j) +sub (inf-16j) (nan-0j) (nan-16j) +sub (inf-16j) (nan+0j) (nan-16j) +sub (inf-16j) (nan+2j) (nan-18j) +sub (inf-16j) (nan+16j) (nan-32j) +sub (inf-16j) (nan+infj) (nan-infj) +sub (inf-16j) (nan+nanj) (nan+nanj) +sub (inf-2j) (-inf-infj) (inf+infj) +sub (inf-2j) (-inf-16j) (inf+14j) +sub (inf-2j) (-inf-2j) (inf+0j) +sub (inf-2j) (-inf-0j) (inf-2j) +sub (inf-2j) (-inf+0j) (inf-2j) +sub (inf-2j) (-inf+2j) (inf-4j) +sub (inf-2j) (-inf+16j) (inf-18j) +sub (inf-2j) (-inf+infj) (inf-infj) +sub (inf-2j) (-inf+nanj) (inf+nanj) +sub (inf-2j) (-16-infj) (inf+infj) +sub (inf-2j) (-16-16j) (inf+14j) +sub (inf-2j) (-16-2j) (inf+0j) +sub (inf-2j) (-16-0j) (inf-2j) +sub (inf-2j) (-16+0j) (inf-2j) +sub (inf-2j) (-16+2j) (inf-4j) +sub (inf-2j) (-16+16j) (inf-18j) +sub (inf-2j) (-16+infj) (inf-infj) +sub (inf-2j) (-16+nanj) (inf+nanj) +sub (inf-2j) (-2-infj) (inf+infj) +sub (inf-2j) (-2-16j) (inf+14j) +sub (inf-2j) (-2-2j) (inf+0j) +sub (inf-2j) (-2-0j) (inf-2j) +sub (inf-2j) (-2+0j) (inf-2j) +sub (inf-2j) (-2+2j) (inf-4j) +sub (inf-2j) (-2+16j) (inf-18j) +sub (inf-2j) (-2+infj) (inf-infj) +sub (inf-2j) (-2+nanj) (inf+nanj) +sub (inf-2j) (-0-infj) (inf+infj) +sub (inf-2j) (-0-16j) (inf+14j) +sub (inf-2j) (-0-2j) (inf+0j) +sub (inf-2j) (-0-0j) (inf-2j) +sub (inf-2j) (-0+0j) (inf-2j) +sub (inf-2j) (-0+2j) (inf-4j) +sub (inf-2j) (-0+16j) (inf-18j) +sub (inf-2j) (-0+infj) (inf-infj) +sub (inf-2j) (-0+nanj) (inf+nanj) +sub (inf-2j) -infj (inf+infj) +sub (inf-2j) -16j (inf+14j) +sub (inf-2j) -2j (inf+0j) +sub (inf-2j) -0j (inf-2j) +sub (inf-2j) 0j (inf-2j) +sub (inf-2j) 2j (inf-4j) +sub (inf-2j) 16j (inf-18j) +sub (inf-2j) infj (inf-infj) +sub (inf-2j) nanj (inf+nanj) +sub (inf-2j) (2-infj) (inf+infj) +sub (inf-2j) (2-16j) (inf+14j) +sub (inf-2j) (2-2j) (inf+0j) +sub (inf-2j) (2-0j) (inf-2j) +sub (inf-2j) (2+0j) (inf-2j) +sub (inf-2j) (2+2j) (inf-4j) +sub (inf-2j) (2+16j) (inf-18j) +sub (inf-2j) (2+infj) (inf-infj) +sub (inf-2j) (2+nanj) (inf+nanj) +sub (inf-2j) (16-infj) (inf+infj) +sub (inf-2j) (16-16j) (inf+14j) +sub (inf-2j) (16-2j) (inf+0j) +sub (inf-2j) (16-0j) (inf-2j) +sub (inf-2j) (16+0j) (inf-2j) +sub (inf-2j) (16+2j) (inf-4j) +sub (inf-2j) (16+16j) (inf-18j) +sub (inf-2j) (16+infj) (inf-infj) +sub (inf-2j) (16+nanj) (inf+nanj) +sub (inf-2j) (inf-infj) (nan+infj) +sub (inf-2j) (inf-16j) (nan+14j) +sub (inf-2j) (inf-2j) (nan+0j) +sub (inf-2j) (inf-0j) (nan-2j) +sub (inf-2j) (inf+0j) (nan-2j) +sub (inf-2j) (inf+2j) (nan-4j) +sub (inf-2j) (inf+16j) (nan-18j) +sub (inf-2j) (inf+infj) (nan-infj) +sub (inf-2j) (inf+nanj) (nan+nanj) +sub (inf-2j) (nan-infj) (nan+infj) +sub (inf-2j) (nan-16j) (nan+14j) +sub (inf-2j) (nan-2j) (nan+0j) +sub (inf-2j) (nan-0j) (nan-2j) +sub (inf-2j) (nan+0j) (nan-2j) +sub (inf-2j) (nan+2j) (nan-4j) +sub (inf-2j) (nan+16j) (nan-18j) +sub (inf-2j) (nan+infj) (nan-infj) +sub (inf-2j) (nan+nanj) (nan+nanj) +sub (inf-0j) (-inf-infj) (inf+infj) +sub (inf-0j) (-inf-16j) (inf+16j) +sub (inf-0j) (-inf-2j) (inf+2j) +sub (inf-0j) (-inf-0j) (inf+0j) +sub (inf-0j) (-inf+0j) (inf-0j) +sub (inf-0j) (-inf+2j) (inf-2j) +sub (inf-0j) (-inf+16j) (inf-16j) +sub (inf-0j) (-inf+infj) (inf-infj) +sub (inf-0j) (-inf+nanj) (inf+nanj) +sub (inf-0j) (-16-infj) (inf+infj) +sub (inf-0j) (-16-16j) (inf+16j) +sub (inf-0j) (-16-2j) (inf+2j) +sub (inf-0j) (-16-0j) (inf+0j) +sub (inf-0j) (-16+0j) (inf-0j) +sub (inf-0j) (-16+2j) (inf-2j) +sub (inf-0j) (-16+16j) (inf-16j) +sub (inf-0j) (-16+infj) (inf-infj) +sub (inf-0j) (-16+nanj) (inf+nanj) +sub (inf-0j) (-2-infj) (inf+infj) +sub (inf-0j) (-2-16j) (inf+16j) +sub (inf-0j) (-2-2j) (inf+2j) +sub (inf-0j) (-2-0j) (inf+0j) +sub (inf-0j) (-2+0j) (inf-0j) +sub (inf-0j) (-2+2j) (inf-2j) +sub (inf-0j) (-2+16j) (inf-16j) +sub (inf-0j) (-2+infj) (inf-infj) +sub (inf-0j) (-2+nanj) (inf+nanj) +sub (inf-0j) (-0-infj) (inf+infj) +sub (inf-0j) (-0-16j) (inf+16j) +sub (inf-0j) (-0-2j) (inf+2j) +sub (inf-0j) (-0-0j) (inf+0j) +sub (inf-0j) (-0+0j) (inf-0j) +sub (inf-0j) (-0+2j) (inf-2j) +sub (inf-0j) (-0+16j) (inf-16j) +sub (inf-0j) (-0+infj) (inf-infj) +sub (inf-0j) (-0+nanj) (inf+nanj) +sub (inf-0j) -infj (inf+infj) +sub (inf-0j) -16j (inf+16j) +sub (inf-0j) -2j (inf+2j) +sub (inf-0j) -0j (inf+0j) +sub (inf-0j) 0j (inf-0j) +sub (inf-0j) 2j (inf-2j) +sub (inf-0j) 16j (inf-16j) +sub (inf-0j) infj (inf-infj) +sub (inf-0j) nanj (inf+nanj) +sub (inf-0j) (2-infj) (inf+infj) +sub (inf-0j) (2-16j) (inf+16j) +sub (inf-0j) (2-2j) (inf+2j) +sub (inf-0j) (2-0j) (inf+0j) +sub (inf-0j) (2+0j) (inf-0j) +sub (inf-0j) (2+2j) (inf-2j) +sub (inf-0j) (2+16j) (inf-16j) +sub (inf-0j) (2+infj) (inf-infj) +sub (inf-0j) (2+nanj) (inf+nanj) +sub (inf-0j) (16-infj) (inf+infj) +sub (inf-0j) (16-16j) (inf+16j) +sub (inf-0j) (16-2j) (inf+2j) +sub (inf-0j) (16-0j) (inf+0j) +sub (inf-0j) (16+0j) (inf-0j) +sub (inf-0j) (16+2j) (inf-2j) +sub (inf-0j) (16+16j) (inf-16j) +sub (inf-0j) (16+infj) (inf-infj) +sub (inf-0j) (16+nanj) (inf+nanj) +sub (inf-0j) (inf-infj) (nan+infj) +sub (inf-0j) (inf-16j) (nan+16j) +sub (inf-0j) (inf-2j) (nan+2j) +sub (inf-0j) (inf-0j) (nan+0j) +sub (inf-0j) (inf+0j) (nan-0j) +sub (inf-0j) (inf+2j) (nan-2j) +sub (inf-0j) (inf+16j) (nan-16j) +sub (inf-0j) (inf+infj) (nan-infj) +sub (inf-0j) (inf+nanj) (nan+nanj) +sub (inf-0j) (nan-infj) (nan+infj) +sub (inf-0j) (nan-16j) (nan+16j) +sub (inf-0j) (nan-2j) (nan+2j) +sub (inf-0j) (nan-0j) (nan+0j) +sub (inf-0j) (nan+0j) (nan-0j) +sub (inf-0j) (nan+2j) (nan-2j) +sub (inf-0j) (nan+16j) (nan-16j) +sub (inf-0j) (nan+infj) (nan-infj) +sub (inf-0j) (nan+nanj) (nan+nanj) +sub (inf+0j) (-inf-infj) (inf+infj) +sub (inf+0j) (-inf-16j) (inf+16j) +sub (inf+0j) (-inf-2j) (inf+2j) +sub (inf+0j) (-inf-0j) (inf+0j) +sub (inf+0j) (-inf+0j) (inf+0j) +sub (inf+0j) (-inf+2j) (inf-2j) +sub (inf+0j) (-inf+16j) (inf-16j) +sub (inf+0j) (-inf+infj) (inf-infj) +sub (inf+0j) (-inf+nanj) (inf+nanj) +sub (inf+0j) (-16-infj) (inf+infj) +sub (inf+0j) (-16-16j) (inf+16j) +sub (inf+0j) (-16-2j) (inf+2j) +sub (inf+0j) (-16-0j) (inf+0j) +sub (inf+0j) (-16+0j) (inf+0j) +sub (inf+0j) (-16+2j) (inf-2j) +sub (inf+0j) (-16+16j) (inf-16j) +sub (inf+0j) (-16+infj) (inf-infj) +sub (inf+0j) (-16+nanj) (inf+nanj) +sub (inf+0j) (-2-infj) (inf+infj) +sub (inf+0j) (-2-16j) (inf+16j) +sub (inf+0j) (-2-2j) (inf+2j) +sub (inf+0j) (-2-0j) (inf+0j) +sub (inf+0j) (-2+0j) (inf+0j) +sub (inf+0j) (-2+2j) (inf-2j) +sub (inf+0j) (-2+16j) (inf-16j) +sub (inf+0j) (-2+infj) (inf-infj) +sub (inf+0j) (-2+nanj) (inf+nanj) +sub (inf+0j) (-0-infj) (inf+infj) +sub (inf+0j) (-0-16j) (inf+16j) +sub (inf+0j) (-0-2j) (inf+2j) +sub (inf+0j) (-0-0j) (inf+0j) +sub (inf+0j) (-0+0j) (inf+0j) +sub (inf+0j) (-0+2j) (inf-2j) +sub (inf+0j) (-0+16j) (inf-16j) +sub (inf+0j) (-0+infj) (inf-infj) +sub (inf+0j) (-0+nanj) (inf+nanj) +sub (inf+0j) -infj (inf+infj) +sub (inf+0j) -16j (inf+16j) +sub (inf+0j) -2j (inf+2j) +sub (inf+0j) -0j (inf+0j) +sub (inf+0j) 0j (inf+0j) +sub (inf+0j) 2j (inf-2j) +sub (inf+0j) 16j (inf-16j) +sub (inf+0j) infj (inf-infj) +sub (inf+0j) nanj (inf+nanj) +sub (inf+0j) (2-infj) (inf+infj) +sub (inf+0j) (2-16j) (inf+16j) +sub (inf+0j) (2-2j) (inf+2j) +sub (inf+0j) (2-0j) (inf+0j) +sub (inf+0j) (2+0j) (inf+0j) +sub (inf+0j) (2+2j) (inf-2j) +sub (inf+0j) (2+16j) (inf-16j) +sub (inf+0j) (2+infj) (inf-infj) +sub (inf+0j) (2+nanj) (inf+nanj) +sub (inf+0j) (16-infj) (inf+infj) +sub (inf+0j) (16-16j) (inf+16j) +sub (inf+0j) (16-2j) (inf+2j) +sub (inf+0j) (16-0j) (inf+0j) +sub (inf+0j) (16+0j) (inf+0j) +sub (inf+0j) (16+2j) (inf-2j) +sub (inf+0j) (16+16j) (inf-16j) +sub (inf+0j) (16+infj) (inf-infj) +sub (inf+0j) (16+nanj) (inf+nanj) +sub (inf+0j) (inf-infj) (nan+infj) +sub (inf+0j) (inf-16j) (nan+16j) +sub (inf+0j) (inf-2j) (nan+2j) +sub (inf+0j) (inf-0j) (nan+0j) +sub (inf+0j) (inf+0j) (nan+0j) +sub (inf+0j) (inf+2j) (nan-2j) +sub (inf+0j) (inf+16j) (nan-16j) +sub (inf+0j) (inf+infj) (nan-infj) +sub (inf+0j) (inf+nanj) (nan+nanj) +sub (inf+0j) (nan-infj) (nan+infj) +sub (inf+0j) (nan-16j) (nan+16j) +sub (inf+0j) (nan-2j) (nan+2j) +sub (inf+0j) (nan-0j) (nan+0j) +sub (inf+0j) (nan+0j) (nan+0j) +sub (inf+0j) (nan+2j) (nan-2j) +sub (inf+0j) (nan+16j) (nan-16j) +sub (inf+0j) (nan+infj) (nan-infj) +sub (inf+0j) (nan+nanj) (nan+nanj) +sub (inf+2j) (-inf-infj) (inf+infj) +sub (inf+2j) (-inf-16j) (inf+18j) +sub (inf+2j) (-inf-2j) (inf+4j) +sub (inf+2j) (-inf-0j) (inf+2j) +sub (inf+2j) (-inf+0j) (inf+2j) +sub (inf+2j) (-inf+2j) (inf+0j) +sub (inf+2j) (-inf+16j) (inf-14j) +sub (inf+2j) (-inf+infj) (inf-infj) +sub (inf+2j) (-inf+nanj) (inf+nanj) +sub (inf+2j) (-16-infj) (inf+infj) +sub (inf+2j) (-16-16j) (inf+18j) +sub (inf+2j) (-16-2j) (inf+4j) +sub (inf+2j) (-16-0j) (inf+2j) +sub (inf+2j) (-16+0j) (inf+2j) +sub (inf+2j) (-16+2j) (inf+0j) +sub (inf+2j) (-16+16j) (inf-14j) +sub (inf+2j) (-16+infj) (inf-infj) +sub (inf+2j) (-16+nanj) (inf+nanj) +sub (inf+2j) (-2-infj) (inf+infj) +sub (inf+2j) (-2-16j) (inf+18j) +sub (inf+2j) (-2-2j) (inf+4j) +sub (inf+2j) (-2-0j) (inf+2j) +sub (inf+2j) (-2+0j) (inf+2j) +sub (inf+2j) (-2+2j) (inf+0j) +sub (inf+2j) (-2+16j) (inf-14j) +sub (inf+2j) (-2+infj) (inf-infj) +sub (inf+2j) (-2+nanj) (inf+nanj) +sub (inf+2j) (-0-infj) (inf+infj) +sub (inf+2j) (-0-16j) (inf+18j) +sub (inf+2j) (-0-2j) (inf+4j) +sub (inf+2j) (-0-0j) (inf+2j) +sub (inf+2j) (-0+0j) (inf+2j) +sub (inf+2j) (-0+2j) (inf+0j) +sub (inf+2j) (-0+16j) (inf-14j) +sub (inf+2j) (-0+infj) (inf-infj) +sub (inf+2j) (-0+nanj) (inf+nanj) +sub (inf+2j) -infj (inf+infj) +sub (inf+2j) -16j (inf+18j) +sub (inf+2j) -2j (inf+4j) +sub (inf+2j) -0j (inf+2j) +sub (inf+2j) 0j (inf+2j) +sub (inf+2j) 2j (inf+0j) +sub (inf+2j) 16j (inf-14j) +sub (inf+2j) infj (inf-infj) +sub (inf+2j) nanj (inf+nanj) +sub (inf+2j) (2-infj) (inf+infj) +sub (inf+2j) (2-16j) (inf+18j) +sub (inf+2j) (2-2j) (inf+4j) +sub (inf+2j) (2-0j) (inf+2j) +sub (inf+2j) (2+0j) (inf+2j) +sub (inf+2j) (2+2j) (inf+0j) +sub (inf+2j) (2+16j) (inf-14j) +sub (inf+2j) (2+infj) (inf-infj) +sub (inf+2j) (2+nanj) (inf+nanj) +sub (inf+2j) (16-infj) (inf+infj) +sub (inf+2j) (16-16j) (inf+18j) +sub (inf+2j) (16-2j) (inf+4j) +sub (inf+2j) (16-0j) (inf+2j) +sub (inf+2j) (16+0j) (inf+2j) +sub (inf+2j) (16+2j) (inf+0j) +sub (inf+2j) (16+16j) (inf-14j) +sub (inf+2j) (16+infj) (inf-infj) +sub (inf+2j) (16+nanj) (inf+nanj) +sub (inf+2j) (inf-infj) (nan+infj) +sub (inf+2j) (inf-16j) (nan+18j) +sub (inf+2j) (inf-2j) (nan+4j) +sub (inf+2j) (inf-0j) (nan+2j) +sub (inf+2j) (inf+0j) (nan+2j) +sub (inf+2j) (inf+2j) (nan+0j) +sub (inf+2j) (inf+16j) (nan-14j) +sub (inf+2j) (inf+infj) (nan-infj) +sub (inf+2j) (inf+nanj) (nan+nanj) +sub (inf+2j) (nan-infj) (nan+infj) +sub (inf+2j) (nan-16j) (nan+18j) +sub (inf+2j) (nan-2j) (nan+4j) +sub (inf+2j) (nan-0j) (nan+2j) +sub (inf+2j) (nan+0j) (nan+2j) +sub (inf+2j) (nan+2j) (nan+0j) +sub (inf+2j) (nan+16j) (nan-14j) +sub (inf+2j) (nan+infj) (nan-infj) +sub (inf+2j) (nan+nanj) (nan+nanj) +sub (inf+16j) (-inf-infj) (inf+infj) +sub (inf+16j) (-inf-16j) (inf+32j) +sub (inf+16j) (-inf-2j) (inf+18j) +sub (inf+16j) (-inf-0j) (inf+16j) +sub (inf+16j) (-inf+0j) (inf+16j) +sub (inf+16j) (-inf+2j) (inf+14j) +sub (inf+16j) (-inf+16j) (inf+0j) +sub (inf+16j) (-inf+infj) (inf-infj) +sub (inf+16j) (-inf+nanj) (inf+nanj) +sub (inf+16j) (-16-infj) (inf+infj) +sub (inf+16j) (-16-16j) (inf+32j) +sub (inf+16j) (-16-2j) (inf+18j) +sub (inf+16j) (-16-0j) (inf+16j) +sub (inf+16j) (-16+0j) (inf+16j) +sub (inf+16j) (-16+2j) (inf+14j) +sub (inf+16j) (-16+16j) (inf+0j) +sub (inf+16j) (-16+infj) (inf-infj) +sub (inf+16j) (-16+nanj) (inf+nanj) +sub (inf+16j) (-2-infj) (inf+infj) +sub (inf+16j) (-2-16j) (inf+32j) +sub (inf+16j) (-2-2j) (inf+18j) +sub (inf+16j) (-2-0j) (inf+16j) +sub (inf+16j) (-2+0j) (inf+16j) +sub (inf+16j) (-2+2j) (inf+14j) +sub (inf+16j) (-2+16j) (inf+0j) +sub (inf+16j) (-2+infj) (inf-infj) +sub (inf+16j) (-2+nanj) (inf+nanj) +sub (inf+16j) (-0-infj) (inf+infj) +sub (inf+16j) (-0-16j) (inf+32j) +sub (inf+16j) (-0-2j) (inf+18j) +sub (inf+16j) (-0-0j) (inf+16j) +sub (inf+16j) (-0+0j) (inf+16j) +sub (inf+16j) (-0+2j) (inf+14j) +sub (inf+16j) (-0+16j) (inf+0j) +sub (inf+16j) (-0+infj) (inf-infj) +sub (inf+16j) (-0+nanj) (inf+nanj) +sub (inf+16j) -infj (inf+infj) +sub (inf+16j) -16j (inf+32j) +sub (inf+16j) -2j (inf+18j) +sub (inf+16j) -0j (inf+16j) +sub (inf+16j) 0j (inf+16j) +sub (inf+16j) 2j (inf+14j) +sub (inf+16j) 16j (inf+0j) +sub (inf+16j) infj (inf-infj) +sub (inf+16j) nanj (inf+nanj) +sub (inf+16j) (2-infj) (inf+infj) +sub (inf+16j) (2-16j) (inf+32j) +sub (inf+16j) (2-2j) (inf+18j) +sub (inf+16j) (2-0j) (inf+16j) +sub (inf+16j) (2+0j) (inf+16j) +sub (inf+16j) (2+2j) (inf+14j) +sub (inf+16j) (2+16j) (inf+0j) +sub (inf+16j) (2+infj) (inf-infj) +sub (inf+16j) (2+nanj) (inf+nanj) +sub (inf+16j) (16-infj) (inf+infj) +sub (inf+16j) (16-16j) (inf+32j) +sub (inf+16j) (16-2j) (inf+18j) +sub (inf+16j) (16-0j) (inf+16j) +sub (inf+16j) (16+0j) (inf+16j) +sub (inf+16j) (16+2j) (inf+14j) +sub (inf+16j) (16+16j) (inf+0j) +sub (inf+16j) (16+infj) (inf-infj) +sub (inf+16j) (16+nanj) (inf+nanj) +sub (inf+16j) (inf-infj) (nan+infj) +sub (inf+16j) (inf-16j) (nan+32j) +sub (inf+16j) (inf-2j) (nan+18j) +sub (inf+16j) (inf-0j) (nan+16j) +sub (inf+16j) (inf+0j) (nan+16j) +sub (inf+16j) (inf+2j) (nan+14j) +sub (inf+16j) (inf+16j) (nan+0j) +sub (inf+16j) (inf+infj) (nan-infj) +sub (inf+16j) (inf+nanj) (nan+nanj) +sub (inf+16j) (nan-infj) (nan+infj) +sub (inf+16j) (nan-16j) (nan+32j) +sub (inf+16j) (nan-2j) (nan+18j) +sub (inf+16j) (nan-0j) (nan+16j) +sub (inf+16j) (nan+0j) (nan+16j) +sub (inf+16j) (nan+2j) (nan+14j) +sub (inf+16j) (nan+16j) (nan+0j) +sub (inf+16j) (nan+infj) (nan-infj) +sub (inf+16j) (nan+nanj) (nan+nanj) +sub (inf+infj) (-inf-infj) (inf+infj) +sub (inf+infj) (-inf-16j) (inf+infj) +sub (inf+infj) (-inf-2j) (inf+infj) +sub (inf+infj) (-inf-0j) (inf+infj) +sub (inf+infj) (-inf+0j) (inf+infj) +sub (inf+infj) (-inf+2j) (inf+infj) +sub (inf+infj) (-inf+16j) (inf+infj) +sub (inf+infj) (-inf+infj) (inf+nanj) +sub (inf+infj) (-inf+nanj) (inf+nanj) +sub (inf+infj) (-16-infj) (inf+infj) +sub (inf+infj) (-16-16j) (inf+infj) +sub (inf+infj) (-16-2j) (inf+infj) +sub (inf+infj) (-16-0j) (inf+infj) +sub (inf+infj) (-16+0j) (inf+infj) +sub (inf+infj) (-16+2j) (inf+infj) +sub (inf+infj) (-16+16j) (inf+infj) +sub (inf+infj) (-16+infj) (inf+nanj) +sub (inf+infj) (-16+nanj) (inf+nanj) +sub (inf+infj) (-2-infj) (inf+infj) +sub (inf+infj) (-2-16j) (inf+infj) +sub (inf+infj) (-2-2j) (inf+infj) +sub (inf+infj) (-2-0j) (inf+infj) +sub (inf+infj) (-2+0j) (inf+infj) +sub (inf+infj) (-2+2j) (inf+infj) +sub (inf+infj) (-2+16j) (inf+infj) +sub (inf+infj) (-2+infj) (inf+nanj) +sub (inf+infj) (-2+nanj) (inf+nanj) +sub (inf+infj) (-0-infj) (inf+infj) +sub (inf+infj) (-0-16j) (inf+infj) +sub (inf+infj) (-0-2j) (inf+infj) +sub (inf+infj) (-0-0j) (inf+infj) +sub (inf+infj) (-0+0j) (inf+infj) +sub (inf+infj) (-0+2j) (inf+infj) +sub (inf+infj) (-0+16j) (inf+infj) +sub (inf+infj) (-0+infj) (inf+nanj) +sub (inf+infj) (-0+nanj) (inf+nanj) +sub (inf+infj) -infj (inf+infj) +sub (inf+infj) -16j (inf+infj) +sub (inf+infj) -2j (inf+infj) +sub (inf+infj) -0j (inf+infj) +sub (inf+infj) 0j (inf+infj) +sub (inf+infj) 2j (inf+infj) +sub (inf+infj) 16j (inf+infj) +sub (inf+infj) infj (inf+nanj) +sub (inf+infj) nanj (inf+nanj) +sub (inf+infj) (2-infj) (inf+infj) +sub (inf+infj) (2-16j) (inf+infj) +sub (inf+infj) (2-2j) (inf+infj) +sub (inf+infj) (2-0j) (inf+infj) +sub (inf+infj) (2+0j) (inf+infj) +sub (inf+infj) (2+2j) (inf+infj) +sub (inf+infj) (2+16j) (inf+infj) +sub (inf+infj) (2+infj) (inf+nanj) +sub (inf+infj) (2+nanj) (inf+nanj) +sub (inf+infj) (16-infj) (inf+infj) +sub (inf+infj) (16-16j) (inf+infj) +sub (inf+infj) (16-2j) (inf+infj) +sub (inf+infj) (16-0j) (inf+infj) +sub (inf+infj) (16+0j) (inf+infj) +sub (inf+infj) (16+2j) (inf+infj) +sub (inf+infj) (16+16j) (inf+infj) +sub (inf+infj) (16+infj) (inf+nanj) +sub (inf+infj) (16+nanj) (inf+nanj) +sub (inf+infj) (inf-infj) (nan+infj) +sub (inf+infj) (inf-16j) (nan+infj) +sub (inf+infj) (inf-2j) (nan+infj) +sub (inf+infj) (inf-0j) (nan+infj) +sub (inf+infj) (inf+0j) (nan+infj) +sub (inf+infj) (inf+2j) (nan+infj) +sub (inf+infj) (inf+16j) (nan+infj) +sub (inf+infj) (inf+infj) (nan+nanj) +sub (inf+infj) (inf+nanj) (nan+nanj) +sub (inf+infj) (nan-infj) (nan+infj) +sub (inf+infj) (nan-16j) (nan+infj) +sub (inf+infj) (nan-2j) (nan+infj) +sub (inf+infj) (nan-0j) (nan+infj) +sub (inf+infj) (nan+0j) (nan+infj) +sub (inf+infj) (nan+2j) (nan+infj) +sub (inf+infj) (nan+16j) (nan+infj) +sub (inf+infj) (nan+infj) (nan+nanj) +sub (inf+infj) (nan+nanj) (nan+nanj) +sub (inf+nanj) (-inf-infj) (inf+nanj) +sub (inf+nanj) (-inf-16j) (inf+nanj) +sub (inf+nanj) (-inf-2j) (inf+nanj) +sub (inf+nanj) (-inf-0j) (inf+nanj) +sub (inf+nanj) (-inf+0j) (inf+nanj) +sub (inf+nanj) (-inf+2j) (inf+nanj) +sub (inf+nanj) (-inf+16j) (inf+nanj) +sub (inf+nanj) (-inf+infj) (inf+nanj) +sub (inf+nanj) (-inf+nanj) (inf+nanj) +sub (inf+nanj) (-16-infj) (inf+nanj) +sub (inf+nanj) (-16-16j) (inf+nanj) +sub (inf+nanj) (-16-2j) (inf+nanj) +sub (inf+nanj) (-16-0j) (inf+nanj) +sub (inf+nanj) (-16+0j) (inf+nanj) +sub (inf+nanj) (-16+2j) (inf+nanj) +sub (inf+nanj) (-16+16j) (inf+nanj) +sub (inf+nanj) (-16+infj) (inf+nanj) +sub (inf+nanj) (-16+nanj) (inf+nanj) +sub (inf+nanj) (-2-infj) (inf+nanj) +sub (inf+nanj) (-2-16j) (inf+nanj) +sub (inf+nanj) (-2-2j) (inf+nanj) +sub (inf+nanj) (-2-0j) (inf+nanj) +sub (inf+nanj) (-2+0j) (inf+nanj) +sub (inf+nanj) (-2+2j) (inf+nanj) +sub (inf+nanj) (-2+16j) (inf+nanj) +sub (inf+nanj) (-2+infj) (inf+nanj) +sub (inf+nanj) (-2+nanj) (inf+nanj) +sub (inf+nanj) (-0-infj) (inf+nanj) +sub (inf+nanj) (-0-16j) (inf+nanj) +sub (inf+nanj) (-0-2j) (inf+nanj) +sub (inf+nanj) (-0-0j) (inf+nanj) +sub (inf+nanj) (-0+0j) (inf+nanj) +sub (inf+nanj) (-0+2j) (inf+nanj) +sub (inf+nanj) (-0+16j) (inf+nanj) +sub (inf+nanj) (-0+infj) (inf+nanj) +sub (inf+nanj) (-0+nanj) (inf+nanj) +sub (inf+nanj) -infj (inf+nanj) +sub (inf+nanj) -16j (inf+nanj) +sub (inf+nanj) -2j (inf+nanj) +sub (inf+nanj) -0j (inf+nanj) +sub (inf+nanj) 0j (inf+nanj) +sub (inf+nanj) 2j (inf+nanj) +sub (inf+nanj) 16j (inf+nanj) +sub (inf+nanj) infj (inf+nanj) +sub (inf+nanj) nanj (inf+nanj) +sub (inf+nanj) (2-infj) (inf+nanj) +sub (inf+nanj) (2-16j) (inf+nanj) +sub (inf+nanj) (2-2j) (inf+nanj) +sub (inf+nanj) (2-0j) (inf+nanj) +sub (inf+nanj) (2+0j) (inf+nanj) +sub (inf+nanj) (2+2j) (inf+nanj) +sub (inf+nanj) (2+16j) (inf+nanj) +sub (inf+nanj) (2+infj) (inf+nanj) +sub (inf+nanj) (2+nanj) (inf+nanj) +sub (inf+nanj) (16-infj) (inf+nanj) +sub (inf+nanj) (16-16j) (inf+nanj) +sub (inf+nanj) (16-2j) (inf+nanj) +sub (inf+nanj) (16-0j) (inf+nanj) +sub (inf+nanj) (16+0j) (inf+nanj) +sub (inf+nanj) (16+2j) (inf+nanj) +sub (inf+nanj) (16+16j) (inf+nanj) +sub (inf+nanj) (16+infj) (inf+nanj) +sub (inf+nanj) (16+nanj) (inf+nanj) +sub (inf+nanj) (inf-infj) (nan+nanj) +sub (inf+nanj) (inf-16j) (nan+nanj) +sub (inf+nanj) (inf-2j) (nan+nanj) +sub (inf+nanj) (inf-0j) (nan+nanj) +sub (inf+nanj) (inf+0j) (nan+nanj) +sub (inf+nanj) (inf+2j) (nan+nanj) +sub (inf+nanj) (inf+16j) (nan+nanj) +sub (inf+nanj) (inf+infj) (nan+nanj) +sub (inf+nanj) (inf+nanj) (nan+nanj) +sub (inf+nanj) (nan-infj) (nan+nanj) +sub (inf+nanj) (nan-16j) (nan+nanj) +sub (inf+nanj) (nan-2j) (nan+nanj) +sub (inf+nanj) (nan-0j) (nan+nanj) +sub (inf+nanj) (nan+0j) (nan+nanj) +sub (inf+nanj) (nan+2j) (nan+nanj) +sub (inf+nanj) (nan+16j) (nan+nanj) +sub (inf+nanj) (nan+infj) (nan+nanj) +sub (inf+nanj) (nan+nanj) (nan+nanj) +sub (nan-infj) (-inf-infj) (nan+nanj) +sub (nan-infj) (-inf-16j) (nan-infj) +sub (nan-infj) (-inf-2j) (nan-infj) +sub (nan-infj) (-inf-0j) (nan-infj) +sub (nan-infj) (-inf+0j) (nan-infj) +sub (nan-infj) (-inf+2j) (nan-infj) +sub (nan-infj) (-inf+16j) (nan-infj) +sub (nan-infj) (-inf+infj) (nan-infj) +sub (nan-infj) (-inf+nanj) (nan+nanj) +sub (nan-infj) (-16-infj) (nan+nanj) +sub (nan-infj) (-16-16j) (nan-infj) +sub (nan-infj) (-16-2j) (nan-infj) +sub (nan-infj) (-16-0j) (nan-infj) +sub (nan-infj) (-16+0j) (nan-infj) +sub (nan-infj) (-16+2j) (nan-infj) +sub (nan-infj) (-16+16j) (nan-infj) +sub (nan-infj) (-16+infj) (nan-infj) +sub (nan-infj) (-16+nanj) (nan+nanj) +sub (nan-infj) (-2-infj) (nan+nanj) +sub (nan-infj) (-2-16j) (nan-infj) +sub (nan-infj) (-2-2j) (nan-infj) +sub (nan-infj) (-2-0j) (nan-infj) +sub (nan-infj) (-2+0j) (nan-infj) +sub (nan-infj) (-2+2j) (nan-infj) +sub (nan-infj) (-2+16j) (nan-infj) +sub (nan-infj) (-2+infj) (nan-infj) +sub (nan-infj) (-2+nanj) (nan+nanj) +sub (nan-infj) (-0-infj) (nan+nanj) +sub (nan-infj) (-0-16j) (nan-infj) +sub (nan-infj) (-0-2j) (nan-infj) +sub (nan-infj) (-0-0j) (nan-infj) +sub (nan-infj) (-0+0j) (nan-infj) +sub (nan-infj) (-0+2j) (nan-infj) +sub (nan-infj) (-0+16j) (nan-infj) +sub (nan-infj) (-0+infj) (nan-infj) +sub (nan-infj) (-0+nanj) (nan+nanj) +sub (nan-infj) -infj (nan+nanj) +sub (nan-infj) -16j (nan-infj) +sub (nan-infj) -2j (nan-infj) +sub (nan-infj) -0j (nan-infj) +sub (nan-infj) 0j (nan-infj) +sub (nan-infj) 2j (nan-infj) +sub (nan-infj) 16j (nan-infj) +sub (nan-infj) infj (nan-infj) +sub (nan-infj) nanj (nan+nanj) +sub (nan-infj) (2-infj) (nan+nanj) +sub (nan-infj) (2-16j) (nan-infj) +sub (nan-infj) (2-2j) (nan-infj) +sub (nan-infj) (2-0j) (nan-infj) +sub (nan-infj) (2+0j) (nan-infj) +sub (nan-infj) (2+2j) (nan-infj) +sub (nan-infj) (2+16j) (nan-infj) +sub (nan-infj) (2+infj) (nan-infj) +sub (nan-infj) (2+nanj) (nan+nanj) +sub (nan-infj) (16-infj) (nan+nanj) +sub (nan-infj) (16-16j) (nan-infj) +sub (nan-infj) (16-2j) (nan-infj) +sub (nan-infj) (16-0j) (nan-infj) +sub (nan-infj) (16+0j) (nan-infj) +sub (nan-infj) (16+2j) (nan-infj) +sub (nan-infj) (16+16j) (nan-infj) +sub (nan-infj) (16+infj) (nan-infj) +sub (nan-infj) (16+nanj) (nan+nanj) +sub (nan-infj) (inf-infj) (nan+nanj) +sub (nan-infj) (inf-16j) (nan-infj) +sub (nan-infj) (inf-2j) (nan-infj) +sub (nan-infj) (inf-0j) (nan-infj) +sub (nan-infj) (inf+0j) (nan-infj) +sub (nan-infj) (inf+2j) (nan-infj) +sub (nan-infj) (inf+16j) (nan-infj) +sub (nan-infj) (inf+infj) (nan-infj) +sub (nan-infj) (inf+nanj) (nan+nanj) +sub (nan-infj) (nan-infj) (nan+nanj) +sub (nan-infj) (nan-16j) (nan-infj) +sub (nan-infj) (nan-2j) (nan-infj) +sub (nan-infj) (nan-0j) (nan-infj) +sub (nan-infj) (nan+0j) (nan-infj) +sub (nan-infj) (nan+2j) (nan-infj) +sub (nan-infj) (nan+16j) (nan-infj) +sub (nan-infj) (nan+infj) (nan-infj) +sub (nan-infj) (nan+nanj) (nan+nanj) +sub (nan-16j) (-inf-infj) (nan+infj) +sub (nan-16j) (-inf-16j) (nan+0j) +sub (nan-16j) (-inf-2j) (nan-14j) +sub (nan-16j) (-inf-0j) (nan-16j) +sub (nan-16j) (-inf+0j) (nan-16j) +sub (nan-16j) (-inf+2j) (nan-18j) +sub (nan-16j) (-inf+16j) (nan-32j) +sub (nan-16j) (-inf+infj) (nan-infj) +sub (nan-16j) (-inf+nanj) (nan+nanj) +sub (nan-16j) (-16-infj) (nan+infj) +sub (nan-16j) (-16-16j) (nan+0j) +sub (nan-16j) (-16-2j) (nan-14j) +sub (nan-16j) (-16-0j) (nan-16j) +sub (nan-16j) (-16+0j) (nan-16j) +sub (nan-16j) (-16+2j) (nan-18j) +sub (nan-16j) (-16+16j) (nan-32j) +sub (nan-16j) (-16+infj) (nan-infj) +sub (nan-16j) (-16+nanj) (nan+nanj) +sub (nan-16j) (-2-infj) (nan+infj) +sub (nan-16j) (-2-16j) (nan+0j) +sub (nan-16j) (-2-2j) (nan-14j) +sub (nan-16j) (-2-0j) (nan-16j) +sub (nan-16j) (-2+0j) (nan-16j) +sub (nan-16j) (-2+2j) (nan-18j) +sub (nan-16j) (-2+16j) (nan-32j) +sub (nan-16j) (-2+infj) (nan-infj) +sub (nan-16j) (-2+nanj) (nan+nanj) +sub (nan-16j) (-0-infj) (nan+infj) +sub (nan-16j) (-0-16j) (nan+0j) +sub (nan-16j) (-0-2j) (nan-14j) +sub (nan-16j) (-0-0j) (nan-16j) +sub (nan-16j) (-0+0j) (nan-16j) +sub (nan-16j) (-0+2j) (nan-18j) +sub (nan-16j) (-0+16j) (nan-32j) +sub (nan-16j) (-0+infj) (nan-infj) +sub (nan-16j) (-0+nanj) (nan+nanj) +sub (nan-16j) -infj (nan+infj) +sub (nan-16j) -16j (nan+0j) +sub (nan-16j) -2j (nan-14j) +sub (nan-16j) -0j (nan-16j) +sub (nan-16j) 0j (nan-16j) +sub (nan-16j) 2j (nan-18j) +sub (nan-16j) 16j (nan-32j) +sub (nan-16j) infj (nan-infj) +sub (nan-16j) nanj (nan+nanj) +sub (nan-16j) (2-infj) (nan+infj) +sub (nan-16j) (2-16j) (nan+0j) +sub (nan-16j) (2-2j) (nan-14j) +sub (nan-16j) (2-0j) (nan-16j) +sub (nan-16j) (2+0j) (nan-16j) +sub (nan-16j) (2+2j) (nan-18j) +sub (nan-16j) (2+16j) (nan-32j) +sub (nan-16j) (2+infj) (nan-infj) +sub (nan-16j) (2+nanj) (nan+nanj) +sub (nan-16j) (16-infj) (nan+infj) +sub (nan-16j) (16-16j) (nan+0j) +sub (nan-16j) (16-2j) (nan-14j) +sub (nan-16j) (16-0j) (nan-16j) +sub (nan-16j) (16+0j) (nan-16j) +sub (nan-16j) (16+2j) (nan-18j) +sub (nan-16j) (16+16j) (nan-32j) +sub (nan-16j) (16+infj) (nan-infj) +sub (nan-16j) (16+nanj) (nan+nanj) +sub (nan-16j) (inf-infj) (nan+infj) +sub (nan-16j) (inf-16j) (nan+0j) +sub (nan-16j) (inf-2j) (nan-14j) +sub (nan-16j) (inf-0j) (nan-16j) +sub (nan-16j) (inf+0j) (nan-16j) +sub (nan-16j) (inf+2j) (nan-18j) +sub (nan-16j) (inf+16j) (nan-32j) +sub (nan-16j) (inf+infj) (nan-infj) +sub (nan-16j) (inf+nanj) (nan+nanj) +sub (nan-16j) (nan-infj) (nan+infj) +sub (nan-16j) (nan-16j) (nan+0j) +sub (nan-16j) (nan-2j) (nan-14j) +sub (nan-16j) (nan-0j) (nan-16j) +sub (nan-16j) (nan+0j) (nan-16j) +sub (nan-16j) (nan+2j) (nan-18j) +sub (nan-16j) (nan+16j) (nan-32j) +sub (nan-16j) (nan+infj) (nan-infj) +sub (nan-16j) (nan+nanj) (nan+nanj) +sub (nan-2j) (-inf-infj) (nan+infj) +sub (nan-2j) (-inf-16j) (nan+14j) +sub (nan-2j) (-inf-2j) (nan+0j) +sub (nan-2j) (-inf-0j) (nan-2j) +sub (nan-2j) (-inf+0j) (nan-2j) +sub (nan-2j) (-inf+2j) (nan-4j) +sub (nan-2j) (-inf+16j) (nan-18j) +sub (nan-2j) (-inf+infj) (nan-infj) +sub (nan-2j) (-inf+nanj) (nan+nanj) +sub (nan-2j) (-16-infj) (nan+infj) +sub (nan-2j) (-16-16j) (nan+14j) +sub (nan-2j) (-16-2j) (nan+0j) +sub (nan-2j) (-16-0j) (nan-2j) +sub (nan-2j) (-16+0j) (nan-2j) +sub (nan-2j) (-16+2j) (nan-4j) +sub (nan-2j) (-16+16j) (nan-18j) +sub (nan-2j) (-16+infj) (nan-infj) +sub (nan-2j) (-16+nanj) (nan+nanj) +sub (nan-2j) (-2-infj) (nan+infj) +sub (nan-2j) (-2-16j) (nan+14j) +sub (nan-2j) (-2-2j) (nan+0j) +sub (nan-2j) (-2-0j) (nan-2j) +sub (nan-2j) (-2+0j) (nan-2j) +sub (nan-2j) (-2+2j) (nan-4j) +sub (nan-2j) (-2+16j) (nan-18j) +sub (nan-2j) (-2+infj) (nan-infj) +sub (nan-2j) (-2+nanj) (nan+nanj) +sub (nan-2j) (-0-infj) (nan+infj) +sub (nan-2j) (-0-16j) (nan+14j) +sub (nan-2j) (-0-2j) (nan+0j) +sub (nan-2j) (-0-0j) (nan-2j) +sub (nan-2j) (-0+0j) (nan-2j) +sub (nan-2j) (-0+2j) (nan-4j) +sub (nan-2j) (-0+16j) (nan-18j) +sub (nan-2j) (-0+infj) (nan-infj) +sub (nan-2j) (-0+nanj) (nan+nanj) +sub (nan-2j) -infj (nan+infj) +sub (nan-2j) -16j (nan+14j) +sub (nan-2j) -2j (nan+0j) +sub (nan-2j) -0j (nan-2j) +sub (nan-2j) 0j (nan-2j) +sub (nan-2j) 2j (nan-4j) +sub (nan-2j) 16j (nan-18j) +sub (nan-2j) infj (nan-infj) +sub (nan-2j) nanj (nan+nanj) +sub (nan-2j) (2-infj) (nan+infj) +sub (nan-2j) (2-16j) (nan+14j) +sub (nan-2j) (2-2j) (nan+0j) +sub (nan-2j) (2-0j) (nan-2j) +sub (nan-2j) (2+0j) (nan-2j) +sub (nan-2j) (2+2j) (nan-4j) +sub (nan-2j) (2+16j) (nan-18j) +sub (nan-2j) (2+infj) (nan-infj) +sub (nan-2j) (2+nanj) (nan+nanj) +sub (nan-2j) (16-infj) (nan+infj) +sub (nan-2j) (16-16j) (nan+14j) +sub (nan-2j) (16-2j) (nan+0j) +sub (nan-2j) (16-0j) (nan-2j) +sub (nan-2j) (16+0j) (nan-2j) +sub (nan-2j) (16+2j) (nan-4j) +sub (nan-2j) (16+16j) (nan-18j) +sub (nan-2j) (16+infj) (nan-infj) +sub (nan-2j) (16+nanj) (nan+nanj) +sub (nan-2j) (inf-infj) (nan+infj) +sub (nan-2j) (inf-16j) (nan+14j) +sub (nan-2j) (inf-2j) (nan+0j) +sub (nan-2j) (inf-0j) (nan-2j) +sub (nan-2j) (inf+0j) (nan-2j) +sub (nan-2j) (inf+2j) (nan-4j) +sub (nan-2j) (inf+16j) (nan-18j) +sub (nan-2j) (inf+infj) (nan-infj) +sub (nan-2j) (inf+nanj) (nan+nanj) +sub (nan-2j) (nan-infj) (nan+infj) +sub (nan-2j) (nan-16j) (nan+14j) +sub (nan-2j) (nan-2j) (nan+0j) +sub (nan-2j) (nan-0j) (nan-2j) +sub (nan-2j) (nan+0j) (nan-2j) +sub (nan-2j) (nan+2j) (nan-4j) +sub (nan-2j) (nan+16j) (nan-18j) +sub (nan-2j) (nan+infj) (nan-infj) +sub (nan-2j) (nan+nanj) (nan+nanj) +sub (nan-0j) (-inf-infj) (nan+infj) +sub (nan-0j) (-inf-16j) (nan+16j) +sub (nan-0j) (-inf-2j) (nan+2j) +sub (nan-0j) (-inf-0j) (nan+0j) +sub (nan-0j) (-inf+0j) (nan-0j) +sub (nan-0j) (-inf+2j) (nan-2j) +sub (nan-0j) (-inf+16j) (nan-16j) +sub (nan-0j) (-inf+infj) (nan-infj) +sub (nan-0j) (-inf+nanj) (nan+nanj) +sub (nan-0j) (-16-infj) (nan+infj) +sub (nan-0j) (-16-16j) (nan+16j) +sub (nan-0j) (-16-2j) (nan+2j) +sub (nan-0j) (-16-0j) (nan+0j) +sub (nan-0j) (-16+0j) (nan-0j) +sub (nan-0j) (-16+2j) (nan-2j) +sub (nan-0j) (-16+16j) (nan-16j) +sub (nan-0j) (-16+infj) (nan-infj) +sub (nan-0j) (-16+nanj) (nan+nanj) +sub (nan-0j) (-2-infj) (nan+infj) +sub (nan-0j) (-2-16j) (nan+16j) +sub (nan-0j) (-2-2j) (nan+2j) +sub (nan-0j) (-2-0j) (nan+0j) +sub (nan-0j) (-2+0j) (nan-0j) +sub (nan-0j) (-2+2j) (nan-2j) +sub (nan-0j) (-2+16j) (nan-16j) +sub (nan-0j) (-2+infj) (nan-infj) +sub (nan-0j) (-2+nanj) (nan+nanj) +sub (nan-0j) (-0-infj) (nan+infj) +sub (nan-0j) (-0-16j) (nan+16j) +sub (nan-0j) (-0-2j) (nan+2j) +sub (nan-0j) (-0-0j) (nan+0j) +sub (nan-0j) (-0+0j) (nan-0j) +sub (nan-0j) (-0+2j) (nan-2j) +sub (nan-0j) (-0+16j) (nan-16j) +sub (nan-0j) (-0+infj) (nan-infj) +sub (nan-0j) (-0+nanj) (nan+nanj) +sub (nan-0j) -infj (nan+infj) +sub (nan-0j) -16j (nan+16j) +sub (nan-0j) -2j (nan+2j) +sub (nan-0j) -0j (nan+0j) +sub (nan-0j) 0j (nan-0j) +sub (nan-0j) 2j (nan-2j) +sub (nan-0j) 16j (nan-16j) +sub (nan-0j) infj (nan-infj) +sub (nan-0j) nanj (nan+nanj) +sub (nan-0j) (2-infj) (nan+infj) +sub (nan-0j) (2-16j) (nan+16j) +sub (nan-0j) (2-2j) (nan+2j) +sub (nan-0j) (2-0j) (nan+0j) +sub (nan-0j) (2+0j) (nan-0j) +sub (nan-0j) (2+2j) (nan-2j) +sub (nan-0j) (2+16j) (nan-16j) +sub (nan-0j) (2+infj) (nan-infj) +sub (nan-0j) (2+nanj) (nan+nanj) +sub (nan-0j) (16-infj) (nan+infj) +sub (nan-0j) (16-16j) (nan+16j) +sub (nan-0j) (16-2j) (nan+2j) +sub (nan-0j) (16-0j) (nan+0j) +sub (nan-0j) (16+0j) (nan-0j) +sub (nan-0j) (16+2j) (nan-2j) +sub (nan-0j) (16+16j) (nan-16j) +sub (nan-0j) (16+infj) (nan-infj) +sub (nan-0j) (16+nanj) (nan+nanj) +sub (nan-0j) (inf-infj) (nan+infj) +sub (nan-0j) (inf-16j) (nan+16j) +sub (nan-0j) (inf-2j) (nan+2j) +sub (nan-0j) (inf-0j) (nan+0j) +sub (nan-0j) (inf+0j) (nan-0j) +sub (nan-0j) (inf+2j) (nan-2j) +sub (nan-0j) (inf+16j) (nan-16j) +sub (nan-0j) (inf+infj) (nan-infj) +sub (nan-0j) (inf+nanj) (nan+nanj) +sub (nan-0j) (nan-infj) (nan+infj) +sub (nan-0j) (nan-16j) (nan+16j) +sub (nan-0j) (nan-2j) (nan+2j) +sub (nan-0j) (nan-0j) (nan+0j) +sub (nan-0j) (nan+0j) (nan-0j) +sub (nan-0j) (nan+2j) (nan-2j) +sub (nan-0j) (nan+16j) (nan-16j) +sub (nan-0j) (nan+infj) (nan-infj) +sub (nan-0j) (nan+nanj) (nan+nanj) +sub (nan+0j) (-inf-infj) (nan+infj) +sub (nan+0j) (-inf-16j) (nan+16j) +sub (nan+0j) (-inf-2j) (nan+2j) +sub (nan+0j) (-inf-0j) (nan+0j) +sub (nan+0j) (-inf+0j) (nan+0j) +sub (nan+0j) (-inf+2j) (nan-2j) +sub (nan+0j) (-inf+16j) (nan-16j) +sub (nan+0j) (-inf+infj) (nan-infj) +sub (nan+0j) (-inf+nanj) (nan+nanj) +sub (nan+0j) (-16-infj) (nan+infj) +sub (nan+0j) (-16-16j) (nan+16j) +sub (nan+0j) (-16-2j) (nan+2j) +sub (nan+0j) (-16-0j) (nan+0j) +sub (nan+0j) (-16+0j) (nan+0j) +sub (nan+0j) (-16+2j) (nan-2j) +sub (nan+0j) (-16+16j) (nan-16j) +sub (nan+0j) (-16+infj) (nan-infj) +sub (nan+0j) (-16+nanj) (nan+nanj) +sub (nan+0j) (-2-infj) (nan+infj) +sub (nan+0j) (-2-16j) (nan+16j) +sub (nan+0j) (-2-2j) (nan+2j) +sub (nan+0j) (-2-0j) (nan+0j) +sub (nan+0j) (-2+0j) (nan+0j) +sub (nan+0j) (-2+2j) (nan-2j) +sub (nan+0j) (-2+16j) (nan-16j) +sub (nan+0j) (-2+infj) (nan-infj) +sub (nan+0j) (-2+nanj) (nan+nanj) +sub (nan+0j) (-0-infj) (nan+infj) +sub (nan+0j) (-0-16j) (nan+16j) +sub (nan+0j) (-0-2j) (nan+2j) +sub (nan+0j) (-0-0j) (nan+0j) +sub (nan+0j) (-0+0j) (nan+0j) +sub (nan+0j) (-0+2j) (nan-2j) +sub (nan+0j) (-0+16j) (nan-16j) +sub (nan+0j) (-0+infj) (nan-infj) +sub (nan+0j) (-0+nanj) (nan+nanj) +sub (nan+0j) -infj (nan+infj) +sub (nan+0j) -16j (nan+16j) +sub (nan+0j) -2j (nan+2j) +sub (nan+0j) -0j (nan+0j) +sub (nan+0j) 0j (nan+0j) +sub (nan+0j) 2j (nan-2j) +sub (nan+0j) 16j (nan-16j) +sub (nan+0j) infj (nan-infj) +sub (nan+0j) nanj (nan+nanj) +sub (nan+0j) (2-infj) (nan+infj) +sub (nan+0j) (2-16j) (nan+16j) +sub (nan+0j) (2-2j) (nan+2j) +sub (nan+0j) (2-0j) (nan+0j) +sub (nan+0j) (2+0j) (nan+0j) +sub (nan+0j) (2+2j) (nan-2j) +sub (nan+0j) (2+16j) (nan-16j) +sub (nan+0j) (2+infj) (nan-infj) +sub (nan+0j) (2+nanj) (nan+nanj) +sub (nan+0j) (16-infj) (nan+infj) +sub (nan+0j) (16-16j) (nan+16j) +sub (nan+0j) (16-2j) (nan+2j) +sub (nan+0j) (16-0j) (nan+0j) +sub (nan+0j) (16+0j) (nan+0j) +sub (nan+0j) (16+2j) (nan-2j) +sub (nan+0j) (16+16j) (nan-16j) +sub (nan+0j) (16+infj) (nan-infj) +sub (nan+0j) (16+nanj) (nan+nanj) +sub (nan+0j) (inf-infj) (nan+infj) +sub (nan+0j) (inf-16j) (nan+16j) +sub (nan+0j) (inf-2j) (nan+2j) +sub (nan+0j) (inf-0j) (nan+0j) +sub (nan+0j) (inf+0j) (nan+0j) +sub (nan+0j) (inf+2j) (nan-2j) +sub (nan+0j) (inf+16j) (nan-16j) +sub (nan+0j) (inf+infj) (nan-infj) +sub (nan+0j) (inf+nanj) (nan+nanj) +sub (nan+0j) (nan-infj) (nan+infj) +sub (nan+0j) (nan-16j) (nan+16j) +sub (nan+0j) (nan-2j) (nan+2j) +sub (nan+0j) (nan-0j) (nan+0j) +sub (nan+0j) (nan+0j) (nan+0j) +sub (nan+0j) (nan+2j) (nan-2j) +sub (nan+0j) (nan+16j) (nan-16j) +sub (nan+0j) (nan+infj) (nan-infj) +sub (nan+0j) (nan+nanj) (nan+nanj) +sub (nan+2j) (-inf-infj) (nan+infj) +sub (nan+2j) (-inf-16j) (nan+18j) +sub (nan+2j) (-inf-2j) (nan+4j) +sub (nan+2j) (-inf-0j) (nan+2j) +sub (nan+2j) (-inf+0j) (nan+2j) +sub (nan+2j) (-inf+2j) (nan+0j) +sub (nan+2j) (-inf+16j) (nan-14j) +sub (nan+2j) (-inf+infj) (nan-infj) +sub (nan+2j) (-inf+nanj) (nan+nanj) +sub (nan+2j) (-16-infj) (nan+infj) +sub (nan+2j) (-16-16j) (nan+18j) +sub (nan+2j) (-16-2j) (nan+4j) +sub (nan+2j) (-16-0j) (nan+2j) +sub (nan+2j) (-16+0j) (nan+2j) +sub (nan+2j) (-16+2j) (nan+0j) +sub (nan+2j) (-16+16j) (nan-14j) +sub (nan+2j) (-16+infj) (nan-infj) +sub (nan+2j) (-16+nanj) (nan+nanj) +sub (nan+2j) (-2-infj) (nan+infj) +sub (nan+2j) (-2-16j) (nan+18j) +sub (nan+2j) (-2-2j) (nan+4j) +sub (nan+2j) (-2-0j) (nan+2j) +sub (nan+2j) (-2+0j) (nan+2j) +sub (nan+2j) (-2+2j) (nan+0j) +sub (nan+2j) (-2+16j) (nan-14j) +sub (nan+2j) (-2+infj) (nan-infj) +sub (nan+2j) (-2+nanj) (nan+nanj) +sub (nan+2j) (-0-infj) (nan+infj) +sub (nan+2j) (-0-16j) (nan+18j) +sub (nan+2j) (-0-2j) (nan+4j) +sub (nan+2j) (-0-0j) (nan+2j) +sub (nan+2j) (-0+0j) (nan+2j) +sub (nan+2j) (-0+2j) (nan+0j) +sub (nan+2j) (-0+16j) (nan-14j) +sub (nan+2j) (-0+infj) (nan-infj) +sub (nan+2j) (-0+nanj) (nan+nanj) +sub (nan+2j) -infj (nan+infj) +sub (nan+2j) -16j (nan+18j) +sub (nan+2j) -2j (nan+4j) +sub (nan+2j) -0j (nan+2j) +sub (nan+2j) 0j (nan+2j) +sub (nan+2j) 2j (nan+0j) +sub (nan+2j) 16j (nan-14j) +sub (nan+2j) infj (nan-infj) +sub (nan+2j) nanj (nan+nanj) +sub (nan+2j) (2-infj) (nan+infj) +sub (nan+2j) (2-16j) (nan+18j) +sub (nan+2j) (2-2j) (nan+4j) +sub (nan+2j) (2-0j) (nan+2j) +sub (nan+2j) (2+0j) (nan+2j) +sub (nan+2j) (2+2j) (nan+0j) +sub (nan+2j) (2+16j) (nan-14j) +sub (nan+2j) (2+infj) (nan-infj) +sub (nan+2j) (2+nanj) (nan+nanj) +sub (nan+2j) (16-infj) (nan+infj) +sub (nan+2j) (16-16j) (nan+18j) +sub (nan+2j) (16-2j) (nan+4j) +sub (nan+2j) (16-0j) (nan+2j) +sub (nan+2j) (16+0j) (nan+2j) +sub (nan+2j) (16+2j) (nan+0j) +sub (nan+2j) (16+16j) (nan-14j) +sub (nan+2j) (16+infj) (nan-infj) +sub (nan+2j) (16+nanj) (nan+nanj) +sub (nan+2j) (inf-infj) (nan+infj) +sub (nan+2j) (inf-16j) (nan+18j) +sub (nan+2j) (inf-2j) (nan+4j) +sub (nan+2j) (inf-0j) (nan+2j) +sub (nan+2j) (inf+0j) (nan+2j) +sub (nan+2j) (inf+2j) (nan+0j) +sub (nan+2j) (inf+16j) (nan-14j) +sub (nan+2j) (inf+infj) (nan-infj) +sub (nan+2j) (inf+nanj) (nan+nanj) +sub (nan+2j) (nan-infj) (nan+infj) +sub (nan+2j) (nan-16j) (nan+18j) +sub (nan+2j) (nan-2j) (nan+4j) +sub (nan+2j) (nan-0j) (nan+2j) +sub (nan+2j) (nan+0j) (nan+2j) +sub (nan+2j) (nan+2j) (nan+0j) +sub (nan+2j) (nan+16j) (nan-14j) +sub (nan+2j) (nan+infj) (nan-infj) +sub (nan+2j) (nan+nanj) (nan+nanj) +sub (nan+16j) (-inf-infj) (nan+infj) +sub (nan+16j) (-inf-16j) (nan+32j) +sub (nan+16j) (-inf-2j) (nan+18j) +sub (nan+16j) (-inf-0j) (nan+16j) +sub (nan+16j) (-inf+0j) (nan+16j) +sub (nan+16j) (-inf+2j) (nan+14j) +sub (nan+16j) (-inf+16j) (nan+0j) +sub (nan+16j) (-inf+infj) (nan-infj) +sub (nan+16j) (-inf+nanj) (nan+nanj) +sub (nan+16j) (-16-infj) (nan+infj) +sub (nan+16j) (-16-16j) (nan+32j) +sub (nan+16j) (-16-2j) (nan+18j) +sub (nan+16j) (-16-0j) (nan+16j) +sub (nan+16j) (-16+0j) (nan+16j) +sub (nan+16j) (-16+2j) (nan+14j) +sub (nan+16j) (-16+16j) (nan+0j) +sub (nan+16j) (-16+infj) (nan-infj) +sub (nan+16j) (-16+nanj) (nan+nanj) +sub (nan+16j) (-2-infj) (nan+infj) +sub (nan+16j) (-2-16j) (nan+32j) +sub (nan+16j) (-2-2j) (nan+18j) +sub (nan+16j) (-2-0j) (nan+16j) +sub (nan+16j) (-2+0j) (nan+16j) +sub (nan+16j) (-2+2j) (nan+14j) +sub (nan+16j) (-2+16j) (nan+0j) +sub (nan+16j) (-2+infj) (nan-infj) +sub (nan+16j) (-2+nanj) (nan+nanj) +sub (nan+16j) (-0-infj) (nan+infj) +sub (nan+16j) (-0-16j) (nan+32j) +sub (nan+16j) (-0-2j) (nan+18j) +sub (nan+16j) (-0-0j) (nan+16j) +sub (nan+16j) (-0+0j) (nan+16j) +sub (nan+16j) (-0+2j) (nan+14j) +sub (nan+16j) (-0+16j) (nan+0j) +sub (nan+16j) (-0+infj) (nan-infj) +sub (nan+16j) (-0+nanj) (nan+nanj) +sub (nan+16j) -infj (nan+infj) +sub (nan+16j) -16j (nan+32j) +sub (nan+16j) -2j (nan+18j) +sub (nan+16j) -0j (nan+16j) +sub (nan+16j) 0j (nan+16j) +sub (nan+16j) 2j (nan+14j) +sub (nan+16j) 16j (nan+0j) +sub (nan+16j) infj (nan-infj) +sub (nan+16j) nanj (nan+nanj) +sub (nan+16j) (2-infj) (nan+infj) +sub (nan+16j) (2-16j) (nan+32j) +sub (nan+16j) (2-2j) (nan+18j) +sub (nan+16j) (2-0j) (nan+16j) +sub (nan+16j) (2+0j) (nan+16j) +sub (nan+16j) (2+2j) (nan+14j) +sub (nan+16j) (2+16j) (nan+0j) +sub (nan+16j) (2+infj) (nan-infj) +sub (nan+16j) (2+nanj) (nan+nanj) +sub (nan+16j) (16-infj) (nan+infj) +sub (nan+16j) (16-16j) (nan+32j) +sub (nan+16j) (16-2j) (nan+18j) +sub (nan+16j) (16-0j) (nan+16j) +sub (nan+16j) (16+0j) (nan+16j) +sub (nan+16j) (16+2j) (nan+14j) +sub (nan+16j) (16+16j) (nan+0j) +sub (nan+16j) (16+infj) (nan-infj) +sub (nan+16j) (16+nanj) (nan+nanj) +sub (nan+16j) (inf-infj) (nan+infj) +sub (nan+16j) (inf-16j) (nan+32j) +sub (nan+16j) (inf-2j) (nan+18j) +sub (nan+16j) (inf-0j) (nan+16j) +sub (nan+16j) (inf+0j) (nan+16j) +sub (nan+16j) (inf+2j) (nan+14j) +sub (nan+16j) (inf+16j) (nan+0j) +sub (nan+16j) (inf+infj) (nan-infj) +sub (nan+16j) (inf+nanj) (nan+nanj) +sub (nan+16j) (nan-infj) (nan+infj) +sub (nan+16j) (nan-16j) (nan+32j) +sub (nan+16j) (nan-2j) (nan+18j) +sub (nan+16j) (nan-0j) (nan+16j) +sub (nan+16j) (nan+0j) (nan+16j) +sub (nan+16j) (nan+2j) (nan+14j) +sub (nan+16j) (nan+16j) (nan+0j) +sub (nan+16j) (nan+infj) (nan-infj) +sub (nan+16j) (nan+nanj) (nan+nanj) +sub (nan+infj) (-inf-infj) (nan+infj) +sub (nan+infj) (-inf-16j) (nan+infj) +sub (nan+infj) (-inf-2j) (nan+infj) +sub (nan+infj) (-inf-0j) (nan+infj) +sub (nan+infj) (-inf+0j) (nan+infj) +sub (nan+infj) (-inf+2j) (nan+infj) +sub (nan+infj) (-inf+16j) (nan+infj) +sub (nan+infj) (-inf+infj) (nan+nanj) +sub (nan+infj) (-inf+nanj) (nan+nanj) +sub (nan+infj) (-16-infj) (nan+infj) +sub (nan+infj) (-16-16j) (nan+infj) +sub (nan+infj) (-16-2j) (nan+infj) +sub (nan+infj) (-16-0j) (nan+infj) +sub (nan+infj) (-16+0j) (nan+infj) +sub (nan+infj) (-16+2j) (nan+infj) +sub (nan+infj) (-16+16j) (nan+infj) +sub (nan+infj) (-16+infj) (nan+nanj) +sub (nan+infj) (-16+nanj) (nan+nanj) +sub (nan+infj) (-2-infj) (nan+infj) +sub (nan+infj) (-2-16j) (nan+infj) +sub (nan+infj) (-2-2j) (nan+infj) +sub (nan+infj) (-2-0j) (nan+infj) +sub (nan+infj) (-2+0j) (nan+infj) +sub (nan+infj) (-2+2j) (nan+infj) +sub (nan+infj) (-2+16j) (nan+infj) +sub (nan+infj) (-2+infj) (nan+nanj) +sub (nan+infj) (-2+nanj) (nan+nanj) +sub (nan+infj) (-0-infj) (nan+infj) +sub (nan+infj) (-0-16j) (nan+infj) +sub (nan+infj) (-0-2j) (nan+infj) +sub (nan+infj) (-0-0j) (nan+infj) +sub (nan+infj) (-0+0j) (nan+infj) +sub (nan+infj) (-0+2j) (nan+infj) +sub (nan+infj) (-0+16j) (nan+infj) +sub (nan+infj) (-0+infj) (nan+nanj) +sub (nan+infj) (-0+nanj) (nan+nanj) +sub (nan+infj) -infj (nan+infj) +sub (nan+infj) -16j (nan+infj) +sub (nan+infj) -2j (nan+infj) +sub (nan+infj) -0j (nan+infj) +sub (nan+infj) 0j (nan+infj) +sub (nan+infj) 2j (nan+infj) +sub (nan+infj) 16j (nan+infj) +sub (nan+infj) infj (nan+nanj) +sub (nan+infj) nanj (nan+nanj) +sub (nan+infj) (2-infj) (nan+infj) +sub (nan+infj) (2-16j) (nan+infj) +sub (nan+infj) (2-2j) (nan+infj) +sub (nan+infj) (2-0j) (nan+infj) +sub (nan+infj) (2+0j) (nan+infj) +sub (nan+infj) (2+2j) (nan+infj) +sub (nan+infj) (2+16j) (nan+infj) +sub (nan+infj) (2+infj) (nan+nanj) +sub (nan+infj) (2+nanj) (nan+nanj) +sub (nan+infj) (16-infj) (nan+infj) +sub (nan+infj) (16-16j) (nan+infj) +sub (nan+infj) (16-2j) (nan+infj) +sub (nan+infj) (16-0j) (nan+infj) +sub (nan+infj) (16+0j) (nan+infj) +sub (nan+infj) (16+2j) (nan+infj) +sub (nan+infj) (16+16j) (nan+infj) +sub (nan+infj) (16+infj) (nan+nanj) +sub (nan+infj) (16+nanj) (nan+nanj) +sub (nan+infj) (inf-infj) (nan+infj) +sub (nan+infj) (inf-16j) (nan+infj) +sub (nan+infj) (inf-2j) (nan+infj) +sub (nan+infj) (inf-0j) (nan+infj) +sub (nan+infj) (inf+0j) (nan+infj) +sub (nan+infj) (inf+2j) (nan+infj) +sub (nan+infj) (inf+16j) (nan+infj) +sub (nan+infj) (inf+infj) (nan+nanj) +sub (nan+infj) (inf+nanj) (nan+nanj) +sub (nan+infj) (nan-infj) (nan+infj) +sub (nan+infj) (nan-16j) (nan+infj) +sub (nan+infj) (nan-2j) (nan+infj) +sub (nan+infj) (nan-0j) (nan+infj) +sub (nan+infj) (nan+0j) (nan+infj) +sub (nan+infj) (nan+2j) (nan+infj) +sub (nan+infj) (nan+16j) (nan+infj) +sub (nan+infj) (nan+infj) (nan+nanj) +sub (nan+infj) (nan+nanj) (nan+nanj) +sub (nan+nanj) (-inf-infj) (nan+nanj) +sub (nan+nanj) (-inf-16j) (nan+nanj) +sub (nan+nanj) (-inf-2j) (nan+nanj) +sub (nan+nanj) (-inf-0j) (nan+nanj) +sub (nan+nanj) (-inf+0j) (nan+nanj) +sub (nan+nanj) (-inf+2j) (nan+nanj) +sub (nan+nanj) (-inf+16j) (nan+nanj) +sub (nan+nanj) (-inf+infj) (nan+nanj) +sub (nan+nanj) (-inf+nanj) (nan+nanj) +sub (nan+nanj) (-16-infj) (nan+nanj) +sub (nan+nanj) (-16-16j) (nan+nanj) +sub (nan+nanj) (-16-2j) (nan+nanj) +sub (nan+nanj) (-16-0j) (nan+nanj) +sub (nan+nanj) (-16+0j) (nan+nanj) +sub (nan+nanj) (-16+2j) (nan+nanj) +sub (nan+nanj) (-16+16j) (nan+nanj) +sub (nan+nanj) (-16+infj) (nan+nanj) +sub (nan+nanj) (-16+nanj) (nan+nanj) +sub (nan+nanj) (-2-infj) (nan+nanj) +sub (nan+nanj) (-2-16j) (nan+nanj) +sub (nan+nanj) (-2-2j) (nan+nanj) +sub (nan+nanj) (-2-0j) (nan+nanj) +sub (nan+nanj) (-2+0j) (nan+nanj) +sub (nan+nanj) (-2+2j) (nan+nanj) +sub (nan+nanj) (-2+16j) (nan+nanj) +sub (nan+nanj) (-2+infj) (nan+nanj) +sub (nan+nanj) (-2+nanj) (nan+nanj) +sub (nan+nanj) (-0-infj) (nan+nanj) +sub (nan+nanj) (-0-16j) (nan+nanj) +sub (nan+nanj) (-0-2j) (nan+nanj) +sub (nan+nanj) (-0-0j) (nan+nanj) +sub (nan+nanj) (-0+0j) (nan+nanj) +sub (nan+nanj) (-0+2j) (nan+nanj) +sub (nan+nanj) (-0+16j) (nan+nanj) +sub (nan+nanj) (-0+infj) (nan+nanj) +sub (nan+nanj) (-0+nanj) (nan+nanj) +sub (nan+nanj) -infj (nan+nanj) +sub (nan+nanj) -16j (nan+nanj) +sub (nan+nanj) -2j (nan+nanj) +sub (nan+nanj) -0j (nan+nanj) +sub (nan+nanj) 0j (nan+nanj) +sub (nan+nanj) 2j (nan+nanj) +sub (nan+nanj) 16j (nan+nanj) +sub (nan+nanj) infj (nan+nanj) +sub (nan+nanj) nanj (nan+nanj) +sub (nan+nanj) (2-infj) (nan+nanj) +sub (nan+nanj) (2-16j) (nan+nanj) +sub (nan+nanj) (2-2j) (nan+nanj) +sub (nan+nanj) (2-0j) (nan+nanj) +sub (nan+nanj) (2+0j) (nan+nanj) +sub (nan+nanj) (2+2j) (nan+nanj) +sub (nan+nanj) (2+16j) (nan+nanj) +sub (nan+nanj) (2+infj) (nan+nanj) +sub (nan+nanj) (2+nanj) (nan+nanj) +sub (nan+nanj) (16-infj) (nan+nanj) +sub (nan+nanj) (16-16j) (nan+nanj) +sub (nan+nanj) (16-2j) (nan+nanj) +sub (nan+nanj) (16-0j) (nan+nanj) +sub (nan+nanj) (16+0j) (nan+nanj) +sub (nan+nanj) (16+2j) (nan+nanj) +sub (nan+nanj) (16+16j) (nan+nanj) +sub (nan+nanj) (16+infj) (nan+nanj) +sub (nan+nanj) (16+nanj) (nan+nanj) +sub (nan+nanj) (inf-infj) (nan+nanj) +sub (nan+nanj) (inf-16j) (nan+nanj) +sub (nan+nanj) (inf-2j) (nan+nanj) +sub (nan+nanj) (inf-0j) (nan+nanj) +sub (nan+nanj) (inf+0j) (nan+nanj) +sub (nan+nanj) (inf+2j) (nan+nanj) +sub (nan+nanj) (inf+16j) (nan+nanj) +sub (nan+nanj) (inf+infj) (nan+nanj) +sub (nan+nanj) (inf+nanj) (nan+nanj) +sub (nan+nanj) (nan-infj) (nan+nanj) +sub (nan+nanj) (nan-16j) (nan+nanj) +sub (nan+nanj) (nan-2j) (nan+nanj) +sub (nan+nanj) (nan-0j) (nan+nanj) +sub (nan+nanj) (nan+0j) (nan+nanj) +sub (nan+nanj) (nan+2j) (nan+nanj) +sub (nan+nanj) (nan+16j) (nan+nanj) +sub (nan+nanj) (nan+infj) (nan+nanj) +sub (nan+nanj) (nan+nanj) (nan+nanj) diff --git a/Lib/test/test_complex_jy.py b/Lib/test/test_complex_jy.py --- a/Lib/test/test_complex_jy.py +++ b/Lib/test/test_complex_jy.py @@ -2,6 +2,10 @@ Made for Jython. """ +import math +import operator +import os +import re import unittest from test import test_support @@ -48,8 +52,40 @@ for z in infinities : self.assertEqual(abs(z), INF) + +def data_file(*name): + return os.path.join(os.path.dirname(__file__), *name) + + +class ComplexArithmeticTest(unittest.TestCase): + def almostEqual(self, a, b): + if a == b: # also accounts for infinities + return True + return abs(a - b) < 0.0000000001 + + def assertComplexEqual(self, x, y): + self.assertTrue( + (self.almostEqual(x.real, y.real) or (math.isnan(x.real) and math.isnan(y.real))) and \ + (self.almostEqual(x.imag, y.imag) or (math.isnan(x.imag) and math.isnan(y.imag))), + "expected %r != actual %r" % (x, y)) + + def test_complex_arithmetic(self): + """Verify *, /, +, - on representative complex numbers results in the same values as in CPython""" + # Verifies fix for http://bugs.jython.org/issue2460 + re_comment = re.compile("^(\s*)\#") + with open(data_file("complex_arithmetic.txt")) as f: + for line in f: + if re_comment.match(line): + continue + op, a, b, result = line.split() + if result == "ZeroDivisionError": + self.assertRaises(ZeroDivisionError, getattr(operator, op), complex(a), complex(b)) + else: + self.assertComplexEqual(complex(result), getattr(operator, op)(complex(a), complex(b))) + + def test_main(): - test_support.run_unittest(ComplexTest) + test_support.run_unittest(ComplexTest, ComplexArithmeticTest) if __name__ == "__main__": test_main() diff --git a/src/org/python/core/PyComplex.java b/src/org/python/core/PyComplex.java --- a/src/org/python/core/PyComplex.java +++ b/src/org/python/core/PyComplex.java @@ -462,14 +462,14 @@ } private final static PyObject _mul(PyComplex o1, PyComplex o2) { - if (Double.isNaN(o1.real) || Double.isNaN(o1.imag) || Double.isNaN(o2.real) - || Double.isNaN(o2.imag)) { - return NaN; - } - if (Double.isInfinite(o1.real) || Double.isInfinite(o1.imag) || Double.isInfinite(o2.real) - || Double.isInfinite(o2.imag)) { - return Inf; - } +// if (Double.isNaN(o1.real) || Double.isNaN(o1.imag) || Double.isNaN(o2.real) +// || Double.isNaN(o2.imag)) { +// return NaN; +// } +// if (Double.isInfinite(o1.real) || Double.isInfinite(o1.imag) || Double.isInfinite(o2.real) +// || Double.isInfinite(o2.imag)) { +// return Inf; +// } return new PyComplex(o1.real * o2.real - o1.imag * o2.imag, o1.real * o2.imag + o1.imag * o2.real); -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Mon Feb 22 09:39:13 2016 From: jython-checkins at python.org (jim.baker) Date: Mon, 22 Feb 2016 14:39:13 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Actually_remove_special_cas?= =?utf-8?q?e_code_for_=232460_that_was_only_commented_out=2E?= Message-ID: <20160222143904.1677.87518@psf.io> https://hg.python.org/jython/rev/d94481de60ba changeset: 7905:d94481de60ba user: Jim Baker date: Mon Feb 22 07:38:32 2016 -0700 summary: Actually remove special case code for #2460 that was only commented out. files: src/org/python/core/PyComplex.java | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) diff --git a/src/org/python/core/PyComplex.java b/src/org/python/core/PyComplex.java --- a/src/org/python/core/PyComplex.java +++ b/src/org/python/core/PyComplex.java @@ -462,15 +462,6 @@ } private final static PyObject _mul(PyComplex o1, PyComplex o2) { -// if (Double.isNaN(o1.real) || Double.isNaN(o1.imag) || Double.isNaN(o2.real) -// || Double.isNaN(o2.imag)) { -// return NaN; -// } -// if (Double.isInfinite(o1.real) || Double.isInfinite(o1.imag) || Double.isInfinite(o2.real) -// || Double.isInfinite(o2.imag)) { -// return Inf; -// } - return new PyComplex(o1.real * o2.real - o1.imag * o2.imag, o1.real * o2.imag + o1.imag * o2.real); } -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 23 19:14:46 2016 From: jython-checkins at python.org (darjus.loktevic) Date: Wed, 24 Feb 2016 00:14:46 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_No_longer_set_subpackages_t?= =?utf-8?q?o_None_in_sys=2Emodules=2E_Fixes_=232472?= Message-ID: <20160224001446.1719.35504@psf.io> https://hg.python.org/jython/rev/f66401888fc5 changeset: 7906:f66401888fc5 user: Darjus Loktevic date: Wed Feb 24 11:14:39 2016 +1100 summary: No longer set subpackages to None in sys.modules. Fixes #2472 files: src/org/python/core/imp.java | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-) diff --git a/src/org/python/core/imp.java b/src/org/python/core/imp.java --- a/src/org/python/core/imp.java +++ b/src/org/python/core/imp.java @@ -939,12 +939,6 @@ StringBuilder parentNameBuffer = new StringBuilder(pkgMod != null ? pkgName : ""); PyObject topMod = import_next(pkgMod, parentNameBuffer, firstName, name, fromlist); if (topMod == Py.None || topMod == null) { - // Add None to sys.modules for submodule or subpackage names that aren't found, but - // leave top-level entries out. This allows them to be tried again if another - // import attempt is made after they've been added to sys.path. - if (topMod == null && pkgMod != null) { - modules.__setitem__(parentNameBuffer.toString().intern(), Py.None); - } parentNameBuffer = new StringBuilder(""); // could throw ImportError if (level > 0) { -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Tue Feb 23 20:11:08 2016 From: jython-checkins at python.org (darjus.loktevic) Date: Wed, 24 Feb 2016 01:11:08 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Increase_circleci_timeouts?= Message-ID: <20160224011108.1976.12417@psf.io> https://hg.python.org/jython/rev/f29132623397 changeset: 7907:f29132623397 user: Darjus Loktevic date: Wed Feb 24 12:11:00 2016 +1100 summary: Increase circleci timeouts files: circle.yml | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/circle.yml b/circle.yml --- a/circle.yml +++ b/circle.yml @@ -7,8 +7,10 @@ override: - case $CIRCLE_NODE_INDEX in 0) sudo update-alternatives --set java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java; java -version ;; 1) sudo update-alternatives --set java /usr/lib/jvm/jdk1.7.0/bin/java; java -version ;; esac: parallel: true + timeout: 2400 - if [ $CIRCLE_NODE_INDEX -lt 2 ]; then ant developer-build regrtest-travis; elif [ $CIRCLE_NODE_INDEX -eq 2 ]; then ant developer-build; sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java; ant regrtest-travis; fi: parallel: true + timeout: 2400 post: - mkdir -p $CIRCLE_TEST_REPORTS/junit/; cp -a dist/testreports/* $CIRCLE_TEST_REPORTS/junit/: -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 24 00:55:31 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 24 Feb 2016 05:55:31 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_More_robustness_in_test_tha?= =?utf-8?q?t_is_polling_socket_connection_status?= Message-ID: <20160224055530.1500.3468@psf.io> https://hg.python.org/jython/rev/09cd16feb1e6 changeset: 7909:09cd16feb1e6 user: Jim Baker date: Tue Feb 23 22:53:40 2016 -0700 summary: More robustness in test that is polling socket connection status files: Lib/test/test_socket_jy.py | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/Lib/test/test_socket_jy.py b/Lib/test/test_socket_jy.py --- a/Lib/test/test_socket_jy.py +++ b/Lib/test/test_socket_jy.py @@ -3,6 +3,7 @@ import socket import ssl import threading +import time import unittest from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from SocketServer import ThreadingMixIn @@ -50,10 +51,11 @@ connect_errno = 0 connect_attempt = 0 - while connect_errno != errno.EISCONN and connect_attempt < 500: + while connect_errno != errno.EISCONN and connect_attempt < 5000: connect_attempt += 1 connect_errno = sock.connect_ex(self.address) results[index].append(connect_errno) + time.sleep(0.001) sock.close() def do_workout(self, num_threads=10): -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 24 00:55:31 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 24 Feb 2016 05:55:31 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Update_robotparser_and_its_?= =?utf-8?q?test_to_CPython_2=2E7_latest=2E?= Message-ID: <20160224055530.1715.67972@psf.io> https://hg.python.org/jython/rev/56bd2ed235d9 changeset: 7911:56bd2ed235d9 user: Jim Baker date: Tue Feb 23 22:53:40 2016 -0700 summary: Update robotparser and its test to CPython 2.7 latest. test_robotparser occasionally times out in CI; this upgrade may help resolve this problem. files: Lib/test/test_support.py | 13 +++++++ lib-python/2.7/robotparser.py | 15 +++++++- lib-python/2.7/test/test_robotparser.py | 24 +++++++++++- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -433,6 +433,19 @@ IPV6_ENABLED = False #_is_ipv6_enabled() +def system_must_validate_cert(f): + """Skip the test on TLS certificate validation failures.""" + @functools.wraps(f) + def dec(*args, **kwargs): + try: + f(*args, **kwargs) + except IOError as e: + if "CERTIFICATE_VERIFY_FAILED" in str(e): + raise unittest.SkipTest("system does not contain " + "necessary certificates") + raise + return dec + FUZZ = 1e-6 def fcmp(x, y): # fuzzy comparison function diff --git a/lib-python/2.7/robotparser.py b/lib-python/2.7/robotparser.py --- a/lib-python/2.7/robotparser.py +++ b/lib-python/2.7/robotparser.py @@ -7,7 +7,8 @@ 2) PSF license for Python 2.2 The robots.txt Exclusion Protocol is implemented as specified in - http://info.webcrawler.com/mak/projects/robots/norobots-rfc.html + http://www.robotstxt.org/norobots-rfc.txt + """ import urlparse import urllib @@ -60,7 +61,7 @@ self.errcode = opener.errcode if self.errcode in (401, 403): self.disallow_all = True - elif self.errcode >= 400: + elif self.errcode >= 400 and self.errcode < 500: self.allow_all = True elif self.errcode == 200 and lines: self.parse(lines) @@ -86,6 +87,7 @@ linenumber = 0 entry = Entry() + self.modified() for line in lines: linenumber += 1 if not line: @@ -131,6 +133,14 @@ return False if self.allow_all: return True + + # Until the robots.txt file has been read or found not + # to exist, we must assume that no url is allowable. + # This prevents false positives when a user erronenously + # calls can_fetch() before calling read(). + if not self.last_checked: + return False + # search for given user agent matches # the first match counts parsed_url = urlparse.urlparse(urllib.unquote(url)) @@ -160,6 +170,7 @@ if path == '' and not allowance: # an empty value means allow all allowance = True + path = urlparse.urlunparse(urlparse.urlparse(path)) self.path = urllib.quote(path) self.allowance = allowance diff --git a/lib-python/2.7/test/test_robotparser.py b/lib-python/2.7/test/test_robotparser.py --- a/lib-python/2.7/test/test_robotparser.py +++ b/lib-python/2.7/test/test_robotparser.py @@ -2,6 +2,12 @@ from test import test_support from urllib2 import urlopen, HTTPError +HAVE_HTTPS = True +try: + from urllib2 import HTTPSHandler +except ImportError: + HAVE_HTTPS = False + class RobotTestCase(unittest.TestCase): def __init__(self, index, parser, url, good, agent): unittest.TestCase.__init__(self) @@ -228,6 +234,18 @@ RobotTest(15, doc, good, bad) +# 16. Empty query (issue #17403). Normalizing the url first. +doc = """ +User-agent: * +Allow: /some/path? +Disallow: /another/path? +""" + +good = ['/some/path?'] +bad = ['/another/path?'] + +RobotTest(16, doc, good, bad) + class NetworkTestCase(unittest.TestCase): @@ -257,14 +275,16 @@ self.skipTest('%s is unavailable' % url) self.assertEqual(parser.can_fetch("*", robots_url), False) + @unittest.skipUnless(HAVE_HTTPS, 'need SSL support to download license') + @test_support.system_must_validate_cert def testPythonOrg(self): test_support.requires('network') with test_support.transient_internet('www.python.org'): parser = robotparser.RobotFileParser( - "http://www.python.org/robots.txt") + "https://www.python.org/robots.txt") parser.read() self.assertTrue( - parser.can_fetch("*", "http://www.python.org/robots.txt")) + parser.can_fetch("*", "https://www.python.org/robots.txt")) def test_main(): -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 24 00:55:30 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 24 Feb 2016 05:55:30 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Reorder_imports_of_BouncyCa?= =?utf-8?q?stle_so_user-supplied_BC_jars_take_precedence=2E_Fixes?= Message-ID: <20160224055530.1954.50876@psf.io> https://hg.python.org/jython/rev/b41685e8b69c changeset: 7910:b41685e8b69c user: Jim Baker date: Tue Feb 23 22:53:40 2016 -0700 summary: Reorder imports of BouncyCastle so user-supplied BC jars take precedence. Fixes #2469 Jython accommodates jar shading by attempting to import packages first from shaded namespaces (via Jar Jar Links); then the usual namespace. In general, we prefer our bundled packages to prevent versioning issues, however for BC this does not work, because Java security providers (or at least BC as the relevant example) require signed jars, which breaks the shading model. Given that BC is especially stable in its API, this should (hopefully) not present an issue for Jython. files: ACKNOWLEDGMENTS | 1 + Lib/_sslcerts.py | 35 +++++++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/ACKNOWLEDGMENTS b/ACKNOWLEDGMENTS --- a/ACKNOWLEDGMENTS +++ b/ACKNOWLEDGMENTS @@ -174,6 +174,7 @@ Kevin Edwards Jaime Saiz Nick Bailey + Doug Clayton Local Variables: mode: indented-text diff --git a/Lib/_sslcerts.py b/Lib/_sslcerts.py --- a/Lib/_sslcerts.py +++ b/Lib/_sslcerts.py @@ -12,7 +12,30 @@ from java.security.interfaces import RSAPublicKey from javax.net.ssl import ( X509KeyManager, X509TrustManager, KeyManagerFactory, SSLContext, TrustManager, TrustManagerFactory) + try: + # dev version from extlibs OR if in classpath. + # + # Assumes BC's API is sufficiently stable, but this assumption + # seems safe based on our experience using BC. + # + # This change in import ordering - compared to similar conditional + # imports - is to workaround the problem in + # http://bugs.jython.org/issue2469, due to the fact that jarjar-ed + # jars - like other shading - lose their signatures. For most jars + # this is not an issue, and we have been removing signature files + # since 2.7.0, but it causes conflicts Java's security provider + # model. + from org.bouncycastle.asn1.pkcs import PrivateKeyInfo + from org.bouncycastle.cert import X509CertificateHolder + from org.bouncycastle.cert.jcajce import JcaX509CertificateConverter + from org.bouncycastle.jce.provider import BouncyCastleProvider + from org.bouncycastle.jce import ECNamedCurveTable + from org.bouncycastle.jce.spec import ECNamedCurveSpec + from org.bouncycastle.openssl import PEMKeyPair, PEMParser, PEMEncryptedKeyPair, PEMException, \ + EncryptionException + from org.bouncycastle.openssl.jcajce import JcaPEMKeyConverter, JcePEMDecryptorProviderBuilder +except ImportError: # jarjar-ed version from org.python.bouncycastle.asn1.pkcs import PrivateKeyInfo from org.python.bouncycastle.cert import X509CertificateHolder @@ -23,18 +46,6 @@ from org.python.bouncycastle.openssl import PEMKeyPair, PEMParser, PEMEncryptedKeyPair, PEMException, \ EncryptionException from org.python.bouncycastle.openssl.jcajce import JcaPEMKeyConverter, JcePEMDecryptorProviderBuilder -except ImportError: - # dev version from extlibs - from org.bouncycastle.asn1.pkcs import PrivateKeyInfo - from org.bouncycastle.cert import X509CertificateHolder - from org.bouncycastle.cert.jcajce import JcaX509CertificateConverter - from org.bouncycastle.jce.provider import BouncyCastleProvider - from org.bouncycastle.jce import ECNamedCurveTable - from org.bouncycastle.jce.spec import ECNamedCurveSpec - from org.bouncycastle.openssl import PEMKeyPair, PEMParser, PEMEncryptedKeyPair, PEMException, \ - EncryptionException - from org.bouncycastle.openssl.jcajce import JcaPEMKeyConverter, JcePEMDecryptorProviderBuilder - log = logging.getLogger("_socket") Security.addProvider(BouncyCastleProvider()) -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 24 00:55:31 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 24 Feb 2016 05:55:31 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Close_sockets_more_carefull?= =?utf-8?b?eS4gRml4ZXMgIzI0NzAsICMyNDcx?= Message-ID: <20160224055530.1554.14196@psf.io> https://hg.python.org/jython/rev/63a2a4f6aa42 changeset: 7908:63a2a4f6aa42 user: Nick Bailey date: Tue Feb 23 22:53:40 2016 -0700 summary: Close sockets more carefully. Fixes #2470, #2471 Fixes two somewhat related issues with respect to closing sockets: * Peer closes do not mean the socket is no longer writable, just that the peer has closed its half of the channel (half-closed). Fixed by always allowing the channel to be written to once half closed (#2470). * Server sockets now shutdown their thread pools asynchronously with their closing, so as to not deadlock (#2471). files: Lib/_socket.py | 52 +++++++++++++++++++------------------ 1 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Lib/_socket.py b/Lib/_socket.py --- a/Lib/_socket.py +++ b/Lib/_socket.py @@ -729,6 +729,7 @@ self.selectors = CopyOnWriteArrayList() self.options = {} # deferred options until bootstrap self.peer_closed = False + self.channel_closed = False # Reference count this underlying socket self.open_lock = Lock() @@ -875,12 +876,13 @@ if self.connect_handlers: self.channel.pipeline().addLast(self.python_inbound_handler) - def peer_closed(x): + def _peer_closed(x): log.debug("Peer closed channel %s", x, extra={"sock": self}) + self.channel_closed = True self.incoming.put(_PEER_CLOSED) self._notify_selectors(hangup=True) - self.channel.closeFuture().addListener(peer_closed) + self.channel.closeFuture().addListener(_peer_closed) def connect(self, addr): # Unwrapped sockets can immediately perform the post-connect step @@ -1054,30 +1056,30 @@ if self.channel is None: return + + close_future = self.channel.close() + if close_future.isSuccess(): + close_future.addListener(self._finish_closing) - try: - self.channel.close().sync() - except RejectedExecutionException: - # Do not care about tasks that attempt to schedule after close - pass - if self.socket_type == SERVER_SOCKET: - log.debug("Shutting down server socket parent group", extra={"sock": self}) - self.parent_group.shutdownGracefully(0, 100, TimeUnit.MILLISECONDS) - self.accepted_children -= 1 - while True: - child = self.child_queue.poll() - if child is None: - break - log.debug("Closed child socket %s not yet accepted", child, extra={"sock": self}) - child.close() - else: - msgs = [] - self.incoming.drainTo(msgs) - for msg in msgs: - if msg is not _PEER_CLOSED: - msg.release() + def _finish_closing(self, _): + if self.socket_type == SERVER_SOCKET: + log.debug("Shutting down server socket parent group", extra={"sock": self}) + self.parent_group.shutdownGracefully(0, 100, TimeUnit.MILLISECONDS) + self.accepted_children -= 1 + while True: + child = self.child_queue.poll() + if child is None: + break + log.debug("Closed child socket %s not yet accepted", child, extra={"sock": self}) + child.close() + else: + msgs = [] + self.incoming.drainTo(msgs) + for msg in msgs: + if msg is not _PEER_CLOSED: + msg.release() - log.debug("Closed socket", extra={"sock": self}) + log.debug("Closed socket", extra={"sock": self}) def shutdown(self, how): log.debug("Got request to shutdown socket how=%s", how, extra={"sock": self}) @@ -1121,7 +1123,7 @@ return 0 def _writable(self): - return self.channel and self.channel.isActive() and self.channel.isWritable() + return self.channel_closed or (self.channel and self.channel.isActive() and self.channel.isWritable()) can_write = _writable -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Wed Feb 24 01:26:15 2016 From: jython-checkins at python.org (jim.baker) Date: Wed, 24 Feb 2016 06:26:15 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Always_attempt_to_shutdown_?= =?utf-8?q?server_socket_thread_pool_when_closed=2E_Completes?= Message-ID: <20160224062615.1957.32768@psf.io> https://hg.python.org/jython/rev/08b7720fd321 changeset: 7912:08b7720fd321 user: Jim Baker date: Tue Feb 23 23:26:09 2016 -0700 summary: Always attempt to shutdown server socket thread pool when closed. Completes #2471 Although adding the corresponding listener can produces noisy tests (in test_socket) due to finalization racing with thread pool shutdown, it also ensures these thread pools are in fact cleaned up. See https://github.com/netty/netty/issues/2166 - perhaps we can control logging to remove this noise in stderr. files: Lib/_socket.py | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/Lib/_socket.py b/Lib/_socket.py --- a/Lib/_socket.py +++ b/Lib/_socket.py @@ -1058,8 +1058,7 @@ return close_future = self.channel.close() - if close_future.isSuccess(): - close_future.addListener(self._finish_closing) + close_future.addListener(self._finish_closing) def _finish_closing(self, _): if self.socket_type == SERVER_SOCKET: -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Sun Feb 28 21:52:59 2016 From: jython-checkins at python.org (darjus.loktevic) Date: Mon, 29 Feb 2016 02:52:59 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Refresh_multiprocessing_fro?= =?utf-8?q?m_CPython-2=2E7=2E11?= Message-ID: <20160229025258.115619.5344@psf.io> https://hg.python.org/jython/rev/d5594657fdba changeset: 7913:d5594657fdba user: Darjus Loktevic date: Mon Feb 29 13:52:45 2016 +1100 summary: Refresh multiprocessing from CPython-2.7.11 files: lib-python/2.7/multiprocessing/connection.py | 32 +++++-- lib-python/2.7/multiprocessing/dummy/__init__.py | 2 +- lib-python/2.7/multiprocessing/forking.py | 21 ++++- lib-python/2.7/multiprocessing/managers.py | 1 + lib-python/2.7/multiprocessing/pool.py | 43 ++++++--- lib-python/2.7/multiprocessing/process.py | 2 +- lib-python/2.7/multiprocessing/queues.py | 20 ++-- lib-python/2.7/multiprocessing/sharedctypes.py | 7 +- lib-python/2.7/multiprocessing/synchronize.py | 2 +- lib-python/2.7/multiprocessing/util.py | 18 +++- 10 files changed, 104 insertions(+), 44 deletions(-) diff --git a/lib-python/2.7/multiprocessing/connection.py b/lib-python/2.7/multiprocessing/connection.py --- a/lib-python/2.7/multiprocessing/connection.py +++ b/lib-python/2.7/multiprocessing/connection.py @@ -90,7 +90,7 @@ return tempfile.mktemp(prefix='listener-', dir=get_temp_dir()) elif family == 'AF_PIPE': return tempfile.mktemp(prefix=r'\\.\pipe\pyc-%d-%d-' % - (os.getpid(), _mmap_counter.next())) + (os.getpid(), _mmap_counter.next()), dir="") else: raise ValueError('unrecognized family') @@ -270,7 +270,14 @@ self._unlink = None def accept(self): - s, self._last_accepted = self._socket.accept() + while True: + try: + s, self._last_accepted = self._socket.accept() + except socket.error as e: + if e.args[0] != errno.EINTR: + raise + else: + break s.setblocking(True) fd = duplicate(s.fileno()) conn = _multiprocessing.Connection(fd) @@ -278,24 +285,29 @@ return conn def close(self): - self._socket.close() - if self._unlink is not None: - self._unlink() + try: + self._socket.close() + finally: + unlink = self._unlink + if unlink is not None: + self._unlink = None + unlink() def SocketClient(address): ''' Return a connection object connected to the socket given by `address` ''' - family = address_type(address) - s = socket.socket( getattr(socket, family) ) - s.setblocking(True) + family = getattr(socket, address_type(address)) t = _init_timeout() while 1: + s = socket.socket(family) + s.setblocking(True) try: s.connect(address) except socket.error, e: + s.close() if e.args[0] != errno.ECONNREFUSED or _check_timeout(t): debug('failed to connect to address %s', address) raise @@ -446,10 +458,10 @@ return self._loads(s) def _xml_dumps(obj): - return xmlrpclib.dumps((obj,), None, None, None, 1).encode('utf8') + return xmlrpclib.dumps((obj,), None, None, None, 1) def _xml_loads(s): - (obj,), method = xmlrpclib.loads(s.decode('utf8')) + (obj,), method = xmlrpclib.loads(s) return obj class XmlListener(Listener): diff --git a/lib-python/2.7/multiprocessing/dummy/__init__.py b/lib-python/2.7/multiprocessing/dummy/__init__.py --- a/lib-python/2.7/multiprocessing/dummy/__init__.py +++ b/lib-python/2.7/multiprocessing/dummy/__init__.py @@ -138,7 +138,7 @@ self._value = value value = property(_get, _set) def __repr__(self): - return '<%r(%r, %r)>'%(type(self).__name__,self._typecode,self._value) + return '<%s(%r, %r)>'%(type(self).__name__,self._typecode,self._value) def Manager(): return sys.modules[__name__] diff --git a/lib-python/2.7/multiprocessing/forking.py b/lib-python/2.7/multiprocessing/forking.py --- a/lib-python/2.7/multiprocessing/forking.py +++ b/lib-python/2.7/multiprocessing/forking.py @@ -361,12 +361,13 @@ return [sys.executable, '--multiprocessing-fork'] else: prog = 'from multiprocessing.forking import main; main()' - return [_python_exe, '-c', prog, '--multiprocessing-fork'] + opts = util._args_from_interpreter_flags() + return [_python_exe] + opts + ['-c', prog, '--multiprocessing-fork'] def main(): ''' - Run code specifed by data received over pipe + Run code specified by data received over pipe ''' assert is_forking(sys.argv) @@ -469,12 +470,26 @@ process.ORIGINAL_DIR = data['orig_dir'] if 'main_path' in data: + # XXX (ncoghlan): The following code makes several bogus + # assumptions regarding the relationship between __file__ + # and a module's real name. See PEP 302 and issue #10845 + # The problem is resolved properly in Python 3.4+, as + # described in issue #19946 + main_path = data['main_path'] main_name = os.path.splitext(os.path.basename(main_path))[0] if main_name == '__init__': main_name = os.path.basename(os.path.dirname(main_path)) - if main_name != 'ipython': + if main_name == '__main__': + # For directory and zipfile execution, we assume an implicit + # "if __name__ == '__main__':" around the module, and don't + # rerun the main module code in spawned processes + main_module = sys.modules['__main__'] + main_module.__file__ = main_path + elif main_name != 'ipython': + # Main modules not actually called __main__.py may + # contain additional code that should still be executed import imp if main_path is None: diff --git a/lib-python/2.7/multiprocessing/managers.py b/lib-python/2.7/multiprocessing/managers.py --- a/lib-python/2.7/multiprocessing/managers.py +++ b/lib-python/2.7/multiprocessing/managers.py @@ -763,6 +763,7 @@ elif kind == '#PROXY': exposed, token = result proxytype = self._manager._registry[token.typeid][-1] + token.address = self._token.address proxy = proxytype( token, self._serializer, manager=self._manager, authkey=self._authkey, exposed=exposed diff --git a/lib-python/2.7/multiprocessing/pool.py b/lib-python/2.7/multiprocessing/pool.py --- a/lib-python/2.7/multiprocessing/pool.py +++ b/lib-python/2.7/multiprocessing/pool.py @@ -169,7 +169,8 @@ self._task_handler = threading.Thread( target=Pool._handle_tasks, - args=(self._taskqueue, self._quick_put, self._outqueue, self._pool) + args=(self._taskqueue, self._quick_put, self._outqueue, + self._pool, self._cache) ) self._task_handler.daemon = True self._task_handler._state = RUN @@ -329,26 +330,38 @@ debug('worker handler exiting') @staticmethod - def _handle_tasks(taskqueue, put, outqueue, pool): + def _handle_tasks(taskqueue, put, outqueue, pool, cache): thread = threading.current_thread() for taskseq, set_length in iter(taskqueue.get, None): + task = None i = -1 - for i, task in enumerate(taskseq): - if thread._state: - debug('task handler found thread._state != RUN') - break - try: - put(task) - except IOError: - debug('could not put task on queue') - break - else: + try: + for i, task in enumerate(taskseq): + if thread._state: + debug('task handler found thread._state != RUN') + break + try: + put(task) + except Exception as e: + job, ind = task[:2] + try: + cache[job]._set(ind, (False, e)) + except KeyError: + pass + else: + if set_length: + debug('doing set_length()') + set_length(i+1) + continue + break + except Exception as ex: + job, ind = task[:2] if task else (0, 0) + if job in cache: + cache[job]._set(ind + 1, (False, ex)) if set_length: debug('doing set_length()') set_length(i+1) - continue - break else: debug('task handler got sentinel') @@ -565,6 +578,8 @@ self._cond.release() del self._cache[self._job] +AsyncResult = ApplyResult # create alias -- see #17805 + # # Class whose instances are returned by `Pool.map_async()` # diff --git a/lib-python/2.7/multiprocessing/process.py b/lib-python/2.7/multiprocessing/process.py --- a/lib-python/2.7/multiprocessing/process.py +++ b/lib-python/2.7/multiprocessing/process.py @@ -267,7 +267,7 @@ else: sys.stderr.write(str(e.args[0]) + '\n') sys.stderr.flush() - exitcode = 0 if isinstance(e.args[0], str) else 1 + exitcode = 1 except: exitcode = 1 import traceback diff --git a/lib-python/2.7/multiprocessing/queues.py b/lib-python/2.7/multiprocessing/queues.py --- a/lib-python/2.7/multiprocessing/queues.py +++ b/lib-python/2.7/multiprocessing/queues.py @@ -44,10 +44,10 @@ from Queue import Empty, Full import _multiprocessing -from multiprocessing import Pipe -from multiprocessing.synchronize import Lock, BoundedSemaphore, Semaphore, Condition -from multiprocessing.util import debug, info, Finalize, register_after_fork -from multiprocessing.forking import assert_spawning +from . import Pipe +from .synchronize import Lock, BoundedSemaphore, Semaphore, Condition +from .util import debug, info, Finalize, register_after_fork, is_exiting +from .forking import assert_spawning # # Queue type using a pipe, buffer and thread @@ -156,9 +156,13 @@ def close(self): self._closed = True - self._reader.close() - if self._close: - self._close() + try: + self._reader.close() + finally: + close = self._close + if close: + self._close = None + close() def join_thread(self): debug('Queue.join_thread()') @@ -229,8 +233,6 @@ @staticmethod def _feed(buffer, notempty, send, writelock, close): debug('starting thread to feed data to pipe') - from .util import is_exiting - nacquire = notempty.acquire nrelease = notempty.release nwait = notempty.wait diff --git a/lib-python/2.7/multiprocessing/sharedctypes.py b/lib-python/2.7/multiprocessing/sharedctypes.py --- a/lib-python/2.7/multiprocessing/sharedctypes.py +++ b/lib-python/2.7/multiprocessing/sharedctypes.py @@ -46,13 +46,18 @@ # typecode_to_type = { - 'c': ctypes.c_char, 'u': ctypes.c_wchar, + 'c': ctypes.c_char, 'b': ctypes.c_byte, 'B': ctypes.c_ubyte, 'h': ctypes.c_short, 'H': ctypes.c_ushort, 'i': ctypes.c_int, 'I': ctypes.c_uint, 'l': ctypes.c_long, 'L': ctypes.c_ulong, 'f': ctypes.c_float, 'd': ctypes.c_double } +try: + typecode_to_type['u'] = ctypes.c_wchar +except AttributeError: + pass + # # diff --git a/lib-python/2.7/multiprocessing/synchronize.py b/lib-python/2.7/multiprocessing/synchronize.py --- a/lib-python/2.7/multiprocessing/synchronize.py +++ b/lib-python/2.7/multiprocessing/synchronize.py @@ -226,7 +226,7 @@ num_waiters = (self._sleeping_count._semlock._get_value() - self._woken_count._semlock._get_value()) except Exception: - num_waiters = 'unkown' + num_waiters = 'unknown' return '' % (self._lock, num_waiters) def wait(self, timeout=None): diff --git a/lib-python/2.7/multiprocessing/util.py b/lib-python/2.7/multiprocessing/util.py --- a/lib-python/2.7/multiprocessing/util.py +++ b/lib-python/2.7/multiprocessing/util.py @@ -32,11 +32,13 @@ # SUCH DAMAGE. # +import os import itertools import weakref import atexit import threading # we want threading to install it's # cleanup function before multiprocessing does +from subprocess import _args_from_interpreter_flags from multiprocessing.process import current_process, active_children @@ -183,6 +185,7 @@ self._args = args self._kwargs = kwargs or {} self._key = (exitpriority, _finalizer_counter.next()) + self._pid = os.getpid() _finalizer_registry[self._key] = self @@ -195,9 +198,13 @@ except KeyError: sub_debug('finalizer no longer registered') else: - sub_debug('finalizer calling %s with args %s and kwargs %s', - self._callback, self._args, self._kwargs) - res = self._callback(*self._args, **self._kwargs) + if self._pid != os.getpid(): + sub_debug('finalizer ignored because different process') + res = None + else: + sub_debug('finalizer calling %s with args %s and kwargs %s', + self._callback, self._args, self._kwargs) + res = self._callback(*self._args, **self._kwargs) self._weakref = self._callback = self._args = \ self._kwargs = self._key = None return res @@ -328,10 +335,13 @@ class ForkAwareThreadLock(object): def __init__(self): + self._reset() + register_after_fork(self, ForkAwareThreadLock._reset) + + def _reset(self): self._lock = threading.Lock() self.acquire = self._lock.acquire self.release = self._lock.release - register_after_fork(self, ForkAwareThreadLock.__init__) class ForkAwareLocal(threading.local): def __init__(self): -- Repository URL: https://hg.python.org/jython From jython-checkins at python.org Sun Feb 28 23:53:57 2016 From: jython-checkins at python.org (darjus.loktevic) Date: Mon, 29 Feb 2016 04:53:57 +0000 Subject: [Jython-checkins] =?utf-8?q?jython=3A_Respect_javax=2Enet=2Essl?= =?utf-8?q?=2EtrustStorePassword_for_loading_a_trust_store?= Message-ID: <20160229045357.25983.41227@psf.io> https://hg.python.org/jython/rev/0d8fa49ad7a7 changeset: 7914:0d8fa49ad7a7 user: Darjus Loktevic date: Mon Feb 29 15:53:49 2016 +1100 summary: Respect javax.net.ssl.trustStorePassword for loading a trust store files: Lib/_sslcerts.py | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Lib/_sslcerts.py b/Lib/_sslcerts.py --- a/Lib/_sslcerts.py +++ b/Lib/_sslcerts.py @@ -4,7 +4,7 @@ from StringIO import StringIO import types -from java.lang import RuntimeException +from java.lang import RuntimeException, System from java.io import BufferedInputStream, BufferedReader, FileReader, InputStreamReader, ByteArrayInputStream, IOException from java.security import KeyStore, Security, InvalidAlgorithmParameterException from java.security.cert import CertificateException, CertificateFactory @@ -173,8 +173,10 @@ def _extract_certs_from_keystore_file(f, password): keystore = KeyStore.getInstance(KeyStore.getDefaultType()) - if password is None: # default java keystore password is changeit - password = 'changeit' + if password is None: + password = System.getProperty('javax.net.ssl.trustStorePassword') + if password is None: # default java keystore password is changeit + password = 'changeit' elif not isinstance(password, str): password = [] -- Repository URL: https://hg.python.org/jython