# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. # A grammar to describe tree matching patterns. # Not shown here: # - 'TOKEN' stands for any token (leaf node) # - 'any' stands for any node (leaf or interior) # With 'any' we can still specify the sub-structure. # The start symbol is 'Matcher'. Matcher: Alternatives ENDMARKER Alternatives: Alternative ('|' Alternative)* Alternative: (Unit | NegatedUnit)+ Unit: [NAME '='] ( STRING [Repeater] | NAME [Details] [Repeater] | '(' Alternatives ')' [Repeater] | '[' Alternatives ']' ) NegatedUnit: 'not' (STRING | NAME [Details] | '(' Alternatives ')') Repeater: '*' | '+' | '{' NUMBER [',' NUMBER] '}' Details: '<' Alternatives '>' # Grammar for 2to3. This grammar supports Python 2.x and 3.x. # Note: Changing the grammar specified in this file will most likely # require corresponding changes in the parser module # (../Modules/parsermodule.c). If you can't make the changes to # that module yourself, please co-ordinate the required changes # with someone who can; ask around on python-dev for help. Fred # Drake will probably be listening there. # NOTE WELL: You should also follow all the steps listed in PEP 306, # "How to Change Python's Grammar" # Commands for Kees Blom's railroad program #diagram:token NAME #diagram:token NUMBER #diagram:token STRING #diagram:token NEWLINE #diagram:token ENDMARKER #diagram:token INDENT #diagram:output\input python.bla #diagram:token DEDENT #diagram:output\textwidth 20.04cm\oddsidemargin 0.0cm\evensidemargin 0.0cm #diagram:rules # Start symbols for the grammar: # file_input is a module or sequence of commands read from an input file; # single_input is a single interactive statement; # eval_input is the input for the eval() and input() functions. # NB: compound_stmt in single_input is followed by extra NEWLINE! file_input: (NEWLINE | stmt)* ENDMARKER single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE eval_input: testlist NEWLINE* ENDMARKER decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE decorators: decorator+ decorated: decorators (classdef | funcdef | async_funcdef) async_funcdef: ASYNC funcdef funcdef: 'def' NAME parameters ['->' test] ':' suite parameters: '(' [typedargslist] ')' typedargslist: ((tfpdef ['=' test] ',')* ('*' [tname] (',' tname ['=' test])* [',' '**' tname] | '**' tname) | tfpdef ['=' test] (',' tfpdef ['=' test])* [',']) tname: NAME [':' test] tfpdef: tname | '(' tfplist ')' tfplist: tfpdef (',' tfpdef)* [','] varargslist: ((vfpdef ['=' test] ',')* ('*' [vname] (',' vname ['=' test])* [',' '**' vname] | '**' vname) | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) vname: NAME vfpdef: vname | '(' vfplist ')' vfplist: vfpdef (',' vfpdef)* [','] stmt: simple_stmt | compound_stmt simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE small_stmt: (expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | exec_stmt | assert_stmt) expr_stmt: testlist_star_expr (annassign | augassign (yield_expr|testlist) | ('=' (yield_expr|testlist_star_expr))*) annassign: ':' test ['=' test] testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [','] augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' | '//=') # For normal and annotated assignments, additional restrictions enforced by the interpreter print_stmt: 'print' ( [ test (',' test)* [','] ] | '>>' test [ (',' test)+ [','] ] ) del_stmt: 'del' exprlist pass_stmt: 'pass' flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt break_stmt: 'break' continue_stmt: 'continue' return_stmt: 'return' [testlist] yield_stmt: yield_expr raise_stmt: 'raise' [test ['from' test | ',' test [',' test]]] import_stmt: import_name | import_from import_name: 'import' dotted_as_names import_from: ('from' ('.'* dotted_name | '.'+) 'import' ('*' | '(' import_as_names ')' | import_as_names)) import_as_name: NAME ['as' NAME] dotted_as_name: dotted_name ['as' NAME] import_as_names: import_as_name (',' import_as_name)* [','] dotted_as_names: dotted_as_name (',' dotted_as_name)* dotted_name: NAME ('.' NAME)* global_stmt: ('global' | 'nonlocal') NAME (',' NAME)* exec_stmt: 'exec' expr ['in' test [',' test]] assert_stmt: 'assert' test [',' test] compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt async_stmt: ASYNC (funcdef | with_stmt | for_stmt) if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] while_stmt: 'while' test ':' suite ['else' ':' suite] for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] try_stmt: ('try' ':' suite ((except_clause ':' suite)+ ['else' ':' suite] ['finally' ':' suite] | 'finally' ':' suite)) with_stmt: 'with' with_item (',' with_item)* ':' suite with_item: test ['as' expr] with_var: 'as' expr # NB compile.c makes sure that the default except clause is last except_clause: 'except' [test [(',' | 'as') test]] suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT # Backward compatibility cruft to support: # [ x for x in lambda: True, lambda: False if x() ] # even while also allowing: # lambda x: 5 if x else 2 # (But not a mix of the two) testlist_safe: old_test [(',' old_test)+ [',']] old_test: or_test | old_lambdef old_lambdef: 'lambda' [varargslist] ':' old_test test: or_test ['if' or_test 'else' test] | lambdef or_test: and_test ('or' and_test)* and_test: not_test ('and' not_test)* not_test: 'not' not_test | comparison comparison: expr (comp_op expr)* comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' star_expr: '*' expr expr: xor_expr ('|' xor_expr)* xor_expr: and_expr ('^' and_expr)* and_expr: shift_expr ('&' shift_expr)* shift_expr: arith_expr (('<<'|'>>') arith_expr)* arith_expr: term (('+'|'-') term)* term: factor (('*'|'@'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power power: [AWAIT] atom trailer* ['**' factor] atom: ('(' [yield_expr|testlist_gexp] ')' | '[' [listmaker] ']' | '{' [dictsetmaker] '}' | '`' testlist1 '`' | NAME | NUMBER | STRING+ | '.' '.' '.') listmaker: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] ) testlist_gexp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] ) lambdef: 'lambda' [varargslist] ':' test trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME subscriptlist: subscript (',' subscript)* [','] subscript: test | [test] ':' [test] [sliceop] sliceop: ':' [test] exprlist: (expr|star_expr) (',' (expr|star_expr))* [','] testlist: test (',' test)* [','] dictsetmaker: ( ((test ':' test | '**' expr) (comp_for | (',' (test ':' test | '**' expr))* [','])) | ((test | star_expr) (comp_for | (',' (test | star_expr))* [','])) ) classdef: 'class' NAME ['(' [arglist] ')'] ':' suite arglist: argument (',' argument)* [','] # "test '=' test" is really "keyword '=' test", but we have no such token. # These need to be in a single rule to avoid grammar that is ambiguous # to our LL(1) parser. Even though 'test' includes '*expr' in star_expr, # we explicitly match '*' here, too, to give it proper precedence. # Illegal combinations and orderings are blocked in ast.c: # multiple (test comp_for) arguments are blocked; keyword unpackings # that precede iterable unpackings are blocked; etc. argument: ( test [comp_for] | test '=' test | '**' expr | star_expr ) comp_iter: comp_for | comp_if comp_for: [ASYNC] 'for' exprlist 'in' testlist_safe [comp_iter] comp_if: 'if' old_test [comp_iter] testlist1: test (',' test)* # not used in grammar, but may appear in "node" passed from Parser to Compiler encoding_decl: NAME yield_expr: 'yield' [yield_arg] yield_arg: 'from' test | testlist # Tests for the 'tokenize' module. # Large bits stolen from test_grammar.py. # Comments "#" #' #" #\ # # abc '''# #''' x = 1 # # Balancing continuation a = (3, 4, 5, 6) y = [3, 4, 5] z = {'a':5, 'b':6} x = (len(repr(y)) + 5*x - a[ 3 ] - x + len({ } ) ) # Backslash means line continuation: x = 1 \ + 1 # Backslash does not means continuation in comments :\ x = 0 # Ordinary integers 0xff != 255 0o377 != 255 2147483647 != 0o17777777777 -2147483647-1 != 0o20000000000 0o37777777777 != -1 0xffffffff != -1; 0o37777777777 != -1; -0o1234567 == 0O001234567; 0b10101 == 0B00010101 # Long integers x = 0 x = 0 x = 0xffffffffffffffff x = 0xffffffffffffffff x = 0o77777777777777777 x = 0B11101010111111111 x = 123456789012345678901234567890 x = 123456789012345678901234567890 # Floating-point numbers x = 3.14 x = 314. x = 0.314 # XXX x = 000.314 x = .314 x = 3e14 x = 3E14 x = 3e-14 x = 3e+14 x = 3.e14 x = .3e14 x = 3.1e4 # String literals x = ''; y = ""; x = '\''; y = "'"; x = '"'; y = "\""; x = "doesn't \"shrink\" does it" y = 'doesn\'t "shrink" does it' x = "does \"shrink\" doesn't it" y = 'does "shrink" doesn\'t it' x = """ The "quick" brown fox jumps over the 'lazy' dog. """ y = '\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n' y = ''' The "quick" brown fox jumps over the 'lazy' dog. '''; y = "\n\ The \"quick\"\n\ brown fox\n\ jumps over\n\ the 'lazy' dog.\n\ "; y = '\n\ The \"quick\"\n\ brown fox\n\ jumps over\n\ the \'lazy\' dog.\n\ '; x = r'\\' + R'\\' x = r'\'' + '' y = r''' foo bar \\ baz''' + R''' foo''' y = r"""foo bar \\ baz """ + R'''spam ''' x = b'abc' + B'ABC' y = b"abc" + B"ABC" x = br'abc' + Br'ABC' + bR'ABC' + BR'ABC' y = br"abc" + Br"ABC" + bR"ABC" + BR"ABC" x = rb'abc' + rB'ABC' + Rb'ABC' + RB'ABC' y = rb"abc" + rB"ABC" + Rb"ABC" + RB"ABC" x = br'\\' + BR'\\' x = rb'\\' + RB'\\' x = br'\'' + '' x = rb'\'' + '' y = br''' foo bar \\ baz''' + BR''' foo''' y = Br"""foo bar \\ baz """ + bR'''spam ''' y = rB"""foo bar \\ baz """ + Rb'''spam ''' # Indentation if 1: x = 2 if 1: x = 2 if 1: while 0: if 0: x = 2 x = 2 if 0: if 2: while 0: if 1: x = 2 # Operators def d22(a, b, c=1, d=2): pass def d01v(a=1, *restt, **restd): pass (x, y) != ({'a':1}, {'b':2}) # comparison if 1 < 1 > 1 == 1 >= 1 <= 1 != 1 != 1 in 1 not in 1 is 1 is not 1: pass # binary x = 1 & 1 x = 1 ^ 1 x = 1 | 1 # shift x = 1 << 1 >> 1 # additive x = 1 - 1 + 1 - 1 + 1 # multiplicative x = 1 / 1 * 1 % 1 # unary x = ~1 ^ 1 & 1 | 1 & 1 ^ -1 x = -1*1/1 + 1*1 - ---1*1 # selector import sys, time x = sys.modules['time'].time() @staticmethod def foo(): pass @staticmethod def foo(x:1)->1: pass BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StopAsyncIteration +-- ArithmeticError | +-- FloatingPointError | +-- OverflowError | +-- ZeroDivisionError +-- AssertionError +-- AttributeError +-- BufferError +-- EOFError +-- ImportError +-- ModuleNotFoundError +-- LookupError | +-- IndexError | +-- KeyError +-- MemoryError +-- NameError | +-- UnboundLocalError +-- OSError | +-- BlockingIOError | +-- ChildProcessError | +-- ConnectionError | | +-- BrokenPipeError | | +-- ConnectionAbortedError | | +-- ConnectionRefusedError | | +-- ConnectionResetError | +-- FileExistsError | +-- FileNotFoundError | +-- InterruptedError | +-- IsADirectoryError | +-- NotADirectoryError | +-- PermissionError | +-- ProcessLookupError | +-- TimeoutError +-- ReferenceError +-- RuntimeError | +-- NotImplementedError | +-- RecursionError +-- SyntaxError | +-- IndentationError | +-- TabError +-- SystemError +-- TypeError +-- ValueError | +-- UnicodeError | +-- UnicodeDecodeError | +-- UnicodeEncodeError | +-- UnicodeTranslateError +-- Warning +-- DeprecationWarning +-- PendingDeprecationWarning +-- RuntimeWarning +-- SyntaxWarning +-- UserWarning +-- FutureWarning +-- ImportWarning +-- UnicodeWarning +-- BytesWarning +-- ResourceWarning MIME-Version: 1.0 From: Barry Warsaw To: Dingus Lovers Subject: Lyrics Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit This is a 7bit encoded message. --BOUNDARY Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: Quoted-Printable =A1This is a Quoted Printable encoded message! --BOUNDARY Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: Base64 VGhpcyBpcyBhIEJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Uu --BOUNDARY Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: Base64 VGhpcyBpcyBhIEJhc2U2NCBlbmNvZGVkIG1lc3NhZ2UuCg== --BOUNDARY Content-Type: text/plain; charset="iso-8859-1" This has no Content-Transfer-Encoding: header. --BOUNDARY-- From: aperson@dom.ain To: bperson@dom.ain Subject: Test Content-Type: multipart/mixed; boundary="BOUNDARY" MIME message --BOUNDARY Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit One --BOUNDARY Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Two --BOUNDARY-- End of MIME message Content-Type: message/rfc822 MIME-Version: 1.0 Subject: The enclosing message Subject: An enclosed message Here is the body of the message. From: aperson@dom.ain To: bperson@dom.ain Content-Type: multipart/digest; boundary=XYZ --XYZ Content-Type: text/plain This is a text plain part that is counter to recommended practice in RFC 2046, $5.1.5, but is not illegal --XYZ From: cperson@dom.ain To: dperson@dom.ain A submessage --XYZ-- From: aperson@dom.ain To: bperson@dom.ain Subject: here's something interesting counter to RFC 2822, there's no separating newline here Delivered-To: freebsd-isp@freebsd.org Date: Tue, 26 Sep 2000 12:23:03 -0500 From: Anne Person To: Barney Dude Subject: Re: Limiting Perl CPU Utilization... Mime-Version: 1.0 Content-Type: text/plain; charset*=ansi-x3.4-1968''us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.8i Sender: owner-freebsd-isp@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Some message. MIME-Version: 1.0 From: Barry To: Dingus Lovers Subject: Here is your dingus fish Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="OUTER" --OUTER Content-Type: text/plain; charset="us-ascii" A text/plain part --OUTER Content-Type: multipart/mixed; boundary=BOUNDARY --BOUNDARY Content-Type: text/plain; charset="us-ascii" Hi there, This is the dingus fish. --BOUNDARY Content-Type: image/gif; name="dingusfish.gif" Content-Transfer-Encoding: base64 content-disposition: attachment; filename="dingusfish.gif" R0lGODdhAAEAAfAAAP///wAAACwAAAAAAAEAAQAC/oSPqcvtD6OctNqLs968+w+G4kiW5omm6sq2 7gvH8kzX9o3n+s73/g8MCofEovGITGICTKbyCV0FDNOo9SqpQqpOrJfXzTQj2vD3TGtqL+NtGQ2f qTXmxzuOd7WXdcc9DyjU53ewFni4s0fGhdiYaEhGBelICTNoV1j5NUnFcrmUqemjNifJVWpaOqaI oFq3SspZsSraE7sHq3jr1MZqWvi662vxV4tD+pvKW6aLDOCLyur8PDwbanyDeq0N3DctbQYeLDvR RY6t95m6UB0d3mwIrV7e2VGNvjjffukeJp4w7F65KecGFsTHQGAygOrgrWs1jt28Rc88KESYcGLA /obvTkH6p+CinWJiJmIMqXGQwH/y4qk0SYjgQTczT3ajKZGfuI0uJ4kkVI/DT5s3/ejkxI0aT4Y+ YTYgWbImUaXk9nlLmnSh1qJiJFl0OpUqRK4oOy7NyRQtHWofhoYVxkwWXKUSn0YsS+fUV6lhqfYb 6ayd3Z5qQdG1B7bvQzaJjwUV2lixMUZ7JVsOlfjWVr/3NB/uFvnySBN6Dcb6rGwaRM3wsormw5cC M9NxWy/bWdufudCvy8bOAjXjVVwta/uO21sE5RHBCzNFXtgq9ORtH4eYjVP4Yryo026nvkFmCeyA B29efV6ravCMK5JwWd5897Qrx7ll38o6iHDZ/rXPR//feevhF4l7wjUGX3xq1eeRfM4RSJGBIV1D z1gKPkfWag3mVBVvva1RlX5bAJTPR/2YqNtw/FkIYYEi/pIZiAdpcxpoHtmnYYoZtvhUftzdx5ZX JSKDW405zkGcZzzGZ6KEv4FI224oDmijlEf+xp6MJK5ojY/ASeVUR+wsKRuJ+XFZ5o7ZeEime8t1 ouUsU6YjF5ZtUihhkGfCdFQLWQFJ3UXxmElfhQnR+eCdcDbkFZp6vTRmj56ApCihn5QGpaToNZmR n3NVSpZcQpZ2KEONusaiCsKAug0wkQbJSFO+PTSjneGxOuFjPlUk3ovWvdIerjUg9ZGIOtGq/qeX eCYrrCX+1UPsgTKGGRSbzd5q156d/gpfbJxe66eD5iQKrXj7RGgruGxs62qebBHUKS32CKluCiqZ qh+pmehmEb71noAUoe5e9Zm17S7773V10pjrtG4CmuurCV/n6zLK5turWNhqOvFXbjhZrMD0YhKe wR0zOyuvsh6MWrGoIuzvyWu5y1WIFAqmJselypxXh6dKLNOKEB98L88bS2rkNqqlKzCNJp9c0G0j Gzh0iRrCbHSXmPR643QS+4rWhgFmnSbSuXCjS0xAOWkU2UdLqyuUNfHSFdUouy3bm5i5GnDM3tG8 doJ4r5tqu3pPbRSVfvs8uJzeNXhp3n4j/tZ42SwH7eaWUUOjc3qFV9453UHTXZfcLH+OeNs5g36x lBnHvTm7EbMbLeuaLncao8vWCXimfo1o+843Ak6y4ChNeGntvAYvfLK4ezmoyNIbNCLTCXO9ZV3A E8/s88RczPzDwI4Ob7XZyl7+9Miban29h+tJZPrE21wgvBphDfrrfPdCTPKJD/y98L1rZwHcV6Jq Zab0metpuNIX/qAFPoz171WUaUb4HAhBSzHuHfjzHb3kha/2Cctis/ORArVHNYfFyYRH2pYIRzic isVOfPWD1b6mRTqpCRBozzof6UZVvFXRxWIr3GGrEviGYgyPMfahheiSaLs/9QeFu7oZ/ndSY8DD ya9x+uPed+7mxN2IzIISBOMLFYWVqC3Pew1T2nFuuCiwZS5/v6II10i4t1OJcUH2U9zxKodHsGGv Oa+zkvNUYUOa/TCCRutF9MzDwdlUMJADTCGSbDQ5OV4PTamDoPEi6Ecc/RF5RWwkcdSXvSOaDWSn I9LlvubFTQpuc6JKXLcKeb+xdbKRBnwREemXyjg6ME65aJiOuBgrktzykfPLJBKR9ClMavJ62/Ff BlNIyod9yX9wcSXexnXFpvkrbXk64xsx5Db7wXKP5fSgsvwIMM/9631VLBfkmtbHRXpqmtei52hG pUwSlo+BASQoeILDOBgREECxBBh5/iYmNsQ9dIv5+OI++QkqdsJPc3uykz5fkM+OraeekcQF7X4n B5S67za5U967PmooGQhUXfF7afXyCD7ONdRe17QogYjVx38uLwtrS6nhTnm15LQUnu9E2uK6CNI/ 1HOABj0ESwOjut4FEpFQpdNAm4K2LHnDWHNcmKB2ioKBogysVZtMO2nSxUdZ8Yk2kJc7URioLVI0 YgmtIwZj4LoeKemgnOnbUdGnzZ4Oa6scqiolBGqS6RgWNLu0RMhcaE6rhhU4hiuqFXPAG8fGwTPW FKeLMtdVmXLSs5YJGF/YeVm7rREMlY3UYE+yCxbaMXX8y15m5zVHq6GOKDMynzII/jdUHdyVqIy0 ifX2+r/EgtZcvRzSb72gU9ui87M2VecjKildW/aFqaYhKoryUjfB/g4qtyVuc60xFDGmCxwjW+qu zjuwl2GkOWn66+3QiiEctvd04OVvcCVzjgT7lrkvjVGKKHmmlDUKowSeikb5kK/mJReuWOxONx+s ULsl+Lqb0CVn0SrVyJ6wt4t6yTeSCafhPhAf0OXn6L60UMxiLolFAtmN35S2Ob1lZpQ1r/n0Qb5D oQ1zJiRVDgF8N3Q8TYfbi3DyWCy3lT1nxyBs6FT3S2GOzWRlxwKvlRP0RPJA9SjxEy0UoEnkA+M4 cnzLMJrBGWLFEaaUb5lvpqbq/loOaU5+DFuHPxo82/OZuM8FXG3oVNZhtWpMpb/0Xu5m/LfLhHZQ 7yuVI0MqZ7NE43imC8jH3IwGZlbPm0xkJYs7+2U48hXTsFSMqgGDvai0kLxyynKNT/waj+q1c1tz GjOpPBgdCSq3UKZxCSsqFIY+O6JbAWGWcV1pwqLyj5sGqCF1xb1F3varUWqrJv6cN3PrUXzijtfZ FshpBL3Xwr4GIPvU2N8EjrJgS1zl21rbXQMXeXc5jjFyrhpCzijSv/RQtyPSzHCFMhlME95fHglt pRsX+dfSQjUeHAlpWzJ5iOo79Ldnaxai6bXTcGO3fp07ri7HLEmXXPlYi8bv/qVxvNcdra6m7Rlb 6JBTb5fd66VhFRjGArh2n7R1rDW4P5NOT9K0I183T2scYkeZ3q/VFyLb09U9ajzXBS8Kgkhc4mBS kYY9cy3Vy9lUnuNJH8HGIclUilwnBtjUOH0gteGOZ4c/XNrhXLSYDyxfnD8z1pDy7rYRvDolhnbe UMzxCZUs40s6s7UIvBnLgc0+vKuOkIXeOrDymlp+Zxra4MZLBbVrqD/jTJ597pDmnw5c4+DbyB88 9Cg9DodYcSuMZT/114pptqc/EuTjRPvH/z5slzI3tluOEBBLqOXLOX+0I5929tO97wkvl/atCz+y xJrdwteW2FNW/NSmBP+f/maYtVs/bYyBC7Ox3jsYZHL05CIrBa/nS+b3bHfiYm4Ueil1YZZSgAUI fFZ1dxUmeA2oQRQ3RuGXNGLFV9/XbGFGPV6kfzk1TBBCd+izc7q1H+OHMJwmaBX2IQNYVAKHYepV SSGCe6CnbYHHETKGNe43EDvFgZr0gB/nVHPHZ80VV1ojOiI3XDvYIkl4ayo4bxQIgrFXWTvBI0nH VElWMuw2aLUWCRHHf8ymVCHjFlJnOSojfevCYyyyZDH0IcvHhrsnQ5O1OsWzONuVVKIxSxiFZ/tR fKDAf6xFTnw4O9Qig2VCfW2hJQrmMOuHW0W3dLQmCMO2ccdUd/xyfflH/olTiHZVdGwb8nIwRzSE J15jFlOJuBZBZ4CiyHyd2IFylFlB+HgHhYabhWOGwYO1ZH/Og1dtQlFMk352CGRSIFTapnWQEUtN l4zv8S0aaCFDyGCBqDUxZYpxGHX01y/JuH1xhn7TOCnNCI4eKDs5WGX4R425F4vF1o3BJ4vO0otq I3rimI7jJY1jISqnBxknCIvruF83mF5wN4X7qGLIhR8A2Vg0yFERSIXn9Vv3GHy3Vj/WIkKddlYi yIMv2I/VMjTLpW7pt05SWIZR0RPyxpB4SIUM9lBPGBl0GC7oSEEwRYLe4pJpZY2P0zbI1n+Oc44w qY3PUnmF0ixjVpDD/mJ9wpOBGTVgXlaCaZiPcIWK5NiKBIiPdGaQ0TWGvAiG7nMchdZb7Vgf8zNi MuMyzRdy/lePe9iC4TRx7WhhOQI/QiSVNAmAa2lT/piFbuh7ofJoYSZzrSZ1bvmWw3eN2nKUPVky uPN5/VRfohRd0VYZoqhKIlU6TXYhJxmPUIloAwc1bPmHEpaZYZORHNlXUJM07hATwHR8MJYqkwWR WaIezFhxSFlc8/Fq82hEnpeRozg3ULhhr9lAGtVEkCg5ZNRuuVleBPaZadhG0ZgkyPmDOTOKzViM YgOcpukKqQcbjAWS0IleQ2ROjdh6A+md1qWdBRSX7iSYgFRTtRmBpJioieXJiHfJiMGIR9fJOn8I MSfXYhspn4ooSa2mSAj4n+8Bmg03fBJZoPOJgsVZRxu1oOMRPXYYjdqjihFaEoZpXBREanuJoRI6 cibFinq4ngUKh/wQd/H5ofYCZ0HJXR62opZFaAT0iFIZo4DIiUojkjeqKiuoZirKo5Y1a7AWckGa BkuYoD5lpDK6eUs6CkDqpETwl1EqpfhJpVeKpVl6EgUAADs= --BOUNDARY-- --OUTER-- MIME-Version: 1.0 From: Barry To: Dingus Lovers Subject: Here is your dingus fish Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/plain; charset="us-ascii" Hi there, This is the dingus fish. --BOUNDARY Content-Type: image/gif; name="dingusfish.gif" Content-Transfer-Encoding: base64 content-disposition: attachment; filename="dingusfish.gif" R0lGODdhAAEAAfAAAP///wAAACwAAAAAAAEAAQAC/oSPqcvtD6OctNqLs968+w+G4kiW5omm6sq2 7gvH8kzX9o3n+s73/g8MCofEovGITGICTKbyCV0FDNOo9SqpQqpOrJfXzTQj2vD3TGtqL+NtGQ2f qTXmxzuOd7WXdcc9DyjU53ewFni4s0fGhdiYaEhGBelICTNoV1j5NUnFcrmUqemjNifJVWpaOqaI oFq3SspZsSraE7sHq3jr1MZqWvi662vxV4tD+pvKW6aLDOCLyur8PDwbanyDeq0N3DctbQYeLDvR RY6t95m6UB0d3mwIrV7e2VGNvjjffukeJp4w7F65KecGFsTHQGAygOrgrWs1jt28Rc88KESYcGLA /obvTkH6p+CinWJiJmIMqXGQwH/y4qk0SYjgQTczT3ajKZGfuI0uJ4kkVI/DT5s3/ejkxI0aT4Y+ YTYgWbImUaXk9nlLmnSh1qJiJFl0OpUqRK4oOy7NyRQtHWofhoYVxkwWXKUSn0YsS+fUV6lhqfYb 6ayd3Z5qQdG1B7bvQzaJjwUV2lixMUZ7JVsOlfjWVr/3NB/uFvnySBN6Dcb6rGwaRM3wsormw5cC M9NxWy/bWdufudCvy8bOAjXjVVwta/uO21sE5RHBCzNFXtgq9ORtH4eYjVP4Yryo026nvkFmCeyA B29efV6ravCMK5JwWd5897Qrx7ll38o6iHDZ/rXPR//feevhF4l7wjUGX3xq1eeRfM4RSJGBIV1D z1gKPkfWag3mVBVvva1RlX5bAJTPR/2YqNtw/FkIYYEi/pIZiAdpcxpoHtmnYYoZtvhUftzdx5ZX JSKDW405zkGcZzzGZ6KEv4FI224oDmijlEf+xp6MJK5ojY/ASeVUR+wsKRuJ+XFZ5o7ZeEime8t1 ouUsU6YjF5ZtUihhkGfCdFQLWQFJ3UXxmElfhQnR+eCdcDbkFZp6vTRmj56ApCihn5QGpaToNZmR n3NVSpZcQpZ2KEONusaiCsKAug0wkQbJSFO+PTSjneGxOuFjPlUk3ovWvdIerjUg9ZGIOtGq/qeX eCYrrCX+1UPsgTKGGRSbzd5q156d/gpfbJxe66eD5iQKrXj7RGgruGxs62qebBHUKS32CKluCiqZ qh+pmehmEb71noAUoe5e9Zm17S7773V10pjrtG4CmuurCV/n6zLK5turWNhqOvFXbjhZrMD0YhKe wR0zOyuvsh6MWrGoIuzvyWu5y1WIFAqmJselypxXh6dKLNOKEB98L88bS2rkNqqlKzCNJp9c0G0j Gzh0iRrCbHSXmPR643QS+4rWhgFmnSbSuXCjS0xAOWkU2UdLqyuUNfHSFdUouy3bm5i5GnDM3tG8 doJ4r5tqu3pPbRSVfvs8uJzeNXhp3n4j/tZ42SwH7eaWUUOjc3qFV9453UHTXZfcLH+OeNs5g36x lBnHvTm7EbMbLeuaLncao8vWCXimfo1o+843Ak6y4ChNeGntvAYvfLK4ezmoyNIbNCLTCXO9ZV3A E8/s88RczPzDwI4Ob7XZyl7+9Miban29h+tJZPrE21wgvBphDfrrfPdCTPKJD/y98L1rZwHcV6Jq Zab0metpuNIX/qAFPoz171WUaUb4HAhBSzHuHfjzHb3kha/2Cctis/ORArVHNYfFyYRH2pYIRzic isVOfPWD1b6mRTqpCRBozzof6UZVvFXRxWIr3GGrEviGYgyPMfahheiSaLs/9QeFu7oZ/ndSY8DD ya9x+uPed+7mxN2IzIISBOMLFYWVqC3Pew1T2nFuuCiwZS5/v6II10i4t1OJcUH2U9zxKodHsGGv Oa+zkvNUYUOa/TCCRutF9MzDwdlUMJADTCGSbDQ5OV4PTamDoPEi6Ecc/RF5RWwkcdSXvSOaDWSn I9LlvubFTQpuc6JKXLcKeb+xdbKRBnwREemXyjg6ME65aJiOuBgrktzykfPLJBKR9ClMavJ62/Ff BlNIyod9yX9wcSXexnXFpvkrbXk64xsx5Db7wXKP5fSgsvwIMM/9631VLBfkmtbHRXpqmtei52hG pUwSlo+BASQoeILDOBgREECxBBh5/iYmNsQ9dIv5+OI++QkqdsJPc3uykz5fkM+OraeekcQF7X4n B5S67za5U967PmooGQhUXfF7afXyCD7ONdRe17QogYjVx38uLwtrS6nhTnm15LQUnu9E2uK6CNI/ 1HOABj0ESwOjut4FEpFQpdNAm4K2LHnDWHNcmKB2ioKBogysVZtMO2nSxUdZ8Yk2kJc7URioLVI0 YgmtIwZj4LoeKemgnOnbUdGnzZ4Oa6scqiolBGqS6RgWNLu0RMhcaE6rhhU4hiuqFXPAG8fGwTPW FKeLMtdVmXLSs5YJGF/YeVm7rREMlY3UYE+yCxbaMXX8y15m5zVHq6GOKDMynzII/jdUHdyVqIy0 ifX2+r/EgtZcvRzSb72gU9ui87M2VecjKildW/aFqaYhKoryUjfB/g4qtyVuc60xFDGmCxwjW+qu zjuwl2GkOWn66+3QiiEctvd04OVvcCVzjgT7lrkvjVGKKHmmlDUKowSeikb5kK/mJReuWOxONx+s ULsl+Lqb0CVn0SrVyJ6wt4t6yTeSCafhPhAf0OXn6L60UMxiLolFAtmN35S2Ob1lZpQ1r/n0Qb5D oQ1zJiRVDgF8N3Q8TYfbi3DyWCy3lT1nxyBs6FT3S2GOzWRlxwKvlRP0RPJA9SjxEy0UoEnkA+M4 cnzLMJrBGWLFEaaUb5lvpqbq/loOaU5+DFuHPxo82/OZuM8FXG3oVNZhtWpMpb/0Xu5m/LfLhHZQ 7yuVI0MqZ7NE43imC8jH3IwGZlbPm0xkJYs7+2U48hXTsFSMqgGDvai0kLxyynKNT/waj+q1c1tz GjOpPBgdCSq3UKZxCSsqFIY+O6JbAWGWcV1pwqLyj5sGqCF1xb1F3varUWqrJv6cN3PrUXzijtfZ FshpBL3Xwr4GIPvU2N8EjrJgS1zl21rbXQMXeXc5jjFyrhpCzijSv/RQtyPSzHCFMhlME95fHglt pRsX+dfSQjUeHAlpWzJ5iOo79Ldnaxai6bXTcGO3fp07ri7HLEmXXPlYi8bv/qVxvNcdra6m7Rlb 6JBTb5fd66VhFRjGArh2n7R1rDW4P5NOT9K0I183T2scYkeZ3q/VFyLb09U9ajzXBS8Kgkhc4mBS kYY9cy3Vy9lUnuNJH8HGIclUilwnBtjUOH0gteGOZ4c/XNrhXLSYDyxfnD8z1pDy7rYRvDolhnbe UMzxCZUs40s6s7UIvBnLgc0+vKuOkIXeOrDymlp+Zxra4MZLBbVrqD/jTJ597pDmnw5c4+DbyB88 9Cg9DodYcSuMZT/114pptqc/EuTjRPvH/z5slzI3tluOEBBLqOXLOX+0I5929tO97wkvl/atCz+y xJrdwteW2FNW/NSmBP+f/maYtVs/bYyBC7Ox3jsYZHL05CIrBa/nS+b3bHfiYm4Ueil1YZZSgAUI fFZ1dxUmeA2oQRQ3RuGXNGLFV9/XbGFGPV6kfzk1TBBCd+izc7q1H+OHMJwmaBX2IQNYVAKHYepV SSGCe6CnbYHHETKGNe43EDvFgZr0gB/nVHPHZ80VV1ojOiI3XDvYIkl4ayo4bxQIgrFXWTvBI0nH VElWMuw2aLUWCRHHf8ymVCHjFlJnOSojfevCYyyyZDH0IcvHhrsnQ5O1OsWzONuVVKIxSxiFZ/tR fKDAf6xFTnw4O9Qig2VCfW2hJQrmMOuHW0W3dLQmCMO2ccdUd/xyfflH/olTiHZVdGwb8nIwRzSE J15jFlOJuBZBZ4CiyHyd2IFylFlB+HgHhYabhWOGwYO1ZH/Og1dtQlFMk352CGRSIFTapnWQEUtN l4zv8S0aaCFDyGCBqDUxZYpxGHX01y/JuH1xhn7TOCnNCI4eKDs5WGX4R425F4vF1o3BJ4vO0otq I3rimI7jJY1jISqnBxknCIvruF83mF5wN4X7qGLIhR8A2Vg0yFERSIXn9Vv3GHy3Vj/WIkKddlYi yIMv2I/VMjTLpW7pt05SWIZR0RPyxpB4SIUM9lBPGBl0GC7oSEEwRYLe4pJpZY2P0zbI1n+Oc44w qY3PUnmF0ixjVpDD/mJ9wpOBGTVgXlaCaZiPcIWK5NiKBIiPdGaQ0TWGvAiG7nMchdZb7Vgf8zNi MuMyzRdy/lePe9iC4TRx7WhhOQI/QiSVNAmAa2lT/piFbuh7ofJoYSZzrSZ1bvmWw3eN2nKUPVky uPN5/VRfohRd0VYZoqhKIlU6TXYhJxmPUIloAwc1bPmHEpaZYZORHNlXUJM07hATwHR8MJYqkwWR WaIezFhxSFlc8/Fq82hEnpeRozg3ULhhr9lAGtVEkCg5ZNRuuVleBPaZadhG0ZgkyPmDOTOKzViM YgOcpukKqQcbjAWS0IleQ2ROjdh6A+md1qWdBRSX7iSYgFRTtRmBpJioieXJiHfJiMGIR9fJOn8I MSfXYhspn4ooSa2mSAj4n+8Bmg03fBJZoPOJgsVZRxu1oOMRPXYYjdqjihFaEoZpXBREanuJoRI6 cibFinq4ngUKh/wQd/H5ofYCZ0HJXR62opZFaAT0iFIZo4DIiUojkjeqKiuoZirKo5Y1a7AWckGa BkuYoD5lpDK6eUs6CkDqpETwl1EqpfhJpVeKpVl6EgUAADs= --BOUNDARY-- Send Ppp mailing list submissions to ppp@zzz.org To subscribe or unsubscribe via the World Wide Web, visit http://www.zzz.org/mailman/listinfo/ppp or, via email, send a message with subject or body 'help' to ppp-request@zzz.org You can reach the person managing the list at ppp-admin@zzz.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Ppp digest..." Today's Topics: 1. testing #1 (Barry A. Warsaw) 2. testing #2 (Barry A. Warsaw) 3. testing #3 (Barry A. Warsaw) 4. testing #4 (Barry A. Warsaw) 5. testing #5 (Barry A. Warsaw) hello hello hello hello hello _______________________________________________ Ppp mailing list Ppp@zzz.org http://www.zzz.org/mailman/listinfo/ppp Return-Path: Delivered-To: barry@python.org Received: by mail.python.org (Postfix, from userid 889) id C2BF0D37C6; Tue, 11 Sep 2001 00:05:05 -0400 (EDT) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="h90VIIIKmx" Content-Transfer-Encoding: 7bit Message-ID: <15261.36209.358846.118674@anthem.python.org> From: barry@python.org (Barry A. Warsaw) To: barry@python.org Subject: a simple multipart Date: Tue, 11 Sep 2001 00:05:05 -0400 X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid X-Attribution: BAW X-Oblique-Strategy: Make a door into a window --h90VIIIKmx Content-Type: text/plain; name="msg.txt" Content-Transfer-Encoding: 7bit a simple kind of mirror to reflect upon our own --h90VIIIKmx Content-Type: text/plain; name="msg.txt" Content-Transfer-Encoding: 7bit a simple kind of mirror to reflect upon our own --h90VIIIKmx-- Content-Type: multipart/mixed; boundary="BOUNDARY" MIME-Version: 1.0 Subject: A subject To: aperson@dom.ain From: bperson@dom.ain --BOUNDARY --BOUNDARY-- From MAILER-DAEMON Fri Apr 06 16:46:09 2001 Received: from [204.245.199.98] (helo=zinfandel.lacita.com) by www.linux.org.uk with esmtp (Exim 3.13 #1) id 14lYR6-0008Iv-00 for linuxuser-admin@www.linux.org.uk; Fri, 06 Apr 2001 16:46:09 +0100 Received: from localhost (localhost) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with internal id JAB03225; Fri, 6 Apr 2001 09:23:06 -0800 (GMT-0800) Date: Fri, 6 Apr 2001 09:23:06 -0800 (GMT-0800) From: Mail Delivery Subsystem Subject: Returned mail: Too many hops 19 (17 max): from via [199.164.235.226], to Message-Id: <200104061723.JAB03225@zinfandel.lacita.com> To: To: postmaster@zinfandel.lacita.com MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; bo Auto-Submitted: auto-generated (failure) This is a MIME-encapsulated message --JAB03225.986577786/zinfandel.lacita.com The original message was received at Fri, 6 Apr 2001 09:23:03 -0800 (GMT-0800) from [199.164.235.226] ----- The following addresses have delivery notifications ----- (unrecoverable error) ----- Transcript of session follows ----- 554 Too many hops 19 (17 max): from via [199.164.235.226], to --JAB03225.986577786/zinfandel.lacita.com Content-Type: message/delivery-status Reporting-MTA: dns; zinfandel.lacita.com Received-From-MTA: dns; [199.164.235.226] Arrival-Date: Fri, 6 Apr 2001 09:23:03 -0800 (GMT-0800) Final-Recipient: rfc822; scoffman@wellpartner.com Action: failed Status: 5.4.6 Last-Attempt-Date: Fri, 6 Apr 2001 09:23:06 -0800 (GMT-0800) --JAB03225.986577786/zinfandel.lacita.com Content-Type: text/rfc822-headers Return-Path: linuxuser-admin@www.linux.org.uk Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03225 for ; Fri, 6 Apr 2001 09:23:03 -0800 (GMT-0800) Received: from zinfandel.lacita.com ([204.245.199.98]) by fo Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03221 for ; Fri, 6 Apr 2001 09:22:18 -0800 (GMT-0800) Received: from zinfandel.lacita.com ([204.245.199.98]) by fo Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03217 for ; Fri, 6 Apr 2001 09:21:37 -0800 (GMT-0800) Received: from zinfandel.lacita.com ([204.245.199.98]) by fo Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03213 for ; Fri, 6 Apr 2001 09:20:56 -0800 (GMT-0800) Received: from zinfandel.lacita.com ([204.245.199.98]) by fo Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03209 for ; Fri, 6 Apr 2001 09:20:15 -0800 (GMT-0800) Received: from zinfandel.lacita.com ([204.245.199.98]) by fo Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03205 for ; Fri, 6 Apr 2001 09:19:33 -0800 (GMT-0800) Received: from zinfandel.lacita.com ([204.245.199.98]) by fo Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03201 for ; Fri, 6 Apr 2001 09:18:52 -0800 (GMT-0800) Received: from zinfandel.lacita.com ([204.245.199.98]) by fo Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03197 for ; Fri, 6 Apr 2001 09:17:54 -0800 (GMT-0800) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by fo Received: from localhost.localdomain ([ by id Received: from [212.1.130.11] (helo=s1.uklinux.net ident=root) by id fo Received: from server (ppp-2-22.cvx4.telinco.net [212.1.149.22]) by fo From: Daniel James Organization: LinuxUser To: linuxuser@www.linux.org.uk X-Mailer: KMail [version 1.1.99] Content-Type: text/plain; c MIME-Version: 1.0 Message-Id: <01040616033903.00962@server> Content-Transfer-Encoding: 8bit Subject: [LinuxUser] bulletin no. 45 Sender: linuxuser-admin@www.linux.org.uk Errors-To: linuxuser-admin@www.linux.org.uk X-BeenThere: linuxuser@www.linux.org.uk X-Mailman-Version: 2.0.3 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Unsubscribe: , Date: Fri, 6 Apr 2001 16:03:39 +0100 --JAB03225.986577786/zinfandel.lacita.com-- MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" ------- =_aaaaaaaaaa0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa1" Content-ID: <20592.1022586929.1@example.com> ------- =_aaaaaaaaaa1 Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa2" Content-ID: <20592.1022586929.2@example.com> ------- =_aaaaaaaaaa2 Content-Type: text/plain Content-ID: <20592.1022586929.3@example.com> Content-Description: very tricky Content-Transfer-Encoding: 7bit Unlike the test test_nested-multiples-with-internal-boundary, this piece of text not only contains the outer boundary tags ------- =_aaaaaaaaaa1 and ------- =_aaaaaaaaaa0 but puts them at the start of a line! And, to be even nastier, it even includes a couple of end tags, such as this one: ------- =_aaaaaaaaaa1-- and this one, which is from a multipart we haven't even seen yet! ------- =_aaaaaaaaaa4-- This will, I'm sure, cause much breakage of MIME parsers. But, as far as I can tell, it's perfectly legal. I have not yet ever seen a case of this in the wild, but I've seen *similar* things. ------- =_aaaaaaaaaa2 Content-Type: application/octet-stream Content-ID: <20592.1022586929.4@example.com> Content-Description: patch2 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa2-- ------- =_aaaaaaaaaa1 Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa3" Content-ID: <20592.1022586929.6@example.com> ------- =_aaaaaaaaaa3 Content-Type: application/octet-stream Content-ID: <20592.1022586929.7@example.com> Content-Description: patch3 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa3 Content-Type: application/octet-stream Content-ID: <20592.1022586929.8@example.com> Content-Description: patch4 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa3-- ------- =_aaaaaaaaaa1 Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa4" Content-ID: <20592.1022586929.10@example.com> ------- =_aaaaaaaaaa4 Content-Type: application/octet-stream Content-ID: <20592.1022586929.11@example.com> Content-Description: patch5 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa4 Content-Type: application/octet-stream Content-ID: <20592.1022586929.12@example.com> Content-Description: patch6 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa4-- ------- =_aaaaaaaaaa1-- ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <20592.1022586929.15@example.com> -- It's never too late to have a happy childhood. ------- =_aaaaaaaaaa0-- Return-Path: Received: by mail.dom.ain (Postfix, from userid 889) id B9D0AD35DB; Tue, 4 Jun 2002 21:46:59 -0400 (EDT) Message-ID: <15613.28051.707126.569693@dom.ain> Date: Tue, 4 Jun 2002 21:46:59 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: bug demonstration 12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789 more text From: aperson@dom.ain (Anne P. Erson) To: bperson@dom.ain (Barney P. Erson) test Return-Path: Received: from fepD.post.tele.dk (195.41.46.149) by mail.groupcare.dk (LSMTP for Windows NT v1.1b) with SMTP id <0.0014F8A2@mail.groupcare.dk>; Mon, 30 Apr 2001 12:17:50 +0200 User-Agent: Microsoft-Outlook-Express-Macintosh-Edition/5.02.2106 Subject: XX From: xx@xx.dk To: XX Message-ID: Mime-version: 1.0 Content-type: multipart/mixed; boundary="MS_Mac_OE_3071477847_720252_MIME_Part" > Denne meddelelse er i MIME-format. Da dit postl --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: multipart/alternative; boundary="MS_Mac_OE_3071477847_720252_MIME_Part" --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: text/plain; charset="ISO-8859-1" Content-transfer-encoding: quoted-printable Some removed test. --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: text/html; charset="ISO-8859-1" Content-transfer-encoding: quoted-printable Some removed HTML Some removed text. --MS_Mac_OE_3071477847_720252_MIME_Part-- --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: image/gif; name="xx.gif"; x-mac-creator="6F676C65"; x-mac-type="47494666" Content-disposition: attachment Content-transfer-encoding: base64 Some removed base64 encoded chars. --MS_Mac_OE_3071477847_720252_MIME_Part-- MIME-Version: 1.0 From: Barry Warsaw To: Dingus Lovers Subject: Lyrics Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/plain; charset="us-ascii" --BOUNDARY Content-Type: text/html; charset="iso-8859-1" --BOUNDARY Content-Type: text/plain; charset="iso-8859-2" --BOUNDARY Content-Type: text/plain; charset="koi8-r" --BOUNDARY-- From: aperson@dom.ain Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/plain A message part --BOUNDARY-- From: aperson@dom.ain MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=BOUNDARY_ --BOUNDARY Content-Type: text/plain message 1 --BOUNDARY Content-Type: text/plain message 2 --BOUNDARY-- MIME-Version: 1.0 From: Barry Warsaw To: Dingus Lovers Subject: Lyrics Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/plain; charset="us-ascii" --BOUNDARY Content-Type: text/html; charset="iso-8859-1" --BOUNDARY Content-Type: multipart/mixed; boundary="ANOTHER" --ANOTHER Content-Type: text/plain; charset="iso-8859-2" --ANOTHER Content-Type: text/plain; charset="iso-8859-3" --ANOTHER-- --BOUNDARY Content-Type: text/plain; charset="us-ascii" --BOUNDARY Content-Type: text/plain; charset="koi8-r" --BOUNDARY-- Received: from xcar [192.168.0.2] by jeeves.wooster.local (SMTPD32-7.07 EVAL) id AFF92F0214; Sun, 12 May 2002 08:55:37 +0100 Date: Sun, 12 May 2002 08:56:15 +0100 From: Father Time To: timbo@jeeves.wooster.local Subject: IMAP file test Message-ID: <6df65d354b.father.time@rpc.wooster.local> X-Organization: Home User-Agent: Messenger-Pro/2.50a (MsgServe/1.50) (RISC-OS/4.02) POPstar/2.03 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1618492860--2051301190--113853680" Status: R X-UIDL: 319998302 This message is in MIME format which your mailer apparently does not support. You either require a newer version of your software which supports MIME, or a separate MIME decoding utility. Alternatively, ask the sender of this message to resend it in a different format. --1618492860--2051301190--113853680 Content-Type: text/plain; charset=us-ascii Simple email with attachment. --1618492860--2051301190--113853680 Content-Type: application/riscos; name="clock.bmp,69c"; type=BMP; load=&fff69c4b; exec=&355dd4d1; access=&03 Content-Disposition: attachment; filename="clock.bmp" Content-Transfer-Encoding: base64 Qk12AgAAAAAAAHYAAAAoAAAAIAAAACAAAAABAAQAAAAAAAAAAADXDQAA1w0AAAAAAAAA AAAAAAAAAAAAiAAAiAAAAIiIAIgAAACIAIgAiIgAALu7uwCIiIgAERHdACLuIgAz//8A zAAAAN0R3QDu7iIA////AAAAAAAAAAAAAAAAAAAAAAAAAAi3AAAAAAAAADeAAAAAAAAA C3ADMzMzMANwAAAAAAAAAAAHMAAAAANwAAAAAAAAAACAMAd3zPfwAwgAAAAAAAAIAwd/ f8x/f3AwgAAAAAAAgDB0x/f3//zPAwgAAAAAAAcHfM9////8z/AwAAAAAAiwd/f3//// ////A4AAAAAAcEx/f///////zAMAAAAAiwfM9////3///8zwOAAAAAcHf3////B///// 8DAAAAALB/f3///wd3d3//AwAAAABwTPf//wCQAAD/zAMAAAAAsEx/f///B////8wDAA AAAHB39////wf/////AwAAAACwf39///8H/////wMAAAAIcHfM9///B////M8DgAAAAA sHTH///wf///xAMAAAAACHB3f3//8H////cDgAAAAAALB3zH//D//M9wMAAAAAAAgLB0 z39///xHAwgAAAAAAAgLB3d3RHd3cDCAAAAAAAAAgLAHd0R3cAMIAAAAAAAAgAgLcAAA AAMwgAgAAAAACDAAAAu7t7cwAAgDgAAAAABzcIAAAAAAAAgDMwAAAAAAN7uwgAAAAAgH MzMAAAAACH97tzAAAAALu3c3gAAAAAAL+7tzDABAu7f7cAAAAAAACA+3MA7EQAv/sIAA AAAAAAAIAAAAAAAAAIAAAAAA --1618492860--2051301190--113853680-- Return-Path: Delivered-To: bbb@zzz.org Received: by mail.zzz.org (Postfix, from userid 889) id 27CEAD38CC; Fri, 4 May 2001 14:05:44 -0400 (EDT) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15090.61304.110929.45684@aaa.zzz.org> From: bbb@ddd.com (John X. Doe) To: bbb@zzz.org Subject: This is a test message Date: Fri, 4 May 2001 14:05:44 -0400 Hi, Do you like this message? -Me Delivered-To: freebsd-isp@freebsd.org Date: Wed, 27 Sep 2000 11:11:09 -0500 From: Anne Person To: Barney Dude Subject: Re: Limiting Perl CPU Utilization... Mime-Version: 1.0 Content-Type: multipart/signed; micalg*=ansi-x3.4-1968''pgp-md5; protocol*=ansi-x3.4-1968''application%2Fpgp-signature; boundary*="ansi-x3.4-1968''EeQfGwPcQSOJBaQU" Content-Disposition: inline Sender: owner-freebsd-isp@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset*=ansi-x3.4-1968''us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable part 1 --EeQfGwPcQSOJBaQU Content-Type: text/plain Content-Disposition: inline part 2 --EeQfGwPcQSOJBaQU-- From SRS0=aO/p=ON=bag.python.org=None@bounce2.pobox.com Fri Nov 26 21:40:36 2004 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil "MAILER DAEMON <>" "MAILER DAEMON <>" nil nil "Banned file: auto__mail.python.bat in mail from you" "^From:" nil nil nil nil "Banned file: auto__mail.python.bat in mail from you" nil nil nil nil nil nil nil] nil) MIME-Version: 1.0 Message-Id: Content-Type: multipart/report; report-type=delivery-status; charset=utf-8; boundary="----------=_1101526904-1956-5" X-Virus-Scanned: by XS4ALL Virus Scanner X-UIDL: 4\G!!! To: Subject: Banned file: auto__mail.python.bat in mail from you Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) This is a multi-part message in MIME format... ------------=_1101526904-1956-5 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 7bit BANNED FILENAME ALERT Your message to: xxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxxxxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxx@dot.ca.gov, xxxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxx@dot.ca.gov, xxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxx@dot.ca.gov, xxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxxxxxxxx@dot.ca.gov was blocked by our Spam Firewall. The email you sent with the following subject has NOT BEEN DELIVERED: Subject: Delivery_failure_notice An attachment in that mail was of a file type that the Spam Firewall is set to block. ------------=_1101526904-1956-5 Content-Type: message/delivery-status Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Description: Delivery error report Reporting-MTA: dns; sacspam01.dot.ca.gov Received-From-MTA: smtp; sacspam01.dot.ca.gov ([127.0.0.1]) Arrival-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) Final-Recipient: rfc822; xxxxxxx@dot.ca.gov Action: failed Status: 5.7.1 Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST) ------------=_1101526904-1956-5 Content-Type: text/rfc822-headers Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Description: Undelivered-message headers Received: from kgsav.org (ppp-70-242-162-63.dsl.spfdmo.swbell.net [70.242.162.63]) by sacspam01.dot.ca.gov (Spam Firewall) with SMTP id A232AD03DE3A; Fri, 26 Nov 2004 19:41:35 -0800 (PST) From: webmaster@python.org To: xxxxx@dot.ca.gov Date: Sat, 27 Nov 2004 03:35:30 UTC Subject: Delivery_failure_notice Importance: Normal X-Priority: 3 (Normal) X-MSMail-Priority: Normal Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="====67bd2b7a5.f99f7" Content-Transfer-Encoding: 7bit ------------=_1101526904-1956-5-- From: foo Subject: bar To: baz MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; boundary="D1690A7AC1.996856090/mail.example.com" Message-Id: <20010803162810.0CA8AA7ACC@mail.example.com> This is a MIME-encapsulated message. --D1690A7AC1.996856090/mail.example.com Content-Type: text/plain Yadda yadda yadda --D1690A7AC1.996856090/mail.example.com Yadda yadda yadda --D1690A7AC1.996856090/mail.example.com Content-Type: message/rfc822 From: nobody@python.org Yadda yadda yadda --D1690A7AC1.996856090/mail.example.com-- Return-Path: Delivery-Date: Mon, 08 Feb 2010 14:05:16 +0100 Received: from example.org (example.org [64.5.53.58]) by example.net (node=mxbap2) with ESMTP (Nemesis) id UNIQUE for someone@example.com; Mon, 08 Feb 2010 14:05:16 +0100 Date: Mon, 01 Feb 2010 12:21:16 +0100 From: "Sender" To: Subject: GroupwiseForwardingTest Mime-Version: 1.0 Content-Type: message/rfc822 Return-path: Message-ID: <4B66B890.4070408@teconcept.de> Date: Mon, 01 Feb 2010 12:18:40 +0100 From: "Dr. Sender" MIME-Version: 1.0 To: "Recipient" Subject: GroupwiseForwardingTest Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Testing email forwarding with Groupwise 1.2.2010 Return-Path: Delivered-To: bbb@zzz.org Received: by mail.zzz.org (Postfix, from userid 889) id 27CEAD38CC; Fri, 4 May 2001 14:05:44 -0400 (EDT) Message-ID: <15090.61304.110929.45684@aaa.zzz.org> From: bbb@ddd.com (John X. Doe) To: bbb@zzz.org Subject: This is a test message Date: Fri, 4 May 2001 14:05:44 -0400 Hi, Do you like this message? -Me Return-Path: Delivered-To: barry@python.org MIME-Version: 1.0 Content-Type: message/rfc822 Content-Description: forwarded message Content-Transfer-Encoding: 7bit Message-ID: <15265.9482.641338.555352@python.org> From: barry@python.org (Barry A. Warsaw) Sender: barry@python.org To: barry@python.org Subject: forwarded message from Barry A. Warsaw Date: Thu, 13 Sep 2001 17:28:42 -0400 X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid X-Attribution: BAW X-Oblique-Strategy: Be dirty X-Url: http://barry.wooz.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-Path: Delivered-To: barry@python.org Message-ID: <15265.9468.713530.98441@python.org> From: barry@python.org (Barry A. Warsaw) Sender: barry@python.org To: barry@python.org Subject: testing Date: Thu, 13 Sep 2001 17:28:28 -0400 X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid X-Attribution: BAW X-Oblique-Strategy: Spectrum analysis X-Url: http://barry.wooz.org MIME-version: 1.0 From: ppp-request@zzz.org Sender: ppp-admin@zzz.org To: ppp@zzz.org Subject: Ppp digest, Vol 1 #2 - 5 msgs Date: Fri, 20 Apr 2001 20:18:00 -0400 (EDT) X-Mailer: Mailman v2.0.4 X-Mailman-Version: 2.0.4 Content-Type: multipart/mixed; boundary="192.168.1.2.889.32614.987812255.500.21814" --192.168.1.2.889.32614.987812255.500.21814 Content-type: text/plain; charset=us-ascii Content-description: Masthead (Ppp digest, Vol 1 #2) Send Ppp mailing list submissions to ppp@zzz.org To subscribe or unsubscribe via the World Wide Web, visit http://www.zzz.org/mailman/listinfo/ppp or, via email, send a message with subject or body 'help' to ppp-request@zzz.org You can reach the person managing the list at ppp-admin@zzz.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Ppp digest..." --192.168.1.2.889.32614.987812255.500.21814 Content-type: text/plain; charset=us-ascii Content-description: Today's Topics (5 msgs) Today's Topics: 1. testing #1 (Barry A. Warsaw) 2. testing #2 (Barry A. Warsaw) 3. testing #3 (Barry A. Warsaw) 4. testing #4 (Barry A. Warsaw) 5. testing #5 (Barry A. Warsaw) --192.168.1.2.889.32614.987812255.500.21814 Content-Type: multipart/digest; boundary="__--__--" --__--__-- Message: 1 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Fri, 20 Apr 2001 20:16:13 -0400 To: ppp@zzz.org From: barry@digicool.com (Barry A. Warsaw) Subject: [Ppp] testing #1 Precedence: bulk hello --__--__-- Message: 2 Date: Fri, 20 Apr 2001 20:16:21 -0400 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: ppp@zzz.org From: barry@digicool.com (Barry A. Warsaw) Precedence: bulk hello --__--__-- Message: 3 Date: Fri, 20 Apr 2001 20:16:25 -0400 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: ppp@zzz.org From: barry@digicool.com (Barry A. Warsaw) Subject: [Ppp] testing #3 Precedence: bulk hello --__--__-- Message: 4 Date: Fri, 20 Apr 2001 20:16:28 -0400 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: ppp@zzz.org From: barry@digicool.com (Barry A. Warsaw) Subject: [Ppp] testing #4 Precedence: bulk hello --__--__-- Message: 5 Date: Fri, 20 Apr 2001 20:16:32 -0400 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: ppp@zzz.org From: barry@digicool.com (Barry A. Warsaw) Subject: [Ppp] testing #5 Precedence: bulk hello --__--__---- --192.168.1.2.889.32614.987812255.500.21814 Content-type: text/plain; charset=us-ascii Content-description: Digest Footer _______________________________________________ Ppp mailing list Ppp@zzz.org http://www.zzz.org/mailman/listinfo/ppp --192.168.1.2.889.32614.987812255.500.21814-- End of Ppp Digest Return-Path: Delivered-To: barry@python.org Received: by mail.python.org (Postfix, from userid 889) id C2BF0D37C6; Tue, 11 Sep 2001 00:05:05 -0400 (EDT) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="h90VIIIKmx" Content-Transfer-Encoding: 7bit Message-ID: <15261.36209.358846.118674@anthem.python.org> From: barry@python.org (Barry A. Warsaw) To: barry@python.org Subject: a simple multipart Date: Tue, 11 Sep 2001 00:05:05 -0400 X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid X-Attribution: BAW X-Oblique-Strategy: Make a door into a window --h90VIIIKmx Content-Type: text/plain Content-Disposition: inline; filename="msg.txt" Content-Transfer-Encoding: 7bit a simple kind of mirror to reflect upon our own --h90VIIIKmx Content-Type: text/plain Content-Disposition: inline; filename="msg.txt" Content-Transfer-Encoding: 7bit a simple kind of mirror to reflect upon our own --h90VIIIKmx-- Content-Type: multipart/mixed; boundary=ABCDE --ABCDE Content-Type: text/x-one Blah --ABCDE --ABCDE Content-Type: text/x-two Blah --ABCDE --ABCDE --ABCDE --ABCDE Content-Type: text/x-two Blah --ABCDE-- From: aperson@dom.ain MIME-Version: 1.0 Content-Type: multipart/digest; boundary=BOUNDARY --BOUNDARY Content-Type: text/plain; charset=us-ascii To: aa@bb.org From: cc@dd.org Subject: ee message 1 --BOUNDARY Content-Type: text/plain; charset=us-ascii To: aa@bb.org From: cc@dd.org Subject: ee message 2 --BOUNDARY-- MIME-Version: 1.0 From: Barry Warsaw To: Dingus Lovers Subject: Lyrics Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/plain; charset="us-ascii" --BOUNDARY Content-Type: text/html; charset="iso-8859-1" --BOUNDARY Content-Type: multipart/mixed; boundary="ANOTHER" --ANOTHER Content-Type: text/plain; charset="iso-8859-2" --ANOTHER Content-Type: text/plain; charset="iso-8859-3" --ANOTHER-- --BOUNDARY Content-Type: text/plain; charset="us-ascii" --BOUNDARY Content-Type: text/plain; charset="koi8-r" --BOUNDARY-- Return-Path: Delivered-To: bbb@zzz.org Received: by mail.zzz.org (Postfix, from userid 889) id 27CEAD38CC; Fri, 4 May 2001 14:05:44 -0400 (EDT) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15090.61304.110929.45684@aaa.zzz.org> From: bbb@ddd.com (John X. Doe) To: bbb@zzz.org Cc: ccc@zzz.org CC: ddd@zzz.org cc: eee@zzz.org Subject: This is a test message Date: Fri, 4 May 2001 14:05:44 -0400 Hi, Do you like this message? -Me MIME-Version: 1.0 Content-Type: text/html; boundary="--961284236552522269" ----961284236552522269 Content-Type: text/html; Content-Transfer-Encoding: 7Bit ----961284236552522269-- Return-Path: Delivered-To: bbb@zzz.org Received: by mail.zzz.org (Postfix, from userid 889) id 27CEAD38CC; Fri, 4 May 2001 14:05:44 -0400 (EDT) MIME-Version: 1.0 Content-Type: text; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15090.61304.110929.45684@aaa.zzz.org> From: bbb@ddd.com (John X. Doe) To: bbb@zzz.org Subject: This is a test message Date: Fri, 4 May 2001 14:05:44 -0400 Hi, I'm sorry but I'm using a drainbread ISP, which although big and wealthy can't seem to generate standard compliant email. :( This message has a Content-Type: header with no subtype. I hope you can still read it. -Me From: "Allison Dunlap" To: yyy@example.com Subject: 64423 Date: Sun, 11 Jul 2004 16:09:27 -0300 MIME-Version: 1.0 Content-Type: multipart/alternative; Blah blah blah Mime-Version: 1.0 Content-Type: Multipart/Mixed; Boundary="NextPart" To: IETF-Announce:; From: Internet-Drafts@ietf.org Subject: I-D ACTION:draft-ietf-mboned-mix-00.txt Date: Tue, 22 Dec 1998 16:55:06 -0500 --NextPart Blah blah blah --NextPart Content-Type: Multipart/Alternative; Boundary="OtherAccess" --OtherAccess Content-Type: Message/External-body; access-type="mail-server"; server="mailserv@ietf.org" Content-Type: text/plain Content-ID: <19981222151406.I-D@ietf.org> ENCODING mime FILE /internet-drafts/draft-ietf-mboned-mix-00.txt --OtherAccess Content-Type: Message/External-body; name="draft-ietf-mboned-mix-00.txt"; site="ftp.ietf.org"; access-type="anon-ftp"; directory="internet-drafts" Content-Type: text/plain Content-ID: <19981222151406.I-D@ietf.org> --OtherAccess-- --NextPart-- Return-Path: <> Delivered-To: scr-admin@socal-raves.org Received: from cougar.noc.ucla.edu (cougar.noc.ucla.edu [169.232.10.18]) by babylon.socal-raves.org (Postfix) with ESMTP id CCC2C51B84 for ; Sun, 23 Sep 2001 20:13:54 -0700 (PDT) Received: from sims-ms-daemon by cougar.noc.ucla.edu (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10) id <0GK500B01D0B8Y@cougar.noc.ucla.edu> for scr-admin@socal-raves.org; Sun, 23 Sep 2001 20:14:35 -0700 (PDT) Received: from cougar.noc.ucla.edu (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10) id <0GK500B01D0B8X@cougar.noc.ucla.edu>; Sun, 23 Sep 2001 20:14:35 -0700 (PDT) Date: Sun, 23 Sep 2001 20:14:35 -0700 (PDT) From: Internet Mail Delivery Subject: Delivery Notification: Delivery has failed To: scr-admin@socal-raves.org Message-id: <0GK500B04D0B8X@cougar.noc.ucla.edu> MIME-version: 1.0 Sender: scr-owner@socal-raves.org Errors-To: scr-owner@socal-raves.org X-BeenThere: scr@socal-raves.org X-Mailman-Version: 2.1a3 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: SoCal-Raves List-Unsubscribe: , List-Archive: Content-Type: multipart/report; boundary="Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA)" --Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA) Content-type: text/plain; charset=ISO-8859-1 This report relates to a message you sent with the following header fields: Message-id: <002001c144a6$8752e060$56104586@oxy.edu> Date: Sun, 23 Sep 2001 20:10:55 -0700 From: "Ian T. Henry" To: SoCal Raves Subject: [scr] yeah for Ians!! Your message cannot be delivered to the following recipients: Recipient address: jangel1@cougar.noc.ucla.edu Reason: recipient reached disk quota --Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA) Content-type: message/DELIVERY-STATUS Original-envelope-id: 0GK500B4HD0888@cougar.noc.ucla.edu Reporting-MTA: dns; cougar.noc.ucla.edu Action: failed Status: 5.0.0 (recipient reached disk quota) Original-recipient: rfc822;jangel1@cougar.noc.ucla.edu Final-recipient: rfc822;jangel1@cougar.noc.ucla.edu --Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA) Content-type: MESSAGE/RFC822 Return-path: scr-admin@socal-raves.org Received: from sims-ms-daemon by cougar.noc.ucla.edu (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10) id <0GK500B01D0B8X@cougar.noc.ucla.edu>; Sun, 23 Sep 2001 20:14:35 -0700 (PDT) Received: from panther.noc.ucla.edu by cougar.noc.ucla.edu (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10) with ESMTP id <0GK500B4GD0888@cougar.noc.ucla.edu> for jangel1@sims-ms-daemon; Sun, 23 Sep 2001 20:14:33 -0700 (PDT) Received: from babylon.socal-raves.org (ip-209-85-222-117.dreamhost.com [209.85.222.117]) by panther.noc.ucla.edu (8.9.1a/8.9.1) with ESMTP id UAA09793 for ; Sun, 23 Sep 2001 20:14:32 -0700 (PDT) Received: from babylon (localhost [127.0.0.1]) by babylon.socal-raves.org (Postfix) with ESMTP id D3B2951B70; Sun, 23 Sep 2001 20:13:47 -0700 (PDT) Received: by babylon.socal-raves.org (Postfix, from userid 60001) id A611F51B82; Sun, 23 Sep 2001 20:13:46 -0700 (PDT) Received: from tiger.cc.oxy.edu (tiger.cc.oxy.edu [134.69.3.112]) by babylon.socal-raves.org (Postfix) with ESMTP id ADA7351B70 for ; Sun, 23 Sep 2001 20:13:44 -0700 (PDT) Received: from ent (n16h86.dhcp.oxy.edu [134.69.16.86]) by tiger.cc.oxy.edu (8.8.8/8.8.8) with SMTP id UAA08100 for ; Sun, 23 Sep 2001 20:14:24 -0700 (PDT) Date: Sun, 23 Sep 2001 20:10:55 -0700 From: "Ian T. Henry" Subject: [scr] yeah for Ians!! Sender: scr-admin@socal-raves.org To: SoCal Raves Errors-to: scr-admin@socal-raves.org Message-id: <002001c144a6$8752e060$56104586@oxy.edu> MIME-version: 1.0 X-Mailer: Microsoft Outlook Express 5.50.4522.1200 Content-type: text/plain; charset=us-ascii Precedence: bulk Delivered-to: scr-post@babylon.socal-raves.org Delivered-to: scr@socal-raves.org X-Converted-To-Plain-Text: from multipart/alternative by demime 0.98e X-Converted-To-Plain-Text: Alternative section used was text/plain X-BeenThere: scr@socal-raves.org X-Mailman-Version: 2.1a3 List-Help: List-Post: List-Subscribe: , List-Id: SoCal-Raves List-Unsubscribe: , List-Archive: I always love to find more Ian's that are over 3 years old!! Ian _______________________________________________ For event info, list questions, or to unsubscribe, see http://www.socal-raves.org/ --Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA)-- Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Foobar-Spoink-Defrobnit: wasnipoop; giraffes="very-long-necked-animals"; spooge="yummy"; hippos="gargantuan"; marshmallows="gooey" MIME-Version: 1.0 From: Barry To: Dingus Lovers Subject: Here is your dingus fish Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="BOUNDARY" Hi there, This is the dingus fish. [Non-text (image/gif) part of message omitted, filename dingusfish.gif] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" ------- =_aaaaaaaaaa0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa1" Content-ID: <20592.1022586929.1@example.com> ------- =_aaaaaaaaaa1 Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa1" Content-ID: <20592.1022586929.2@example.com> ------- =_aaaaaaaaaa1 Content-Type: application/octet-stream Content-ID: <20592.1022586929.3@example.com> Content-Description: patch1 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa1 Content-Type: application/octet-stream Content-ID: <20592.1022586929.4@example.com> Content-Description: patch2 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa1-- ------- =_aaaaaaaaaa1 Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa1" Content-ID: <20592.1022586929.6@example.com> ------- =_aaaaaaaaaa1 Content-Type: application/octet-stream Content-ID: <20592.1022586929.7@example.com> Content-Description: patch3 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa1 Content-Type: application/octet-stream Content-ID: <20592.1022586929.8@example.com> Content-Description: patch4 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa1-- ------- =_aaaaaaaaaa1 Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa1" Content-ID: <20592.1022586929.10@example.com> ------- =_aaaaaaaaaa1 Content-Type: application/octet-stream Content-ID: <20592.1022586929.11@example.com> Content-Description: patch5 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa1 Content-Type: application/octet-stream Content-ID: <20592.1022586929.12@example.com> Content-Description: patch6 Content-Transfer-Encoding: base64 XXX ------- =_aaaaaaaaaa1-- ------- =_aaaaaaaaaa1-- ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <20592.1022586929.15@example.com> -- It's never too late to have a happy childhood. ------- =_aaaaaaaaaa0-- Mime-Version: 1.0 Message-Id: Date: Tue, 16 Oct 2001 13:59:25 +0300 To: a@example.com From: b@example.com Content-Type: multipart/mixed; boundary="============_-1208892523==_============" --============_-1208892523==_============ Content-Type: text/plain; charset="us-ascii" ; format="flowed" Text text text. --============_-1208892523==_============ Content-Id: Content-Type: image/jpeg; name="wibble.JPG" ; x-mac-type="4A504547" ; x-mac-creator="474B4F4E" Content-Disposition: attachment; filename="wibble.JPG" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAALCAXABIEBAREA g6bCjjw/pIZSjO6FWFpldjySOmCNrO7DBZibUXhTwtCixw+GtAijVdqxxaPp0aKvmGXa qrbBQvms0mAMeYS/3iTV1dG0hHaRNK01XblnWxtVdjkHLMIgTyqnk9VB7CrP2KzIINpa 4O7I+zxYO9WV8jZg71Zlb+8rMDkEirAVQFAUAKAFAAAUAYAUDgADgY6DjpRtXj5RxjHA 4wQRj0wQCMdCAewpaKKK/9k= --============_-1208892523==_============ Content-Id: Content-Type: image/jpeg; name="wibble2.JPG" ; x-mac-type="4A504547" ; x-mac-creator="474B4F4E" Content-Disposition: attachment; filename="wibble2.JPG" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAALCAXABJ0BAREA /8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA W6NFJJBEkU10kKGTcWMDwxuU+0JHvk8qAtOpNwqSR0n8c3BlDyXHlqsUltHEiTvdXLxR 7vMiGDNJAJWkAMk8ZkCFp5G2oo5W++INrbQtNfTQxJAuXlupz9oS4d5Y1W+E2XlWZJJE Y7LWYQxTLE1zuMbfBPxw8X2fibVdIbSbI6nLZxX635t9TjtYreWR7WGKJTLJFFKSlozO 0ShxIXM43uC3/9k= --============_-1208892523==_============ Content-Type: text/plain; charset="us-ascii" ; format="flowed" Text text text. --============_-1208892523==_============-- MIME-Version: 1.0 From: Barry Warsaw To: Dingus Lovers Subject: Lyrics Date: Fri, 20 Apr 2001 19:35:02 -0400 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/plain; charset="us-ascii" --BOUNDARY Content-Type: text/html; charset="iso-8859-1" --BOUNDARY Content-Type: text/plain --BOUNDARY Content-Type: text/plain; charset="koi8-r" --BOUNDARY-- Content-Type: multipart/mixed; boundary="AAA" From: Mail Delivery Subsystem To: yyy@example.com This is a MIME-encapsulated message --AAA Stuff --AAA Content-Type: message/rfc822 From: webmaster@python.org To: zzz@example.com Content-Type: multipart/mixed; boundary="BBB" --BBB-- --AAA-- Return-Path: Delivered-To: bbb@zzz.org Received: by mail.zzz.org (Postfix, from userid 889) id 27CEAD38CC; Fri, 4 May 2001 14:05:44 -0400 (EDT) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; title*0*="us-ascii'en'This%20is%20even%20more%20"; title*1*="%2A%2A%2Afun%2A%2A%2A%20"; title*2="isn't it!" Content-Transfer-Encoding: 7bit Message-ID: <15090.61304.110929.45684@aaa.zzz.org> From: bbb@ddd.com (John X. Doe) To: bbb@zzz.org Subject: This is a test message Date: Fri, 4 May 2001 14:05:44 -0400 Hi, Do you like this message? -Me From: aperson@dom.ain MIME-Version: 1.0 Content-Type: multipart/digest; boundary=BOUNDARY --BOUNDARY Content-Type: message/rfc822 Content-Type: text/plain; charset=us-ascii To: aa@bb.org From: cc@dd.org Subject: ee message 1 --BOUNDARY Content-Type: message/rfc822 Content-Type: text/plain; charset=us-ascii To: aa@bb.org From: cc@dd.org Subject: ee message 2 --BOUNDARY-- From: To: Subject: test X-Long-Line: Some really long line contains a lot of text and thus has to be rewrapped because it is some really long line MIME-Version: 1.0 Content-Type: multipart/signed; boundary="borderline"; protocol="application/pgp-signature"; micalg=pgp-sha1 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --borderline Content-Type: text/plain X-Long-Line: Another really long line contains a lot of text and thus has to be rewrapped because it is another really long line This is the signed contents. --borderline Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.6 (GNU/Linux) iD8DBQFG03voRhp6o4m9dFsRApSZAKCCAN3IkJlVRg6NvAiMHlvvIuMGPQCeLZtj FGwfnRHFBFO/S4/DKysm0lI= =t7+s -----END PGP SIGNATURE----- --borderline-- # -*- coding: utf-8 -*- # IMPORTANT: unlike the other test_tokenize-*.txt files, this file # does NOT have the utf-8 BOM signature '\xef\xbb\xbf' at the start # of it. Make sure this is not added inadvertently by your editor # if any changes are made to this file! # Arbitrary encoded utf-8 text (stolen from test_doctest2.py). x = 'ЉЊЈÐЂ' def y(): """ And again in a comment. ЉЊЈÐЂ """ pass # -*- coding: latin1 -*- # IMPORTANT: this file has the utf-8 BOM signature '\xef\xbb\xbf' # at the start of it. Make sure this is preserved if any changes # are made! Also note that the coding cookie above conflicts with # the presence of a utf-8 BOM signature -- this is intended. # Arbitrary encoded utf-8 text (stolen from test_doctest2.py). x = 'ЉЊЈÐЂ' def y(): """ And again in a comment. ЉЊЈÐЂ """ pass -- Testcases for functions in math. -- -- Each line takes the form: -- -- -> -- -- where: -- -- is a short name identifying the test, -- -- is the function to be tested (exp, cos, asinh, ...), -- -- is a string representing a floating-point value -- -- is the expected (ideal) output value, again -- represented as a string. -- -- is a list of the floating-point flags required by C99 -- -- The possible flags are: -- -- divide-by-zero : raised when a finite input gives a -- mathematically infinite result. -- -- overflow : raised when a finite input gives a finite result that -- is too large to fit in the usual range of an IEEE 754 double. -- -- invalid : raised for invalid inputs (e.g., sqrt(-1)) -- -- ignore-sign : indicates that the sign of the result is -- unspecified; e.g., if the result is given as inf, -- then both -inf and inf should be accepted as correct. -- -- Flags may appear in any order. -- -- Lines beginning with '--' (like this one) start a comment, and are -- ignored. Blank lines, or lines containing only whitespace, are also -- ignored. -- Many of the values below were computed with the help of -- version 2.4 of the MPFR library for multiple-precision -- floating-point computations with correct rounding. All output -- values in this file are (modulo yet-to-be-discovered bugs) -- correctly rounded, provided that each input and output decimal -- floating-point value below is interpreted as a representation of -- the corresponding nearest IEEE 754 double-precision value. See the -- MPFR homepage at http://www.mpfr.org for more information about the -- MPFR project. ------------------------- -- erf: error function -- ------------------------- erf0000 erf 0.0 -> 0.0 erf0001 erf -0.0 -> -0.0 erf0002 erf inf -> 1.0 erf0003 erf -inf -> -1.0 erf0004 erf nan -> nan -- tiny values erf0010 erf 1e-308 -> 1.1283791670955125e-308 erf0011 erf 5e-324 -> 4.9406564584124654e-324 erf0012 erf 1e-10 -> 1.1283791670955126e-10 -- small integers erf0020 erf 1 -> 0.84270079294971489 erf0021 erf 2 -> 0.99532226501895271 erf0022 erf 3 -> 0.99997790950300136 erf0023 erf 4 -> 0.99999998458274209 erf0024 erf 5 -> 0.99999999999846256 erf0025 erf 6 -> 1.0 erf0030 erf -1 -> -0.84270079294971489 erf0031 erf -2 -> -0.99532226501895271 erf0032 erf -3 -> -0.99997790950300136 erf0033 erf -4 -> -0.99999998458274209 erf0034 erf -5 -> -0.99999999999846256 erf0035 erf -6 -> -1.0 -- huge values should all go to +/-1, depending on sign erf0040 erf -40 -> -1.0 erf0041 erf 1e16 -> 1.0 erf0042 erf -1e150 -> -1.0 erf0043 erf 1.7e308 -> 1.0 -- Issue 8986: inputs x with exp(-x*x) near the underflow threshold -- incorrectly signalled overflow on some platforms. erf0100 erf 26.2 -> 1.0 erf0101 erf 26.4 -> 1.0 erf0102 erf 26.6 -> 1.0 erf0103 erf 26.8 -> 1.0 erf0104 erf 27.0 -> 1.0 erf0105 erf 27.2 -> 1.0 erf0106 erf 27.4 -> 1.0 erf0107 erf 27.6 -> 1.0 erf0110 erf -26.2 -> -1.0 erf0111 erf -26.4 -> -1.0 erf0112 erf -26.6 -> -1.0 erf0113 erf -26.8 -> -1.0 erf0114 erf -27.0 -> -1.0 erf0115 erf -27.2 -> -1.0 erf0116 erf -27.4 -> -1.0 erf0117 erf -27.6 -> -1.0 ---------------------------------------- -- erfc: complementary error function -- ---------------------------------------- erfc0000 erfc 0.0 -> 1.0 erfc0001 erfc -0.0 -> 1.0 erfc0002 erfc inf -> 0.0 erfc0003 erfc -inf -> 2.0 erfc0004 erfc nan -> nan -- tiny values erfc0010 erfc 1e-308 -> 1.0 erfc0011 erfc 5e-324 -> 1.0 erfc0012 erfc 1e-10 -> 0.99999999988716204 -- small integers erfc0020 erfc 1 -> 0.15729920705028513 erfc0021 erfc 2 -> 0.0046777349810472662 erfc0022 erfc 3 -> 2.2090496998585441e-05 erfc0023 erfc 4 -> 1.541725790028002e-08 erfc0024 erfc 5 -> 1.5374597944280349e-12 erfc0025 erfc 6 -> 2.1519736712498913e-17 erfc0030 erfc -1 -> 1.8427007929497148 erfc0031 erfc -2 -> 1.9953222650189528 erfc0032 erfc -3 -> 1.9999779095030015 erfc0033 erfc -4 -> 1.9999999845827421 erfc0034 erfc -5 -> 1.9999999999984626 erfc0035 erfc -6 -> 2.0 -- as x -> infinity, erfc(x) behaves like exp(-x*x)/x/sqrt(pi) erfc0040 erfc 20 -> 5.3958656116079012e-176 erfc0041 erfc 25 -> 8.3001725711965228e-274 erfc0042 erfc 27 -> 5.2370464393526292e-319 erfc0043 erfc 28 -> 0.0 -- huge values erfc0050 erfc -40 -> 2.0 erfc0051 erfc 1e16 -> 0.0 erfc0052 erfc -1e150 -> 2.0 erfc0053 erfc 1.7e308 -> 0.0 -- Issue 8986: inputs x with exp(-x*x) near the underflow threshold -- incorrectly signalled overflow on some platforms. erfc0100 erfc 26.2 -> 1.6432507924389461e-300 erfc0101 erfc 26.4 -> 4.4017768588035426e-305 erfc0102 erfc 26.6 -> 1.0885125885442269e-309 erfc0103 erfc 26.8 -> 2.4849621571966629e-314 erfc0104 erfc 27.0 -> 5.2370464393526292e-319 erfc0105 erfc 27.2 -> 9.8813129168249309e-324 erfc0106 erfc 27.4 -> 0.0 erfc0107 erfc 27.6 -> 0.0 erfc0110 erfc -26.2 -> 2.0 erfc0111 erfc -26.4 -> 2.0 erfc0112 erfc -26.6 -> 2.0 erfc0113 erfc -26.8 -> 2.0 erfc0114 erfc -27.0 -> 2.0 erfc0115 erfc -27.2 -> 2.0 erfc0116 erfc -27.4 -> 2.0 erfc0117 erfc -27.6 -> 2.0 --------------------------------------------------------- -- lgamma: log of absolute value of the gamma function -- --------------------------------------------------------- -- special values lgam0000 lgamma 0.0 -> inf divide-by-zero lgam0001 lgamma -0.0 -> inf divide-by-zero lgam0002 lgamma inf -> inf lgam0003 lgamma -inf -> inf lgam0004 lgamma nan -> nan -- negative integers lgam0010 lgamma -1 -> inf divide-by-zero lgam0011 lgamma -2 -> inf divide-by-zero lgam0012 lgamma -1e16 -> inf divide-by-zero lgam0013 lgamma -1e300 -> inf divide-by-zero lgam0014 lgamma -1.79e308 -> inf divide-by-zero -- small positive integers give factorials lgam0020 lgamma 1 -> 0.0 lgam0021 lgamma 2 -> 0.0 lgam0022 lgamma 3 -> 0.69314718055994529 lgam0023 lgamma 4 -> 1.791759469228055 lgam0024 lgamma 5 -> 3.1780538303479458 lgam0025 lgamma 6 -> 4.7874917427820458 -- half integers lgam0030 lgamma 0.5 -> 0.57236494292470008 lgam0031 lgamma 1.5 -> -0.12078223763524522 lgam0032 lgamma 2.5 -> 0.28468287047291918 lgam0033 lgamma 3.5 -> 1.2009736023470743 lgam0034 lgamma -0.5 -> 1.2655121234846454 lgam0035 lgamma -1.5 -> 0.86004701537648098 lgam0036 lgamma -2.5 -> -0.056243716497674054 lgam0037 lgamma -3.5 -> -1.309006684993042 -- values near 0 lgam0040 lgamma 0.1 -> 2.252712651734206 lgam0041 lgamma 0.01 -> 4.5994798780420219 lgam0042 lgamma 1e-8 -> 18.420680738180209 lgam0043 lgamma 1e-16 -> 36.841361487904734 lgam0044 lgamma 1e-30 -> 69.077552789821368 lgam0045 lgamma 1e-160 -> 368.41361487904732 lgam0046 lgamma 1e-308 -> 709.19620864216608 lgam0047 lgamma 5.6e-309 -> 709.77602713741896 lgam0048 lgamma 5.5e-309 -> 709.79404564292167 lgam0049 lgamma 1e-309 -> 711.49879373516012 lgam0050 lgamma 1e-323 -> 743.74692474082133 lgam0051 lgamma 5e-324 -> 744.44007192138122 lgam0060 lgamma -0.1 -> 2.3689613327287886 lgam0061 lgamma -0.01 -> 4.6110249927528013 lgam0062 lgamma -1e-8 -> 18.420680749724522 lgam0063 lgamma -1e-16 -> 36.841361487904734 lgam0064 lgamma -1e-30 -> 69.077552789821368 lgam0065 lgamma -1e-160 -> 368.41361487904732 lgam0066 lgamma -1e-308 -> 709.19620864216608 lgam0067 lgamma -5.6e-309 -> 709.77602713741896 lgam0068 lgamma -5.5e-309 -> 709.79404564292167 lgam0069 lgamma -1e-309 -> 711.49879373516012 lgam0070 lgamma -1e-323 -> 743.74692474082133 lgam0071 lgamma -5e-324 -> 744.44007192138122 -- values near negative integers lgam0080 lgamma -0.99999999999999989 -> 36.736800569677101 lgam0081 lgamma -1.0000000000000002 -> 36.043653389117154 lgam0082 lgamma -1.9999999999999998 -> 35.350506208557213 lgam0083 lgamma -2.0000000000000004 -> 34.657359027997266 lgam0084 lgamma -100.00000000000001 -> -331.85460524980607 lgam0085 lgamma -99.999999999999986 -> -331.85460524980596 -- large inputs lgam0100 lgamma 170 -> 701.43726380873704 lgam0101 lgamma 171 -> 706.57306224578736 lgam0102 lgamma 171.624 -> 709.78077443669895 lgam0103 lgamma 171.625 -> 709.78591682948365 lgam0104 lgamma 172 -> 711.71472580228999 lgam0105 lgamma 2000 -> 13198.923448054265 lgam0106 lgamma 2.55998332785163e305 -> 1.7976931348623099e+308 lgam0107 lgamma 2.55998332785164e305 -> inf overflow lgam0108 lgamma 1.7e308 -> inf overflow -- inputs for which gamma(x) is tiny lgam0120 lgamma -100.5 -> -364.90096830942736 lgam0121 lgamma -160.5 -> -656.88005261126432 lgam0122 lgamma -170.5 -> -707.99843314507882 lgam0123 lgamma -171.5 -> -713.14301641168481 lgam0124 lgamma -176.5 -> -738.95247590846486 lgam0125 lgamma -177.5 -> -744.13144651738037 lgam0126 lgamma -178.5 -> -749.3160351186001 lgam0130 lgamma -1000.5 -> -5914.4377011168517 lgam0131 lgamma -30000.5 -> -279278.6629959144 lgam0132 lgamma -4503599627370495.5 -> -1.5782258434492883e+17 -- results close to 0: positive argument ... lgam0150 lgamma 0.99999999999999989 -> 6.4083812134800075e-17 lgam0151 lgamma 1.0000000000000002 -> -1.2816762426960008e-16 lgam0152 lgamma 1.9999999999999998 -> -9.3876980655431170e-17 lgam0153 lgamma 2.0000000000000004 -> 1.8775396131086244e-16 -- ... and negative argument lgam0160 lgamma -2.7476826467 -> -5.2477408147689136e-11 lgam0161 lgamma -2.457024738 -> 3.3464637541912932e-10 --------------------------- -- gamma: Gamma function -- --------------------------- -- special values gam0000 gamma 0.0 -> inf divide-by-zero gam0001 gamma -0.0 -> -inf divide-by-zero gam0002 gamma inf -> inf gam0003 gamma -inf -> nan invalid gam0004 gamma nan -> nan -- negative integers inputs are invalid gam0010 gamma -1 -> nan invalid gam0011 gamma -2 -> nan invalid gam0012 gamma -1e16 -> nan invalid gam0013 gamma -1e300 -> nan invalid -- small positive integers give factorials gam0020 gamma 1 -> 1 gam0021 gamma 2 -> 1 gam0022 gamma 3 -> 2 gam0023 gamma 4 -> 6 gam0024 gamma 5 -> 24 gam0025 gamma 6 -> 120 -- half integers gam0030 gamma 0.5 -> 1.7724538509055161 gam0031 gamma 1.5 -> 0.88622692545275805 gam0032 gamma 2.5 -> 1.3293403881791370 gam0033 gamma 3.5 -> 3.3233509704478426 gam0034 gamma -0.5 -> -3.5449077018110322 gam0035 gamma -1.5 -> 2.3632718012073548 gam0036 gamma -2.5 -> -0.94530872048294190 gam0037 gamma -3.5 -> 0.27008820585226911 -- values near 0 gam0040 gamma 0.1 -> 9.5135076986687306 gam0041 gamma 0.01 -> 99.432585119150602 gam0042 gamma 1e-8 -> 99999999.422784343 gam0043 gamma 1e-16 -> 10000000000000000 gam0044 gamma 1e-30 -> 9.9999999999999988e+29 gam0045 gamma 1e-160 -> 1.0000000000000000e+160 gam0046 gamma 1e-308 -> 1.0000000000000000e+308 gam0047 gamma 5.6e-309 -> 1.7857142857142848e+308 gam0048 gamma 5.5e-309 -> inf overflow gam0049 gamma 1e-309 -> inf overflow gam0050 gamma 1e-323 -> inf overflow gam0051 gamma 5e-324 -> inf overflow gam0060 gamma -0.1 -> -10.686287021193193 gam0061 gamma -0.01 -> -100.58719796441078 gam0062 gamma -1e-8 -> -100000000.57721567 gam0063 gamma -1e-16 -> -10000000000000000 gam0064 gamma -1e-30 -> -9.9999999999999988e+29 gam0065 gamma -1e-160 -> -1.0000000000000000e+160 gam0066 gamma -1e-308 -> -1.0000000000000000e+308 gam0067 gamma -5.6e-309 -> -1.7857142857142848e+308 gam0068 gamma -5.5e-309 -> -inf overflow gam0069 gamma -1e-309 -> -inf overflow gam0070 gamma -1e-323 -> -inf overflow gam0071 gamma -5e-324 -> -inf overflow -- values near negative integers gam0080 gamma -0.99999999999999989 -> -9007199254740992.0 gam0081 gamma -1.0000000000000002 -> 4503599627370495.5 gam0082 gamma -1.9999999999999998 -> 2251799813685248.5 gam0083 gamma -2.0000000000000004 -> -1125899906842623.5 gam0084 gamma -100.00000000000001 -> -7.5400833348831090e-145 gam0085 gamma -99.999999999999986 -> 7.5400833348840962e-145 -- large inputs gam0100 gamma 170 -> 4.2690680090047051e+304 gam0101 gamma 171 -> 7.2574156153079990e+306 gam0102 gamma 171.624 -> 1.7942117599248104e+308 gam0103 gamma 171.625 -> inf overflow gam0104 gamma 172 -> inf overflow gam0105 gamma 2000 -> inf overflow gam0106 gamma 1.7e308 -> inf overflow -- inputs for which gamma(x) is tiny gam0120 gamma -100.5 -> -3.3536908198076787e-159 gam0121 gamma -160.5 -> -5.2555464470078293e-286 gam0122 gamma -170.5 -> -3.3127395215386074e-308 gam0123 gamma -171.5 -> 1.9316265431711902e-310 gam0124 gamma -176.5 -> -1.1956388629358166e-321 gam0125 gamma -177.5 -> 4.9406564584124654e-324 gam0126 gamma -178.5 -> -0.0 gam0127 gamma -179.5 -> 0.0 gam0128 gamma -201.0001 -> 0.0 gam0129 gamma -202.9999 -> -0.0 gam0130 gamma -1000.5 -> -0.0 gam0131 gamma -1000000000.3 -> -0.0 gam0132 gamma -4503599627370495.5 -> 0.0 -- inputs that cause problems for the standard reflection formula, -- thanks to loss of accuracy in 1-x gam0140 gamma -63.349078729022985 -> 4.1777971677761880e-88 gam0141 gamma -127.45117632943295 -> 1.1831110896236810e-214 ----------------------------------------------------------- -- log1p: log(1 + x), without precision loss for small x -- ----------------------------------------------------------- -- special values log1p0000 log1p 0.0 -> 0.0 log1p0001 log1p -0.0 -> -0.0 log1p0002 log1p inf -> inf log1p0003 log1p -inf -> nan invalid log1p0004 log1p nan -> nan -- singularity at -1.0 log1p0010 log1p -1.0 -> -inf divide-by-zero log1p0011 log1p -0.9999999999999999 -> -36.736800569677101 -- finite values < 1.0 are invalid log1p0020 log1p -1.0000000000000002 -> nan invalid log1p0021 log1p -1.1 -> nan invalid log1p0022 log1p -2.0 -> nan invalid log1p0023 log1p -1e300 -> nan invalid -- tiny x: log1p(x) ~ x log1p0110 log1p 5e-324 -> 5e-324 log1p0111 log1p 1e-320 -> 1e-320 log1p0112 log1p 1e-300 -> 1e-300 log1p0113 log1p 1e-150 -> 1e-150 log1p0114 log1p 1e-20 -> 1e-20 log1p0120 log1p -5e-324 -> -5e-324 log1p0121 log1p -1e-320 -> -1e-320 log1p0122 log1p -1e-300 -> -1e-300 log1p0123 log1p -1e-150 -> -1e-150 log1p0124 log1p -1e-20 -> -1e-20 -- some (mostly) random small and moderate-sized values log1p0200 log1p -0.89156889782277482 -> -2.2216403106762863 log1p0201 log1p -0.23858496047770464 -> -0.27257668276980057 log1p0202 log1p -0.011641726191307515 -> -0.011710021654495657 log1p0203 log1p -0.0090126398571693817 -> -0.0090534993825007650 log1p0204 log1p -0.00023442805985712781 -> -0.00023445554240995693 log1p0205 log1p -1.5672870980936349e-5 -> -1.5672993801662046e-5 log1p0206 log1p -7.9650013274825295e-6 -> -7.9650330482740401e-6 log1p0207 log1p -2.5202948343227410e-7 -> -2.5202951519170971e-7 log1p0208 log1p -8.2446372820745855e-11 -> -8.2446372824144559e-11 log1p0209 log1p -8.1663670046490789e-12 -> -8.1663670046824230e-12 log1p0210 log1p 7.0351735084656292e-18 -> 7.0351735084656292e-18 log1p0211 log1p 5.2732161907375226e-12 -> 5.2732161907236188e-12 log1p0212 log1p 1.0000000000000000e-10 -> 9.9999999995000007e-11 log1p0213 log1p 2.1401273266000197e-9 -> 2.1401273243099470e-9 log1p0214 log1p 1.2668914653979560e-8 -> 1.2668914573728861e-8 log1p0215 log1p 1.6250007816299069e-6 -> 1.6249994613175672e-6 log1p0216 log1p 8.3740495645839399e-6 -> 8.3740145024266269e-6 log1p0217 log1p 3.0000000000000001e-5 -> 2.9999550008999799e-5 log1p0218 log1p 0.0070000000000000001 -> 0.0069756137364252423 log1p0219 log1p 0.013026235315053002 -> 0.012942123564008787 log1p0220 log1p 0.013497160797236184 -> 0.013406885521915038 log1p0221 log1p 0.027625599078135284 -> 0.027250897463483054 log1p0222 log1p 0.14179687245544870 -> 0.13260322540908789 -- large values log1p0300 log1p 1.7976931348623157e+308 -> 709.78271289338397 log1p0301 log1p 1.0000000000000001e+300 -> 690.77552789821368 log1p0302 log1p 1.0000000000000001e+70 -> 161.18095650958321 log1p0303 log1p 10000000000.000000 -> 23.025850930040455 -- other values transferred from testLog1p in test_math log1p0400 log1p -0.63212055882855767 -> -1.0000000000000000 log1p0401 log1p 1.7182818284590451 -> 1.0000000000000000 log1p0402 log1p 1.0000000000000000 -> 0.69314718055994529 log1p0403 log1p 1.2379400392853803e+27 -> 62.383246250395075 ----------------------------------------------------------- -- expm1: exp(x) - 1, without precision loss for small x -- ----------------------------------------------------------- -- special values expm10000 expm1 0.0 -> 0.0 expm10001 expm1 -0.0 -> -0.0 expm10002 expm1 inf -> inf expm10003 expm1 -inf -> -1.0 expm10004 expm1 nan -> nan -- expm1(x) ~ x for tiny x expm10010 expm1 5e-324 -> 5e-324 expm10011 expm1 1e-320 -> 1e-320 expm10012 expm1 1e-300 -> 1e-300 expm10013 expm1 1e-150 -> 1e-150 expm10014 expm1 1e-20 -> 1e-20 expm10020 expm1 -5e-324 -> -5e-324 expm10021 expm1 -1e-320 -> -1e-320 expm10022 expm1 -1e-300 -> -1e-300 expm10023 expm1 -1e-150 -> -1e-150 expm10024 expm1 -1e-20 -> -1e-20 -- moderate sized values, where direct evaluation runs into trouble expm10100 expm1 1e-10 -> 1.0000000000500000e-10 expm10101 expm1 -9.9999999999999995e-08 -> -9.9999995000000163e-8 expm10102 expm1 3.0000000000000001e-05 -> 3.0000450004500034e-5 expm10103 expm1 -0.0070000000000000001 -> -0.0069755570667648951 expm10104 expm1 -0.071499208740094633 -> -0.069002985744820250 expm10105 expm1 -0.063296004180116799 -> -0.061334416373633009 expm10106 expm1 0.02390954035597756 -> 0.024197665143819942 expm10107 expm1 0.085637352649044901 -> 0.089411184580357767 expm10108 expm1 0.5966174947411006 -> 0.81596588596501485 expm10109 expm1 0.30247206212075139 -> 0.35319987035848677 expm10110 expm1 0.74574727375889516 -> 1.1080161116737459 expm10111 expm1 0.97767512926555711 -> 1.6582689207372185 expm10112 expm1 0.8450154566787712 -> 1.3280137976535897 expm10113 expm1 -0.13979260323125264 -> -0.13046144381396060 expm10114 expm1 -0.52899322039643271 -> -0.41080213643695923 expm10115 expm1 -0.74083261478900631 -> -0.52328317124797097 expm10116 expm1 -0.93847766984546055 -> -0.60877704724085946 expm10117 expm1 10.0 -> 22025.465794806718 expm10118 expm1 27.0 -> 532048240600.79865 expm10119 expm1 123 -> 2.6195173187490626e+53 expm10120 expm1 -12.0 -> -0.99999385578764666 expm10121 expm1 -35.100000000000001 -> -0.99999999999999944 -- extreme negative values expm10201 expm1 -37.0 -> -0.99999999999999989 expm10200 expm1 -38.0 -> -1.0 expm10210 expm1 -710.0 -> -1.0 -- the formula expm1(x) = 2 * sinh(x/2) * exp(x/2) doesn't work so -- well when exp(x/2) is subnormal or underflows to zero; check we're -- not using it! expm10211 expm1 -1420.0 -> -1.0 expm10212 expm1 -1450.0 -> -1.0 expm10213 expm1 -1500.0 -> -1.0 expm10214 expm1 -1e50 -> -1.0 expm10215 expm1 -1.79e308 -> -1.0 -- extreme positive values expm10300 expm1 300 -> 1.9424263952412558e+130 expm10301 expm1 700 -> 1.0142320547350045e+304 -- the next test (expm10302) is disabled because it causes failure on -- OS X 10.4/Intel: apparently all values over 709.78 produce an -- overflow on that platform. See issue #7575. -- expm10302 expm1 709.78271289328393 -> 1.7976931346824240e+308 expm10303 expm1 709.78271289348402 -> inf overflow expm10304 expm1 1000 -> inf overflow expm10305 expm1 1e50 -> inf overflow expm10306 expm1 1.79e308 -> inf overflow -- weaker version of expm10302 expm10307 expm1 709.5 -> 1.3549863193146328e+308 ------------------------- -- log2: log to base 2 -- ------------------------- -- special values log20000 log2 0.0 -> -inf divide-by-zero log20001 log2 -0.0 -> -inf divide-by-zero log20002 log2 inf -> inf log20003 log2 -inf -> nan invalid log20004 log2 nan -> nan -- exact value at 1.0 log20010 log2 1.0 -> 0.0 -- negatives log20020 log2 -5e-324 -> nan invalid log20021 log2 -1.0 -> nan invalid log20022 log2 -1.7e-308 -> nan invalid -- exact values at powers of 2 log20100 log2 2.0 -> 1.0 log20101 log2 4.0 -> 2.0 log20102 log2 8.0 -> 3.0 log20103 log2 16.0 -> 4.0 log20104 log2 32.0 -> 5.0 log20105 log2 64.0 -> 6.0 log20106 log2 128.0 -> 7.0 log20107 log2 256.0 -> 8.0 log20108 log2 512.0 -> 9.0 log20109 log2 1024.0 -> 10.0 log20110 log2 2048.0 -> 11.0 log20200 log2 0.5 -> -1.0 log20201 log2 0.25 -> -2.0 log20202 log2 0.125 -> -3.0 log20203 log2 0.0625 -> -4.0 -- values close to 1.0 log20300 log2 1.0000000000000002 -> 3.2034265038149171e-16 log20301 log2 1.0000000001 -> 1.4426951601859516e-10 log20302 log2 1.00001 -> 1.4426878274712997e-5 log20310 log2 0.9999999999999999 -> -1.6017132519074588e-16 log20311 log2 0.9999999999 -> -1.4426951603302210e-10 log20312 log2 0.99999 -> -1.4427022544056922e-5 -- tiny values log20400 log2 5e-324 -> -1074.0 log20401 log2 1e-323 -> -1073.0 log20402 log2 1.5e-323 -> -1072.4150374992789 log20403 log2 2e-323 -> -1072.0 log20410 log2 1e-308 -> -1023.1538532253076 log20411 log2 2.2250738585072014e-308 -> -1022.0 log20412 log2 4.4501477170144028e-308 -> -1021.0 log20413 log2 1e-307 -> -1019.8319251304202 -- huge values log20500 log2 1.7976931348623157e+308 -> 1024.0 log20501 log2 1.7e+308 -> 1023.9193879716706 log20502 log2 8.9884656743115795e+307 -> 1023.0 -- selection of random values log20600 log2 -7.2174324841039838e+289 -> nan invalid log20601 log2 -2.861319734089617e+265 -> nan invalid log20602 log2 -4.3507646894008962e+257 -> nan invalid log20603 log2 -6.6717265307520224e+234 -> nan invalid log20604 log2 -3.9118023786619294e+229 -> nan invalid log20605 log2 -1.5478221302505161e+206 -> nan invalid log20606 log2 -1.4380485131364602e+200 -> nan invalid log20607 log2 -3.7235198730382645e+185 -> nan invalid log20608 log2 -1.0472242235095724e+184 -> nan invalid log20609 log2 -5.0141781956163884e+160 -> nan invalid log20610 log2 -2.1157958031160324e+124 -> nan invalid log20611 log2 -7.9677558612567718e+90 -> nan invalid log20612 log2 -5.5553906194063732e+45 -> nan invalid log20613 log2 -16573900952607.953 -> nan invalid log20614 log2 -37198371019.888618 -> nan invalid log20615 log2 -6.0727115121422674e-32 -> nan invalid log20616 log2 -2.5406841656526057e-38 -> nan invalid log20617 log2 -4.9056766703267657e-43 -> nan invalid log20618 log2 -2.1646786075228305e-71 -> nan invalid log20619 log2 -2.470826790488573e-78 -> nan invalid log20620 log2 -3.8661709303489064e-165 -> nan invalid log20621 log2 -1.0516496976649986e-182 -> nan invalid log20622 log2 -1.5935458614317996e-255 -> nan invalid log20623 log2 -2.8750977267336654e-293 -> nan invalid log20624 log2 -7.6079466794732585e-296 -> nan invalid log20625 log2 3.2073253539988545e-307 -> -1018.1505544209213 log20626 log2 1.674937885472249e-244 -> -809.80634755783126 log20627 log2 1.0911259044931283e-214 -> -710.76679472274213 log20628 log2 2.0275372624809709e-154 -> -510.55719818383272 log20629 log2 7.3926087369631841e-115 -> -379.13564735312292 log20630 log2 1.3480198206342423e-86 -> -285.25497445094436 log20631 log2 8.9927384655719947e-83 -> -272.55127136401637 log20632 log2 3.1452398713597487e-60 -> -197.66251564496875 log20633 log2 7.0706573215457351e-55 -> -179.88420087782217 log20634 log2 3.1258285390731669e-49 -> -161.13023800505653 log20635 log2 8.2253046627829942e-41 -> -133.15898277355879 log20636 log2 7.8691367397519897e+49 -> 165.75068202732419 log20637 log2 2.9920561983925013e+64 -> 214.18453534573757 log20638 log2 4.7827254553946841e+77 -> 258.04629628445673 log20639 log2 3.1903566496481868e+105 -> 350.47616767491166 log20640 log2 5.6195082449502419e+113 -> 377.86831861008250 log20641 log2 9.9625658250651047e+125 -> 418.55752921228753 log20642 log2 2.7358945220961532e+145 -> 483.13158636923413 log20643 log2 2.785842387926931e+174 -> 579.49360214860280 log20644 log2 2.4169172507252751e+193 -> 642.40529039289652 log20645 log2 3.1689091206395632e+205 -> 682.65924573798395 log20646 log2 2.535995592365391e+208 -> 692.30359597460460 log20647 log2 6.2011236566089916e+233 -> 776.64177576730913 log20648 log2 2.1843274820677632e+253 -> 841.57499717289647 log20649 log2 8.7493931063474791e+297 -> 989.74182713073981 똠방ê°í•˜ íŽ²ì‹œì½œë¼ ã‰¯ã‰¯ë‚©!! 因乿œˆíŒ¨ë¯¤ë¦”궈 ⓡⓖ훀¿¿¿ ê¸ë’™ ⓔ뎨 ㉯. . 亞ì˜â“”능횹 . . . . 서울뤄 ëŽí•™ä¹™ 家훀 ! ! !ã… .ã…  ííí ㄱㄱㄱ☆ㅠ_ã…  어릨 íƒ¸ì½°ê¸ ëŽŒì‘ ì¹‘ä¹ë“¤ä¹™ ã‰¯ë“œê¸ ì„¤ë¦Œ 家훀 . . . . 굴애쉌 ⓔ궈 â“¡ë¦˜ã‰±ê¸ å› ä»å·ï¦ä¸­ê¹Œì¦¼ 와쒀훀 ! ! 亞ì˜â“” 家능궈 ☆上관 없능궈능 亞능뒈훀 글애듴 â“¡ë ¤ë“€ä¹ ì‹€í’”ìˆ´í›€ 어릨 å› ä»å·ï¦ä¸­ì‹â‘¨ë“¤ì•œ!! ㉯㉯납♡ ⌒⌒* Python ã®é–‹ç™ºã¯ã€1990 å¹´ã”ã‚ã‹ã‚‰é–‹å§‹ã•れã¦ã„ã¾ã™ã€‚ 開発者㮠Guido van Rossum ã¯æ•™è‚²ç”¨ã®ãƒ—ログラミング言語「ABCã€ã®é–‹ç™ºã«å‚加ã—ã¦ã„ã¾ã—ãŸãŒã€ABC ã¯å®Ÿç”¨ä¸Šã®ç›®çš„ã«ã¯ã‚ã¾ã‚Šé©ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚ ã“ã®ãŸã‚ã€Guido ã¯ã‚ˆã‚Šå®Ÿç”¨çš„ãªãƒ—ログラミング言語ã®é–‹ç™ºã‚’é–‹å§‹ã—ã€è‹±å›½ BBS 放é€ã®ã‚³ãƒ¡ãƒ‡ã‚£ç•ªçµ„「モンティ パイソンã€ã®ãƒ•ァンã§ã‚ã‚‹ Guido ã¯ã“ã®è¨€èªžã‚’「Pythonã€ã¨åã¥ã‘ã¾ã—ãŸã€‚ ã“ã®ã‚ˆã†ãªèƒŒæ™¯ã‹ã‚‰ç”Ÿã¾ã‚ŒãŸ Python ã®è¨€èªžè¨­è¨ˆã¯ã€ã€Œã‚·ãƒ³ãƒ—ルã€ã§ã€Œç¿’å¾—ãŒå®¹æ˜“ã€ã¨ã„ã†ç›®æ¨™ã«é‡ç‚¹ãŒç½®ã‹ã‚Œã¦ã„ã¾ã™ã€‚ 多ãã®ã‚¹ã‚¯ãƒªãƒ—ト系言語ã§ã¯ãƒ¦ãƒ¼ã‚¶ã®ç›®å…ˆã®åˆ©ä¾¿æ€§ã‚’優先ã—ã¦è‰²ã€…ãªæ©Ÿèƒ½ã‚’言語è¦ç´ ã¨ã—ã¦å–り入れる場åˆãŒå¤šã„ã®ã§ã™ãŒã€Python ã§ã¯ãã†ã„ã£ãŸå°ç´°å·¥ãŒè¿½åŠ ã•れるã“ã¨ã¯ã‚ã¾ã‚Šã‚りã¾ã›ã‚“。 è¨€èªžè‡ªä½“ã®æ©Ÿèƒ½ã¯æœ€å°é™ã«æŠ¼ã•ãˆã€å¿…è¦ãªæ©Ÿèƒ½ã¯æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã—ã¦è¿½åŠ ã™ã‚‹ã€ã¨ã„ã†ã®ãŒ Python ã®ãƒãƒªã‚·ãƒ¼ã§ã™ã€‚ ノã‹ã‚š ト゚ トキ喝塀 𡚴𪎌 麀é½ð©›° Python£¨ÅÉÉ­£©ÓïÑÔÊÇÒ»ÖÖ¹¦ÄÜÇ¿´ó¶øÍêÉÆµÄͨÓÃÐͼÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬ ÒѾ­¾ßÓÐÊ®¶àÄêµÄ·¢Õ¹ÀúÊ·£¬³ÉÊìÇÒÎȶ¨¡£ÕâÖÖÓïÑÔ¾ßÓзdz£¼ò½Ý¶øÇåÎú µÄÓï·¨ÌØµã£¬ÊʺÏÍê³É¸÷Öָ߲ãÈÎÎñ£¬¼¸ºõ¿ÉÒÔÔÚËùÓеIJÙ×÷ϵͳÖÐ ÔËÐС£ÕâÖÖÓïÑÔ¼òµ¥¶øÇ¿´ó£¬Êʺϸ÷ÖÖÈËʿѧϰʹÓá£Ä¿Ç°£¬»ùÓÚÕâ ÖÖÓïÑÔµÄÏà¹Ø¼¼ÊõÕýÔÚ·ÉËٵķ¢Õ¹£¬Óû§ÊýÁ¿¼±¾çÀ©´ó£¬Ïà¹ØµÄ×ÊÔ´·Ç³£¶à¡£ ÈçºÎÔÚ Python ÖÐʹÓüÈÓÐµÄ C library? ¡¡ÔÚÙYӿƼ¼¿ìËÙ°lÕ¹µÄ½ñÌì, é_°l¼°œyԇܛówµÄËÙ¶ÈÊDz»ÈݺöÒ•µÄ Õnî}. žé¼Ó¿ìé_°l¼°œyÔ‡µÄËÙ¶È, ÎÒ‚ƒ±ã³£Ï£ÍûÄÜÀûÓÃһЩÒÑé_°lºÃµÄ library, KÓÐÒ»‚€ fast prototyping µÄ programming language ¿É ¹©Ê¹ÓÃ. ĿǰÓÐÔSÔS¶à¶àµÄ library ÊÇÒÔ C Œ‘³É, ¶ø Python ÊÇÒ»‚€ fast prototyping µÄ programming language. ¹ÊÎÒ‚ƒÏ£ÍûÄÜŒ¢¼ÈÓÐµÄ C library Äõ½ Python µÄ­h¾³ÖМyÔ‡¼°ÕûºÏ. ÆäÖÐ×îÖ÷ÒªÒ²ÊÇÎÒ‚ƒËù ÒªÓ‘Õ“µÄ†–î}¾ÍÊÇ: ƒ5Ç1ƒ3š3ƒ2±1ƒ3•1 ‚7Ñ6ƒ0Œ4ƒ6„3 ‚8‰5‚8û6ƒ3•5 ƒ3Õ1‚95 ƒ0ý9ƒ3†0 ƒ4Ü3ƒ5ö7ƒ5—5 ƒ5ù5ƒ0‘9‚8ƒ9‚9ü3ƒ0ð4 ƒ2ë9ƒ2ë5‚9ƒ9. ¦p¦ó¦b Python ¤¤¨Ï¥Î¬J¦³ªº C library? ¡@¦b¸ê°T¬ì§Þ§Ö³tµo®iªº¤µ¤Ñ, ¶}µo¤Î´ú¸Õ³nÅ骺³t«×¬O¤£®e©¿µøªº ½ÒÃD. ¬°¥[§Ö¶}µo¤Î´ú¸Õªº³t«×, §Ú­Ì«K±`§Æ±æ¯à§Q¥Î¤@¨Ç¤w¶}µo¦nªº library, ¨Ã¦³¤@­Ó fast prototyping ªº programming language ¥i ¨Ñ¨Ï¥Î. ¥Ø«e¦³³\³\¦h¦hªº library ¬O¥H C ¼g¦¨, ¦Ó Python ¬O¤@­Ó fast prototyping ªº programming language. ¬G§Ú­Ì§Æ±æ¯à±N¬J¦³ªº C library ®³¨ì Python ªºÀô¹Ò¤¤´ú¸Õ¤Î¾ã¦X. ¨ä¤¤³Ì¥D­n¤]¬O§Ú­Ì©Ò ­n°Q½×ªº°ÝÃD´N¬O: Python ¤Î³«È¯¤Ï¡¢1990 ǯ¤´¤í¤«¤é³«»Ï¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ³«È¯¼Ô¤Î Guido van Rossum ¤Ï¶µ°éÍÑ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¡ÖABC¡×¤Î³«È¯¤Ë»²²Ã¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ABC ¤Ï¼ÂÍѾå¤ÎÌÜŪ¤Ë¤Ï¤¢¤Þ¤êŬ¤·¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£ ¤³¤Î¤¿¤á¡¢Guido ¤Ï¤è¤ê¼ÂÍÑŪ¤Ê¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î³«È¯¤ò³«»Ï¤·¡¢±Ñ¹ñ BBS ÊüÁ÷¤Î¥³¥á¥Ç¥£ÈÖÁȡ֥â¥ó¥Æ¥£ ¥Ñ¥¤¥½¥ó¡×¤Î¥Õ¥¡¥ó¤Ç¤¢¤ë Guido ¤Ï¤³¤Î¸À¸ì¤ò¡ÖPython¡×¤È̾¤Å¤±¤Þ¤·¤¿¡£ ¤³¤Î¤è¤¦¤ÊÇØ·Ê¤«¤éÀ¸¤Þ¤ì¤¿ Python ¤Î¸À¸ìÀ߷פϡ¢¡Ö¥·¥ó¥×¥ë¡×¤Ç¡Ö½¬ÆÀ¤¬ÍưספȤ¤¤¦ÌÜɸ¤Ë½ÅÅÀ¤¬ÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ ¿¤¯¤Î¥¹¥¯¥ê¥×¥È·Ï¸À¸ì¤Ç¤Ï¥æ¡¼¥¶¤ÎÌÜÀè¤ÎÍøÊØÀ­¤òÍ¥À褷¤Æ¿§¡¹¤Êµ¡Ç½¤ò¸À¸ìÍ×ÁǤȤ·¤Æ¼è¤êÆþ¤ì¤ë¾ì¹ç¤¬Â¿¤¤¤Î¤Ç¤¹¤¬¡¢Python ¤Ç¤Ï¤½¤¦¤¤¤Ã¤¿¾®ºÙ¹©¤¬Äɲ䵤ì¤ë¤³¤È¤Ï¤¢¤Þ¤ê¤¢¤ê¤Þ¤»¤ó¡£ ¸À¸ì¼«ÂΤε¡Ç½¤ÏºÇ¾®¸Â¤Ë²¡¤µ¤¨¡¢É¬Íפʵ¡Ç½¤Ï³ÈÄ¥¥â¥¸¥å¡¼¥ë¤È¤·¤ÆÄɲ乤롢¤È¤¤¤¦¤Î¤¬ Python ¤Î¥Ý¥ê¥·¡¼¤Ç¤¹¡£ Python£¨ÅÉÉ­£©ÓïÑÔÊÇÒ»ÖÖ¹¦ÄÜÇ¿´ó¶øÍêÉÆµÄͨÓÃÐͼÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬ ÒѾ­¾ßÓÐÊ®¶àÄêµÄ·¢Õ¹ÀúÊ·£¬³ÉÊìÇÒÎȶ¨¡£ÕâÖÖÓïÑÔ¾ßÓзdz£¼ò½Ý¶øÇåÎú µÄÓï·¨ÌØµã£¬ÊʺÏÍê³É¸÷Öָ߲ãÈÎÎñ£¬¼¸ºõ¿ÉÒÔÔÚËùÓеIJÙ×÷ϵͳÖÐ ÔËÐС£ÕâÖÖÓïÑÔ¼òµ¥¶øÇ¿´ó£¬Êʺϸ÷ÖÖÈËʿѧϰʹÓá£Ä¿Ç°£¬»ùÓÚÕâ ÖÖÓïÑÔµÄÏà¹Ø¼¼ÊõÕýÔÚ·ÉËٵķ¢Õ¹£¬Óû§ÊýÁ¿¼±¾çÀ©´ó£¬Ïà¹ØµÄ×ÊÔ´·Ç³£¶à¡£ Python ‚ÌŠJ”­‚ÍA1990 ”N‚²‚ë‚©‚çŠJŽn‚³‚ê‚Ä‚¢‚Ü‚·B ŠJ”­ŽÒ‚Ì Guido van Rossum ‚Í‹³ˆç—p‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾ŒêuABCv‚ÌŠJ”­‚ÉŽQ‰Á‚µ‚Ä‚¢‚Ü‚µ‚½‚ªAABC ‚ÍŽÀ—pã‚Ì–Ú“I‚ɂ͂ ‚Ü‚è“K‚µ‚Ä‚¢‚Ü‚¹‚ñ‚Å‚µ‚½B ‚±‚Ì‚½‚ßAGuido ‚Í‚æ‚èŽÀ—p“I‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ÌŠJ”­‚ðŠJŽn‚µA‰p‘ BBS •ú‘—‚̃RƒƒfƒB”Ô‘guƒ‚ƒ“ƒeƒB ƒpƒCƒ\ƒ“v‚̃tƒ@ƒ“‚Å‚ ‚é Guido ‚Í‚±‚ÌŒ¾Œê‚ðuPythonv‚Æ–¼‚¯‚Ü‚µ‚½B ‚±‚̂悤‚È”wŒi‚©‚綂܂ꂽ Python ‚ÌŒ¾ŒêÝŒv‚ÍAuƒVƒ“ƒvƒ‹v‚ÅuK“¾‚ª—eˆÕv‚Æ‚¢‚¤–Ú•W‚Éd“_‚ª’u‚©‚ê‚Ä‚¢‚Ü‚·B ‘½‚­‚̃XƒNƒŠƒvƒgŒnŒ¾Œê‚ł̓†[ƒU‚Ì–Úæ‚Ì—˜•Ö«‚ð—D悵‚ÄFX‚È‹@”\‚ðŒ¾Œê—v‘f‚Æ‚µ‚ÄŽæ‚è“ü‚ê‚éꇂª‘½‚¢‚̂ł·‚ªAPython ‚ł͂»‚¤‚¢‚Á‚½¬×H‚ª’ljÁ‚³‚ê‚邱‚Ƃ͂ ‚܂肠‚è‚Ü‚¹‚ñB Œ¾ŒêŽ©‘̂̋@”\‚ÍŬŒÀ‚ɉŸ‚³‚¦A•K—v‚È‹@”\‚ÍŠg’£ƒ‚ƒWƒ…[ƒ‹‚Æ‚µ‚ĒljÁ‚·‚éA‚Æ‚¢‚¤‚Ì‚ª Python ‚̃|ƒŠƒV[‚Å‚·B Python£¨ÅÉÉ­£©ÓïÑÔÊÇÒ»ÖÖ¹¦ÄÜÇ¿´ó¶øÍêÉÆµÄͨÓÃÐͼÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬ ÒѾ­¾ßÓÐÊ®¶àÄêµÄ·¢Õ¹ÀúÊ·£¬³ÉÊìÇÒÎȶ¨¡£ÕâÖÖÓïÑÔ¾ßÓзdz£¼ò½Ý¶øÇåÎú µÄÓï·¨ÌØµã£¬ÊʺÏÍê³É¸÷Öָ߲ãÈÎÎñ£¬¼¸ºõ¿ÉÒÔÔÚËùÓеIJÙ×÷ϵͳÖÐ ÔËÐС£ÕâÖÖÓïÑÔ¼òµ¥¶øÇ¿´ó£¬Êʺϸ÷ÖÖÈËʿѧϰʹÓá£Ä¿Ç°£¬»ùÓÚÕâ ÖÖÓïÑÔµÄÏà¹Ø¼¼ÊõÕýÔÚ·ÉËٵķ¢Õ¹£¬Óû§ÊýÁ¿¼±¾çÀ©´ó£¬Ïà¹ØµÄ×ÊÔ´·Ç³£¶à¡£ ÈçºÎÔÚ Python ÖÐʹÓüÈÓÐµÄ C library? ¡¡ÔÚÙYӿƼ¼¿ìËÙ°lÕ¹µÄ½ñÌì, é_°l¼°œyԇܛówµÄËÙ¶ÈÊDz»ÈݺöÒ•µÄ Õnî}. žé¼Ó¿ìé_°l¼°œyÔ‡µÄËÙ¶È, ÎÒ‚ƒ±ã³£Ï£ÍûÄÜÀûÓÃһЩÒÑé_°lºÃµÄ library, KÓÐÒ»‚€ fast prototyping µÄ programming language ¿É ¹©Ê¹ÓÃ. ĿǰÓÐÔSÔS¶à¶àµÄ library ÊÇÒÔ C Œ‘³É, ¶ø Python ÊÇÒ»‚€ fast prototyping µÄ programming language. ¹ÊÎÒ‚ƒÏ£ÍûÄÜŒ¢¼ÈÓÐµÄ C library Äõ½ Python µÄ­h¾³ÖМyÔ‡¼°ÕûºÏ. ÆäÖÐ×îÖ÷ÒªÒ²ÊÇÎÒ‚ƒËù ÒªÓ‘Õ“µÄ†–î}¾ÍÊÇ: Python(派森)语言是一ç§åŠŸèƒ½å¼ºå¤§è€Œå®Œå–„çš„é€šç”¨åž‹è®¡ç®—æœºç¨‹åºè®¾è®¡è¯­è¨€ï¼Œ å·²ç»å…·æœ‰å多年的å‘展历å²ï¼Œæˆç†Ÿä¸”稳定。这ç§è¯­è¨€å…·æœ‰éžå¸¸ç®€æ·è€Œæ¸…æ™° 的语法特点,适åˆå®Œæˆå„ç§é«˜å±‚任务,几乎å¯ä»¥åœ¨æ‰€æœ‰çš„æ“ä½œç³»ç»Ÿä¸­ è¿è¡Œã€‚è¿™ç§è¯­è¨€ç®€å•而强大,适åˆå„ç§äººå£«å­¦ä¹ ä½¿ç”¨ã€‚ç›®å‰ï¼ŒåŸºäºŽè¿™ ç§è¯­è¨€çš„相关技术正在飞速的å‘å±•ï¼Œç”¨æˆ·æ•°é‡æ€¥å‰§æ‰©å¤§ï¼Œç›¸å…³çš„资æºéžå¸¸å¤šã€‚ â—Ž 파ì´ì¬(Python)ì€ ë°°ìš°ê¸° 쉽고, 강력한 í”„ë¡œê·¸ëž˜ë° ì–¸ì–´ìž…ë‹ˆë‹¤. 파ì´ì¬ì€ 효율ì ì¸ 고수준 ë°ì´í„° 구조와 간단하지만 효율ì ì¸ ê°ì²´ì§€í–¥í”„로그래ë°ì„ ì§€ì›í•©ë‹ˆë‹¤. 파ì´ì¬ì˜ ìš°ì•„(優雅)한 문법과 ë™ì  타ì´í•‘, 그리고 ì¸í„°í”„리팅 í™˜ê²½ì€ íŒŒì´ì¬ì„ 스í¬ë¦½íŒ…ê³¼ 여러 분야ì—서와 ëŒ€ë¶€ë¶„ì˜ í”Œëž«í¼ì—ì„œì˜ ë¹ ë¥¸ 애플리케ì´ì…˜ ê°œë°œì„ í•  수 있는 ì´ìƒì ì¸ 언어로 만들어ì¤ë‹ˆë‹¤. ☆첫가ë: ë‚ ì•„ë¼ ì“”ì“”ì“©~ ë‹í¼! ëœ½ê¸ˆì—†ì´ ì „í™¥ë‹ˆë‹¤. ë·. 그런거 ìŽë‹¤. Python(派森)语言是一ç§åŠŸèƒ½å¼ºå¤§è€Œå®Œå–„çš„é€šç”¨åž‹è®¡ç®—æœºç¨‹åºè®¾è®¡è¯­è¨€ï¼Œ å·²ç»å…·æœ‰å多年的å‘展历å²ï¼Œæˆç†Ÿä¸”稳定。这ç§è¯­è¨€å…·æœ‰éžå¸¸ç®€æ·è€Œæ¸…æ™° 的语法特点,适åˆå®Œæˆå„ç§é«˜å±‚任务,几乎å¯ä»¥åœ¨æ‰€æœ‰çš„æ“ä½œç³»ç»Ÿä¸­ è¿è¡Œã€‚è¿™ç§è¯­è¨€ç®€å•而强大,适åˆå„ç§äººå£«å­¦ä¹ ä½¿ç”¨ã€‚ç›®å‰ï¼ŒåŸºäºŽè¿™ ç§è¯­è¨€çš„相关技术正在飞速的å‘å±•ï¼Œç”¨æˆ·æ•°é‡æ€¥å‰§æ‰©å¤§ï¼Œç›¸å…³çš„资æºéžå¸¸å¤šã€‚ 如何在 Python 中使用既有的 C library?  在資訊科技快速發展的今天, é–‹ç™¼åŠæ¸¬è©¦è»Ÿé«”的速度是ä¸å®¹å¿½è¦–çš„ 課題. ç‚ºåŠ å¿«é–‹ç™¼åŠæ¸¬è©¦çš„速度, 我們便常希望能利用一些已開發好的 library, 並有一個 fast prototyping çš„ programming language å¯ ä¾›ä½¿ç”¨. ç›®å‰æœ‰è¨±è¨±å¤šå¤šçš„ library 是以 C 寫æˆ, 而 Python 是一個 fast prototyping çš„ programming language. 故我們希望能將既有的 C library 拿到 Python çš„ç’°å¢ƒä¸­æ¸¬è©¦åŠæ•´åˆ. 其中最主è¦ä¹Ÿæ˜¯æˆ‘們所 è¦è¨Žè«–çš„å•題就是: Python ã®é–‹ç™ºã¯ã€1990 å¹´ã”ã‚ã‹ã‚‰é–‹å§‹ã•れã¦ã„ã¾ã™ã€‚ 開発者㮠Guido van Rossum ã¯æ•™è‚²ç”¨ã®ãƒ—ログラミング言語「ABCã€ã®é–‹ç™ºã«å‚加ã—ã¦ã„ã¾ã—ãŸãŒã€ABC ã¯å®Ÿç”¨ä¸Šã®ç›®çš„ã«ã¯ã‚ã¾ã‚Šé©ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚ ã“ã®ãŸã‚ã€Guido ã¯ã‚ˆã‚Šå®Ÿç”¨çš„ãªãƒ—ログラミング言語ã®é–‹ç™ºã‚’é–‹å§‹ã—ã€è‹±å›½ BBS 放é€ã®ã‚³ãƒ¡ãƒ‡ã‚£ç•ªçµ„「モンティ パイソンã€ã®ãƒ•ァンã§ã‚ã‚‹ Guido ã¯ã“ã®è¨€èªžã‚’「Pythonã€ã¨åã¥ã‘ã¾ã—ãŸã€‚ ã“ã®ã‚ˆã†ãªèƒŒæ™¯ã‹ã‚‰ç”Ÿã¾ã‚ŒãŸ Python ã®è¨€èªžè¨­è¨ˆã¯ã€ã€Œã‚·ãƒ³ãƒ—ルã€ã§ã€Œç¿’å¾—ãŒå®¹æ˜“ã€ã¨ã„ã†ç›®æ¨™ã«é‡ç‚¹ãŒç½®ã‹ã‚Œã¦ã„ã¾ã™ã€‚ 多ãã®ã‚¹ã‚¯ãƒªãƒ—ト系言語ã§ã¯ãƒ¦ãƒ¼ã‚¶ã®ç›®å…ˆã®åˆ©ä¾¿æ€§ã‚’優先ã—ã¦è‰²ã€…ãªæ©Ÿèƒ½ã‚’言語è¦ç´ ã¨ã—ã¦å–り入れる場åˆãŒå¤šã„ã®ã§ã™ãŒã€Python ã§ã¯ãã†ã„ã£ãŸå°ç´°å·¥ãŒè¿½åŠ ã•れるã“ã¨ã¯ã‚ã¾ã‚Šã‚りã¾ã›ã‚“。 è¨€èªžè‡ªä½“ã®æ©Ÿèƒ½ã¯æœ€å°é™ã«æŠ¼ã•ãˆã€å¿…è¦ãªæ©Ÿèƒ½ã¯æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã—ã¦è¿½åŠ ã™ã‚‹ã€ã¨ã„ã†ã®ãŒ Python ã®ãƒãƒªã‚·ãƒ¼ã§ã™ã€‚ ™±¤wˆbÐa Í\¯¡Å©œa ÜÀÜÀs!! ñgâœðUÌ£‰Ÿ…Š¡ ÜÞÜÓÒzٯٯٯ ‹w–Ó ÜÑ• ÜÀ. . í<µwÜÑ“wÒs . . . . ¬á¶‰ž¡ •eÐbðà à;Òz ! ! !‡A.‡A ÓaÓaÓa ˆAˆAˆAÙi‡A_‡A ´áŸš È¡ÅÁ‹z •a·w ×✗iðà ÜÀ—a‹z ¬éŸz à;Òz . . . . Љ´®º ÜÑŠ¡ ÜÞŸ‰Ü‹z ñgñbõIíüóéŒa»š µÁ²¡Òz ! ! í<µwÜÑ à;“wŠ¡ Ùi꾉Š´ô“wŠ¡“w í<“w–ÁÒz ‹i´—z ÜÞa—A✠¯Î¡®¡Òz ´áŸš ñgñbõIíüó鯂Üï—i´z!! ÜÀÜÀsÙ½ ÙbÙb* ¡Ý ÆÄÀ̽ã(Python)Àº ¹è¿ì±â ½±°í, °­·ÂÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÔ´Ï´Ù. ÆÄÀ̽ãÀº È¿À²ÀûÀÎ °í¼öÁØ µ¥ÀÌÅÍ ±¸Á¶¿Í °£´ÜÇÏÁö¸¸ È¿À²ÀûÀÎ °´Ã¼ÁöÇâÇÁ·Î±×·¡¹ÖÀ» Áö¿øÇÕ´Ï´Ù. ÆÄÀ̽ãÀÇ ¿ì¾Æ(éÐäº)ÇÑ ¹®¹ý°ú µ¿Àû ŸÀÌÇÎ, ±×¸®°í ÀÎÅÍÇÁ¸®ÆÃ ȯ°æÀº ÆÄÀ̽ãÀ» ½ºÅ©¸³ÆÃ°ú ¿©·¯ ºÐ¾ß¿¡¼­¿Í ´ëºÎºÐÀÇ Ç÷§Æû¿¡¼­ÀÇ ºü¸¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀ» ÇÒ ¼ö ÀÖ´Â ÀÌ»óÀûÀÎ ¾ð¾î·Î ¸¸µé¾îÁÝ´Ï´Ù. ¡Ùù°¡³¡: ³¯¾Æ¶ó ¤Ô¤¶¤Ð¤Ô¤Ô¤¶¤Ð¤Ô¾±~ ¤Ô¤¤¤Ò¤·Å­! ¤Ô¤¨¤Ñ¤·±Ý¾øÀÌ Àü¤Ô¤¾¤È¤²´Ï´Ù. ¤Ô¤²¤Î¤ª. ±×·±°Å ¤Ô¤·¤Ñ¤´´Ù. 똠방ê°í•˜ íŽ²ì‹œì½œë¼ ã‰¯ã‰¯ë‚©!! 因乿œˆíŒ¨ë¯¤ë¦”궈 ⓡⓖ훀¿¿¿ ê¸ë’™ ⓔ뎨 ㉯. . 亞ì˜â“”능횹 . . . . 서울뤄 ëŽí•™ä¹™ 家훀 ! ! !ã… .ã…  ííí ㄱㄱㄱ☆ㅠ_ã…  어릨 íƒ¸ì½°ê¸ ëŽŒì‘ ì¹‘ä¹ë“¤ä¹™ ã‰¯ë“œê¸ ì„¤ë¦Œ 家훀 . . . . 굴애쉌 ⓔ궈 â“¡ë¦˜ã‰±ê¸ å› ä»å·ï¦ä¸­ê¹Œì¦¼ 와쒀훀 ! ! 亞ì˜â“” 家능궈 ☆上관 없능궈능 亞능뒈훀 글애듴 â“¡ë ¤ë“€ä¹ ì‹€í’”ìˆ´í›€ 어릨 å› ä»å·ï¦ä¸­ì‹â‘¨ë“¤ì•œ!! ㉯㉯납♡ ⌒⌒* 如何在 Python 中使用既有的 C library?  在資訊科技快速發展的今天, é–‹ç™¼åŠæ¸¬è©¦è»Ÿé«”的速度是ä¸å®¹å¿½è¦–çš„ 課題. ç‚ºåŠ å¿«é–‹ç™¼åŠæ¸¬è©¦çš„速度, 我們便常希望能利用一些已開發好的 library, 並有一個 fast prototyping çš„ programming language å¯ ä¾›ä½¿ç”¨. ç›®å‰æœ‰è¨±è¨±å¤šå¤šçš„ library 是以 C 寫æˆ, 而 Python 是一個 fast prototyping çš„ programming language. 故我們希望能將既有的 C library 拿到 Python çš„ç’°å¢ƒä¸­æ¸¬è©¦åŠæ•´åˆ. 其中最主è¦ä¹Ÿæ˜¯æˆ‘們所 è¦è¨Žè«–çš„å•題就是: 𠄌Ě鵮罓洆 ÊÊ̄ê êê̄ Python ã®é–‹ç™ºã¯ã€1990 å¹´ã”ã‚ã‹ã‚‰é–‹å§‹ã•れã¦ã„ã¾ã™ã€‚ 開発者㮠Guido van Rossum ã¯æ•™è‚²ç”¨ã®ãƒ—ログラミング言語「ABCã€ã®é–‹ç™ºã«å‚加ã—ã¦ã„ã¾ã—ãŸãŒã€ABC ã¯å®Ÿç”¨ä¸Šã®ç›®çš„ã«ã¯ã‚ã¾ã‚Šé©ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚ ã“ã®ãŸã‚ã€Guido ã¯ã‚ˆã‚Šå®Ÿç”¨çš„ãªãƒ—ログラミング言語ã®é–‹ç™ºã‚’é–‹å§‹ã—ã€è‹±å›½ BBS 放é€ã®ã‚³ãƒ¡ãƒ‡ã‚£ç•ªçµ„「モンティ パイソンã€ã®ãƒ•ァンã§ã‚ã‚‹ Guido ã¯ã“ã®è¨€èªžã‚’「Pythonã€ã¨åã¥ã‘ã¾ã—ãŸã€‚ ã“ã®ã‚ˆã†ãªèƒŒæ™¯ã‹ã‚‰ç”Ÿã¾ã‚ŒãŸ Python ã®è¨€èªžè¨­è¨ˆã¯ã€ã€Œã‚·ãƒ³ãƒ—ルã€ã§ã€Œç¿’å¾—ãŒå®¹æ˜“ã€ã¨ã„ã†ç›®æ¨™ã«é‡ç‚¹ãŒç½®ã‹ã‚Œã¦ã„ã¾ã™ã€‚ 多ãã®ã‚¹ã‚¯ãƒªãƒ—ト系言語ã§ã¯ãƒ¦ãƒ¼ã‚¶ã®ç›®å…ˆã®åˆ©ä¾¿æ€§ã‚’優先ã—ã¦è‰²ã€…ãªæ©Ÿèƒ½ã‚’言語è¦ç´ ã¨ã—ã¦å–り入れる場åˆãŒå¤šã„ã®ã§ã™ãŒã€Python ã§ã¯ãã†ã„ã£ãŸå°ç´°å·¥ãŒè¿½åŠ ã•れるã“ã¨ã¯ã‚ã¾ã‚Šã‚りã¾ã›ã‚“。 è¨€èªžè‡ªä½“ã®æ©Ÿèƒ½ã¯æœ€å°é™ã«æŠ¼ã•ãˆã€å¿…è¦ãªæ©Ÿèƒ½ã¯æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã—ã¦è¿½åŠ ã™ã‚‹ã€ã¨ã„ã†ã®ãŒ Python ã®ãƒãƒªã‚·ãƒ¼ã§ã™ã€‚ Python ã®é–‹ç™ºã¯ã€1990 å¹´ã”ã‚ã‹ã‚‰é–‹å§‹ã•れã¦ã„ã¾ã™ã€‚ 開発者㮠Guido van Rossum ã¯æ•™è‚²ç”¨ã®ãƒ—ログラミング言語「ABCã€ã®é–‹ç™ºã«å‚加ã—ã¦ã„ã¾ã—ãŸãŒã€ABC ã¯å®Ÿç”¨ä¸Šã®ç›®çš„ã«ã¯ã‚ã¾ã‚Šé©ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚ ã“ã®ãŸã‚ã€Guido ã¯ã‚ˆã‚Šå®Ÿç”¨çš„ãªãƒ—ログラミング言語ã®é–‹ç™ºã‚’é–‹å§‹ã—ã€è‹±å›½ BBS 放é€ã®ã‚³ãƒ¡ãƒ‡ã‚£ç•ªçµ„「モンティ パイソンã€ã®ãƒ•ァンã§ã‚ã‚‹ Guido ã¯ã“ã®è¨€èªžã‚’「Pythonã€ã¨åã¥ã‘ã¾ã—ãŸã€‚ ã“ã®ã‚ˆã†ãªèƒŒæ™¯ã‹ã‚‰ç”Ÿã¾ã‚ŒãŸ Python ã®è¨€èªžè¨­è¨ˆã¯ã€ã€Œã‚·ãƒ³ãƒ—ルã€ã§ã€Œç¿’å¾—ãŒå®¹æ˜“ã€ã¨ã„ã†ç›®æ¨™ã«é‡ç‚¹ãŒç½®ã‹ã‚Œã¦ã„ã¾ã™ã€‚ 多ãã®ã‚¹ã‚¯ãƒªãƒ—ト系言語ã§ã¯ãƒ¦ãƒ¼ã‚¶ã®ç›®å…ˆã®åˆ©ä¾¿æ€§ã‚’優先ã—ã¦è‰²ã€…ãªæ©Ÿèƒ½ã‚’言語è¦ç´ ã¨ã—ã¦å–り入れる場åˆãŒå¤šã„ã®ã§ã™ãŒã€Python ã§ã¯ãã†ã„ã£ãŸå°ç´°å·¥ãŒè¿½åŠ ã•れるã“ã¨ã¯ã‚ã¾ã‚Šã‚りã¾ã›ã‚“。 è¨€èªžè‡ªä½“ã®æ©Ÿèƒ½ã¯æœ€å°é™ã«æŠ¼ã•ãˆã€å¿…è¦ãªæ©Ÿèƒ½ã¯æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã—ã¦è¿½åŠ ã™ã‚‹ã€ã¨ã„ã†ã®ãŒ Python ã®ãƒãƒªã‚·ãƒ¼ã§ã™ã€‚ $)C!] FD@L=c(Python)@: 9h?l1b =10m, 0-7BGQ GA7N1W7!9V >p>n@T4O4Y. FD@L=c@: H?@2@{@N 0mF(iPd:)GQ 9.9}0z 5?@{ E8@LGN, 1W8.0m @NEMGA8.FC H/0f@: FD@L=c@; =:E)83FC0z ?)7/ :P>_?!<-?M 4k:N:P@G GC7'F{?!<-@G :|8% >VGC8.DI@Lp>n7N 885i>nA]4O4Y. !YC90!3!: 3/>F6s >1~ E-! 1]>x@L @|4O4Y. 1W710E 4Y. This sentence is in ASCII. The next sentence is in GB.~{<:Ky2;S{#,NpJ)l6HK!#~}Bye. Python(派森)语言是一ç§åŠŸèƒ½å¼ºå¤§è€Œå®Œå–„çš„é€šç”¨åž‹è®¡ç®—æœºç¨‹åºè®¾è®¡è¯­è¨€ï¼Œ å·²ç»å…·æœ‰å多年的å‘展历å²ï¼Œæˆç†Ÿä¸”稳定。这ç§è¯­è¨€å…·æœ‰éžå¸¸ç®€æ·è€Œæ¸…æ™° 的语法特点,适åˆå®Œæˆå„ç§é«˜å±‚任务,几乎å¯ä»¥åœ¨æ‰€æœ‰çš„æ“ä½œç³»ç»Ÿä¸­ è¿è¡Œã€‚è¿™ç§è¯­è¨€ç®€å•而强大,适åˆå„ç§äººå£«å­¦ä¹ ä½¿ç”¨ã€‚ç›®å‰ï¼ŒåŸºäºŽè¿™ ç§è¯­è¨€çš„相关技术正在飞速的å‘å±•ï¼Œç”¨æˆ·æ•°é‡æ€¥å‰§æ‰©å¤§ï¼Œç›¸å…³çš„资æºéžå¸¸å¤šã€‚ 如何在 Python 中使用既有的 C library?  在資訊科技快速發展的今天, é–‹ç™¼åŠæ¸¬è©¦è»Ÿé«”的速度是ä¸å®¹å¿½è¦–çš„ 課題. ç‚ºåŠ å¿«é–‹ç™¼åŠæ¸¬è©¦çš„速度, 我們便常希望能利用一些已開發好的 library, 並有一個 fast prototyping çš„ programming language å¯ ä¾›ä½¿ç”¨. ç›®å‰æœ‰è¨±è¨±å¤šå¤šçš„ library 是以 C 寫æˆ, 而 Python 是一個 fast prototyping çš„ programming language. 故我們希望能將既有的 C library 拿到 Python çš„ç’°å¢ƒä¸­æ¸¬è©¦åŠæ•´åˆ. 其中最主è¦ä¹Ÿæ˜¯æˆ‘們所 è¦è¨Žè«–çš„å•題就是: 파ì´ì¬ì€ 강력한 ê¸°ëŠ¥ì„ ì§€ë‹Œ 범용 컴퓨터 í”„ë¡œê·¸ëž˜ë° ì–¸ì–´ë‹¤. Python ‚ÌŠJ”­‚ÍA1990 ”N‚²‚ë‚©‚çŠJŽn‚³‚ê‚Ä‚¢‚Ü‚·B ŠJ”­ŽÒ‚Ì Guido van Rossum ‚Í‹³ˆç—p‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾ŒêuABCv‚ÌŠJ”­‚ÉŽQ‰Á‚µ‚Ä‚¢‚Ü‚µ‚½‚ªAABC ‚ÍŽÀ—pã‚Ì–Ú“I‚ɂ͂ ‚Ü‚è“K‚µ‚Ä‚¢‚Ü‚¹‚ñ‚Å‚µ‚½B ‚±‚Ì‚½‚ßAGuido ‚Í‚æ‚èŽÀ—p“I‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ÌŠJ”­‚ðŠJŽn‚µA‰p‘ BBS •ú‘—‚̃RƒƒfƒB”Ô‘guƒ‚ƒ“ƒeƒB ƒpƒCƒ\ƒ“v‚̃tƒ@ƒ“‚Å‚ ‚é Guido ‚Í‚±‚ÌŒ¾Œê‚ðuPythonv‚Æ–¼‚¯‚Ü‚µ‚½B ‚±‚̂悤‚È”wŒi‚©‚綂܂ꂽ Python ‚ÌŒ¾ŒêÝŒv‚ÍAuƒVƒ“ƒvƒ‹v‚ÅuK“¾‚ª—eˆÕv‚Æ‚¢‚¤–Ú•W‚Éd“_‚ª’u‚©‚ê‚Ä‚¢‚Ü‚·B ‘½‚­‚̃XƒNƒŠƒvƒgŒnŒ¾Œê‚ł̓†[ƒU‚Ì–Úæ‚Ì—˜•Ö«‚ð—D悵‚ÄFX‚È‹@”\‚ðŒ¾Œê—v‘f‚Æ‚µ‚ÄŽæ‚è“ü‚ê‚éꇂª‘½‚¢‚̂ł·‚ªAPython ‚ł͂»‚¤‚¢‚Á‚½¬×H‚ª’ljÁ‚³‚ê‚邱‚Ƃ͂ ‚܂肠‚è‚Ü‚¹‚ñB Œ¾ŒêŽ©‘̂̋@”\‚ÍŬŒÀ‚ɉŸ‚³‚¦A•K—v‚È‹@”\‚ÍŠg’£ƒ‚ƒWƒ…[ƒ‹‚Æ‚µ‚ĒljÁ‚·‚éA‚Æ‚¢‚¤‚Ì‚ª Python ‚̃|ƒŠƒV[‚Å‚·B ƒm‚õ ƒž ƒgƒLˆKˆy ˜ƒüÖ üÒüæûÔ Python ¤Î³«È¯¤Ï¡¢1990 ǯ¤´¤í¤«¤é³«»Ï¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ³«È¯¼Ô¤Î Guido van Rossum ¤Ï¶µ°éÍÑ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¡ÖABC¡×¤Î³«È¯¤Ë»²²Ã¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ABC ¤Ï¼ÂÍѾå¤ÎÌÜŪ¤Ë¤Ï¤¢¤Þ¤êŬ¤·¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£ ¤³¤Î¤¿¤á¡¢Guido ¤Ï¤è¤ê¼ÂÍÑŪ¤Ê¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î³«È¯¤ò³«»Ï¤·¡¢±Ñ¹ñ BBS ÊüÁ÷¤Î¥³¥á¥Ç¥£ÈÖÁȡ֥â¥ó¥Æ¥£ ¥Ñ¥¤¥½¥ó¡×¤Î¥Õ¥¡¥ó¤Ç¤¢¤ë Guido ¤Ï¤³¤Î¸À¸ì¤ò¡ÖPython¡×¤È̾¤Å¤±¤Þ¤·¤¿¡£ ¤³¤Î¤è¤¦¤ÊÇØ·Ê¤«¤éÀ¸¤Þ¤ì¤¿ Python ¤Î¸À¸ìÀ߷פϡ¢¡Ö¥·¥ó¥×¥ë¡×¤Ç¡Ö½¬ÆÀ¤¬ÍưספȤ¤¤¦ÌÜɸ¤Ë½ÅÅÀ¤¬ÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ ¿¤¯¤Î¥¹¥¯¥ê¥×¥È·Ï¸À¸ì¤Ç¤Ï¥æ¡¼¥¶¤ÎÌÜÀè¤ÎÍøÊØÀ­¤òÍ¥À褷¤Æ¿§¡¹¤Êµ¡Ç½¤ò¸À¸ìÍ×ÁǤȤ·¤Æ¼è¤êÆþ¤ì¤ë¾ì¹ç¤¬Â¿¤¤¤Î¤Ç¤¹¤¬¡¢Python ¤Ç¤Ï¤½¤¦¤¤¤Ã¤¿¾®ºÙ¹©¤¬Äɲ䵤ì¤ë¤³¤È¤Ï¤¢¤Þ¤ê¤¢¤ê¤Þ¤»¤ó¡£ ¸À¸ì¼«ÂΤε¡Ç½¤ÏºÇ¾®¸Â¤Ë²¡¤µ¤¨¡¢É¬Íפʵ¡Ç½¤Ï³ÈÄ¥¥â¥¸¥å¡¼¥ë¤È¤·¤ÆÄɲ乤롢¤È¤¤¤¦¤Î¤¬ Python ¤Î¥Ý¥ê¥·¡¼¤Ç¤¹¡£ ¥Î¤÷ ¥þ ¥È¥­¯¬¯Ú ÏãþØ þÔþèüÖ Œc¹æ°¢ÇÏ ¼„½ÃÄݶó ¨À¨À³³!! ì×ÎúêÅÆÐ’æp±Å ¨Þ¨ÓÄR¢¯¢¯¢¯ ±àŠ– ¨Ñµ³ ¨À. . 䬿µ¨Ñ´ÉÈ . . . . ¼­¿ï·ï µ¯ÇÐëà Ê«ÄR ! ! !¤Ð.¤Ð ÈåÈåÈå ¤¡¤¡¤¡¡Ù¤Ð_¤Ð ¾îŠ ÅËÄâƒO µ®ÀÀ ¯hÎúµéëà ¨ÀµåƒO ¼³j Ê«ÄR . . . . ±¼¾Öšf ¨Ñ±Å ¨Þt¨ÂƒO ì×ìÒô¹åüñé±î£Ž ¿Í¾¬ÄR ! ! 䬿µ¨Ñ Ê«´É±Å ¡Ùß¾°ü ¾ø´É±Å´É 䬴ɵØÄR ±Û¾ÖŠÛ ¨Þ·ÁµàÎú šÃÇ´½¤ÄR ¾îŠ ì×ìÒô¹åüñéšÄ¨ïµéÚ!! ¨À¨À³³¢½ ¡Ò¡Ò* Python $B$N3+H/$O!"(B1990 $BG/$4$m$+$i3+;O$5$l$F$$$^$9!#(B $B3+H/e$NL\E*$K$O$"$^$jE,$7$F$$$^$;$s$G$7$?!#(B $B$3$N$?$a!"(BGuido $B$O$h$j$E$1$^$7$?!#(B $B$3$N$h$&$JGX7J$+$i@8$^$l$?(B Python $B$N8@8l@_7W$O!"!V%7%s%W%k!W$G!V=,F@$,MF0W!W$H$$$&L\I8$K=EE@$,CV$+$l$F$$$^$9!#(B $BB?$/$N%9%/%j%W%H7O8@8l$G$O%f!<%6$NL\@h$NMxJX@-$rM%@h$7$F?'!9$J5!G=$r8@8lMWAG$H$7$Fl9g$,B?$$$N$G$9$,!"(BPython $B$G$O$=$&$$$C$?>.:Y9)$,DI2C$5$l$k$3$H$O$"$^$j$"$j$^$;$s!#(B $B8@8l<+BN$N5!G=$O:G>.8B$K2!$5$(!"I,MW$J5!G=$O3HD%%b%8%e!<%k$H$7$FDI2C$9$k!"$H$$$&$N$,(B Python $B$N%]%j%7!<$G$9!#(B Python ã®é–‹ç™ºã¯ã€1990 å¹´ã”ã‚ã‹ã‚‰é–‹å§‹ã•れã¦ã„ã¾ã™ã€‚ 開発者㮠Guido van Rossum ã¯æ•™è‚²ç”¨ã®ãƒ—ログラミング言語「ABCã€ã®é–‹ç™ºã«å‚加ã—ã¦ã„ã¾ã—ãŸãŒã€ABC ã¯å®Ÿç”¨ä¸Šã®ç›®çš„ã«ã¯ã‚ã¾ã‚Šé©ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚ ã“ã®ãŸã‚ã€Guido ã¯ã‚ˆã‚Šå®Ÿç”¨çš„ãªãƒ—ログラミング言語ã®é–‹ç™ºã‚’é–‹å§‹ã—ã€è‹±å›½ BBS 放é€ã®ã‚³ãƒ¡ãƒ‡ã‚£ç•ªçµ„「モンティ パイソンã€ã®ãƒ•ァンã§ã‚ã‚‹ Guido ã¯ã“ã®è¨€èªžã‚’「Pythonã€ã¨åã¥ã‘ã¾ã—ãŸã€‚ ã“ã®ã‚ˆã†ãªèƒŒæ™¯ã‹ã‚‰ç”Ÿã¾ã‚ŒãŸ Python ã®è¨€èªžè¨­è¨ˆã¯ã€ã€Œã‚·ãƒ³ãƒ—ルã€ã§ã€Œç¿’å¾—ãŒå®¹æ˜“ã€ã¨ã„ã†ç›®æ¨™ã«é‡ç‚¹ãŒç½®ã‹ã‚Œã¦ã„ã¾ã™ã€‚ 多ãã®ã‚¹ã‚¯ãƒªãƒ—ト系言語ã§ã¯ãƒ¦ãƒ¼ã‚¶ã®ç›®å…ˆã®åˆ©ä¾¿æ€§ã‚’優先ã—ã¦è‰²ã€…ãªæ©Ÿèƒ½ã‚’言語è¦ç´ ã¨ã—ã¦å–り入れる場åˆãŒå¤šã„ã®ã§ã™ãŒã€Python ã§ã¯ãã†ã„ã£ãŸå°ç´°å·¥ãŒè¿½åŠ ã•れるã“ã¨ã¯ã‚ã¾ã‚Šã‚りã¾ã›ã‚“。 è¨€èªžè‡ªä½“ã®æ©Ÿèƒ½ã¯æœ€å°é™ã«æŠ¼ã•ãˆã€å¿…è¦ãªæ©Ÿèƒ½ã¯æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã—ã¦è¿½åŠ ã™ã‚‹ã€ã¨ã„ã†ã®ãŒ Python ã®ãƒãƒªã‚·ãƒ¼ã§ã™ã€‚ ノã‹ã‚š ト゚ トキ喝塀 𡚴𪎌 麀é½ð©›° ˆEˆ\Šs‹ÚØ ˆfˆbˆ§ ˆ§ˆ£ This sentence is in ASCII. The next sentence is in GB.å·±æ‰€ä¸æ¬²ï¼Œå‹¿æ–½æ–¼äººã€‚Bye. â—Ž 파ì´ì¬(Python)ì€ ë°°ìš°ê¸° 쉽고, 강력한 í”„ë¡œê·¸ëž˜ë° ì–¸ì–´ìž…ë‹ˆë‹¤. 파ì´ì¬ì€ 효율ì ì¸ 고수준 ë°ì´í„° 구조와 간단하지만 효율ì ì¸ ê°ì²´ì§€í–¥í”„로그래ë°ì„ ì§€ì›í•©ë‹ˆë‹¤. 파ì´ì¬ì˜ ìš°ì•„(優雅)한 문법과 ë™ì  타ì´í•‘, 그리고 ì¸í„°í”„리팅 í™˜ê²½ì€ íŒŒì´ì¬ì„ 스í¬ë¦½íŒ…ê³¼ 여러 분야ì—서와 ëŒ€ë¶€ë¶„ì˜ í”Œëž«í¼ì—ì„œì˜ ë¹ ë¥¸ 애플리케ì´ì…˜ ê°œë°œì„ í•  수 있는 ì´ìƒì ì¸ 언어로 만들어ì¤ë‹ˆë‹¤. ☆첫가ë: ë‚ ì•„ë¼ ì“©~ í¼! ê¸ˆì—†ì´ ì „ë‹ˆë‹¤. 그런거 다. This is a sample doctest in a text file. In this example, we'll rely on some silly setup: >>> import test.test_doctest >>> test.test_doctest.sillySetup True This test also has some (random) encoded (utf-8) unicode text: ÉÊÈàThis doesn't cause a problem in the tect surrounding the examples, but we include it here (in this test text file) to make sure. :) -- Testcases for functions in cmath. -- -- Each line takes the form: -- -- -> -- -- where: -- -- is a short name identifying the test, -- -- is the function to be tested (exp, cos, asinh, ...), -- -- is a pair of floats separated by whitespace -- representing real and imaginary parts of a complex number, and -- -- is the expected (ideal) output value, again -- represented as a pair of floats. -- -- is a list of the floating-point flags required by C99 -- -- The possible flags are: -- -- divide-by-zero : raised when a finite input gives a -- mathematically infinite result. -- -- overflow : raised when a finite input gives a finite result whose -- real or imaginary part is too large to fit in the usual range -- of an IEEE 754 double. -- -- invalid : raised for invalid inputs. -- -- ignore-real-sign : indicates that the sign of the real part of -- the result is unspecified; if the real part of the result is -- given as inf, then both -inf and inf should be accepted as -- correct. -- -- ignore-imag-sign : indicates that the sign of the imaginary part -- of the result is unspecified. -- -- Flags may appear in any order. -- -- Lines beginning with '--' (like this one) start a comment, and are -- ignored. Blank lines, or lines containing only whitespace, are also -- ignored. -- The majority of the values below were computed with the help of -- version 2.3 of the MPFR library for multiple-precision -- floating-point computations with correct rounding. All output -- values in this file are (modulo yet-to-be-discovered bugs) -- correctly rounded, provided that each input and output decimal -- floating-point value below is interpreted as a representation of -- the corresponding nearest IEEE 754 double-precision value. See the -- MPFR homepage at http://www.mpfr.org for more information about the -- MPFR project. -- A minority of the test cases were generated with the help of -- mpmath 0.19 at 100 bit accuracy (http://mpmath.org) to improve -- coverage of real functions with real-valued arguments. These are -- used in test.test_math.MathTests.test_testfile, as well as in -- test_cmath. -------------------------- -- acos: Inverse cosine -- -------------------------- -- zeros acos0000 acos 0.0 0.0 -> 1.5707963267948966 -0.0 acos0001 acos 0.0 -0.0 -> 1.5707963267948966 0.0 acos0002 acos -0.0 0.0 -> 1.5707963267948966 -0.0 acos0003 acos -0.0 -0.0 -> 1.5707963267948966 0.0 -- branch points: +/-1 acos0010 acos 1.0 0.0 -> 0.0 -0.0 acos0011 acos 1.0 -0.0 -> 0.0 0.0 acos0012 acos -1.0 0.0 -> 3.1415926535897931 -0.0 acos0013 acos -1.0 -0.0 -> 3.1415926535897931 0.0 -- values along both sides of real axis acos0020 acos -9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0 acos0021 acos -9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0 acos0022 acos -1e-305 0.0 -> 1.5707963267948966 -0.0 acos0023 acos -1e-305 -0.0 -> 1.5707963267948966 0.0 acos0024 acos -1e-150 0.0 -> 1.5707963267948966 -0.0 acos0025 acos -1e-150 -0.0 -> 1.5707963267948966 0.0 acos0026 acos -9.9999999999999998e-17 0.0 -> 1.5707963267948968 -0.0 acos0027 acos -9.9999999999999998e-17 -0.0 -> 1.5707963267948968 0.0 acos0028 acos -0.001 0.0 -> 1.5717963269615634 -0.0 acos0029 acos -0.001 -0.0 -> 1.5717963269615634 0.0 acos0030 acos -0.57899999999999996 0.0 -> 2.1882979816120667 -0.0 acos0031 acos -0.57899999999999996 -0.0 -> 2.1882979816120667 0.0 acos0032 acos -0.99999999999999989 0.0 -> 3.1415926386886319 -0.0 acos0033 acos -0.99999999999999989 -0.0 -> 3.1415926386886319 0.0 acos0034 acos -1.0000000000000002 0.0 -> 3.1415926535897931 -2.1073424255447014e-08 acos0035 acos -1.0000000000000002 -0.0 -> 3.1415926535897931 2.1073424255447014e-08 acos0036 acos -1.0009999999999999 0.0 -> 3.1415926535897931 -0.044717633608306849 acos0037 acos -1.0009999999999999 -0.0 -> 3.1415926535897931 0.044717633608306849 acos0038 acos -2.0 0.0 -> 3.1415926535897931 -1.3169578969248168 acos0039 acos -2.0 -0.0 -> 3.1415926535897931 1.3169578969248168 acos0040 acos -23.0 0.0 -> 3.1415926535897931 -3.8281684713331012 acos0041 acos -23.0 -0.0 -> 3.1415926535897931 3.8281684713331012 acos0042 acos -10000000000000000.0 0.0 -> 3.1415926535897931 -37.534508668464674 acos0043 acos -10000000000000000.0 -0.0 -> 3.1415926535897931 37.534508668464674 acos0044 acos -9.9999999999999998e+149 0.0 -> 3.1415926535897931 -346.08091112966679 acos0045 acos -9.9999999999999998e+149 -0.0 -> 3.1415926535897931 346.08091112966679 acos0046 acos -1.0000000000000001e+299 0.0 -> 3.1415926535897931 -689.16608998577965 acos0047 acos -1.0000000000000001e+299 -0.0 -> 3.1415926535897931 689.16608998577965 acos0048 acos 9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0 acos0049 acos 9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0 acos0050 acos 1e-305 0.0 -> 1.5707963267948966 -0.0 acos0051 acos 1e-305 -0.0 -> 1.5707963267948966 0.0 acos0052 acos 1e-150 0.0 -> 1.5707963267948966 -0.0 acos0053 acos 1e-150 -0.0 -> 1.5707963267948966 0.0 acos0054 acos 9.9999999999999998e-17 0.0 -> 1.5707963267948966 -0.0 acos0055 acos 9.9999999999999998e-17 -0.0 -> 1.5707963267948966 0.0 acos0056 acos 0.001 0.0 -> 1.56979632662823 -0.0 acos0057 acos 0.001 -0.0 -> 1.56979632662823 0.0 acos0058 acos 0.57899999999999996 0.0 -> 0.95329467197772655 -0.0 acos0059 acos 0.57899999999999996 -0.0 -> 0.95329467197772655 0.0 acos0060 acos 0.99999999999999989 0.0 -> 1.4901161193847656e-08 -0.0 acos0061 acos 0.99999999999999989 -0.0 -> 1.4901161193847656e-08 0.0 acos0062 acos 1.0000000000000002 0.0 -> 0.0 -2.1073424255447014e-08 acos0063 acos 1.0000000000000002 -0.0 -> 0.0 2.1073424255447014e-08 acos0064 acos 1.0009999999999999 0.0 -> 0.0 -0.044717633608306849 acos0065 acos 1.0009999999999999 -0.0 -> 0.0 0.044717633608306849 acos0066 acos 2.0 0.0 -> 0.0 -1.3169578969248168 acos0067 acos 2.0 -0.0 -> 0.0 1.3169578969248168 acos0068 acos 23.0 0.0 -> 0.0 -3.8281684713331012 acos0069 acos 23.0 -0.0 -> 0.0 3.8281684713331012 acos0070 acos 10000000000000000.0 0.0 -> 0.0 -37.534508668464674 acos0071 acos 10000000000000000.0 -0.0 -> 0.0 37.534508668464674 acos0072 acos 9.9999999999999998e+149 0.0 -> 0.0 -346.08091112966679 acos0073 acos 9.9999999999999998e+149 -0.0 -> 0.0 346.08091112966679 acos0074 acos 1.0000000000000001e+299 0.0 -> 0.0 -689.16608998577965 acos0075 acos 1.0000000000000001e+299 -0.0 -> 0.0 689.16608998577965 -- random inputs acos0100 acos -3.3307113324596682 -10.732007530863266 -> 1.8706085694482339 3.113986806554613 acos0101 acos -2863.952991743291 -2681013315.2571239 -> 1.5707973950301699 22.402607843274758 acos0102 acos -0.33072639793220088 -0.85055464658253055 -> 1.8219426895922601 0.79250166729311966 acos0103 acos -2.5722325842097802 -12.703940809821574 -> 1.7699942413107408 3.2565170156527325 acos0104 acos -42.495233785459583 -0.54039320751337161 -> 3.1288732573153304 4.4424815519735601 acos0105 acos -1.1363818625856401 9641.1325498630376 -> 1.5709141948820049 -9.8669410553254284 acos0106 acos -2.4398426824157866e-11 0.33002051890266165 -> 1.570796326818066 -0.32430578041578667 acos0107 acos -1.3521340428186552 2.9369737912076772 -> 1.9849059192339338 -1.8822893674117942 acos0108 acos -1.827364706477915 1.0355459232147557 -> 2.5732246307960032 -1.4090688267854969 acos0109 acos -0.25978373706403546 10.09712669185833 -> 1.5963940386378306 -3.0081673050196063 acos0110 acos 0.33561778471072551 -4587350.6823999118 -> 1.5707962536333251 16.031960402579539 acos0111 acos 0.49133444610998445 -0.8071422362990015 -> 1.1908761712801788 0.78573345813187867 acos0112 acos 0.42196734507823974 -2.4812965431745115 -> 1.414091186100692 1.651707260988172 acos0113 acos 2.961426210100655 -219.03295695248664 -> 1.5572768319822778 6.0824659885827304 acos0114 acos 2.886209063652641 -20.38011207220606 -> 1.4302765252297889 3.718201853147642 acos0115 acos 0.4180568075276509 1.4833433990823484 -> 1.3393834558303042 -1.2079847758301576 acos0116 acos 52.376111405924718 0.013930429001941001 -> 0.00026601761804024188 -4.6515066691204714 acos0117 acos 41637948387.625969 1.563418292894041 -> 3.7547918507883548e-11 -25.145424989809381 acos0118 acos 0.061226659122249526 0.8447234394615154 -> 1.5240280306367315 -0.76791798971140812 acos0119 acos 2.4480466420442959e+26 0.18002339201384662 -> 7.353756620564798e-28 -61.455650015996376 -- values near infinity acos0200 acos 1.6206860518683021e+308 1.0308426226285283e+308 -> 0.56650826093826223 -710.54206874241561 acos0201 acos 1.2067735875070062e+308 -1.3429173724390276e+308 -> 0.83874369390864889 710.48017794027498 acos0202 acos -7.4130145132549047e+307 1.1759130543927645e+308 -> 2.1332729346478536 -710.21871115698752 acos0203 acos -8.6329426442257249e+307 -1.2316282952184133e+308 -> 2.1821511032444838 710.29752145697148 acos0204 acos 0.0 1.4289713855849746e+308 -> 1.5707963267948966 -710.24631069738996 acos0205 acos -0.0 1.3153524545987432e+308 -> 1.5707963267948966 -710.1634604787539 acos0206 acos 0.0 -9.6229037669269321e+307 -> 1.5707963267948966 709.85091679573691 acos0207 acos -0.0 -4.9783616421107088e+307 -> 1.5707963267948966 709.19187157911233 acos0208 acos 1.3937541925739389e+308 0.0 -> 0.0 -710.22135678707264 acos0209 acos 9.1362388967371536e+307 -0.0 -> 0.0 709.79901953124613 acos0210 acos -1.3457361220697436e+308 0.0 -> 3.1415926535897931 -710.18629698871848 acos0211 acos -5.4699090056144284e+307 -0.0 -> 3.1415926535897931 709.28603271085649 acos0212 acos 1.5880716932358901e+308 5.5638401252339929 -> 3.503519487773873e-308 -710.35187633140583 acos0213 acos 1.2497211663463164e+308 -3.0456477717911024 -> 2.4370618453197486e-308 710.11227628223412 acos0214 acos -9.9016224006029528e+307 4.9570427340789056 -> 3.1415926535897931 -709.87946935229468 acos0215 acos -1.5854071066874139e+308 -4.4233577741497783 -> 3.1415926535897931 710.35019704672004 acos0216 acos 9.3674623083647628 1.5209559051877979e+308 -> 1.5707963267948966 -710.30869484491086 acos0217 acos 8.1773832021784383 -6.6093445795000056e+307 -> 1.5707963267948966 709.4752552227792 acos0218 acos -3.1845935000665104 1.5768856396650893e+308 -> 1.5707963267948966 -710.34480761042687 acos0219 acos -1.0577303880953903 -6.4574626815735613e+307 -> 1.5707963267948966 709.45200719662046 -- values near 0 acos0220 acos 1.8566986970714045e-320 3.1867234156760402e-321 -> 1.5707963267948966 -3.1867234156760402e-321 acos0221 acos 7.9050503334599447e-323 -8.8931816251424378e-323 -> 1.5707963267948966 8.8931816251424378e-323 acos0222 acos -4.4465908125712189e-323 2.4654065097222727e-311 -> 1.5707963267948966 -2.4654065097222727e-311 acos0223 acos -6.1016916408192619e-311 -2.4703282292062327e-323 -> 1.5707963267948966 2.4703282292062327e-323 acos0224 acos 0.0 3.4305783621842729e-311 -> 1.5707963267948966 -3.4305783621842729e-311 acos0225 acos -0.0 1.6117409498633145e-319 -> 1.5707963267948966 -1.6117409498633145e-319 acos0226 acos 0.0 -4.9900630229965901e-322 -> 1.5707963267948966 4.9900630229965901e-322 acos0227 acos -0.0 -4.4889279210592818e-311 -> 1.5707963267948966 4.4889279210592818e-311 acos0228 acos 5.3297678681477214e-312 0.0 -> 1.5707963267948966 -0.0 acos0229 acos 6.2073425897211614e-313 -0.0 -> 1.5707963267948966 0.0 acos0230 acos -4.9406564584124654e-324 0.0 -> 1.5707963267948966 -0.0 acos0231 acos -1.7107517052899003e-318 -0.0 -> 1.5707963267948966 0.0 -- special values acos1000 acos 0.0 0.0 -> 1.5707963267948966 -0.0 acos1001 acos 0.0 -0.0 -> 1.5707963267948966 0.0 acos1002 acos -0.0 0.0 -> 1.5707963267948966 -0.0 acos1003 acos -0.0 -0.0 -> 1.5707963267948966 0.0 acos1004 acos 0.0 nan -> 1.5707963267948966 nan acos1005 acos -0.0 nan -> 1.5707963267948966 nan acos1006 acos -2.3 inf -> 1.5707963267948966 -inf acos1007 acos -0.0 inf -> 1.5707963267948966 -inf acos1008 acos 0.0 inf -> 1.5707963267948966 -inf acos1009 acos 2.3 inf -> 1.5707963267948966 -inf acos1010 acos -2.3 nan -> nan nan acos1011 acos 2.3 nan -> nan nan acos1012 acos -inf 2.3 -> 3.1415926535897931 -inf acos1013 acos -inf 0.0 -> 3.1415926535897931 -inf acos1014 acos inf 2.3 -> 0.0 -inf acos1015 acos inf 0.0 -> 0.0 -inf acos1016 acos -inf inf -> 2.3561944901923448 -inf acos1017 acos inf inf -> 0.78539816339744828 -inf acos1018 acos inf nan -> nan inf ignore-imag-sign acos1019 acos -inf nan -> nan inf ignore-imag-sign acos1020 acos nan 0.0 -> nan nan acos1021 acos nan 2.3 -> nan nan acos1022 acos nan inf -> nan -inf acos1023 acos nan nan -> nan nan acos1024 acos -2.3 -inf -> 1.5707963267948966 inf acos1025 acos -0.0 -inf -> 1.5707963267948966 inf acos1026 acos 0.0 -inf -> 1.5707963267948966 inf acos1027 acos 2.3 -inf -> 1.5707963267948966 inf acos1028 acos -inf -2.3 -> 3.1415926535897931 inf acos1029 acos -inf -0.0 -> 3.1415926535897931 inf acos1030 acos inf -2.3 -> 0.0 inf acos1031 acos inf -0.0 -> 0.0 inf acos1032 acos -inf -inf -> 2.3561944901923448 inf acos1033 acos inf -inf -> 0.78539816339744828 inf acos1034 acos nan -0.0 -> nan nan acos1035 acos nan -2.3 -> nan nan acos1036 acos nan -inf -> nan inf -------------------------------------- -- acosh: Inverse hyperbolic cosine -- -------------------------------------- -- zeros acosh0000 acosh 0.0 0.0 -> 0.0 1.5707963267948966 acosh0001 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966 acosh0002 acosh -0.0 0.0 -> 0.0 1.5707963267948966 acosh0003 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966 -- branch points: +/-1 acosh0010 acosh 1.0 0.0 -> 0.0 0.0 acosh0011 acosh 1.0 -0.0 -> 0.0 -0.0 acosh0012 acosh -1.0 0.0 -> 0.0 3.1415926535897931 acosh0013 acosh -1.0 -0.0 -> 0.0 -3.1415926535897931 -- values along both sides of real axis acosh0020 acosh -9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966 acosh0021 acosh -9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966 acosh0022 acosh -1e-305 0.0 -> 0.0 1.5707963267948966 acosh0023 acosh -1e-305 -0.0 -> 0.0 -1.5707963267948966 acosh0024 acosh -1e-150 0.0 -> 0.0 1.5707963267948966 acosh0025 acosh -1e-150 -0.0 -> 0.0 -1.5707963267948966 acosh0026 acosh -9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948968 acosh0027 acosh -9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948968 acosh0028 acosh -0.001 0.0 -> 0.0 1.5717963269615634 acosh0029 acosh -0.001 -0.0 -> 0.0 -1.5717963269615634 acosh0030 acosh -0.57899999999999996 0.0 -> 0.0 2.1882979816120667 acosh0031 acosh -0.57899999999999996 -0.0 -> 0.0 -2.1882979816120667 acosh0032 acosh -0.99999999999999989 0.0 -> 0.0 3.1415926386886319 acosh0033 acosh -0.99999999999999989 -0.0 -> 0.0 -3.1415926386886319 acosh0034 acosh -1.0000000000000002 0.0 -> 2.1073424255447014e-08 3.1415926535897931 acosh0035 acosh -1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -3.1415926535897931 acosh0036 acosh -1.0009999999999999 0.0 -> 0.044717633608306849 3.1415926535897931 acosh0037 acosh -1.0009999999999999 -0.0 -> 0.044717633608306849 -3.1415926535897931 acosh0038 acosh -2.0 0.0 -> 1.3169578969248168 3.1415926535897931 acosh0039 acosh -2.0 -0.0 -> 1.3169578969248168 -3.1415926535897931 acosh0040 acosh -23.0 0.0 -> 3.8281684713331012 3.1415926535897931 acosh0041 acosh -23.0 -0.0 -> 3.8281684713331012 -3.1415926535897931 acosh0042 acosh -10000000000000000.0 0.0 -> 37.534508668464674 3.1415926535897931 acosh0043 acosh -10000000000000000.0 -0.0 -> 37.534508668464674 -3.1415926535897931 acosh0044 acosh -9.9999999999999998e+149 0.0 -> 346.08091112966679 3.1415926535897931 acosh0045 acosh -9.9999999999999998e+149 -0.0 -> 346.08091112966679 -3.1415926535897931 acosh0046 acosh -1.0000000000000001e+299 0.0 -> 689.16608998577965 3.1415926535897931 acosh0047 acosh -1.0000000000000001e+299 -0.0 -> 689.16608998577965 -3.1415926535897931 acosh0048 acosh 9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966 acosh0049 acosh 9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966 acosh0050 acosh 1e-305 0.0 -> 0.0 1.5707963267948966 acosh0051 acosh 1e-305 -0.0 -> 0.0 -1.5707963267948966 acosh0052 acosh 1e-150 0.0 -> 0.0 1.5707963267948966 acosh0053 acosh 1e-150 -0.0 -> 0.0 -1.5707963267948966 acosh0054 acosh 9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948966 acosh0055 acosh 9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948966 acosh0056 acosh 0.001 0.0 -> 0.0 1.56979632662823 acosh0057 acosh 0.001 -0.0 -> 0.0 -1.56979632662823 acosh0058 acosh 0.57899999999999996 0.0 -> 0.0 0.95329467197772655 acosh0059 acosh 0.57899999999999996 -0.0 -> 0.0 -0.95329467197772655 acosh0060 acosh 0.99999999999999989 0.0 -> 0.0 1.4901161193847656e-08 acosh0061 acosh 0.99999999999999989 -0.0 -> 0.0 -1.4901161193847656e-08 acosh0062 acosh 1.0000000000000002 0.0 -> 2.1073424255447014e-08 0.0 acosh0063 acosh 1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -0.0 acosh0064 acosh 1.0009999999999999 0.0 -> 0.044717633608306849 0.0 acosh0065 acosh 1.0009999999999999 -0.0 -> 0.044717633608306849 -0.0 acosh0066 acosh 2.0 0.0 -> 1.3169578969248168 0.0 acosh0067 acosh 2.0 -0.0 -> 1.3169578969248168 -0.0 acosh0068 acosh 23.0 0.0 -> 3.8281684713331012 0.0 acosh0069 acosh 23.0 -0.0 -> 3.8281684713331012 -0.0 acosh0070 acosh 10000000000000000.0 0.0 -> 37.534508668464674 0.0 acosh0071 acosh 10000000000000000.0 -0.0 -> 37.534508668464674 -0.0 acosh0072 acosh 9.9999999999999998e+149 0.0 -> 346.08091112966679 0.0 acosh0073 acosh 9.9999999999999998e+149 -0.0 -> 346.08091112966679 -0.0 acosh0074 acosh 1.0000000000000001e+299 0.0 -> 689.16608998577965 0.0 acosh0075 acosh 1.0000000000000001e+299 -0.0 -> 689.16608998577965 -0.0 -- random inputs acosh0100 acosh -1.4328589581250843 -1.8370347775558309 -> 1.5526962646549587 -2.190250168435786 acosh0101 acosh -0.31075819156220957 -1.0772555786839297 -> 0.95139168286193709 -1.7812228089636479 acosh0102 acosh -1.9044776578070453 -20.485370158932124 -> 3.7177411088932359 -1.6633888745861227 acosh0103 acosh -0.075642506000858742 -21965976320.873051 -> 24.505907742881991 -1.5707963267983402 acosh0104 acosh -1.6162271181056307 -3.0369343458696099 -> 1.9407057262861227 -2.0429549461750209 acosh0105 acosh -0.3103780280298063 0.00018054880018078987 -> 0.00018992877058761416 1.886386995096728 acosh0106 acosh -9159468751.5897655 5.8014747664273649 -> 23.631201197959193 3.1415926529564078 acosh0107 acosh -0.037739157550933884 0.21841357493510705 -> 0.21685844960602488 1.6076735133449402 acosh0108 acosh -8225991.0508394297 0.28318543008913644 -> 16.615956520420287 3.1415926191641019 acosh0109 acosh -35.620070502302639 0.31303237005015 -> 4.2658980006943965 3.1328013255541873 acosh0110 acosh 96.729939906820917 -0.029345228372365334 -> 5.2650434775863548 -0.00030338895866972843 acosh0111 acosh 0.59656024007966491 -2.0412294654163978 -> 1.4923002024287835 -1.312568421900338 acosh0112 acosh 109.29384112677828 -0.00015454863061533812 -> 5.3871662961545477 -1.4141245154061214e-06 acosh0113 acosh 8.6705651969361597 -3.6723631649787465 -> 2.9336180958363545 -0.40267362031872861 acosh0114 acosh 1.8101646445052686 -0.012345132721855478 -> 1.1997148566285769 -0.0081813912760150265 acosh0115 acosh 52.56897195025288 0.001113916065985443 -> 4.6551827622264135 2.1193445872040307e-05 acosh0116 acosh 0.28336786164214739 355643992457.40485 -> 27.290343226816528 1.5707963267940999 acosh0117 acosh 0.73876621291911437 2.8828594541104322e-20 -> 4.2774820978159067e-20 0.73955845836827927 acosh0118 acosh 0.025865471781718878 37125746064318.492 -> 31.938478989418012 1.5707963267948959 acosh0119 acosh 2.2047353511780132 0.074712248143489271 -> 1.4286403248698021 0.037997904971626598 -- values near infinity acosh0200 acosh 8.1548592876467785e+307 9.0943779335951128e+307 -> 710.08944620800605 0.83981165425478954 acosh0201 acosh 1.4237229680972531e+308 -1.0336966617874858e+308 -> 710.4543331094759 -0.6279972876348755 acosh0202 acosh -1.5014526899738939e+308 1.5670700378448792e+308 -> 710.66420706795464 2.3348137299106697 acosh0203 acosh -1.0939040375213928e+308 -1.0416960351127978e+308 -> 710.30182863115886 -2.380636147787027 acosh0204 acosh 0.0 1.476062433559588e+308 -> 710.27873384716929 1.5707963267948966 acosh0205 acosh -0.0 6.2077210326221094e+307 -> 709.41256457484769 1.5707963267948966 acosh0206 acosh 0.0 -1.5621899909968308e+308 -> 710.33544449990734 -1.5707963267948966 acosh0207 acosh -0.0 -8.3556624833839122e+307 -> 709.70971018048317 -1.5707963267948966 acosh0208 acosh 1.3067079752499342e+308 0.0 -> 710.15686680107228 0.0 acosh0209 acosh 1.5653640340214026e+308 -0.0 -> 710.33747422926706 -0.0 acosh0210 acosh -6.9011375992290636e+307 0.0 -> 709.51845699719922 3.1415926535897931 acosh0211 acosh -9.9539576809926973e+307 -0.0 -> 709.88474095870185 -3.1415926535897931 acosh0212 acosh 7.6449598518914925e+307 9.5706540768268358 -> 709.62081731754802 1.2518906916769345e-307 acosh0213 acosh 5.4325410972602197e+307 -7.8064807816522706 -> 709.279177727925 -1.4369851312471974e-307 acosh0214 acosh -1.1523626112360465e+308 7.0617510038869336 -> 710.03117010216909 3.1415926535897931 acosh0215 acosh -1.1685027786862599e+308 -5.1568558357925625 -> 710.04507907571417 -3.1415926535897931 acosh0216 acosh 3.0236370339788721 1.7503248720096417e+308 -> 710.44915723458064 1.5707963267948966 acosh0217 acosh 6.6108007926031149 -9.1469968225806149e+307 -> 709.80019633903328 -1.5707963267948966 acosh0218 acosh -5.1096262905623959 6.4484926785412395e+307 -> 709.45061713997973 1.5707963267948966 acosh0219 acosh -2.8080920608735846 -1.7716118836519368e+308 -> 710.46124562363445 -1.5707963267948966 -- values near 0 acosh0220 acosh 4.5560530326699304e-317 7.3048989121436657e-318 -> 7.3048989121436657e-318 1.5707963267948966 acosh0221 acosh 4.8754274133585331e-314 -9.8469794897684199e-315 -> 9.8469794897684199e-315 -1.5707963267948966 acosh0222 acosh -4.6748876009960097e-312 9.7900342887557606e-318 -> 9.7900342887557606e-318 1.5707963267948966 acosh0223 acosh -4.3136871538399236e-320 -4.9406564584124654e-323 -> 4.9406564584124654e-323 -1.5707963267948966 acosh0224 acosh 0.0 4.3431013866496774e-314 -> 4.3431013866496774e-314 1.5707963267948966 acosh0225 acosh -0.0 6.0147334335829184e-317 -> 6.0147334335829184e-317 1.5707963267948966 acosh0226 acosh 0.0 -1.2880291387081297e-320 -> 1.2880291387081297e-320 -1.5707963267948966 acosh0227 acosh -0.0 -1.4401563976534621e-317 -> 1.4401563976534621e-317 -1.5707963267948966 acosh0228 acosh 1.3689680570863091e-313 0.0 -> 0.0 1.5707963267948966 acosh0229 acosh 1.5304346893494371e-312 -0.0 -> 0.0 -1.5707963267948966 acosh0230 acosh -3.7450175954766488e-320 0.0 -> 0.0 1.5707963267948966 acosh0231 acosh -8.4250563080885801e-311 -0.0 -> 0.0 -1.5707963267948966 -- special values acosh1000 acosh 0.0 0.0 -> 0.0 1.5707963267948966 acosh1001 acosh -0.0 0.0 -> 0.0 1.5707963267948966 acosh1002 acosh 0.0 inf -> inf 1.5707963267948966 acosh1003 acosh 2.3 inf -> inf 1.5707963267948966 acosh1004 acosh -0.0 inf -> inf 1.5707963267948966 acosh1005 acosh -2.3 inf -> inf 1.5707963267948966 acosh1006 acosh 0.0 nan -> nan nan acosh1007 acosh 2.3 nan -> nan nan acosh1008 acosh -0.0 nan -> nan nan acosh1009 acosh -2.3 nan -> nan nan acosh1010 acosh -inf 0.0 -> inf 3.1415926535897931 acosh1011 acosh -inf 2.3 -> inf 3.1415926535897931 acosh1012 acosh inf 0.0 -> inf 0.0 acosh1013 acosh inf 2.3 -> inf 0.0 acosh1014 acosh -inf inf -> inf 2.3561944901923448 acosh1015 acosh inf inf -> inf 0.78539816339744828 acosh1016 acosh inf nan -> inf nan acosh1017 acosh -inf nan -> inf nan acosh1018 acosh nan 0.0 -> nan nan acosh1019 acosh nan 2.3 -> nan nan acosh1020 acosh nan inf -> inf nan acosh1021 acosh nan nan -> nan nan acosh1022 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966 acosh1023 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966 acosh1024 acosh 0.0 -inf -> inf -1.5707963267948966 acosh1025 acosh 2.3 -inf -> inf -1.5707963267948966 acosh1026 acosh -0.0 -inf -> inf -1.5707963267948966 acosh1027 acosh -2.3 -inf -> inf -1.5707963267948966 acosh1028 acosh -inf -0.0 -> inf -3.1415926535897931 acosh1029 acosh -inf -2.3 -> inf -3.1415926535897931 acosh1030 acosh inf -0.0 -> inf -0.0 acosh1031 acosh inf -2.3 -> inf -0.0 acosh1032 acosh -inf -inf -> inf -2.3561944901923448 acosh1033 acosh inf -inf -> inf -0.78539816339744828 acosh1034 acosh nan -0.0 -> nan nan acosh1035 acosh nan -2.3 -> nan nan acosh1036 acosh nan -inf -> inf nan ------------------------ -- asin: Inverse sine -- ------------------------ -- zeros asin0000 asin 0.0 0.0 -> 0.0 0.0 asin0001 asin 0.0 -0.0 -> 0.0 -0.0 asin0002 asin -0.0 0.0 -> -0.0 0.0 asin0003 asin -0.0 -0.0 -> -0.0 -0.0 -- branch points: +/-1 asin0010 asin 1.0 0.0 -> 1.5707963267948966 0.0 asin0011 asin 1.0 -0.0 -> 1.5707963267948966 -0.0 asin0012 asin -1.0 0.0 -> -1.5707963267948966 0.0 asin0013 asin -1.0 -0.0 -> -1.5707963267948966 -0.0 -- values along both sides of real axis asin0020 asin -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0 asin0021 asin -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0 asin0022 asin -1e-305 0.0 -> -1e-305 0.0 asin0023 asin -1e-305 -0.0 -> -1e-305 -0.0 asin0024 asin -1e-150 0.0 -> -1e-150 0.0 asin0025 asin -1e-150 -0.0 -> -1e-150 -0.0 asin0026 asin -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0 asin0027 asin -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0 asin0028 asin -0.001 0.0 -> -0.0010000001666667416 0.0 asin0029 asin -0.001 -0.0 -> -0.0010000001666667416 -0.0 asin0030 asin -0.57899999999999996 0.0 -> -0.61750165481717001 0.0 asin0031 asin -0.57899999999999996 -0.0 -> -0.61750165481717001 -0.0 asin0032 asin -0.99999999999999989 0.0 -> -1.5707963118937354 0.0 asin0033 asin -0.99999999999999989 -0.0 -> -1.5707963118937354 -0.0 asin0034 asin -1.0000000000000002 0.0 -> -1.5707963267948966 2.1073424255447014e-08 asin0035 asin -1.0000000000000002 -0.0 -> -1.5707963267948966 -2.1073424255447014e-08 asin0036 asin -1.0009999999999999 0.0 -> -1.5707963267948966 0.044717633608306849 asin0037 asin -1.0009999999999999 -0.0 -> -1.5707963267948966 -0.044717633608306849 asin0038 asin -2.0 0.0 -> -1.5707963267948966 1.3169578969248168 asin0039 asin -2.0 -0.0 -> -1.5707963267948966 -1.3169578969248168 asin0040 asin -23.0 0.0 -> -1.5707963267948966 3.8281684713331012 asin0041 asin -23.0 -0.0 -> -1.5707963267948966 -3.8281684713331012 asin0042 asin -10000000000000000.0 0.0 -> -1.5707963267948966 37.534508668464674 asin0043 asin -10000000000000000.0 -0.0 -> -1.5707963267948966 -37.534508668464674 asin0044 asin -9.9999999999999998e+149 0.0 -> -1.5707963267948966 346.08091112966679 asin0045 asin -9.9999999999999998e+149 -0.0 -> -1.5707963267948966 -346.08091112966679 asin0046 asin -1.0000000000000001e+299 0.0 -> -1.5707963267948966 689.16608998577965 asin0047 asin -1.0000000000000001e+299 -0.0 -> -1.5707963267948966 -689.16608998577965 asin0048 asin 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0 asin0049 asin 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0 asin0050 asin 1e-305 0.0 -> 1e-305 0.0 asin0051 asin 1e-305 -0.0 -> 1e-305 -0.0 asin0052 asin 1e-150 0.0 -> 1e-150 0.0 asin0053 asin 1e-150 -0.0 -> 1e-150 -0.0 asin0054 asin 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0 asin0055 asin 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0 asin0056 asin 0.001 0.0 -> 0.0010000001666667416 0.0 asin0057 asin 0.001 -0.0 -> 0.0010000001666667416 -0.0 asin0058 asin 0.57899999999999996 0.0 -> 0.61750165481717001 0.0 asin0059 asin 0.57899999999999996 -0.0 -> 0.61750165481717001 -0.0 asin0060 asin 0.99999999999999989 0.0 -> 1.5707963118937354 0.0 asin0061 asin 0.99999999999999989 -0.0 -> 1.5707963118937354 -0.0 asin0062 asin 1.0000000000000002 0.0 -> 1.5707963267948966 2.1073424255447014e-08 asin0063 asin 1.0000000000000002 -0.0 -> 1.5707963267948966 -2.1073424255447014e-08 asin0064 asin 1.0009999999999999 0.0 -> 1.5707963267948966 0.044717633608306849 asin0065 asin 1.0009999999999999 -0.0 -> 1.5707963267948966 -0.044717633608306849 asin0066 asin 2.0 0.0 -> 1.5707963267948966 1.3169578969248168 asin0067 asin 2.0 -0.0 -> 1.5707963267948966 -1.3169578969248168 asin0068 asin 23.0 0.0 -> 1.5707963267948966 3.8281684713331012 asin0069 asin 23.0 -0.0 -> 1.5707963267948966 -3.8281684713331012 asin0070 asin 10000000000000000.0 0.0 -> 1.5707963267948966 37.534508668464674 asin0071 asin 10000000000000000.0 -0.0 -> 1.5707963267948966 -37.534508668464674 asin0072 asin 9.9999999999999998e+149 0.0 -> 1.5707963267948966 346.08091112966679 asin0073 asin 9.9999999999999998e+149 -0.0 -> 1.5707963267948966 -346.08091112966679 asin0074 asin 1.0000000000000001e+299 0.0 -> 1.5707963267948966 689.16608998577965 asin0075 asin 1.0000000000000001e+299 -0.0 -> 1.5707963267948966 -689.16608998577965 -- random inputs asin0100 asin -1.5979555835086083 -0.15003009814595247 -> -1.4515369557405788 -1.0544476399790823 asin0101 asin -0.57488225895317679 -9.6080397838952743e-13 -> -0.61246024460412851 -1.174238005400403e-12 asin0102 asin -3.6508087930516249 -0.36027527093220152 -> -1.4685890605305874 -1.9742273007152038 asin0103 asin -1.5238659792326819 -1.1360813516996364 -> -0.86080051691147275 -1.3223742205689195 asin0104 asin -1592.0639045555306 -0.72362427935018236 -> -1.5703418071175179 -8.0659336918729228 asin0105 asin -0.19835471371312019 4.2131508416697709 -> -0.045777831019935149 2.1461732751933171 asin0106 asin -1.918471054430213 0.40603305079779234 -> -1.3301396585791556 1.30263642314981 asin0107 asin -254495.01623373642 0.71084414434470822 -> -1.5707935336394359 13.140183712762321 asin0108 asin -0.31315882715691157 3.9647994288429866 -> -0.076450403840916004 2.0889762138713457 asin0109 asin -0.90017064284720816 1.2530659485907105 -> -0.53466509741943447 1.1702811557577 asin0110 asin 2.1615181696571075 -0.14058647488229523 -> 1.4976166323896871 -1.4085811039334604 asin0111 asin 1.2104749210707795 -0.85732484485298999 -> 0.83913071588343924 -1.0681719250525901 asin0112 asin 1.7059733185128891 -0.84032966373156581 -> 1.0510900815816229 -1.2967979791361652 asin0113 asin 9.9137085017290687 -1.4608383970250893 -> 1.4237704820128891 -2.995414677560686 asin0114 asin 117.12344751041495 -5453908091.5334015 -> 2.1475141411392012e-08 -23.112745450217066 asin0115 asin 0.081041187798029227 0.067054349860173196 -> 0.080946786856771813 0.067223991060639698 asin0116 asin 46.635472322049949 2.3835190718056678 -> 1.5197194940010779 4.5366989600972083 asin0117 asin 3907.0687961127105 19.144021886390181 -> 1.5658965233083235 8.9637018715924217 asin0118 asin 1.0889312322308273 509.01577883554768 -> 0.0021392803817829316 6.9256294494524706 asin0119 asin 0.10851518277509224 1.5612510908217476 -> 0.058491014243902621 1.2297075725621327 -- values near infinity asin0200 asin 1.5230241998821499e+308 5.5707228994084525e+307 -> 1.2201446370892068 710.37283486535966 asin0201 asin 8.1334317698672204e+307 -9.2249425197872451e+307 -> 0.72259991284020042 -710.0962453049026 asin0202 asin -9.9138506659241768e+307 6.701544526434995e+307 -> -0.97637511742194594 710.06887486671371 asin0203 asin -1.4141298868173842e+308 -5.401505134514191e+307 -> -1.2059319055160587 -710.30396478954628 asin0204 asin 0.0 9.1618092977897431e+307 -> 0.0 709.80181441050593 asin0205 asin -0.0 6.8064342551939755e+307 -> -0.0 709.50463910853489 asin0206 asin 0.0 -6.4997516454798215e+307 -> 0.0 -709.45853469751592 asin0207 asin -0.0 -1.6767449053345242e+308 -> -0.0 -710.4062101803022 asin0208 asin 5.4242749957378916e+307 0.0 -> 1.5707963267948966 709.27765497888902 asin0209 asin 9.5342145121164749e+307 -0.0 -> 1.5707963267948966 -709.84165758595907 asin0210 asin -7.0445698006201847e+307 0.0 -> -1.5707963267948966 709.53902780872136 asin0211 asin -1.0016025569769706e+308 -0.0 -> -1.5707963267948966 -709.89095709697881 asin0212 asin 1.6552203778877204e+308 0.48761543336249491 -> 1.5707963267948966 710.39328998153474 asin0213 asin 1.2485712830384869e+308 -4.3489311161278899 -> 1.5707963267948966 -710.1113557467786 asin0214 asin -1.5117842813353125e+308 5.123452666102434 -> -1.5707963267948966 710.30264641923031 asin0215 asin -1.3167634313008016e+308 -0.52939679793528982 -> -1.5707963267948966 -710.16453260239768 asin0216 asin 0.80843929176985907 1.0150851827767876e+308 -> 7.9642507396113875e-309 709.90432835561637 asin0217 asin 8.2544809829680901 -1.7423548140539474e+308 -> 4.7375430746865733e-308 -710.44459336242164 asin0218 asin -5.2499000118824295 4.6655578977512214e+307 -> -1.1252459249113292e-307 709.1269781491103 asin0219 asin -5.9904782760833433 -4.7315689314781163e+307 -> -1.2660659419394637e-307 -709.14102757522312 -- special values asin1000 asin -0.0 0.0 -> -0.0 0.0 asin1001 asin 0.0 0.0 -> 0.0 0.0 asin1002 asin -0.0 -0.0 -> -0.0 -0.0 asin1003 asin 0.0 -0.0 -> 0.0 -0.0 asin1004 asin -inf 0.0 -> -1.5707963267948966 inf asin1005 asin -inf 2.2999999999999998 -> -1.5707963267948966 inf asin1006 asin nan 0.0 -> nan nan asin1007 asin nan 2.2999999999999998 -> nan nan asin1008 asin -0.0 inf -> -0.0 inf asin1009 asin -2.2999999999999998 inf -> -0.0 inf asin1010 asin -inf inf -> -0.78539816339744828 inf asin1011 asin nan inf -> nan inf asin1012 asin -0.0 nan -> -0.0 nan asin1013 asin -2.2999999999999998 nan -> nan nan asin1014 asin -inf nan -> nan inf ignore-imag-sign asin1015 asin nan nan -> nan nan asin1016 asin inf 0.0 -> 1.5707963267948966 inf asin1017 asin inf 2.2999999999999998 -> 1.5707963267948966 inf asin1018 asin 0.0 inf -> 0.0 inf asin1019 asin 2.2999999999999998 inf -> 0.0 inf asin1020 asin inf inf -> 0.78539816339744828 inf asin1021 asin 0.0 nan -> 0.0 nan asin1022 asin 2.2999999999999998 nan -> nan nan asin1023 asin inf nan -> nan inf ignore-imag-sign asin1024 asin inf -0.0 -> 1.5707963267948966 -inf asin1025 asin inf -2.2999999999999998 -> 1.5707963267948966 -inf asin1026 asin nan -0.0 -> nan nan asin1027 asin nan -2.2999999999999998 -> nan nan asin1028 asin 0.0 -inf -> 0.0 -inf asin1029 asin 2.2999999999999998 -inf -> 0.0 -inf asin1030 asin inf -inf -> 0.78539816339744828 -inf asin1031 asin nan -inf -> nan -inf asin1032 asin -inf -0.0 -> -1.5707963267948966 -inf asin1033 asin -inf -2.2999999999999998 -> -1.5707963267948966 -inf asin1034 asin -0.0 -inf -> -0.0 -inf asin1035 asin -2.2999999999999998 -inf -> -0.0 -inf asin1036 asin -inf -inf -> -0.78539816339744828 -inf ------------------------------------ -- asinh: Inverse hyperbolic sine -- ------------------------------------ -- zeros asinh0000 asinh 0.0 0.0 -> 0.0 0.0 asinh0001 asinh 0.0 -0.0 -> 0.0 -0.0 asinh0002 asinh -0.0 0.0 -> -0.0 0.0 asinh0003 asinh -0.0 -0.0 -> -0.0 -0.0 -- branch points: +/-i asinh0010 asinh 0.0 1.0 -> 0.0 1.5707963267948966 asinh0011 asinh 0.0 -1.0 -> 0.0 -1.5707963267948966 asinh0012 asinh -0.0 1.0 -> -0.0 1.5707963267948966 asinh0013 asinh -0.0 -1.0 -> -0.0 -1.5707963267948966 -- values along both sides of imaginary axis asinh0020 asinh 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324 asinh0021 asinh -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324 asinh0022 asinh 0.0 -1e-305 -> 0.0 -1e-305 asinh0023 asinh -0.0 -1e-305 -> -0.0 -1e-305 asinh0024 asinh 0.0 -1e-150 -> 0.0 -1e-150 asinh0025 asinh -0.0 -1e-150 -> -0.0 -1e-150 asinh0026 asinh 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17 asinh0027 asinh -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17 asinh0028 asinh 0.0 -0.001 -> 0.0 -0.0010000001666667416 asinh0029 asinh -0.0 -0.001 -> -0.0 -0.0010000001666667416 asinh0030 asinh 0.0 -0.57899999999999996 -> 0.0 -0.61750165481717001 asinh0031 asinh -0.0 -0.57899999999999996 -> -0.0 -0.61750165481717001 asinh0032 asinh 0.0 -0.99999999999999989 -> 0.0 -1.5707963118937354 asinh0033 asinh -0.0 -0.99999999999999989 -> -0.0 -1.5707963118937354 asinh0034 asinh 0.0 -1.0000000000000002 -> 2.1073424255447014e-08 -1.5707963267948966 asinh0035 asinh -0.0 -1.0000000000000002 -> -2.1073424255447014e-08 -1.5707963267948966 asinh0036 asinh 0.0 -1.0009999999999999 -> 0.044717633608306849 -1.5707963267948966 asinh0037 asinh -0.0 -1.0009999999999999 -> -0.044717633608306849 -1.5707963267948966 asinh0038 asinh 0.0 -2.0 -> 1.3169578969248168 -1.5707963267948966 asinh0039 asinh -0.0 -2.0 -> -1.3169578969248168 -1.5707963267948966 asinh0040 asinh 0.0 -20.0 -> 3.6882538673612966 -1.5707963267948966 asinh0041 asinh -0.0 -20.0 -> -3.6882538673612966 -1.5707963267948966 asinh0042 asinh 0.0 -10000000000000000.0 -> 37.534508668464674 -1.5707963267948966 asinh0043 asinh -0.0 -10000000000000000.0 -> -37.534508668464674 -1.5707963267948966 asinh0044 asinh 0.0 -9.9999999999999998e+149 -> 346.08091112966679 -1.5707963267948966 asinh0045 asinh -0.0 -9.9999999999999998e+149 -> -346.08091112966679 -1.5707963267948966 asinh0046 asinh 0.0 -1.0000000000000001e+299 -> 689.16608998577965 -1.5707963267948966 asinh0047 asinh -0.0 -1.0000000000000001e+299 -> -689.16608998577965 -1.5707963267948966 asinh0048 asinh 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324 asinh0049 asinh -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324 asinh0050 asinh 0.0 1e-305 -> 0.0 1e-305 asinh0051 asinh -0.0 1e-305 -> -0.0 1e-305 asinh0052 asinh 0.0 1e-150 -> 0.0 1e-150 asinh0053 asinh -0.0 1e-150 -> -0.0 1e-150 asinh0054 asinh 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17 asinh0055 asinh -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17 asinh0056 asinh 0.0 0.001 -> 0.0 0.0010000001666667416 asinh0057 asinh -0.0 0.001 -> -0.0 0.0010000001666667416 asinh0058 asinh 0.0 0.57899999999999996 -> 0.0 0.61750165481717001 asinh0059 asinh -0.0 0.57899999999999996 -> -0.0 0.61750165481717001 asinh0060 asinh 0.0 0.99999999999999989 -> 0.0 1.5707963118937354 asinh0061 asinh -0.0 0.99999999999999989 -> -0.0 1.5707963118937354 asinh0062 asinh 0.0 1.0000000000000002 -> 2.1073424255447014e-08 1.5707963267948966 asinh0063 asinh -0.0 1.0000000000000002 -> -2.1073424255447014e-08 1.5707963267948966 asinh0064 asinh 0.0 1.0009999999999999 -> 0.044717633608306849 1.5707963267948966 asinh0065 asinh -0.0 1.0009999999999999 -> -0.044717633608306849 1.5707963267948966 asinh0066 asinh 0.0 2.0 -> 1.3169578969248168 1.5707963267948966 asinh0067 asinh -0.0 2.0 -> -1.3169578969248168 1.5707963267948966 asinh0068 asinh 0.0 20.0 -> 3.6882538673612966 1.5707963267948966 asinh0069 asinh -0.0 20.0 -> -3.6882538673612966 1.5707963267948966 asinh0070 asinh 0.0 10000000000000000.0 -> 37.534508668464674 1.5707963267948966 asinh0071 asinh -0.0 10000000000000000.0 -> -37.534508668464674 1.5707963267948966 asinh0072 asinh 0.0 9.9999999999999998e+149 -> 346.08091112966679 1.5707963267948966 asinh0073 asinh -0.0 9.9999999999999998e+149 -> -346.08091112966679 1.5707963267948966 asinh0074 asinh 0.0 1.0000000000000001e+299 -> 689.16608998577965 1.5707963267948966 asinh0075 asinh -0.0 1.0000000000000001e+299 -> -689.16608998577965 1.5707963267948966 -- random inputs asinh0100 asinh -0.5946402853710423 -0.044506548910000145 -> -0.56459775392653022 -0.038256221441536356 asinh0101 asinh -0.19353958046180916 -0.017489624793193454 -> -0.19237926804196651 -0.017171741895336792 asinh0102 asinh -0.033117585138955893 -8.5256414015933757 -> -2.8327758348650969 -1.5668848791092411 asinh0103 asinh -1.5184043184035716 -0.73491245339073275 -> -1.2715891419764005 -0.39204624408542355 asinh0104 asinh -0.60716120271208818 -0.28900743958436542 -> -0.59119299421187232 -0.24745931678118135 asinh0105 asinh -0.0237177865112429 2.8832601052166313 -> -1.7205820772413236 1.5620261702963094 asinh0106 asinh -2.3906812342743979 2.6349216848574013 -> -1.9609636249445124 0.8142142660574706 asinh0107 asinh -0.0027605019787620517 183.85588476550555 -> -5.9072920005445066 1.5707813120847871 asinh0108 asinh -0.99083661164404713 0.028006797051617648 -> -0.8750185251283995 0.019894099615994653 asinh0109 asinh -3.0362951937986393 0.86377266758504867 -> -1.8636030714685221 0.26475058859950168 asinh0110 asinh 0.34438464536152769 -0.71603790174885029 -> 0.43985415690734164 -0.71015037409294324 asinh0111 asinh 4.4925124413876256 -60604595352.871613 -> 25.520783738612078 -1.5707963267207683 asinh0112 asinh 2.3213991428170337 -7.5459667007307258 -> 2.7560464993451643 -1.270073210856117 asinh0113 asinh 0.21291939741682028 -1.2720428814784408 -> 0.77275088137338266 -1.3182099250896895 asinh0114 asinh 6.6447359379455957 -0.97196191666946996 -> 2.602830695139672 -0.14368247412319965 asinh0115 asinh 7.1326256655083746 2.1516360452706857 -> 2.7051146374367212 0.29051701669727581 asinh0116 asinh 0.18846550905063442 3.4705348585339832 -> 1.917697875799296 1.514155593347924 asinh0117 asinh 0.19065075303281598 0.26216814548222012 -> 0.19603050785932474 0.26013422809614117 asinh0118 asinh 2.0242004665739719 0.70510281647495787 -> 1.4970366212896002 0.30526007200481453 asinh0119 asinh 37.336596461576057 717.29157391678234 -> 7.269981997945294 1.5187910219576033 -- values near infinity asinh0200 asinh 1.0760517500874541e+308 1.1497786241240167e+308 -> 710.34346055651815 0.81850936961793475 asinh0201 asinh 1.1784839328845529e+308 -1.6478429586716638e+308 -> 710.59536255783678 -0.94996311735607697 asinh0202 asinh -4.8777682248909193e+307 1.4103736217538474e+308 -> -710.28970147376992 1.2378239519096443 asinh0203 asinh -1.2832478903233108e+308 -1.5732392613155698e+308 -> -710.59750164290745 -0.88657181439322452 asinh0204 asinh 0.0 6.8431383856345372e+307 -> 709.51001718444604 1.5707963267948966 asinh0205 asinh -0.0 8.601822432238051e+307 -> -709.73874482126689 1.5707963267948966 asinh0206 asinh 0.0 -5.5698396067303782e+307 -> 709.30413698733742 -1.5707963267948966 asinh0207 asinh -0.0 -7.1507777734621804e+307 -> -709.55399186002705 -1.5707963267948966 asinh0208 asinh 1.6025136110019349e+308 0.0 -> 710.3609292261076 0.0 asinh0209 asinh 1.3927819858239114e+308 -0.0 -> 710.22065899832899 -0.0 asinh0210 asinh -6.0442994056210995e+307 0.0 -> -709.38588631057621 0.0 asinh0211 asinh -1.2775271979042634e+308 -0.0 -> -710.13428215553972 -0.0 asinh0212 asinh 1.0687496260268489e+308 1.0255615699476961 -> 709.95584521407841 9.5959010882679093e-309 asinh0213 asinh 1.0050967333370962e+308 -0.87668970117333433 -> 709.89443961168183 -8.7224410556242882e-309 asinh0214 asinh -5.7161452814862392e+307 8.2377808413450122 -> -709.33006540611166 1.4411426644501116e-307 asinh0215 asinh -8.2009040727653315e+307 -6.407409526654976 -> -709.69101513070109 -7.8130526461510088e-308 asinh0216 asinh 6.4239368496483982 1.6365990821551427e+308 -> 710.38197618101287 1.5707963267948966 asinh0217 asinh 5.4729111423315882 -1.1227237438144211e+308 -> 710.00511346983546 -1.5707963267948966 asinh0218 asinh -8.3455818297412723 1.443172020182019e+308 -> -710.25619930551818 1.5707963267948966 asinh0219 asinh -2.6049726230372441 -1.7952291144022702e+308 -> -710.47448847685644 -1.5707963267948966 -- values near 0 asinh0220 asinh 1.2940113339664088e-314 6.9169190417774516e-323 -> 1.2940113339664088e-314 6.9169190417774516e-323 asinh0221 asinh 2.3848478863874649e-315 -3.1907655025717717e-310 -> 2.3848478863874649e-315 -3.1907655025717717e-310 asinh0222 asinh -3.0097643679641622e-316 4.6936236354918422e-322 -> -3.0097643679641622e-316 4.6936236354918422e-322 asinh0223 asinh -1.787997087755751e-308 -8.5619622834902341e-310 -> -1.787997087755751e-308 -8.5619622834902341e-310 asinh0224 asinh 0.0 1.2491433448427325e-314 -> 0.0 1.2491433448427325e-314 asinh0225 asinh -0.0 2.5024072154538062e-308 -> -0.0 2.5024072154538062e-308 asinh0226 asinh 0.0 -2.9643938750474793e-323 -> 0.0 -2.9643938750474793e-323 asinh0227 asinh -0.0 -2.9396905927554169e-320 -> -0.0 -2.9396905927554169e-320 asinh0228 asinh 5.64042930029359e-317 0.0 -> 5.64042930029359e-317 0.0 asinh0229 asinh 3.3833911866596068e-318 -0.0 -> 3.3833911866596068e-318 -0.0 asinh0230 asinh -4.9406564584124654e-324 0.0 -> -4.9406564584124654e-324 0.0 asinh0231 asinh -2.2211379227994845e-308 -0.0 -> -2.2211379227994845e-308 -0.0 -- special values asinh1000 asinh 0.0 0.0 -> 0.0 0.0 asinh1001 asinh 0.0 -0.0 -> 0.0 -0.0 asinh1002 asinh -0.0 0.0 -> -0.0 0.0 asinh1003 asinh -0.0 -0.0 -> -0.0 -0.0 asinh1004 asinh 0.0 inf -> inf 1.5707963267948966 asinh1005 asinh 2.3 inf -> inf 1.5707963267948966 asinh1006 asinh 0.0 nan -> nan nan asinh1007 asinh 2.3 nan -> nan nan asinh1008 asinh inf 0.0 -> inf 0.0 asinh1009 asinh inf 2.3 -> inf 0.0 asinh1010 asinh inf inf -> inf 0.78539816339744828 asinh1011 asinh inf nan -> inf nan asinh1012 asinh nan 0.0 -> nan 0.0 asinh1013 asinh nan 2.3 -> nan nan asinh1014 asinh nan inf -> inf nan ignore-real-sign asinh1015 asinh nan nan -> nan nan asinh1016 asinh 0.0 -inf -> inf -1.5707963267948966 asinh1017 asinh 2.3 -inf -> inf -1.5707963267948966 asinh1018 asinh inf -0.0 -> inf -0.0 asinh1019 asinh inf -2.3 -> inf -0.0 asinh1020 asinh inf -inf -> inf -0.78539816339744828 asinh1021 asinh nan -0.0 -> nan -0.0 asinh1022 asinh nan -2.3 -> nan nan asinh1023 asinh nan -inf -> inf nan ignore-real-sign asinh1024 asinh -0.0 -inf -> -inf -1.5707963267948966 asinh1025 asinh -2.3 -inf -> -inf -1.5707963267948966 asinh1026 asinh -0.0 nan -> nan nan asinh1027 asinh -2.3 nan -> nan nan asinh1028 asinh -inf -0.0 -> -inf -0.0 asinh1029 asinh -inf -2.3 -> -inf -0.0 asinh1030 asinh -inf -inf -> -inf -0.78539816339744828 asinh1031 asinh -inf nan -> -inf nan asinh1032 asinh -0.0 inf -> -inf 1.5707963267948966 asinh1033 asinh -2.3 inf -> -inf 1.5707963267948966 asinh1034 asinh -inf 0.0 -> -inf 0.0 asinh1035 asinh -inf 2.3 -> -inf 0.0 asinh1036 asinh -inf inf -> -inf 0.78539816339744828 --------------------------- -- atan: Inverse tangent -- --------------------------- -- zeros -- These are tested in testAtanSign in test_cmath.py -- atan0000 atan 0.0 0.0 -> 0.0 0.0 -- atan0001 atan 0.0 -0.0 -> 0.0 -0.0 -- atan0002 atan -0.0 0.0 -> -0.0 0.0 -- atan0003 atan -0.0 -0.0 -> -0.0 -0.0 -- values along both sides of imaginary axis atan0010 atan 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324 atan0011 atan -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324 atan0012 atan 0.0 -1e-305 -> 0.0 -1e-305 atan0013 atan -0.0 -1e-305 -> -0.0 -1e-305 atan0014 atan 0.0 -1e-150 -> 0.0 -1e-150 atan0015 atan -0.0 -1e-150 -> -0.0 -1e-150 atan0016 atan 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17 atan0017 atan -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17 atan0018 atan 0.0 -0.001 -> 0.0 -0.0010000003333335333 atan0019 atan -0.0 -0.001 -> -0.0 -0.0010000003333335333 atan0020 atan 0.0 -0.57899999999999996 -> 0.0 -0.6609570902866303 atan0021 atan -0.0 -0.57899999999999996 -> -0.0 -0.6609570902866303 atan0022 atan 0.0 -0.99999999999999989 -> 0.0 -18.714973875118524 atan0023 atan -0.0 -0.99999999999999989 -> -0.0 -18.714973875118524 atan0024 atan 0.0 -1.0000000000000002 -> 1.5707963267948966 -18.36840028483855 atan0025 atan -0.0 -1.0000000000000002 -> -1.5707963267948966 -18.36840028483855 atan0026 atan 0.0 -1.0009999999999999 -> 1.5707963267948966 -3.8007011672919218 atan0027 atan -0.0 -1.0009999999999999 -> -1.5707963267948966 -3.8007011672919218 atan0028 atan 0.0 -2.0 -> 1.5707963267948966 -0.54930614433405489 atan0029 atan -0.0 -2.0 -> -1.5707963267948966 -0.54930614433405489 atan0030 atan 0.0 -20.0 -> 1.5707963267948966 -0.050041729278491265 atan0031 atan -0.0 -20.0 -> -1.5707963267948966 -0.050041729278491265 atan0032 atan 0.0 -10000000000000000.0 -> 1.5707963267948966 -9.9999999999999998e-17 atan0033 atan -0.0 -10000000000000000.0 -> -1.5707963267948966 -9.9999999999999998e-17 atan0034 atan 0.0 -9.9999999999999998e+149 -> 1.5707963267948966 -1e-150 atan0035 atan -0.0 -9.9999999999999998e+149 -> -1.5707963267948966 -1e-150 atan0036 atan 0.0 -1.0000000000000001e+299 -> 1.5707963267948966 -9.9999999999999999e-300 atan0037 atan -0.0 -1.0000000000000001e+299 -> -1.5707963267948966 -9.9999999999999999e-300 atan0038 atan 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324 atan0039 atan -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324 atan0040 atan 0.0 1e-305 -> 0.0 1e-305 atan0041 atan -0.0 1e-305 -> -0.0 1e-305 atan0042 atan 0.0 1e-150 -> 0.0 1e-150 atan0043 atan -0.0 1e-150 -> -0.0 1e-150 atan0044 atan 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17 atan0045 atan -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17 atan0046 atan 0.0 0.001 -> 0.0 0.0010000003333335333 atan0047 atan -0.0 0.001 -> -0.0 0.0010000003333335333 atan0048 atan 0.0 0.57899999999999996 -> 0.0 0.6609570902866303 atan0049 atan -0.0 0.57899999999999996 -> -0.0 0.6609570902866303 atan0050 atan 0.0 0.99999999999999989 -> 0.0 18.714973875118524 atan0051 atan -0.0 0.99999999999999989 -> -0.0 18.714973875118524 atan0052 atan 0.0 1.0000000000000002 -> 1.5707963267948966 18.36840028483855 atan0053 atan -0.0 1.0000000000000002 -> -1.5707963267948966 18.36840028483855 atan0054 atan 0.0 1.0009999999999999 -> 1.5707963267948966 3.8007011672919218 atan0055 atan -0.0 1.0009999999999999 -> -1.5707963267948966 3.8007011672919218 atan0056 atan 0.0 2.0 -> 1.5707963267948966 0.54930614433405489 atan0057 atan -0.0 2.0 -> -1.5707963267948966 0.54930614433405489 atan0058 atan 0.0 20.0 -> 1.5707963267948966 0.050041729278491265 atan0059 atan -0.0 20.0 -> -1.5707963267948966 0.050041729278491265 atan0060 atan 0.0 10000000000000000.0 -> 1.5707963267948966 9.9999999999999998e-17 atan0061 atan -0.0 10000000000000000.0 -> -1.5707963267948966 9.9999999999999998e-17 atan0062 atan 0.0 9.9999999999999998e+149 -> 1.5707963267948966 1e-150 atan0063 atan -0.0 9.9999999999999998e+149 -> -1.5707963267948966 1e-150 atan0064 atan 0.0 1.0000000000000001e+299 -> 1.5707963267948966 9.9999999999999999e-300 atan0065 atan -0.0 1.0000000000000001e+299 -> -1.5707963267948966 9.9999999999999999e-300 -- random inputs atan0100 atan -0.32538873661060214 -1.5530461550412578 -> -1.3682728427554227 -0.69451401598762041 atan0101 atan -0.45863393495197929 -4799.1747094903594 -> -1.5707963068820623 -0.00020836916050636145 atan0102 atan -8.3006999685976162 -2.6788890251790938 -> -1.4619862771810199 -0.034811669653327826 atan0103 atan -1.8836307682985314 -1.1441976638861771 -> -1.1839984370871612 -0.20630956157312796 atan0104 atan -0.00063230482407491669 -4.9312520961829485 -> -1.5707692093223147 -0.20563867743008304 atan0105 atan -0.84278137150065946 179012.37493146997 -> -1.5707963267685969 5.5862059836425272e-06 atan0106 atan -0.95487853984049287 14.311334539886177 -> -1.5661322859434561 0.069676024526232005 atan0107 atan -1.3513252539663239 6.0500727021632198e-08 -> -0.93371676315220975 2.140800269742656e-08 atan0108 atan -0.20566254458595795 0.11933771944159823 -> -0.20556463711174916 0.11493405387141732 atan0109 atan -0.58563718795408559 0.64438965423212868 -> -0.68361089300233124 0.46759762751800249 atan0110 atan 48.479267751948292 -78.386382460112543 -> 1.5650888770910523 -0.0092276811373297584 atan0111 atan 1.0575373914056061 -0.75988012377296987 -> 0.94430886722043594 -0.31915698126703118 atan0112 atan 4444810.4314677203 -0.56553404593942558 -> 1.5707961018134231 -2.8625446437701909e-14 atan0113 atan 0.010101405082520009 -0.032932668550282478 -> 0.01011202676646334 -0.032941214776834996 atan0114 atan 1.5353585300154911 -2.1947099346796519 -> 1.3400310739206394 -0.29996003607449045 atan0115 atan 0.21869457055670882 9.9915684254007093 -> 1.5685846078876444 0.1003716881759439 atan0116 atan 0.17783290150246836 0.064334689863650957 -> 0.17668728064286277 0.062435808728873846 atan0117 atan 15.757474087615918 383.57262142534 -> 1.5706894060369621 0.0026026817278826603 atan0118 atan 10.587017408533317 0.21720238081843438 -> 1.4766594681336236 0.0019199097383010061 atan0119 atan 0.86026078678781204 0.1230148609359502 -> 0.7147259322534929 0.070551221954286605 -- values near infinity atan0200 atan 7.8764397011195798e+307 8.1647921137746308e+307 -> 1.5707963267948966 6.3439446939604493e-309 atan0201 atan 1.5873698696131487e+308 -1.0780367422960641e+308 -> 1.5707963267948966 -2.9279309368530781e-309 atan0202 atan -1.5844551864825834e+308 1.0290657809098675e+308 -> -1.5707963267948966 2.8829614736961417e-309 atan0203 atan -1.3168792562524032e+308 -9.088432341614825e+307 -> -1.5707963267948966 -3.5499373057390056e-309 atan0204 atan 0.0 1.0360465742258337e+308 -> 1.5707963267948966 9.6520757355646018e-309 atan0205 atan -0.0 1.0045063210373196e+308 -> -1.5707963267948966 9.955138947929503e-309 atan0206 atan 0.0 -9.5155296715763696e+307 -> 1.5707963267948966 -1.050913648020118e-308 atan0207 atan -0.0 -1.5565700490496501e+308 -> -1.5707963267948966 -6.4243816114189071e-309 atan0208 atan 1.2956339389525244e+308 0.0 -> 1.5707963267948966 0.0 atan0209 atan 1.4408126243772151e+308 -0.0 -> 1.5707963267948966 -0.0 atan0210 atan -1.0631786461936417e+308 0.0 -> -1.5707963267948966 0.0 atan0211 atan -1.0516056964171069e+308 -0.0 -> -1.5707963267948966 -0.0 atan0212 atan 1.236162319603838e+308 4.6827953496242936 -> 1.5707963267948966 0.0 atan0213 atan 7.000516472897218e+307 -5.8631608017844163 -> 1.5707963267948966 -0.0 atan0214 atan -1.5053444003338508e+308 5.1199197268420313 -> -1.5707963267948966 0.0 atan0215 atan -1.399172518147259e+308 -3.5687766472913673 -> -1.5707963267948966 -0.0 atan0216 atan 8.1252833070803021 6.2782953917343822e+307 -> 1.5707963267948966 1.5927890256908564e-308 atan0217 atan 2.8034285947515167 -1.3378049775753878e+308 -> 1.5707963267948966 -7.4749310756219562e-309 atan0218 atan -1.4073509988974953 1.6776381785968355e+308 -> -1.5707963267948966 5.9607608646364569e-309 atan0219 atan -2.7135551527592119 -1.281567445525738e+308 -> -1.5707963267948966 -7.8029447727565326e-309 -- imaginary part = +/-1, real part tiny atan0300 atan -1e-150 -1.0 -> -0.78539816339744828 -173.04045556483339 atan0301 atan 1e-155 1.0 -> 0.78539816339744828 178.79691829731851 atan0302 atan 9.9999999999999999e-161 -1.0 -> 0.78539816339744828 -184.55338102980363 atan0303 atan -1e-165 1.0 -> -0.78539816339744828 190.30984376228875 atan0304 atan -9.9998886718268301e-321 -1.0 -> -0.78539816339744828 -368.76019403576692 -- Additional real values (mpmath) atan0400 atan 1.7976931348623157e+308 0.0 -> 1.5707963267948966192 0.0 atan0401 atan -1.7976931348623157e+308 0.0 -> -1.5707963267948966192 0.0 atan0402 atan 1e-17 0.0 -> 1.0000000000000000715e-17 0.0 atan0403 atan -1e-17 0.0 -> -1.0000000000000000715e-17 0.0 atan0404 atan 0.0001 0.0 -> 0.000099999999666666673459 0.0 atan0405 atan -0.0001 0.0 -> -0.000099999999666666673459 0.0 atan0406 atan 0.999999999999999 0.0 -> 0.78539816339744781002 0.0 atan0407 atan 1.000000000000001 0.0 -> 0.78539816339744886473 0.0 atan0408 atan 14.101419947171719 0.0 -> 1.4999999999999999969 0.0 atan0409 atan 1255.7655915007897 0.0 -> 1.5700000000000000622 0.0 -- special values atan1000 atan -0.0 0.0 -> -0.0 0.0 atan1001 atan nan 0.0 -> nan 0.0 atan1002 atan -0.0 1.0 -> -0.0 inf divide-by-zero atan1003 atan -inf 0.0 -> -1.5707963267948966 0.0 atan1004 atan -inf 2.2999999999999998 -> -1.5707963267948966 0.0 atan1005 atan nan 2.2999999999999998 -> nan nan atan1006 atan -0.0 inf -> -1.5707963267948966 0.0 atan1007 atan -2.2999999999999998 inf -> -1.5707963267948966 0.0 atan1008 atan -inf inf -> -1.5707963267948966 0.0 atan1009 atan nan inf -> nan 0.0 atan1010 atan -0.0 nan -> nan nan atan1011 atan -2.2999999999999998 nan -> nan nan atan1012 atan -inf nan -> -1.5707963267948966 0.0 ignore-imag-sign atan1013 atan nan nan -> nan nan atan1014 atan 0.0 0.0 -> 0.0 0.0 atan1015 atan 0.0 1.0 -> 0.0 inf divide-by-zero atan1016 atan inf 0.0 -> 1.5707963267948966 0.0 atan1017 atan inf 2.2999999999999998 -> 1.5707963267948966 0.0 atan1018 atan 0.0 inf -> 1.5707963267948966 0.0 atan1019 atan 2.2999999999999998 inf -> 1.5707963267948966 0.0 atan1020 atan inf inf -> 1.5707963267948966 0.0 atan1021 atan 0.0 nan -> nan nan atan1022 atan 2.2999999999999998 nan -> nan nan atan1023 atan inf nan -> 1.5707963267948966 0.0 ignore-imag-sign atan1024 atan 0.0 -0.0 -> 0.0 -0.0 atan1025 atan nan -0.0 -> nan -0.0 atan1026 atan 0.0 -1.0 -> 0.0 -inf divide-by-zero atan1027 atan inf -0.0 -> 1.5707963267948966 -0.0 atan1028 atan inf -2.2999999999999998 -> 1.5707963267948966 -0.0 atan1029 atan nan -2.2999999999999998 -> nan nan atan1030 atan 0.0 -inf -> 1.5707963267948966 -0.0 atan1031 atan 2.2999999999999998 -inf -> 1.5707963267948966 -0.0 atan1032 atan inf -inf -> 1.5707963267948966 -0.0 atan1033 atan nan -inf -> nan -0.0 atan1034 atan -0.0 -0.0 -> -0.0 -0.0 atan1035 atan -0.0 -1.0 -> -0.0 -inf divide-by-zero atan1036 atan -inf -0.0 -> -1.5707963267948966 -0.0 atan1037 atan -inf -2.2999999999999998 -> -1.5707963267948966 -0.0 atan1038 atan -0.0 -inf -> -1.5707963267948966 -0.0 atan1039 atan -2.2999999999999998 -inf -> -1.5707963267948966 -0.0 atan1040 atan -inf -inf -> -1.5707963267948966 -0.0 --------------------------------------- -- atanh: Inverse hyperbolic tangent -- --------------------------------------- -- zeros -- These are tested in testAtanhSign in test_cmath.py -- atanh0000 atanh 0.0 0.0 -> 0.0 0.0 -- atanh0001 atanh 0.0 -0.0 -> 0.0 -0.0 -- atanh0002 atanh -0.0 0.0 -> -0.0 0.0 -- atanh0003 atanh -0.0 -0.0 -> -0.0 -0.0 -- values along both sides of real axis atanh0010 atanh -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0 atanh0011 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0 atanh0012 atanh -1e-305 0.0 -> -1e-305 0.0 atanh0013 atanh -1e-305 -0.0 -> -1e-305 -0.0 atanh0014 atanh -1e-150 0.0 -> -1e-150 0.0 atanh0015 atanh -1e-150 -0.0 -> -1e-150 -0.0 atanh0016 atanh -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0 atanh0017 atanh -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0 atanh0018 atanh -0.001 0.0 -> -0.0010000003333335333 0.0 atanh0019 atanh -0.001 -0.0 -> -0.0010000003333335333 -0.0 atanh0020 atanh -0.57899999999999996 0.0 -> -0.6609570902866303 0.0 atanh0021 atanh -0.57899999999999996 -0.0 -> -0.6609570902866303 -0.0 atanh0022 atanh -0.99999999999999989 0.0 -> -18.714973875118524 0.0 atanh0023 atanh -0.99999999999999989 -0.0 -> -18.714973875118524 -0.0 atanh0024 atanh -1.0000000000000002 0.0 -> -18.36840028483855 1.5707963267948966 atanh0025 atanh -1.0000000000000002 -0.0 -> -18.36840028483855 -1.5707963267948966 atanh0026 atanh -1.0009999999999999 0.0 -> -3.8007011672919218 1.5707963267948966 atanh0027 atanh -1.0009999999999999 -0.0 -> -3.8007011672919218 -1.5707963267948966 atanh0028 atanh -2.0 0.0 -> -0.54930614433405489 1.5707963267948966 atanh0029 atanh -2.0 -0.0 -> -0.54930614433405489 -1.5707963267948966 atanh0030 atanh -23.0 0.0 -> -0.043505688494814884 1.5707963267948966 atanh0031 atanh -23.0 -0.0 -> -0.043505688494814884 -1.5707963267948966 atanh0032 atanh -10000000000000000.0 0.0 -> -9.9999999999999998e-17 1.5707963267948966 atanh0033 atanh -10000000000000000.0 -0.0 -> -9.9999999999999998e-17 -1.5707963267948966 atanh0034 atanh -9.9999999999999998e+149 0.0 -> -1e-150 1.5707963267948966 atanh0035 atanh -9.9999999999999998e+149 -0.0 -> -1e-150 -1.5707963267948966 atanh0036 atanh -1.0000000000000001e+299 0.0 -> -9.9999999999999999e-300 1.5707963267948966 atanh0037 atanh -1.0000000000000001e+299 -0.0 -> -9.9999999999999999e-300 -1.5707963267948966 atanh0038 atanh 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0 atanh0039 atanh 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0 atanh0040 atanh 1e-305 0.0 -> 1e-305 0.0 atanh0041 atanh 1e-305 -0.0 -> 1e-305 -0.0 atanh0042 atanh 1e-150 0.0 -> 1e-150 0.0 atanh0043 atanh 1e-150 -0.0 -> 1e-150 -0.0 atanh0044 atanh 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0 atanh0045 atanh 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0 atanh0046 atanh 0.001 0.0 -> 0.0010000003333335333 0.0 atanh0047 atanh 0.001 -0.0 -> 0.0010000003333335333 -0.0 atanh0048 atanh 0.57899999999999996 0.0 -> 0.6609570902866303 0.0 atanh0049 atanh 0.57899999999999996 -0.0 -> 0.6609570902866303 -0.0 atanh0050 atanh 0.99999999999999989 0.0 -> 18.714973875118524 0.0 atanh0051 atanh 0.99999999999999989 -0.0 -> 18.714973875118524 -0.0 atanh0052 atanh 1.0000000000000002 0.0 -> 18.36840028483855 1.5707963267948966 atanh0053 atanh 1.0000000000000002 -0.0 -> 18.36840028483855 -1.5707963267948966 atanh0054 atanh 1.0009999999999999 0.0 -> 3.8007011672919218 1.5707963267948966 atanh0055 atanh 1.0009999999999999 -0.0 -> 3.8007011672919218 -1.5707963267948966 atanh0056 atanh 2.0 0.0 -> 0.54930614433405489 1.5707963267948966 atanh0057 atanh 2.0 -0.0 -> 0.54930614433405489 -1.5707963267948966 atanh0058 atanh 23.0 0.0 -> 0.043505688494814884 1.5707963267948966 atanh0059 atanh 23.0 -0.0 -> 0.043505688494814884 -1.5707963267948966 atanh0060 atanh 10000000000000000.0 0.0 -> 9.9999999999999998e-17 1.5707963267948966 atanh0061 atanh 10000000000000000.0 -0.0 -> 9.9999999999999998e-17 -1.5707963267948966 atanh0062 atanh 9.9999999999999998e+149 0.0 -> 1e-150 1.5707963267948966 atanh0063 atanh 9.9999999999999998e+149 -0.0 -> 1e-150 -1.5707963267948966 atanh0064 atanh 1.0000000000000001e+299 0.0 -> 9.9999999999999999e-300 1.5707963267948966 atanh0065 atanh 1.0000000000000001e+299 -0.0 -> 9.9999999999999999e-300 -1.5707963267948966 -- random inputs atanh0100 atanh -0.54460925980633501 -0.54038050126721027 -> -0.41984265808446974 -0.60354153938352828 atanh0101 atanh -1.6934614269829051 -0.48807386108113621 -> -0.58592769102243281 -1.3537837470975898 atanh0102 atanh -1.3467293985501207 -0.47868354895395876 -> -0.69961624370709985 -1.1994450156570076 atanh0103 atanh -5.6142232418984888 -544551613.39307702 -> -1.8932657550925744e-17 -1.5707963249585235 atanh0104 atanh -0.011841460381263651 -3.259978899823385 -> -0.0010183936547405188 -1.2731614020743838 atanh0105 atanh -0.0073345736950029532 0.35821949670922248 -> -0.0065004869024682466 0.34399359971920895 atanh0106 atanh -13.866782244320014 0.9541129545860273 -> -0.071896852055058899 1.5658322704631409 atanh0107 atanh -708.59964982780775 21.984802159266675 -> -0.0014098779074189741 1.5707525842838959 atanh0108 atanh -30.916832076030602 1.3691897138829843 -> -0.032292682045743676 1.5693652094847115 atanh0109 atanh -0.57461806339861754 0.29534797443913063 -> -0.56467464472482765 0.39615612824172625 atanh0110 atanh 0.40089246737415685 -1.632285984300659 -> 0.1063832707890608 -1.0402821335326482 atanh0111 atanh 2119.6167688262176 -1.5383653437377242e+17 -> 8.9565008518382049e-32 -1.5707963267948966 atanh0112 atanh 756.86017850941641 -6.6064087133223817 -> 0.0013211481136820046 -1.5707847948702234 atanh0113 atanh 4.0490617718041602 -2.5784456791040652e-12 -> 0.25218425538553618 -1.5707963267947291 atanh0114 atanh 10.589254957173523 -0.13956391149624509 -> 0.094700890282197664 -1.5695407140217623 atanh0115 atanh 1.0171187553160499 0.70766113465354019 -> 0.55260251975367791 0.96619711116641682 atanh0116 atanh 0.031645502527750849 0.067319983726544394 -> 0.031513018344086742 0.067285437670549036 atanh0117 atanh 0.13670177624994517 0.43240089361857947 -> 0.11538933151017253 0.41392008145336212 atanh0118 atanh 0.64173899243596688 2.9008577686695256 -> 0.065680142424134405 1.2518535724053921 atanh0119 atanh 0.19313813528025942 38.799619150741869 -> 0.00012820765917366644 1.5450292202823612 -- values near infinity atanh0200 atanh 5.3242646831347954e+307 1.3740396080084153e+308 -> 2.4519253616695576e-309 1.5707963267948966 atanh0201 atanh 1.158701641241358e+308 -6.5579268873375853e+307 -> 6.5365375267795098e-309 -1.5707963267948966 atanh0202 atanh -1.3435325735762247e+308 9.8947369259601547e+307 -> -4.8256680906589956e-309 1.5707963267948966 atanh0203 atanh -1.4359857522598942e+308 -9.4701204702391004e+307 -> -4.8531282262872645e-309 -1.5707963267948966 atanh0204 atanh 0.0 5.6614181068098497e+307 -> 0.0 1.5707963267948966 atanh0205 atanh -0.0 6.9813212721450139e+307 -> -0.0 1.5707963267948966 atanh0206 atanh 0.0 -7.4970613060311453e+307 -> 0.0 -1.5707963267948966 atanh0207 atanh -0.0 -1.5280601880314068e+308 -> -0.0 -1.5707963267948966 atanh0208 atanh 8.2219472336000745e+307 0.0 -> 1.2162568933954813e-308 1.5707963267948966 atanh0209 atanh 1.4811519617280899e+308 -0.0 -> 6.7515017083951325e-309 -1.5707963267948966 atanh0210 atanh -1.2282016263598785e+308 0.0 -> -8.1419856360537615e-309 1.5707963267948966 atanh0211 atanh -1.0616427760154426e+308 -0.0 -> -9.4193642399489563e-309 -1.5707963267948966 atanh0212 atanh 1.2971536510180682e+308 5.2847948452333293 -> 7.7091869510998328e-309 1.5707963267948966 atanh0213 atanh 1.1849860977411851e+308 -7.9781906447459949 -> 8.4389175696339014e-309 -1.5707963267948966 atanh0214 atanh -1.4029969422586635e+308 0.93891986543663375 -> -7.127599283218073e-309 1.5707963267948966 atanh0215 atanh -4.7508098912248211e+307 -8.2702421247039908 -> -2.1049042645278043e-308 -1.5707963267948966 atanh0216 atanh 8.2680742115769998 8.1153898410918065e+307 -> 0.0 1.5707963267948966 atanh0217 atanh 1.2575325146218885 -1.4746679147661649e+308 -> 0.0 -1.5707963267948966 atanh0218 atanh -2.4618803682310899 1.3781522717005568e+308 -> -0.0 1.5707963267948966 atanh0219 atanh -4.0952386694788112 -1.231083376353703e+308 -> -0.0 -1.5707963267948966 -- values near 0 atanh0220 atanh 3.8017563659811628e-314 2.6635484239074319e-312 -> 3.8017563659811628e-314 2.6635484239074319e-312 atanh0221 atanh 1.7391110733611878e-321 -4.3547800672541419e-313 -> 1.7391110733611878e-321 -4.3547800672541419e-313 atanh0222 atanh -5.9656816081325078e-317 9.9692253555416263e-313 -> -5.9656816081325078e-317 9.9692253555416263e-313 atanh0223 atanh -6.5606671178400239e-313 -2.1680936406357335e-309 -> -6.5606671178400239e-313 -2.1680936406357335e-309 atanh0224 atanh 0.0 2.5230944401820779e-319 -> 0.0 2.5230944401820779e-319 atanh0225 atanh -0.0 5.6066569490064658e-320 -> -0.0 5.6066569490064658e-320 atanh0226 atanh 0.0 -2.4222487249468377e-317 -> 0.0 -2.4222487249468377e-317 atanh0227 atanh -0.0 -3.0861101089206037e-316 -> -0.0 -3.0861101089206037e-316 atanh0228 atanh 3.1219222884393986e-310 0.0 -> 3.1219222884393986e-310 0.0 atanh0229 atanh 9.8926337564976196e-309 -0.0 -> 9.8926337564976196e-309 -0.0 atanh0230 atanh -1.5462535092918154e-312 0.0 -> -1.5462535092918154e-312 0.0 atanh0231 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0 -- real part = +/-1, imaginary part tiny atanh0300 atanh 1.0 1e-153 -> 176.49433320432448 0.78539816339744828 atanh0301 atanh 1.0 9.9999999999999997e-155 -> 177.64562575082149 0.78539816339744828 atanh0302 atanh -1.0 1e-161 -> -185.70467357630065 0.78539816339744828 atanh0303 atanh 1.0 -1e-165 -> 190.30984376228875 -0.78539816339744828 atanh0304 atanh -1.0 -9.8813129168249309e-324 -> -372.22003596069061 -0.78539816339744828 -- special values atanh1000 atanh 0.0 0.0 -> 0.0 0.0 atanh1001 atanh 0.0 nan -> 0.0 nan atanh1002 atanh 1.0 0.0 -> inf 0.0 divide-by-zero atanh1003 atanh 0.0 inf -> 0.0 1.5707963267948966 atanh1004 atanh 2.3 inf -> 0.0 1.5707963267948966 atanh1005 atanh 2.3 nan -> nan nan atanh1006 atanh inf 0.0 -> 0.0 1.5707963267948966 atanh1007 atanh inf 2.3 -> 0.0 1.5707963267948966 atanh1008 atanh inf inf -> 0.0 1.5707963267948966 atanh1009 atanh inf nan -> 0.0 nan atanh1010 atanh nan 0.0 -> nan nan atanh1011 atanh nan 2.3 -> nan nan atanh1012 atanh nan inf -> 0.0 1.5707963267948966 ignore-real-sign atanh1013 atanh nan nan -> nan nan atanh1014 atanh 0.0 -0.0 -> 0.0 -0.0 atanh1015 atanh 1.0 -0.0 -> inf -0.0 divide-by-zero atanh1016 atanh 0.0 -inf -> 0.0 -1.5707963267948966 atanh1017 atanh 2.3 -inf -> 0.0 -1.5707963267948966 atanh1018 atanh inf -0.0 -> 0.0 -1.5707963267948966 atanh1019 atanh inf -2.3 -> 0.0 -1.5707963267948966 atanh1020 atanh inf -inf -> 0.0 -1.5707963267948966 atanh1021 atanh nan -0.0 -> nan nan atanh1022 atanh nan -2.3 -> nan nan atanh1023 atanh nan -inf -> 0.0 -1.5707963267948966 ignore-real-sign atanh1024 atanh -0.0 -0.0 -> -0.0 -0.0 atanh1025 atanh -0.0 nan -> -0.0 nan atanh1026 atanh -1.0 -0.0 -> -inf -0.0 divide-by-zero atanh1027 atanh -0.0 -inf -> -0.0 -1.5707963267948966 atanh1028 atanh -2.3 -inf -> -0.0 -1.5707963267948966 atanh1029 atanh -2.3 nan -> nan nan atanh1030 atanh -inf -0.0 -> -0.0 -1.5707963267948966 atanh1031 atanh -inf -2.3 -> -0.0 -1.5707963267948966 atanh1032 atanh -inf -inf -> -0.0 -1.5707963267948966 atanh1033 atanh -inf nan -> -0.0 nan atanh1034 atanh -0.0 0.0 -> -0.0 0.0 atanh1035 atanh -1.0 0.0 -> -inf 0.0 divide-by-zero atanh1036 atanh -0.0 inf -> -0.0 1.5707963267948966 atanh1037 atanh -2.3 inf -> -0.0 1.5707963267948966 atanh1038 atanh -inf 0.0 -> -0.0 1.5707963267948966 atanh1039 atanh -inf 2.3 -> -0.0 1.5707963267948966 atanh1040 atanh -inf inf -> -0.0 1.5707963267948966 ---------------------------- -- log: Natural logarithm -- ---------------------------- log0000 log 1.0 0.0 -> 0.0 0.0 log0001 log 1.0 -0.0 -> 0.0 -0.0 log0002 log -1.0 0.0 -> 0.0 3.1415926535897931 log0003 log -1.0 -0.0 -> 0.0 -3.1415926535897931 -- values along both sides of real axis log0010 log -9.8813129168249309e-324 0.0 -> -743.74692474082133 3.1415926535897931 log0011 log -9.8813129168249309e-324 -0.0 -> -743.74692474082133 -3.1415926535897931 log0012 log -1e-305 0.0 -> -702.28845336318398 3.1415926535897931 log0013 log -1e-305 -0.0 -> -702.28845336318398 -3.1415926535897931 log0014 log -1e-150 0.0 -> -345.38776394910684 3.1415926535897931 log0015 log -1e-150 -0.0 -> -345.38776394910684 -3.1415926535897931 log0016 log -9.9999999999999998e-17 0.0 -> -36.841361487904734 3.1415926535897931 log0017 log -9.9999999999999998e-17 -0.0 -> -36.841361487904734 -3.1415926535897931 log0018 log -0.001 0.0 -> -6.9077552789821368 3.1415926535897931 log0019 log -0.001 -0.0 -> -6.9077552789821368 -3.1415926535897931 log0020 log -0.57899999999999996 0.0 -> -0.54645280140914188 3.1415926535897931 log0021 log -0.57899999999999996 -0.0 -> -0.54645280140914188 -3.1415926535897931 log0022 log -0.99999999999999989 0.0 -> -1.1102230246251565e-16 3.1415926535897931 log0023 log -0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -3.1415926535897931 log0024 log -1.0000000000000002 0.0 -> 2.2204460492503128e-16 3.1415926535897931 log0025 log -1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -3.1415926535897931 log0026 log -1.0009999999999999 0.0 -> 0.00099950033308342321 3.1415926535897931 log0027 log -1.0009999999999999 -0.0 -> 0.00099950033308342321 -3.1415926535897931 log0028 log -2.0 0.0 -> 0.69314718055994529 3.1415926535897931 log0029 log -2.0 -0.0 -> 0.69314718055994529 -3.1415926535897931 log0030 log -23.0 0.0 -> 3.1354942159291497 3.1415926535897931 log0031 log -23.0 -0.0 -> 3.1354942159291497 -3.1415926535897931 log0032 log -10000000000000000.0 0.0 -> 36.841361487904734 3.1415926535897931 log0033 log -10000000000000000.0 -0.0 -> 36.841361487904734 -3.1415926535897931 log0034 log -9.9999999999999998e+149 0.0 -> 345.38776394910684 3.1415926535897931 log0035 log -9.9999999999999998e+149 -0.0 -> 345.38776394910684 -3.1415926535897931 log0036 log -1.0000000000000001e+299 0.0 -> 688.47294280521965 3.1415926535897931 log0037 log -1.0000000000000001e+299 -0.0 -> 688.47294280521965 -3.1415926535897931 log0038 log 9.8813129168249309e-324 0.0 -> -743.74692474082133 0.0 log0039 log 9.8813129168249309e-324 -0.0 -> -743.74692474082133 -0.0 log0040 log 1e-305 0.0 -> -702.28845336318398 0.0 log0041 log 1e-305 -0.0 -> -702.28845336318398 -0.0 log0042 log 1e-150 0.0 -> -345.38776394910684 0.0 log0043 log 1e-150 -0.0 -> -345.38776394910684 -0.0 log0044 log 9.9999999999999998e-17 0.0 -> -36.841361487904734 0.0 log0045 log 9.9999999999999998e-17 -0.0 -> -36.841361487904734 -0.0 log0046 log 0.001 0.0 -> -6.9077552789821368 0.0 log0047 log 0.001 -0.0 -> -6.9077552789821368 -0.0 log0048 log 0.57899999999999996 0.0 -> -0.54645280140914188 0.0 log0049 log 0.57899999999999996 -0.0 -> -0.54645280140914188 -0.0 log0050 log 0.99999999999999989 0.0 -> -1.1102230246251565e-16 0.0 log0051 log 0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -0.0 log0052 log 1.0000000000000002 0.0 -> 2.2204460492503128e-16 0.0 log0053 log 1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -0.0 log0054 log 1.0009999999999999 0.0 -> 0.00099950033308342321 0.0 log0055 log 1.0009999999999999 -0.0 -> 0.00099950033308342321 -0.0 log0056 log 2.0 0.0 -> 0.69314718055994529 0.0 log0057 log 2.0 -0.0 -> 0.69314718055994529 -0.0 log0058 log 23.0 0.0 -> 3.1354942159291497 0.0 log0059 log 23.0 -0.0 -> 3.1354942159291497 -0.0 log0060 log 10000000000000000.0 0.0 -> 36.841361487904734 0.0 log0061 log 10000000000000000.0 -0.0 -> 36.841361487904734 -0.0 log0062 log 9.9999999999999998e+149 0.0 -> 345.38776394910684 0.0 log0063 log 9.9999999999999998e+149 -0.0 -> 345.38776394910684 -0.0 log0064 log 1.0000000000000001e+299 0.0 -> 688.47294280521965 0.0 log0065 log 1.0000000000000001e+299 -0.0 -> 688.47294280521965 -0.0 -- random inputs log0066 log -1.9830454945186191e-16 -2.0334448025673346 -> 0.70973130194329803 -1.5707963267948968 log0067 log -0.96745853024741857 -0.84995816228299692 -> 0.25292811398722387 -2.4207570438536905 log0068 log -0.1603644313948418 -0.2929942111041835 -> -1.0965857872427374 -2.0715870859971419 log0069 log -0.15917913168438699 -0.25238799251132177 -> -1.2093477313249901 -2.1334784232033863 log0070 log -0.68907818535078802 -3.0693105853476346 -> 1.1460398629184565 -1.7916403813913211 log0071 log -17.268133447565589 6.8165120014604756 -> 2.9212694465974836 2.7656245081603164 log0072 log -1.7153894479690328 26.434055372802636 -> 3.2767542953718003 1.6355986276341734 log0073 log -8.0456794648936578e-06 0.19722758057570208 -> -1.6233969848296075 1.5708371206810101 log0074 log -2.4306442691323173 0.6846919750700996 -> 0.92633592001969589 2.8670160576718331 log0075 log -3.5488049250888194 0.45324040643185254 -> 1.2747008374256426 3.0145640007885111 log0076 log 0.18418516851510189 -0.26062518836212617 -> -1.1421287121940344 -0.95558440841183434 log0077 log 2.7124837795638399 -13.148769067133387 -> 2.5971659975706802 -1.3673583045209439 log0078 log 3.6521275476169149e-13 -3.7820543023170673e-05 -> -10.182658136741569 -1.5707963171384316 log0079 log 5.0877545813862239 -1.2834978326786852 -> 1.6576856213076328 -0.24711583497738485 log0080 log 0.26477986808461512 -0.67659001194187429 -> -0.31944085207999973 -1.197773671987121 log0081 log 0.0014754261398071962 5.3514691608205442 -> 1.6773711707153829 1.5705206219261802 log0082 log 0.29667334462157885 0.00020056045042584795 -> -1.2151233667079588 0.00067603114168689204 log0083 log 0.82104233671099425 3.9005387130133102 -> 1.3827918965299593 1.3633304701848363 log0084 log 0.27268135358180667 124.42088110945804 -> 4.8236724223559229 1.5686047258789015 log0085 log 0.0026286959168267485 0.47795808180573013 -> -0.73821712137809126 1.5652965360960087 -- values near infinity log0100 log 1.0512025744003172e+308 7.2621669750664611e+307 -> 709.44123967814494 0.60455434048332968 log0101 log 5.5344249034372126e+307 -1.2155859158431275e+308 -> 709.48562300345679 -1.143553056717973 log0102 log -1.3155575403469408e+308 1.1610793541663864e+308 -> 709.75847809546428 2.41848796504974 log0103 log -1.632366720973235e+308 -1.54299446211448e+308 -> 710.00545236515586 -2.3843326028455087 log0104 log 0.0 5.9449276692327712e+307 -> 708.67616191258526 1.5707963267948966 log0105 log -0.0 1.1201850459025692e+308 -> 709.30970253338171 1.5707963267948966 log0106 log 0.0 -1.6214225933466528e+308 -> 709.6795125501086 -1.5707963267948966 log0107 log -0.0 -1.7453269791591058e+308 -> 709.75315056087379 -1.5707963267948966 log0108 log 1.440860577601428e+308 0.0 -> 709.56144920058262 0.0 log0109 log 1.391515176148282e+308 -0.0 -> 709.52660185041327 -0.0 log0110 log -1.201354401295296e+308 0.0 -> 709.37965823023956 3.1415926535897931 log0111 log -1.6704337825976804e+308 -0.0 -> 709.70929198492399 -3.1415926535897931 log0112 log 7.2276974655190223e+307 7.94879711369164 -> 708.87154406512104 1.0997689307850458e-307 log0113 log 1.1207859593716076e+308 -6.1956200868221147 -> 709.31023883080104 -5.5279244310803286e-308 log0114 log -4.6678933874471045e+307 9.947107893220382 -> 708.43433142431388 3.1415926535897931 log0115 log -1.5108012453950142e+308 -5.3117197179375619 -> 709.60884877835008 -3.1415926535897931 log0116 log 7.4903750871504435 1.5320703776626352e+308 -> 709.62282865085137 1.5707963267948966 log0117 log 5.9760325525654778 -8.0149473997349123e+307 -> 708.97493177248396 -1.5707963267948966 log0118 log -7.880194206386629 1.7861845814767441e+308 -> 709.77629046837137 1.5707963267948966 log0119 log -9.886438993852865 -6.19235781080747e+307 -> 708.71693946977302 -1.5707963267948966 -- values near 0 log0120 log 2.2996867579227779e-308 6.7861840770939125e-312 -> -708.36343567717392 0.00029509166223339815 log0121 log 6.9169190417774516e-323 -9.0414013188948118e-322 -> -739.22766796468386 -1.4944423210001669 log0122 log -1.5378064962914011e-316 1.8243628389354635e-310 -> -713.20014803142965 1.5707971697228842 log0123 log -2.3319898483706837e-321 -2.2358763941866371e-313 -> -719.9045008332522 -1.570796337224766 log0124 log 0.0 3.872770101081121e-315 -> -723.96033425374401 1.5707963267948966 log0125 log -0.0 9.6342800939043076e-322 -> -739.16707236281752 1.5707963267948966 log0126 log 0.0 -2.266099393427834e-308 -> -708.37814861757965 -1.5707963267948966 log0127 log -0.0 -2.1184695673766626e-315 -> -724.56361036731812 -1.5707963267948966 log0128 log 1.1363509854348671e-322 0.0 -> -741.30457770545206 0.0 log0129 log 3.5572726500569751e-322 -0.0 -> -740.16340580236522 -0.0 log0130 log -2.3696071074040593e-310 0.0 -> -712.93865466421641 3.1415926535897931 log0131 log -2.813283897266934e-317 -0.0 -> -728.88512203138862 -3.1415926535897931 -- values near the unit circle log0200 log -0.59999999999999998 0.80000000000000004 -> 2.2204460492503132e-17 2.2142974355881808 log0201 log 0.79999999999999993 0.60000000000000009 -> 6.1629758220391547e-33 0.64350110879328448 -- special values log1000 log -0.0 0.0 -> -inf 3.1415926535897931 divide-by-zero log1001 log 0.0 0.0 -> -inf 0.0 divide-by-zero log1002 log 0.0 inf -> inf 1.5707963267948966 log1003 log 2.3 inf -> inf 1.5707963267948966 log1004 log -0.0 inf -> inf 1.5707963267948966 log1005 log -2.3 inf -> inf 1.5707963267948966 log1006 log 0.0 nan -> nan nan log1007 log 2.3 nan -> nan nan log1008 log -0.0 nan -> nan nan log1009 log -2.3 nan -> nan nan log1010 log -inf 0.0 -> inf 3.1415926535897931 log1011 log -inf 2.3 -> inf 3.1415926535897931 log1012 log inf 0.0 -> inf 0.0 log1013 log inf 2.3 -> inf 0.0 log1014 log -inf inf -> inf 2.3561944901923448 log1015 log inf inf -> inf 0.78539816339744828 log1016 log inf nan -> inf nan log1017 log -inf nan -> inf nan log1018 log nan 0.0 -> nan nan log1019 log nan 2.3 -> nan nan log1020 log nan inf -> inf nan log1021 log nan nan -> nan nan log1022 log -0.0 -0.0 -> -inf -3.1415926535897931 divide-by-zero log1023 log 0.0 -0.0 -> -inf -0.0 divide-by-zero log1024 log 0.0 -inf -> inf -1.5707963267948966 log1025 log 2.3 -inf -> inf -1.5707963267948966 log1026 log -0.0 -inf -> inf -1.5707963267948966 log1027 log -2.3 -inf -> inf -1.5707963267948966 log1028 log -inf -0.0 -> inf -3.1415926535897931 log1029 log -inf -2.3 -> inf -3.1415926535897931 log1030 log inf -0.0 -> inf -0.0 log1031 log inf -2.3 -> inf -0.0 log1032 log -inf -inf -> inf -2.3561944901923448 log1033 log inf -inf -> inf -0.78539816339744828 log1034 log nan -0.0 -> nan nan log1035 log nan -2.3 -> nan nan log1036 log nan -inf -> inf nan ------------------------------ -- log10: Logarithm base 10 -- ------------------------------ logt0000 log10 1.0 0.0 -> 0.0 0.0 logt0001 log10 1.0 -0.0 -> 0.0 -0.0 logt0002 log10 -1.0 0.0 -> 0.0 1.3643763538418414 logt0003 log10 -1.0 -0.0 -> 0.0 -1.3643763538418414 -- values along both sides of real axis logt0010 log10 -9.8813129168249309e-324 0.0 -> -323.0051853474518 1.3643763538418414 logt0011 log10 -9.8813129168249309e-324 -0.0 -> -323.0051853474518 -1.3643763538418414 logt0012 log10 -1e-305 0.0 -> -305.0 1.3643763538418414 logt0013 log10 -1e-305 -0.0 -> -305.0 -1.3643763538418414 logt0014 log10 -1e-150 0.0 -> -150.0 1.3643763538418414 logt0015 log10 -1e-150 -0.0 -> -150.0 -1.3643763538418414 logt0016 log10 -9.9999999999999998e-17 0.0 -> -16.0 1.3643763538418414 logt0017 log10 -9.9999999999999998e-17 -0.0 -> -16.0 -1.3643763538418414 logt0018 log10 -0.001 0.0 -> -3.0 1.3643763538418414 logt0019 log10 -0.001 -0.0 -> -3.0 -1.3643763538418414 logt0020 log10 -0.57899999999999996 0.0 -> -0.23732143627256383 1.3643763538418414 logt0021 log10 -0.57899999999999996 -0.0 -> -0.23732143627256383 -1.3643763538418414 logt0022 log10 -0.99999999999999989 0.0 -> -4.821637332766436e-17 1.3643763538418414 logt0023 log10 -0.99999999999999989 -0.0 -> -4.821637332766436e-17 -1.3643763538418414 logt0024 log10 -1.0000000000000002 0.0 -> 9.6432746655328696e-17 1.3643763538418414 logt0025 log10 -1.0000000000000002 -0.0 -> 9.6432746655328696e-17 -1.3643763538418414 logt0026 log10 -1.0009999999999999 0.0 -> 0.0004340774793185929 1.3643763538418414 logt0027 log10 -1.0009999999999999 -0.0 -> 0.0004340774793185929 -1.3643763538418414 logt0028 log10 -2.0 0.0 -> 0.3010299956639812 1.3643763538418414 logt0029 log10 -2.0 -0.0 -> 0.3010299956639812 -1.3643763538418414 logt0030 log10 -23.0 0.0 -> 1.3617278360175928 1.3643763538418414 logt0031 log10 -23.0 -0.0 -> 1.3617278360175928 -1.3643763538418414 logt0032 log10 -10000000000000000.0 0.0 -> 16.0 1.3643763538418414 logt0033 log10 -10000000000000000.0 -0.0 -> 16.0 -1.3643763538418414 logt0034 log10 -9.9999999999999998e+149 0.0 -> 150.0 1.3643763538418414 logt0035 log10 -9.9999999999999998e+149 -0.0 -> 150.0 -1.3643763538418414 logt0036 log10 -1.0000000000000001e+299 0.0 -> 299.0 1.3643763538418414 logt0037 log10 -1.0000000000000001e+299 -0.0 -> 299.0 -1.3643763538418414 logt0038 log10 9.8813129168249309e-324 0.0 -> -323.0051853474518 0.0 logt0039 log10 9.8813129168249309e-324 -0.0 -> -323.0051853474518 -0.0 logt0040 log10 1e-305 0.0 -> -305.0 0.0 logt0041 log10 1e-305 -0.0 -> -305.0 -0.0 logt0042 log10 1e-150 0.0 -> -150.0 0.0 logt0043 log10 1e-150 -0.0 -> -150.0 -0.0 logt0044 log10 9.9999999999999998e-17 0.0 -> -16.0 0.0 logt0045 log10 9.9999999999999998e-17 -0.0 -> -16.0 -0.0 logt0046 log10 0.001 0.0 -> -3.0 0.0 logt0047 log10 0.001 -0.0 -> -3.0 -0.0 logt0048 log10 0.57899999999999996 0.0 -> -0.23732143627256383 0.0 logt0049 log10 0.57899999999999996 -0.0 -> -0.23732143627256383 -0.0 logt0050 log10 0.99999999999999989 0.0 -> -4.821637332766436e-17 0.0 logt0051 log10 0.99999999999999989 -0.0 -> -4.821637332766436e-17 -0.0 logt0052 log10 1.0000000000000002 0.0 -> 9.6432746655328696e-17 0.0 logt0053 log10 1.0000000000000002 -0.0 -> 9.6432746655328696e-17 -0.0 logt0054 log10 1.0009999999999999 0.0 -> 0.0004340774793185929 0.0 logt0055 log10 1.0009999999999999 -0.0 -> 0.0004340774793185929 -0.0 logt0056 log10 2.0 0.0 -> 0.3010299956639812 0.0 logt0057 log10 2.0 -0.0 -> 0.3010299956639812 -0.0 logt0058 log10 23.0 0.0 -> 1.3617278360175928 0.0 logt0059 log10 23.0 -0.0 -> 1.3617278360175928 -0.0 logt0060 log10 10000000000000000.0 0.0 -> 16.0 0.0 logt0061 log10 10000000000000000.0 -0.0 -> 16.0 -0.0 logt0062 log10 9.9999999999999998e+149 0.0 -> 150.0 0.0 logt0063 log10 9.9999999999999998e+149 -0.0 -> 150.0 -0.0 logt0064 log10 1.0000000000000001e+299 0.0 -> 299.0 0.0 logt0065 log10 1.0000000000000001e+299 -0.0 -> 299.0 -0.0 -- random inputs logt0066 log10 -1.9830454945186191e-16 -2.0334448025673346 -> 0.30823238806798503 -0.68218817692092071 logt0067 log10 -0.96745853024741857 -0.84995816228299692 -> 0.10984528422284802 -1.051321426174086 logt0068 log10 -0.1603644313948418 -0.2929942111041835 -> -0.47624115633305419 -0.89967884023059597 logt0069 log10 -0.15917913168438699 -0.25238799251132177 -> -0.52521304641665956 -0.92655790645688119 logt0070 log10 -0.68907818535078802 -3.0693105853476346 -> 0.4977187885066448 -0.77809953119328823 logt0071 log10 -17.268133447565589 6.8165120014604756 -> 1.2686912008098534 1.2010954629104202 logt0072 log10 -1.7153894479690328 26.434055372802636 -> 1.423076309032751 0.71033145859005309 logt0073 log10 -8.0456794648936578e-06 0.19722758057570208 -> -0.70503235244987561 0.68220589348055516 logt0074 log10 -2.4306442691323173 0.6846919750700996 -> 0.40230257845332595 1.2451292533748923 logt0075 log10 -3.5488049250888194 0.45324040643185254 -> 0.55359553977141063 1.3092085108866405 logt0076 log10 0.18418516851510189 -0.26062518836212617 -> -0.49602019732913638 -0.41500503556604301 logt0077 log10 2.7124837795638399 -13.148769067133387 -> 1.1279348613317008 -0.59383616643803216 logt0078 log10 3.6521275476169149e-13 -3.7820543023170673e-05 -> -4.4222722398941112 -0.68218817272717114 logt0079 log10 5.0877545813862239 -1.2834978326786852 -> 0.71992371806426847 -0.10732104352159283 logt0080 log10 0.26477986808461512 -0.67659001194187429 -> -0.13873139935281681 -0.52018649631300229 logt0081 log10 0.0014754261398071962 5.3514691608205442 -> 0.72847304354528819 0.6820684398178033 logt0082 log10 0.29667334462157885 0.00020056045042584795 -> -0.52772137299296806 0.00029359659442937261 logt0083 log10 0.82104233671099425 3.9005387130133102 -> 0.60053889028349361 0.59208690021184018 logt0084 log10 0.27268135358180667 124.42088110945804 -> 2.094894315538069 0.68123637673656989 logt0085 log10 0.0026286959168267485 0.47795808180573013 -> -0.32060362226100814 0.67979964816877081 -- values near infinity logt0100 log10 1.0512025744003172e+308 7.2621669750664611e+307 -> 308.10641562682065 0.26255461408256975 logt0101 log10 5.5344249034372126e+307 -1.2155859158431275e+308 -> 308.12569106009209 -0.496638782296212 logt0102 log10 -1.3155575403469408e+308 1.1610793541663864e+308 -> 308.24419052091019 1.0503359777705266 logt0103 log10 -1.632366720973235e+308 -1.54299446211448e+308 -> 308.3514500834093 -1.0355024924378222 logt0104 log10 0.0 5.9449276692327712e+307 -> 307.77414657501117 0.68218817692092071 logt0105 log10 -0.0 1.1201850459025692e+308 -> 308.04928977068465 0.68218817692092071 logt0106 log10 0.0 -1.6214225933466528e+308 -> 308.20989622030174 -0.68218817692092071 logt0107 log10 -0.0 -1.7453269791591058e+308 -> 308.24187680203539 -0.68218817692092071 logt0108 log10 1.440860577601428e+308 0.0 -> 308.15862195908755 0.0 logt0109 log10 1.391515176148282e+308 -0.0 -> 308.14348794720007 -0.0 logt0110 log10 -1.201354401295296e+308 0.0 -> 308.07967114380773 1.3643763538418414 logt0111 log10 -1.6704337825976804e+308 -0.0 -> 308.22282926451624 -1.3643763538418414 logt0112 log10 7.2276974655190223e+307 7.94879711369164 -> 307.85899996571993 4.7762357800858463e-308 logt0113 log10 1.1207859593716076e+308 -6.1956200868221147 -> 308.04952268169455 -2.4007470767963597e-308 logt0114 log10 -4.6678933874471045e+307 9.947107893220382 -> 307.66912092839902 1.3643763538418414 logt0115 log10 -1.5108012453950142e+308 -5.3117197179375619 -> 308.1792073341565 -1.3643763538418414 logt0116 log10 7.4903750871504435 1.5320703776626352e+308 -> 308.18527871564157 0.68218817692092071 logt0117 log10 5.9760325525654778 -8.0149473997349123e+307 -> 307.90390067652424 -0.68218817692092071 logt0118 log10 -7.880194206386629 1.7861845814767441e+308 -> 308.25192633617331 0.68218817692092071 logt0119 log10 -9.886438993852865 -6.19235781080747e+307 -> 307.79185604308338 -0.68218817692092071 -- values near 0 logt0120 log10 2.2996867579227779e-308 6.7861840770939125e-312 -> -307.63833129662572 0.00012815668056362305 logt0121 log10 6.9169190417774516e-323 -9.0414013188948118e-322 -> -321.04249706727148 -0.64902805353306059 logt0122 log10 -1.5378064962914011e-316 1.8243628389354635e-310 -> -309.73888878263222 0.68218854299989429 logt0123 log10 -2.3319898483706837e-321 -2.2358763941866371e-313 -> -312.65055220919641 -0.68218818145055538 logt0124 log10 0.0 3.872770101081121e-315 -> -314.41197828323476 0.68218817692092071 logt0125 log10 -0.0 9.6342800939043076e-322 -> -321.01618073175331 0.68218817692092071 logt0126 log10 0.0 -2.266099393427834e-308 -> -307.64472104545649 -0.68218817692092071 logt0127 log10 -0.0 -2.1184695673766626e-315 -> -314.67397777042407 -0.68218817692092071 logt0128 log10 1.1363509854348671e-322 0.0 -> -321.94448750709819 0.0 logt0129 log10 3.5572726500569751e-322 -0.0 -> -321.44888284668451 -0.0 logt0130 log10 -2.3696071074040593e-310 0.0 -> -309.62532365619722 1.3643763538418414 logt0131 log10 -2.813283897266934e-317 -0.0 -> -316.55078643961042 -1.3643763538418414 -- values near the unit circle logt0200 log10 -0.59999999999999998 0.80000000000000004 -> 9.6432746655328709e-18 0.96165715756846815 logt0201 log10 0.79999999999999993 0.60000000000000009 -> 2.6765463916147622e-33 0.2794689806475476 -- special values logt1000 log10 -0.0 0.0 -> -inf 1.3643763538418414 divide-by-zero logt1001 log10 0.0 0.0 -> -inf 0.0 divide-by-zero logt1002 log10 0.0 inf -> inf 0.68218817692092071 logt1003 log10 2.3 inf -> inf 0.68218817692092071 logt1004 log10 -0.0 inf -> inf 0.68218817692092071 logt1005 log10 -2.3 inf -> inf 0.68218817692092071 logt1006 log10 0.0 nan -> nan nan logt1007 log10 2.3 nan -> nan nan logt1008 log10 -0.0 nan -> nan nan logt1009 log10 -2.3 nan -> nan nan logt1010 log10 -inf 0.0 -> inf 1.3643763538418414 logt1011 log10 -inf 2.3 -> inf 1.3643763538418414 logt1012 log10 inf 0.0 -> inf 0.0 logt1013 log10 inf 2.3 -> inf 0.0 logt1014 log10 -inf inf -> inf 1.0232822653813811 logt1015 log10 inf inf -> inf 0.34109408846046035 logt1016 log10 inf nan -> inf nan logt1017 log10 -inf nan -> inf nan logt1018 log10 nan 0.0 -> nan nan logt1019 log10 nan 2.3 -> nan nan logt1020 log10 nan inf -> inf nan logt1021 log10 nan nan -> nan nan logt1022 log10 -0.0 -0.0 -> -inf -1.3643763538418414 divide-by-zero logt1023 log10 0.0 -0.0 -> -inf -0.0 divide-by-zero logt1024 log10 0.0 -inf -> inf -0.68218817692092071 logt1025 log10 2.3 -inf -> inf -0.68218817692092071 logt1026 log10 -0.0 -inf -> inf -0.68218817692092071 logt1027 log10 -2.3 -inf -> inf -0.68218817692092071 logt1028 log10 -inf -0.0 -> inf -1.3643763538418414 logt1029 log10 -inf -2.3 -> inf -1.3643763538418414 logt1030 log10 inf -0.0 -> inf -0.0 logt1031 log10 inf -2.3 -> inf -0.0 logt1032 log10 -inf -inf -> inf -1.0232822653813811 logt1033 log10 inf -inf -> inf -0.34109408846046035 logt1034 log10 nan -0.0 -> nan nan logt1035 log10 nan -2.3 -> nan nan logt1036 log10 nan -inf -> inf nan ----------------------- -- sqrt: Square root -- ----------------------- -- zeros sqrt0000 sqrt 0.0 0.0 -> 0.0 0.0 sqrt0001 sqrt 0.0 -0.0 -> 0.0 -0.0 sqrt0002 sqrt -0.0 0.0 -> 0.0 0.0 sqrt0003 sqrt -0.0 -0.0 -> 0.0 -0.0 -- values along both sides of real axis sqrt0010 sqrt -9.8813129168249309e-324 0.0 -> 0.0 3.1434555694052576e-162 sqrt0011 sqrt -9.8813129168249309e-324 -0.0 -> 0.0 -3.1434555694052576e-162 sqrt0012 sqrt -1e-305 0.0 -> 0.0 3.1622776601683791e-153 sqrt0013 sqrt -1e-305 -0.0 -> 0.0 -3.1622776601683791e-153 sqrt0014 sqrt -1e-150 0.0 -> 0.0 9.9999999999999996e-76 sqrt0015 sqrt -1e-150 -0.0 -> 0.0 -9.9999999999999996e-76 sqrt0016 sqrt -9.9999999999999998e-17 0.0 -> 0.0 1e-08 sqrt0017 sqrt -9.9999999999999998e-17 -0.0 -> 0.0 -1e-08 sqrt0018 sqrt -0.001 0.0 -> 0.0 0.031622776601683791 sqrt0019 sqrt -0.001 -0.0 -> 0.0 -0.031622776601683791 sqrt0020 sqrt -0.57899999999999996 0.0 -> 0.0 0.76092049518987193 sqrt0021 sqrt -0.57899999999999996 -0.0 -> 0.0 -0.76092049518987193 sqrt0022 sqrt -0.99999999999999989 0.0 -> 0.0 0.99999999999999989 sqrt0023 sqrt -0.99999999999999989 -0.0 -> 0.0 -0.99999999999999989 sqrt0024 sqrt -1.0000000000000002 0.0 -> 0.0 1.0 sqrt0025 sqrt -1.0000000000000002 -0.0 -> 0.0 -1.0 sqrt0026 sqrt -1.0009999999999999 0.0 -> 0.0 1.000499875062461 sqrt0027 sqrt -1.0009999999999999 -0.0 -> 0.0 -1.000499875062461 sqrt0028 sqrt -2.0 0.0 -> 0.0 1.4142135623730951 sqrt0029 sqrt -2.0 -0.0 -> 0.0 -1.4142135623730951 sqrt0030 sqrt -23.0 0.0 -> 0.0 4.7958315233127191 sqrt0031 sqrt -23.0 -0.0 -> 0.0 -4.7958315233127191 sqrt0032 sqrt -10000000000000000.0 0.0 -> 0.0 100000000.0 sqrt0033 sqrt -10000000000000000.0 -0.0 -> 0.0 -100000000.0 sqrt0034 sqrt -9.9999999999999998e+149 0.0 -> 0.0 9.9999999999999993e+74 sqrt0035 sqrt -9.9999999999999998e+149 -0.0 -> 0.0 -9.9999999999999993e+74 sqrt0036 sqrt -1.0000000000000001e+299 0.0 -> 0.0 3.1622776601683796e+149 sqrt0037 sqrt -1.0000000000000001e+299 -0.0 -> 0.0 -3.1622776601683796e+149 sqrt0038 sqrt 9.8813129168249309e-324 0.0 -> 3.1434555694052576e-162 0.0 sqrt0039 sqrt 9.8813129168249309e-324 -0.0 -> 3.1434555694052576e-162 -0.0 sqrt0040 sqrt 1e-305 0.0 -> 3.1622776601683791e-153 0.0 sqrt0041 sqrt 1e-305 -0.0 -> 3.1622776601683791e-153 -0.0 sqrt0042 sqrt 1e-150 0.0 -> 9.9999999999999996e-76 0.0 sqrt0043 sqrt 1e-150 -0.0 -> 9.9999999999999996e-76 -0.0 sqrt0044 sqrt 9.9999999999999998e-17 0.0 -> 1e-08 0.0 sqrt0045 sqrt 9.9999999999999998e-17 -0.0 -> 1e-08 -0.0 sqrt0046 sqrt 0.001 0.0 -> 0.031622776601683791 0.0 sqrt0047 sqrt 0.001 -0.0 -> 0.031622776601683791 -0.0 sqrt0048 sqrt 0.57899999999999996 0.0 -> 0.76092049518987193 0.0 sqrt0049 sqrt 0.57899999999999996 -0.0 -> 0.76092049518987193 -0.0 sqrt0050 sqrt 0.99999999999999989 0.0 -> 0.99999999999999989 0.0 sqrt0051 sqrt 0.99999999999999989 -0.0 -> 0.99999999999999989 -0.0 sqrt0052 sqrt 1.0000000000000002 0.0 -> 1.0 0.0 sqrt0053 sqrt 1.0000000000000002 -0.0 -> 1.0 -0.0 sqrt0054 sqrt 1.0009999999999999 0.0 -> 1.000499875062461 0.0 sqrt0055 sqrt 1.0009999999999999 -0.0 -> 1.000499875062461 -0.0 sqrt0056 sqrt 2.0 0.0 -> 1.4142135623730951 0.0 sqrt0057 sqrt 2.0 -0.0 -> 1.4142135623730951 -0.0 sqrt0058 sqrt 23.0 0.0 -> 4.7958315233127191 0.0 sqrt0059 sqrt 23.0 -0.0 -> 4.7958315233127191 -0.0 sqrt0060 sqrt 10000000000000000.0 0.0 -> 100000000.0 0.0 sqrt0061 sqrt 10000000000000000.0 -0.0 -> 100000000.0 -0.0 sqrt0062 sqrt 9.9999999999999998e+149 0.0 -> 9.9999999999999993e+74 0.0 sqrt0063 sqrt 9.9999999999999998e+149 -0.0 -> 9.9999999999999993e+74 -0.0 sqrt0064 sqrt 1.0000000000000001e+299 0.0 -> 3.1622776601683796e+149 0.0 sqrt0065 sqrt 1.0000000000000001e+299 -0.0 -> 3.1622776601683796e+149 -0.0 -- random inputs sqrt0100 sqrt -0.34252542541549913 -223039880.15076211 -> 10560.300180587592 -10560.300196805192 sqrt0101 sqrt -0.88790791393018909 -5.3307751730827402 -> 1.5027154613689004 -1.7737140896343291 sqrt0102 sqrt -113916.89291310767 -0.018143374626153858 -> 2.6877817875351178e-05 -337.51576691038952 sqrt0103 sqrt -0.63187172386197121 -0.26293913366617694 -> 0.16205707495266153 -0.81125471918761971 sqrt0104 sqrt -0.058185169308906215 -2.3548312990430991 -> 1.0717660342420072 -1.0985752598086966 sqrt0105 sqrt -1.0580584765935896 0.14400319259151736 -> 0.069837489270111242 1.030987755262468 sqrt0106 sqrt -1.1667595947504932 0.11159711473953678 -> 0.051598531319315251 1.0813981705111229 sqrt0107 sqrt -0.5123728411449906 0.026175433648339085 -> 0.018278026262418718 0.71603556293597614 sqrt0108 sqrt -3.7453400060067228 1.0946500314809635 -> 0.27990088541692498 1.9554243814742367 sqrt0109 sqrt -0.0027736121575097673 1.0367943000839817 -> 0.71903560338719175 0.72096172651250545 sqrt0110 sqrt 1501.2559699453188 -1.1997325207283589 -> 38.746047664730959 -0.015481998720355024 sqrt0111 sqrt 1.4830075326850578 -0.64100878436755349 -> 1.244712815741096 -0.25749264258434584 sqrt0112 sqrt 0.095395618499734602 -0.48226565701639595 -> 0.54175904053472879 -0.44509239434231551 sqrt0113 sqrt 0.50109185681863277 -0.54054037379892561 -> 0.7868179858332387 -0.34349772344520979 sqrt0114 sqrt 0.98779807595367897 -0.00019848758437225191 -> 0.99388031770665153 -9.9854872279921968e-05 sqrt0115 sqrt 11.845472380792259 0.0010051104581506761 -> 3.4417252072345397 0.00014601840612346451 sqrt0116 sqrt 2.3558249686735975 0.25605157371744403 -> 1.5371278477386647 0.083288964575761404 sqrt0117 sqrt 0.77584894123159098 1.0496420627016076 -> 1.0200744386390885 0.51449287568756552 sqrt0118 sqrt 1.8961715669604893 0.34940793467158854 -> 1.3827991781411615 0.12634080935066902 sqrt0119 sqrt 0.96025378316565801 0.69573224860140515 -> 1.0358710342209998 0.33581991658093457 -- values near 0 sqrt0120 sqrt 7.3577938365086866e-313 8.1181408465112743e-319 -> 8.5777583531543516e-157 4.732087634251168e-163 sqrt0121 sqrt 1.2406883874892108e-310 -5.1210133324269776e-312 -> 1.1140990057468052e-155 -2.2982756945349973e-157 sqrt0122 sqrt -7.1145453001139502e-322 2.9561379244703735e-314 -> 1.2157585807480286e-157 1.2157586100077242e-157 sqrt0123 sqrt -4.9963244206801218e-314 -8.4718424423690227e-319 -> 1.8950582312540437e-162 -2.2352459419578971e-157 sqrt0124 sqrt 0.0 7.699553609385195e-318 -> 1.9620848107797476e-159 1.9620848107797476e-159 sqrt0125 sqrt -0.0 3.3900826606499415e-309 -> 4.1170879639922327e-155 4.1170879639922327e-155 sqrt0126 sqrt 0.0 -9.8907989772250828e-319 -> 7.032353438652342e-160 -7.032353438652342e-160 sqrt0127 sqrt -0.0 -1.3722939367590908e-315 -> 2.6194407196566702e-158 -2.6194407196566702e-158 sqrt0128 sqrt 7.9050503334599447e-323 0.0 -> 8.8910349979403099e-162 0.0 sqrt0129 sqrt 1.8623241768349486e-309 -0.0 -> 4.3154654173506579e-155 -0.0 sqrt0130 sqrt -2.665971134499887e-308 0.0 -> 0.0 1.6327801856036491e-154 sqrt0131 sqrt -1.5477066694467245e-310 -0.0 -> 0.0 -1.2440685951533077e-155 -- inputs whose absolute value overflows sqrt0140 sqrt 1.6999999999999999e+308 -1.6999999999999999e+308 -> 1.4325088230154573e+154 -5.9336458271212207e+153 sqrt0141 sqrt -1.797e+308 -9.9999999999999999e+306 -> 3.7284476432057307e+152 -1.3410406899802901e+154 -- Additional real values (mpmath) sqrt0150 sqrt 1.7976931348623157e+308 0.0 -> 1.3407807929942596355e+154 0.0 sqrt0151 sqrt 2.2250738585072014e-308 0.0 -> 1.4916681462400413487e-154 0.0 sqrt0152 sqrt 5e-324 0.0 -> 2.2227587494850774834e-162 0.0 -- special values sqrt1000 sqrt 0.0 0.0 -> 0.0 0.0 sqrt1001 sqrt -0.0 0.0 -> 0.0 0.0 sqrt1002 sqrt 0.0 inf -> inf inf sqrt1003 sqrt 2.3 inf -> inf inf sqrt1004 sqrt inf inf -> inf inf sqrt1005 sqrt -0.0 inf -> inf inf sqrt1006 sqrt -2.3 inf -> inf inf sqrt1007 sqrt -inf inf -> inf inf sqrt1008 sqrt nan inf -> inf inf sqrt1009 sqrt 0.0 nan -> nan nan sqrt1010 sqrt 2.3 nan -> nan nan sqrt1011 sqrt -0.0 nan -> nan nan sqrt1012 sqrt -2.3 nan -> nan nan sqrt1013 sqrt -inf 0.0 -> 0.0 inf sqrt1014 sqrt -inf 2.3 -> 0.0 inf sqrt1015 sqrt inf 0.0 -> inf 0.0 sqrt1016 sqrt inf 2.3 -> inf 0.0 sqrt1017 sqrt -inf nan -> nan inf ignore-imag-sign sqrt1018 sqrt inf nan -> inf nan sqrt1019 sqrt nan 0.0 -> nan nan sqrt1020 sqrt nan 2.3 -> nan nan sqrt1021 sqrt nan nan -> nan nan sqrt1022 sqrt 0.0 -0.0 -> 0.0 -0.0 sqrt1023 sqrt -0.0 -0.0 -> 0.0 -0.0 sqrt1024 sqrt 0.0 -inf -> inf -inf sqrt1025 sqrt 2.3 -inf -> inf -inf sqrt1026 sqrt inf -inf -> inf -inf sqrt1027 sqrt -0.0 -inf -> inf -inf sqrt1028 sqrt -2.3 -inf -> inf -inf sqrt1029 sqrt -inf -inf -> inf -inf sqrt1030 sqrt nan -inf -> inf -inf sqrt1031 sqrt -inf -0.0 -> 0.0 -inf sqrt1032 sqrt -inf -2.3 -> 0.0 -inf sqrt1033 sqrt inf -0.0 -> inf -0.0 sqrt1034 sqrt inf -2.3 -> inf -0.0 sqrt1035 sqrt nan -0.0 -> nan nan sqrt1036 sqrt nan -2.3 -> nan nan -- For exp, cosh, sinh, tanh we limit tests to arguments whose -- imaginary part is less than 10 in absolute value: most math -- libraries have poor accuracy for (real) sine and cosine for -- large arguments, and the accuracy of these complex functions -- suffer correspondingly. -- -- Similarly, for cos, sin and tan we limit tests to arguments -- with relatively small real part. ------------------------------- -- exp: Exponential function -- ------------------------------- -- zeros exp0000 exp 0.0 0.0 -> 1.0 0.0 exp0001 exp 0.0 -0.0 -> 1.0 -0.0 exp0002 exp -0.0 0.0 -> 1.0 0.0 exp0003 exp -0.0 -0.0 -> 1.0 -0.0 -- random inputs exp0004 exp -17.957359009564684 -1.108613895795274 -> 7.0869292576226611e-09 -1.4225929202377833e-08 exp0005 exp -1.4456149663368642e-15 -0.75359817331772239 -> 0.72923148323917997 -0.68426708517419033 exp0006 exp -0.76008654883512661 -0.46657235480105019 -> 0.41764393109928666 -0.21035108396792854 exp0007 exp -5.7071614697735731 -2.3744161818115816e-11 -> 0.0033220890242068356 -7.8880219364953578e-14 exp0008 exp -0.4653981327927097 -5.2236706667445587e-21 -> 0.62788507378216663 -3.2798648420026468e-21 exp0009 exp -3.2444565242295518 1.1535625304243959 -> 0.015799936931457641 0.035644950380024749 exp0010 exp -3.0651456337977727 0.87765086532391878 -> 0.029805595629855953 0.035882775180855669 exp0011 exp -0.11080823753233926 0.96486386300873106 -> 0.50979112534376314 0.73575512419561562 exp0012 exp -2.5629722598928648 0.019636235754708079 -> 0.077060452853917397 0.0015133717341137684 exp0013 exp -3.3201709957983357e-10 1.2684017344487268 -> 0.29780699855434889 0.95462610007689186 exp0014 exp 0.88767276057993272 -0.18953422986895557 -> 2.3859624049858095 -0.45771559132044426 exp0015 exp 1.5738333486794742 -2.2576803075544328e-11 -> 4.8251091132458654 -1.0893553826776623e-10 exp0016 exp 1.6408702341813795 -1.438879484380837 -> 0.6786733590689048 -5.1148284173168825 exp0017 exp 1.820279424202033 -0.020812040370785722 -> 6.1722462896420902 -0.1284755888435051 exp0018 exp 1.7273965735945873 -0.61140621328954947 -> 4.6067931898799976 -3.2294267694441308 exp0019 exp 2.5606034306862995 0.098153136008435504 -> 12.881325889966629 1.2684184812864494 exp0020 exp 10.280368619483029 3.4564622559748535 -> -27721.283321551502 -9028.9663215568835 exp0021 exp 1.104007405129741e-155 0.21258803067317278 -> 0.97748813933531764 0.21099037290544478 exp0022 exp 0.027364777809295172 0.00059226603500623363 -> 1.0277424518451876 0.0006086970181346579 exp0023 exp 0.94356313429255245 3.418530463518592 -> -2.4712285695346194 -0.70242654900218349 -- cases where exp(z) representable, exp(z.real) not exp0030 exp 710.0 0.78500000000000003 -> 1.5803016909637158e+308 1.5790437551806911e+308 exp0031 exp 710.0 -0.78500000000000003 -> 1.5803016909637158e+308 -1.5790437551806911e+308 -- values for which exp(x) is subnormal, or underflows to 0 exp0040 exp -735.0 0.78500000000000003 -> 4.3976783136329355e-320 4.3942198541120468e-320 exp0041 exp -735.0 -2.3559999999999999 -> -4.3952079854037293e-320 -4.396690182341253e-320 exp0042 exp -745.0 0.0 -> 4.9406564584124654e-324 0.0 exp0043 exp -745.0 0.7 -> 0.0 0.0 exp0044 exp -745.0 2.1 -> -0.0 0.0 exp0045 exp -745.0 3.7 -> -0.0 -0.0 exp0046 exp -745.0 5.3 -> 0.0 -0.0 -- values for which exp(z) overflows exp0050 exp 710.0 0.0 -> inf 0.0 overflow exp0051 exp 711.0 0.7 -> inf inf overflow exp0052 exp 710.0 1.5 -> 1.5802653829857376e+307 inf overflow exp0053 exp 710.0 1.6 -> -6.5231579995501372e+306 inf overflow exp0054 exp 710.0 2.8 -> -inf 7.4836177417448528e+307 overflow -- Additional real values (mpmath) exp0070 exp 1e-08 0.0 -> 1.00000001000000005 0.0 exp0071 exp 0.0003 0.0 -> 1.0003000450045003375 0.0 exp0072 exp 0.2 0.0 -> 1.2214027581601698475 0.0 exp0073 exp 1.0 0.0 -> 2.7182818284590452354 0.0 exp0074 exp -1e-08 0.0 -> 0.99999999000000005 0.0 exp0075 exp -0.0003 0.0 -> 0.99970004499550033751 0.0 exp0076 exp -1.0 0.0 -> 0.3678794411714423216 0.0 exp0077 exp 2.220446049250313e-16 0.0 -> 1.000000000000000222 0.0 exp0078 exp -1.1102230246251565e-16 0.0 -> 0.99999999999999988898 0.0 exp0079 exp 2.302585092994046 0.0 -> 10.000000000000002171 0.0 exp0080 exp -2.302585092994046 0.0 -> 0.099999999999999978292 0.0 exp0081 exp 709.7827 0.0 -> 1.7976699566638014654e+308 0.0 -- special values exp1000 exp 0.0 0.0 -> 1.0 0.0 exp1001 exp -0.0 0.0 -> 1.0 0.0 exp1002 exp 0.0 inf -> nan nan invalid exp1003 exp 2.3 inf -> nan nan invalid exp1004 exp -0.0 inf -> nan nan invalid exp1005 exp -2.3 inf -> nan nan invalid exp1006 exp 0.0 nan -> nan nan exp1007 exp 2.3 nan -> nan nan exp1008 exp -0.0 nan -> nan nan exp1009 exp -2.3 nan -> nan nan exp1010 exp -inf 0.0 -> 0.0 0.0 exp1011 exp -inf 1.4 -> 0.0 0.0 exp1012 exp -inf 2.8 -> -0.0 0.0 exp1013 exp -inf 4.2 -> -0.0 -0.0 exp1014 exp -inf 5.6 -> 0.0 -0.0 exp1015 exp -inf 7.0 -> 0.0 0.0 exp1016 exp inf 0.0 -> inf 0.0 exp1017 exp inf 1.4 -> inf inf exp1018 exp inf 2.8 -> -inf inf exp1019 exp inf 4.2 -> -inf -inf exp1020 exp inf 5.6 -> inf -inf exp1021 exp inf 7.0 -> inf inf exp1022 exp -inf inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign exp1023 exp inf inf -> inf nan invalid ignore-real-sign exp1024 exp -inf nan -> 0.0 0.0 ignore-real-sign ignore-imag-sign exp1025 exp inf nan -> inf nan ignore-real-sign exp1026 exp nan 0.0 -> nan 0.0 exp1027 exp nan 2.3 -> nan nan exp1028 exp nan inf -> nan nan exp1029 exp nan nan -> nan nan exp1030 exp 0.0 -0.0 -> 1.0 -0.0 exp1031 exp -0.0 -0.0 -> 1.0 -0.0 exp1032 exp 0.0 -inf -> nan nan invalid exp1033 exp 2.3 -inf -> nan nan invalid exp1034 exp -0.0 -inf -> nan nan invalid exp1035 exp -2.3 -inf -> nan nan invalid exp1036 exp -inf -0.0 -> 0.0 -0.0 exp1037 exp -inf -1.4 -> 0.0 -0.0 exp1038 exp -inf -2.8 -> -0.0 -0.0 exp1039 exp -inf -4.2 -> -0.0 0.0 exp1040 exp -inf -5.6 -> 0.0 0.0 exp1041 exp -inf -7.0 -> 0.0 -0.0 exp1042 exp inf -0.0 -> inf -0.0 exp1043 exp inf -1.4 -> inf -inf exp1044 exp inf -2.8 -> -inf -inf exp1045 exp inf -4.2 -> -inf inf exp1046 exp inf -5.6 -> inf inf exp1047 exp inf -7.0 -> inf -inf exp1048 exp -inf -inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign exp1049 exp inf -inf -> inf nan invalid ignore-real-sign exp1050 exp nan -0.0 -> nan -0.0 exp1051 exp nan -2.3 -> nan nan exp1052 exp nan -inf -> nan nan ----------------------------- -- cosh: Hyperbolic Cosine -- ----------------------------- -- zeros cosh0000 cosh 0.0 0.0 -> 1.0 0.0 cosh0001 cosh 0.0 -0.0 -> 1.0 -0.0 cosh0002 cosh -0.0 0.0 -> 1.0 -0.0 cosh0003 cosh -0.0 -0.0 -> 1.0 0.0 -- random inputs cosh0004 cosh -0.85395264297414253 -8.8553756148671958 -> -1.1684340348021185 0.51842195359787435 cosh0005 cosh -19.584904237211223 -0.066582627994906177 -> 159816812.23336992 10656776.050406246 cosh0006 cosh -0.11072618401130772 -1.484820215073247 -> 0.086397164744949503 0.11054275637717284 cosh0007 cosh -3.4764840250681752 -0.48440348288275276 -> 14.325931955190844 7.5242053548737955 cosh0008 cosh -0.52047063604524602 -0.3603805382775585 -> 1.0653940354683802 0.19193293606252473 cosh0009 cosh -1.39518962975995 0.0074738604700702906 -> 2.1417031027235969 -0.01415518712296308 cosh0010 cosh -0.37107064757653541 0.14728085307856609 -> 1.0580601496776991 -0.055712531964568587 cosh0011 cosh -5.8470200958739653 4.0021722388336292 -> -112.86220667618285 131.24734033545013 cosh0012 cosh -0.1700261444851883 0.97167540135354513 -> 0.57208748253577946 -0.1410904820240203 cosh0013 cosh -0.44042397902648783 1.0904791964139742 -> 0.50760322393058133 -0.40333966652010816 cosh0014 cosh 0.052267552491867299 -3.8889011430644174 -> -0.73452303414639297 0.035540704833537134 cosh0015 cosh 0.98000764177127453 -1.2548829247784097 -> 0.47220747341416142 -1.0879421432180316 cosh0016 cosh 0.083594701222644008 -0.88847899930181284 -> 0.63279782419312613 -0.064954566816002285 cosh0017 cosh 1.38173531783776 -0.43185040816732229 -> 1.9221663374671647 -0.78073830858849347 cosh0018 cosh 0.57315681120148465 -0.22255760951027942 -> 1.1399733125173004 -0.1335512343605956 cosh0019 cosh 1.8882512333062347 4.5024932182383797 -> -0.7041602065362691 -3.1573822131964615 cosh0020 cosh 0.5618219206858317 0.92620452129575348 -> 0.69822380405378381 0.47309067471054522 cosh0021 cosh 0.54361442847062591 0.64176483583018462 -> 0.92234462074193491 0.34167906495845501 cosh0022 cosh 0.0014777403107920331 1.3682028122677661 -> 0.2012106963899549 0.001447518137863219 cosh0023 cosh 2.218885944363501 2.0015727395883687 -> -1.94294321081968 4.1290269176083196 -- large real part cosh0030 cosh 710.5 2.3519999999999999 -> -1.2967465239355998e+308 1.3076707908857333e+308 cosh0031 cosh -710.5 0.69999999999999996 -> 1.4085466381392499e+308 -1.1864024666450239e+308 -- Additional real values (mpmath) cosh0050 cosh 1e-150 0.0 -> 1.0 0.0 cosh0051 cosh 1e-18 0.0 -> 1.0 0.0 cosh0052 cosh 1e-09 0.0 -> 1.0000000000000000005 0.0 cosh0053 cosh 0.0003 0.0 -> 1.0000000450000003375 0.0 cosh0054 cosh 0.2 0.0 -> 1.0200667556190758485 0.0 cosh0055 cosh 1.0 0.0 -> 1.5430806348152437785 0.0 cosh0056 cosh -1e-18 0.0 -> 1.0 -0.0 cosh0057 cosh -0.0003 0.0 -> 1.0000000450000003375 -0.0 cosh0058 cosh -1.0 0.0 -> 1.5430806348152437785 -0.0 cosh0059 cosh 1.3169578969248168 0.0 -> 2.0000000000000001504 0.0 cosh0060 cosh -1.3169578969248168 0.0 -> 2.0000000000000001504 -0.0 cosh0061 cosh 17.328679513998633 0.0 -> 16777216.000000021938 0.0 cosh0062 cosh 18.714973875118524 0.0 -> 67108864.000000043662 0.0 cosh0063 cosh 709.7827 0.0 -> 8.9883497833190073272e+307 0.0 cosh0064 cosh -709.7827 0.0 -> 8.9883497833190073272e+307 -0.0 -- special values cosh1000 cosh 0.0 0.0 -> 1.0 0.0 cosh1001 cosh 0.0 inf -> nan 0.0 invalid ignore-imag-sign cosh1002 cosh 0.0 nan -> nan 0.0 ignore-imag-sign cosh1003 cosh 2.3 inf -> nan nan invalid cosh1004 cosh 2.3 nan -> nan nan cosh1005 cosh inf 0.0 -> inf 0.0 cosh1006 cosh inf 1.4 -> inf inf cosh1007 cosh inf 2.8 -> -inf inf cosh1008 cosh inf 4.2 -> -inf -inf cosh1009 cosh inf 5.6 -> inf -inf cosh1010 cosh inf 7.0 -> inf inf cosh1011 cosh inf inf -> inf nan invalid ignore-real-sign cosh1012 cosh inf nan -> inf nan cosh1013 cosh nan 0.0 -> nan 0.0 ignore-imag-sign cosh1014 cosh nan 2.3 -> nan nan cosh1015 cosh nan inf -> nan nan cosh1016 cosh nan nan -> nan nan cosh1017 cosh 0.0 -0.0 -> 1.0 -0.0 cosh1018 cosh 0.0 -inf -> nan 0.0 invalid ignore-imag-sign cosh1019 cosh 2.3 -inf -> nan nan invalid cosh1020 cosh inf -0.0 -> inf -0.0 cosh1021 cosh inf -1.4 -> inf -inf cosh1022 cosh inf -2.8 -> -inf -inf cosh1023 cosh inf -4.2 -> -inf inf cosh1024 cosh inf -5.6 -> inf inf cosh1025 cosh inf -7.0 -> inf -inf cosh1026 cosh inf -inf -> inf nan invalid ignore-real-sign cosh1027 cosh nan -0.0 -> nan 0.0 ignore-imag-sign cosh1028 cosh nan -2.3 -> nan nan cosh1029 cosh nan -inf -> nan nan cosh1030 cosh -0.0 -0.0 -> 1.0 0.0 cosh1031 cosh -0.0 -inf -> nan 0.0 invalid ignore-imag-sign cosh1032 cosh -0.0 nan -> nan 0.0 ignore-imag-sign cosh1033 cosh -2.3 -inf -> nan nan invalid cosh1034 cosh -2.3 nan -> nan nan cosh1035 cosh -inf -0.0 -> inf 0.0 cosh1036 cosh -inf -1.4 -> inf inf cosh1037 cosh -inf -2.8 -> -inf inf cosh1038 cosh -inf -4.2 -> -inf -inf cosh1039 cosh -inf -5.6 -> inf -inf cosh1040 cosh -inf -7.0 -> inf inf cosh1041 cosh -inf -inf -> inf nan invalid ignore-real-sign cosh1042 cosh -inf nan -> inf nan cosh1043 cosh -0.0 0.0 -> 1.0 -0.0 cosh1044 cosh -0.0 inf -> nan 0.0 invalid ignore-imag-sign cosh1045 cosh -2.3 inf -> nan nan invalid cosh1046 cosh -inf 0.0 -> inf -0.0 cosh1047 cosh -inf 1.4 -> inf -inf cosh1048 cosh -inf 2.8 -> -inf -inf cosh1049 cosh -inf 4.2 -> -inf inf cosh1050 cosh -inf 5.6 -> inf inf cosh1051 cosh -inf 7.0 -> inf -inf cosh1052 cosh -inf inf -> inf nan invalid ignore-real-sign --------------------------- -- sinh: Hyperbolic Sine -- --------------------------- -- zeros sinh0000 sinh 0.0 0.0 -> 0.0 0.0 sinh0001 sinh 0.0 -0.0 -> 0.0 -0.0 sinh0002 sinh -0.0 0.0 -> -0.0 0.0 sinh0003 sinh -0.0 -0.0 -> -0.0 -0.0 -- random inputs sinh0004 sinh -17.282588091462742 -0.38187948694103546 -> -14867386.857248396 -5970648.6553516639 sinh0005 sinh -343.91971203143208 -5.0172868877771525e-22 -> -1.1518691776521735e+149 -5.7792581214689021e+127 sinh0006 sinh -14.178122253300922 -1.9387157579351293 -> 258440.37909034826 -670452.58500946441 sinh0007 sinh -1.0343810581686239 -1.0970235266369905 -> -0.56070858278092739 -1.4098883258046697 sinh0008 sinh -0.066126561416368204 -0.070461584169961872 -> -0.066010558700938124 -0.070557276738637542 sinh0009 sinh -0.37630149150308484 3.3621734692162173 -> 0.37591118119332617 -0.23447115926369383 sinh0010 sinh -0.049941960978670055 0.40323767020414625 -> -0.045955482136329009 0.3928878494430646 sinh0011 sinh -16.647852603903715 0.0026852219129082098 -> -8492566.5739382561 22804.480671133562 sinh0012 sinh -1.476625314303694 0.89473773116683386 -> -1.2982943334382224 1.7966593367791204 sinh0013 sinh -422.36429577556913 0.10366634502307912 -> -1.3400321008920044e+183 1.3941600948045599e+182 sinh0014 sinh 0.09108340745641981 -0.40408227416070353 -> 0.083863724802237902 -0.39480716553935602 sinh0015 sinh 2.036064132067386 -2.6831729961386239 -> -3.37621124363175 -1.723868330002817 sinh0016 sinh 2.5616717223063317 -0.0078978498622717767 -> 6.4399415853815869 -0.051472264400722133 sinh0017 sinh 0.336804011985188 -6.5654622971649337 -> 0.32962499307574578 -0.29449170159995197 sinh0018 sinh 0.23774603755649693 -0.92467195799232049 -> 0.14449839490603389 -0.82109449053556793 sinh0019 sinh 0.0011388273541465494 1.9676196882949855 -> -0.00044014605389634999 0.92229398407098806 sinh0020 sinh 3.2443870105663759 0.8054287559616895 -> 8.8702890778527426 9.2610748597042196 sinh0021 sinh 0.040628908857054738 0.098206391190944958 -> 0.04044426841671233 0.098129544739707392 sinh0022 sinh 4.7252283918217696e-30 9.1198155642656697 -> -4.5071980561644404e-30 0.30025730701661713 sinh0023 sinh 0.043713693678420068 0.22512549887532657 -> 0.042624198673416713 0.22344201231217961 -- large real part sinh0030 sinh 710.5 -2.3999999999999999 -> -1.3579970564885919e+308 -1.24394470907798e+308 sinh0031 sinh -710.5 0.80000000000000004 -> -1.2830671601735164e+308 1.3210954193997678e+308 -- Additional real values (mpmath) sinh0050 sinh 1e-100 0.0 -> 1.00000000000000002e-100 0.0 sinh0051 sinh 5e-17 0.0 -> 4.9999999999999998955e-17 0.0 sinh0052 sinh 1e-16 0.0 -> 9.999999999999999791e-17 0.0 sinh0053 sinh 3.7e-08 0.0 -> 3.7000000000000008885e-8 0.0 sinh0054 sinh 0.001 0.0 -> 0.0010000001666666750208 0.0 sinh0055 sinh 0.2 0.0 -> 0.20133600254109399895 0.0 sinh0056 sinh 1.0 0.0 -> 1.1752011936438014569 0.0 sinh0057 sinh -3.7e-08 0.0 -> -3.7000000000000008885e-8 0.0 sinh0058 sinh -0.001 0.0 -> -0.0010000001666666750208 0.0 sinh0059 sinh -1.0 0.0 -> -1.1752011936438014569 0.0 sinh0060 sinh 1.4436354751788103 0.0 -> 1.9999999999999999078 0.0 sinh0061 sinh -1.4436354751788103 0.0 -> -1.9999999999999999078 0.0 sinh0062 sinh 17.328679513998633 0.0 -> 16777215.999999992136 0.0 sinh0063 sinh 18.714973875118524 0.0 -> 67108864.000000036211 0.0 sinh0064 sinh 709.7827 0.0 -> 8.9883497833190073272e+307 0.0 sinh0065 sinh -709.7827 0.0 -> -8.9883497833190073272e+307 0.0 -- special values sinh1000 sinh 0.0 0.0 -> 0.0 0.0 sinh1001 sinh 0.0 inf -> 0.0 nan invalid ignore-real-sign sinh1002 sinh 0.0 nan -> 0.0 nan ignore-real-sign sinh1003 sinh 2.3 inf -> nan nan invalid sinh1004 sinh 2.3 nan -> nan nan sinh1005 sinh inf 0.0 -> inf 0.0 sinh1006 sinh inf 1.4 -> inf inf sinh1007 sinh inf 2.8 -> -inf inf sinh1008 sinh inf 4.2 -> -inf -inf sinh1009 sinh inf 5.6 -> inf -inf sinh1010 sinh inf 7.0 -> inf inf sinh1011 sinh inf inf -> inf nan invalid ignore-real-sign sinh1012 sinh inf nan -> inf nan ignore-real-sign sinh1013 sinh nan 0.0 -> nan 0.0 sinh1014 sinh nan 2.3 -> nan nan sinh1015 sinh nan inf -> nan nan sinh1016 sinh nan nan -> nan nan sinh1017 sinh 0.0 -0.0 -> 0.0 -0.0 sinh1018 sinh 0.0 -inf -> 0.0 nan invalid ignore-real-sign sinh1019 sinh 2.3 -inf -> nan nan invalid sinh1020 sinh inf -0.0 -> inf -0.0 sinh1021 sinh inf -1.4 -> inf -inf sinh1022 sinh inf -2.8 -> -inf -inf sinh1023 sinh inf -4.2 -> -inf inf sinh1024 sinh inf -5.6 -> inf inf sinh1025 sinh inf -7.0 -> inf -inf sinh1026 sinh inf -inf -> inf nan invalid ignore-real-sign sinh1027 sinh nan -0.0 -> nan -0.0 sinh1028 sinh nan -2.3 -> nan nan sinh1029 sinh nan -inf -> nan nan sinh1030 sinh -0.0 -0.0 -> -0.0 -0.0 sinh1031 sinh -0.0 -inf -> 0.0 nan invalid ignore-real-sign sinh1032 sinh -0.0 nan -> 0.0 nan ignore-real-sign sinh1033 sinh -2.3 -inf -> nan nan invalid sinh1034 sinh -2.3 nan -> nan nan sinh1035 sinh -inf -0.0 -> -inf -0.0 sinh1036 sinh -inf -1.4 -> -inf -inf sinh1037 sinh -inf -2.8 -> inf -inf sinh1038 sinh -inf -4.2 -> inf inf sinh1039 sinh -inf -5.6 -> -inf inf sinh1040 sinh -inf -7.0 -> -inf -inf sinh1041 sinh -inf -inf -> inf nan invalid ignore-real-sign sinh1042 sinh -inf nan -> inf nan ignore-real-sign sinh1043 sinh -0.0 0.0 -> -0.0 0.0 sinh1044 sinh -0.0 inf -> 0.0 nan invalid ignore-real-sign sinh1045 sinh -2.3 inf -> nan nan invalid sinh1046 sinh -inf 0.0 -> -inf 0.0 sinh1047 sinh -inf 1.4 -> -inf inf sinh1048 sinh -inf 2.8 -> inf inf sinh1049 sinh -inf 4.2 -> inf -inf sinh1050 sinh -inf 5.6 -> -inf -inf sinh1051 sinh -inf 7.0 -> -inf inf sinh1052 sinh -inf inf -> inf nan invalid ignore-real-sign ------------------------------ -- tanh: Hyperbolic Tangent -- ------------------------------ -- Disabled test: replaced by test_math.testTanhSign() -- and test_cmath.testTanhSign() -- -- zeros -- tanh0000 tanh 0.0 0.0 -> 0.0 0.0 -- tanh0001 tanh 0.0 -0.0 -> 0.0 -0.0 -- tanh0002 tanh -0.0 0.0 -> -0.0 0.0 -- tanh0003 tanh -0.0 -0.0 -> -0.0 -0.0 -- random inputs tanh0004 tanh -21.200500450664993 -1.6970729480342996 -> -1.0 1.9241352344849399e-19 tanh0005 tanh -0.34158771504251928 -8.0848504951747131 -> -2.123711225855613 1.2827526782026006 tanh0006 tanh -15.454144725193689 -0.23619582288265617 -> -0.99999999999993283 -3.4336684248260036e-14 tanh0007 tanh -7.6103163119661952 -0.7802748320307008 -> -0.99999999497219438 -4.9064845343755437e-07 tanh0008 tanh -0.15374717235792129 -0.6351086327306138 -> -0.23246081703561869 -0.71083467433910219 tanh0009 tanh -0.49101115474392465 0.09723001264886301 -> -0.45844445715492133 0.077191158541805888 tanh0010 tanh -0.10690612157664491 2.861612800856395 -> -0.11519761626257358 -0.28400488355647507 tanh0011 tanh -0.91505774192066702 1.5431174597727007 -> -1.381109893068114 0.025160819663709356 tanh0012 tanh -0.057433367093792223 0.35491159541246459 -> -0.065220499046696953 0.36921788332369498 tanh0013 tanh -1.3540418621233514 0.18969415642242535 -> -0.88235642861151387 0.043764069984411721 tanh0014 tanh 0.94864783961003529 -0.11333689578867717 -> 0.74348401861861368 -0.051271042543855221 tanh0015 tanh 1.9591698133845488 -0.0029654444904578339 -> 0.9610270776968135 -0.00022664240049212933 tanh0016 tanh 1.0949715796669197 -0.24706642853984456 -> 0.81636574501369386 -0.087767436914149954 tanh0017 tanh 5770428.2113731047 -3.7160580339833165 -> 1.0 -0.0 tanh0018 tanh 1.5576782321399629 -1.0357943787966468 -> 1.0403002384895388 -0.081126347894671463 tanh0019 tanh 0.62378536230552961 2.3471393579560216 -> 0.85582499238960363 -0.53569473646842869 tanh0020 tanh 17.400628602508025 9.3987059533841979 -> 0.99999999999999845 -8.0175867720530832e-17 tanh0021 tanh 0.15026177509871896 0.50630349159505472 -> 0.19367536571827768 0.53849847858853661 tanh0022 tanh 0.57433977530711167 1.0071604546265627 -> 1.0857848159262844 0.69139213955872214 tanh0023 tanh 0.16291181500449456 0.006972810241567544 -> 0.16149335907551157 0.0067910772903467817 -- large real part tanh0030 tanh 710 0.13 -> 1.0 0.0 tanh0031 tanh -711 7.4000000000000004 -> -1.0 0.0 tanh0032 tanh 1000 -2.3199999999999998 -> 1.0 0.0 tanh0033 tanh -1.0000000000000001e+300 -9.6699999999999999 -> -1.0 -0.0 -- Additional real values (mpmath) tanh0050 tanh 1e-100 0.0 -> 1.00000000000000002e-100 0.0 tanh0051 tanh 5e-17 0.0 -> 4.9999999999999998955e-17 0.0 tanh0052 tanh 1e-16 0.0 -> 9.999999999999999791e-17 0.0 tanh0053 tanh 3.7e-08 0.0 -> 3.6999999999999983559e-8 0.0 tanh0054 tanh 0.001 0.0 -> 0.00099999966666680002076 0.0 tanh0055 tanh 0.2 0.0 -> 0.19737532022490401141 0.0 tanh0056 tanh 1.0 0.0 -> 0.76159415595576488812 0.0 tanh0057 tanh -3.7e-08 0.0 -> -3.6999999999999983559e-8 0.0 tanh0058 tanh -0.001 0.0 -> -0.00099999966666680002076 0.0 tanh0059 tanh -1.0 0.0 -> -0.76159415595576488812 0.0 tanh0060 tanh 0.5493061443340549 0.0 -> 0.50000000000000003402 0.0 tanh0061 tanh -0.5493061443340549 0.0 -> -0.50000000000000003402 0.0 tanh0062 tanh 17.328679513998633 0.0 -> 0.99999999999999822364 0.0 tanh0063 tanh 18.714973875118524 0.0 -> 0.99999999999999988898 0.0 tanh0064 tanh 711 0.0 -> 1.0 0.0 tanh0065 tanh 1.797e+308 0.0 -> 1.0 0.0 --special values tanh1000 tanh 0.0 0.0 -> 0.0 0.0 tanh1001 tanh 0.0 inf -> nan nan invalid tanh1002 tanh 2.3 inf -> nan nan invalid tanh1003 tanh 0.0 nan -> nan nan tanh1004 tanh 2.3 nan -> nan nan tanh1005 tanh inf 0.0 -> 1.0 0.0 tanh1006 tanh inf 0.7 -> 1.0 0.0 tanh1007 tanh inf 1.4 -> 1.0 0.0 tanh1008 tanh inf 2.1 -> 1.0 -0.0 tanh1009 tanh inf 2.8 -> 1.0 -0.0 tanh1010 tanh inf 3.5 -> 1.0 0.0 tanh1011 tanh inf inf -> 1.0 0.0 ignore-imag-sign tanh1012 tanh inf nan -> 1.0 0.0 ignore-imag-sign tanh1013 tanh nan 0.0 -> nan 0.0 tanh1014 tanh nan 2.3 -> nan nan tanh1015 tanh nan inf -> nan nan tanh1016 tanh nan nan -> nan nan tanh1017 tanh 0.0 -0.0 -> 0.0 -0.0 tanh1018 tanh 0.0 -inf -> nan nan invalid tanh1019 tanh 2.3 -inf -> nan nan invalid tanh1020 tanh inf -0.0 -> 1.0 -0.0 tanh1021 tanh inf -0.7 -> 1.0 -0.0 tanh1022 tanh inf -1.4 -> 1.0 -0.0 tanh1023 tanh inf -2.1 -> 1.0 0.0 tanh1024 tanh inf -2.8 -> 1.0 0.0 tanh1025 tanh inf -3.5 -> 1.0 -0.0 tanh1026 tanh inf -inf -> 1.0 0.0 ignore-imag-sign tanh1027 tanh nan -0.0 -> nan -0.0 tanh1028 tanh nan -2.3 -> nan nan tanh1029 tanh nan -inf -> nan nan tanh1030 tanh -0.0 -0.0 -> -0.0 -0.0 tanh1031 tanh -0.0 -inf -> nan nan invalid tanh1032 tanh -2.3 -inf -> nan nan invalid tanh1033 tanh -0.0 nan -> nan nan tanh1034 tanh -2.3 nan -> nan nan tanh1035 tanh -inf -0.0 -> -1.0 -0.0 tanh1036 tanh -inf -0.7 -> -1.0 -0.0 tanh1037 tanh -inf -1.4 -> -1.0 -0.0 tanh1038 tanh -inf -2.1 -> -1.0 0.0 tanh1039 tanh -inf -2.8 -> -1.0 0.0 tanh1040 tanh -inf -3.5 -> -1.0 -0.0 tanh1041 tanh -inf -inf -> -1.0 0.0 ignore-imag-sign tanh1042 tanh -inf nan -> -1.0 0.0 ignore-imag-sign tanh1043 tanh -0.0 0.0 -> -0.0 0.0 tanh1044 tanh -0.0 inf -> nan nan invalid tanh1045 tanh -2.3 inf -> nan nan invalid tanh1046 tanh -inf 0.0 -> -1.0 0.0 tanh1047 tanh -inf 0.7 -> -1.0 0.0 tanh1048 tanh -inf 1.4 -> -1.0 0.0 tanh1049 tanh -inf 2.1 -> -1.0 -0.0 tanh1050 tanh -inf 2.8 -> -1.0 -0.0 tanh1051 tanh -inf 3.5 -> -1.0 0.0 tanh1052 tanh -inf inf -> -1.0 0.0 ignore-imag-sign ----------------- -- cos: Cosine -- ----------------- -- zeros cos0000 cos 0.0 0.0 -> 1.0 -0.0 cos0001 cos 0.0 -0.0 -> 1.0 0.0 cos0002 cos -0.0 0.0 -> 1.0 0.0 cos0003 cos -0.0 -0.0 -> 1.0 -0.0 -- random inputs cos0004 cos -2.0689194692073034 -0.0016802181751734313 -> -0.47777827208561469 -0.0014760401501695971 cos0005 cos -0.4209627318177977 -1.8238516774258027 -> 2.9010402201444108 -1.2329207042329617 cos0006 cos -1.9402181630694557 -2.9751857392891217 -> -3.5465459297970985 -9.1119163586282248 cos0007 cos -3.3118320290191616 -0.87871302909286142 -> -1.3911528636565498 0.16878141517391701 cos0008 cos -4.9540404623376872 -0.57949232239026827 -> 0.28062445586552065 0.59467861308508008 cos0009 cos -0.45374584316245026 1.3950283448373935 -> 1.9247665574290578 0.83004572204761107 cos0010 cos -0.42578172040176843 1.2715881615413049 -> 1.7517161459489148 0.67863902697363332 cos0011 cos -0.13862985354300136 0.43587635877670328 -> 1.0859880290361912 0.062157548146672272 cos0012 cos -0.11073221308966584 9.9384082307326475e-15 -> 0.99387545040722947 1.0982543264065479e-15 cos0013 cos -1.5027633662054623e-07 0.0069668060249955498 -> 1.0000242682912412 1.0469545565660995e-09 cos0014 cos 4.9728645490503052 -0.00027479808860952822 -> 0.25754011731975501 -0.00026552849549083186 cos0015 cos 7.81969303486719 -0.79621523445878783 -> 0.045734882501585063 0.88253139933082991 cos0016 cos 0.13272421880766716 -0.74668445308718201 -> 1.2806012244432847 0.10825373267437005 cos0017 cos 4.2396521985973274 -2.2178848380884881 -> -2.1165117057056855 -4.0416492444641401 cos0018 cos 1.1622206624927296 -0.50400115461197081 -> 0.44884072613370379 0.4823469915034318 cos0019 cos 1.628772864620884e-08 0.58205705428979282 -> 1.1742319995791435 -1.0024839481956604e-08 cos0020 cos 2.6385212606111241 2.9886107100937296 -> -8.7209475927161417 -4.7748352107199796 cos0021 cos 4.8048375263775256 0.0062248852898515658 -> 0.092318702015846243 0.0061983430422306142 cos0022 cos 7.9914515433858515 0.71659966615501436 -> -0.17375439906936566 -0.77217043527294582 cos0023 cos 0.45124351152540226 1.6992693993812158 -> 2.543477948972237 -1.1528193694875477 -- Additional real values (mpmath) cos0050 cos 1e-150 0.0 -> 1.0 -0.0 cos0051 cos 1e-18 0.0 -> 1.0 -0.0 cos0052 cos 1e-09 0.0 -> 0.9999999999999999995 -0.0 cos0053 cos 0.0003 0.0 -> 0.9999999550000003375 -0.0 cos0054 cos 0.2 0.0 -> 0.98006657784124162892 -0.0 cos0055 cos 1.0 0.0 -> 0.5403023058681397174 -0.0 cos0056 cos -1e-18 0.0 -> 1.0 0.0 cos0057 cos -0.0003 0.0 -> 0.9999999550000003375 0.0 cos0058 cos -1.0 0.0 -> 0.5403023058681397174 0.0 cos0059 cos 1.0471975511965976 0.0 -> 0.50000000000000009945 -0.0 cos0060 cos 2.5707963267948966 0.0 -> -0.84147098480789647357 -0.0 cos0061 cos -2.5707963267948966 0.0 -> -0.84147098480789647357 0.0 cos0062 cos 7.225663103256523 0.0 -> 0.58778525229247407559 -0.0 cos0063 cos -8.79645943005142 0.0 -> -0.80901699437494722255 0.0 -- special values cos1000 cos -0.0 0.0 -> 1.0 0.0 cos1001 cos -inf 0.0 -> nan 0.0 invalid ignore-imag-sign cos1002 cos nan 0.0 -> nan 0.0 ignore-imag-sign cos1003 cos -inf 2.2999999999999998 -> nan nan invalid cos1004 cos nan 2.2999999999999998 -> nan nan cos1005 cos -0.0 inf -> inf 0.0 cos1006 cos -1.3999999999999999 inf -> inf inf cos1007 cos -2.7999999999999998 inf -> -inf inf cos1008 cos -4.2000000000000002 inf -> -inf -inf cos1009 cos -5.5999999999999996 inf -> inf -inf cos1010 cos -7.0 inf -> inf inf cos1011 cos -inf inf -> inf nan invalid ignore-real-sign cos1012 cos nan inf -> inf nan cos1013 cos -0.0 nan -> nan 0.0 ignore-imag-sign cos1014 cos -2.2999999999999998 nan -> nan nan cos1015 cos -inf nan -> nan nan cos1016 cos nan nan -> nan nan cos1017 cos 0.0 0.0 -> 1.0 -0.0 cos1018 cos inf 0.0 -> nan 0.0 invalid ignore-imag-sign cos1019 cos inf 2.2999999999999998 -> nan nan invalid cos1020 cos 0.0 inf -> inf -0.0 cos1021 cos 1.3999999999999999 inf -> inf -inf cos1022 cos 2.7999999999999998 inf -> -inf -inf cos1023 cos 4.2000000000000002 inf -> -inf inf cos1024 cos 5.5999999999999996 inf -> inf inf cos1025 cos 7.0 inf -> inf -inf cos1026 cos inf inf -> inf nan invalid ignore-real-sign cos1027 cos 0.0 nan -> nan 0.0 ignore-imag-sign cos1028 cos 2.2999999999999998 nan -> nan nan cos1029 cos inf nan -> nan nan cos1030 cos 0.0 -0.0 -> 1.0 0.0 cos1031 cos inf -0.0 -> nan 0.0 invalid ignore-imag-sign cos1032 cos nan -0.0 -> nan 0.0 ignore-imag-sign cos1033 cos inf -2.2999999999999998 -> nan nan invalid cos1034 cos nan -2.2999999999999998 -> nan nan cos1035 cos 0.0 -inf -> inf 0.0 cos1036 cos 1.3999999999999999 -inf -> inf inf cos1037 cos 2.7999999999999998 -inf -> -inf inf cos1038 cos 4.2000000000000002 -inf -> -inf -inf cos1039 cos 5.5999999999999996 -inf -> inf -inf cos1040 cos 7.0 -inf -> inf inf cos1041 cos inf -inf -> inf nan invalid ignore-real-sign cos1042 cos nan -inf -> inf nan cos1043 cos -0.0 -0.0 -> 1.0 -0.0 cos1044 cos -inf -0.0 -> nan 0.0 invalid ignore-imag-sign cos1045 cos -inf -2.2999999999999998 -> nan nan invalid cos1046 cos -0.0 -inf -> inf -0.0 cos1047 cos -1.3999999999999999 -inf -> inf -inf cos1048 cos -2.7999999999999998 -inf -> -inf -inf cos1049 cos -4.2000000000000002 -inf -> -inf inf cos1050 cos -5.5999999999999996 -inf -> inf inf cos1051 cos -7.0 -inf -> inf -inf cos1052 cos -inf -inf -> inf nan invalid ignore-real-sign --------------- -- sin: Sine -- --------------- -- zeros sin0000 sin 0.0 0.0 -> 0.0 0.0 sin0001 sin 0.0 -0.0 -> 0.0 -0.0 sin0002 sin -0.0 0.0 -> -0.0 0.0 sin0003 sin -0.0 -0.0 -> -0.0 -0.0 -- random inputs sin0004 sin -0.18691829163163759 -0.74388741985507034 -> -0.2396636733773444 -0.80023231101856751 sin0005 sin -0.45127453702459158 -461.81339920716164 -> -7.9722299331077877e+199 -1.6450205811004628e+200 sin0006 sin -0.47669228345768921 -2.7369936564987514 -> -3.557238022267124 -6.8308030771226615 sin0007 sin -0.31024285525950857 -1.4869219939188296 -> -0.70972676047175209 -1.9985029635426839 sin0008 sin -4.4194573407025608 -1.405999210989288 -> 2.0702480800802685 0.55362250792180601 sin0009 sin -1.7810832046434898e-05 0.0016439555384379083 -> -1.7810856113185261e-05 0.0016439562786668375 sin0010 sin -0.8200017874897666 0.61724876887771929 -> -0.8749078195948865 0.44835295550987758 sin0011 sin -1.4536502806107114 0.63998575534150415 -> -1.2035709929437679 0.080012187489163708 sin0012 sin -2.2653412155506079 0.13172760685583729 -> -0.77502093809190431 -0.084554426868229532 sin0013 sin -0.02613983069491858 0.18404766597776073 -> -0.026580778863127943 0.18502525396735642 sin0014 sin 1.5743065001054617 -0.53125574272642029 -> 1.1444596332092725 0.0019537598099352077 sin0015 sin 7.3833101791283289e-20 -0.16453221324236217 -> 7.4834720674379429e-20 -0.16527555646466915 sin0016 sin 0.34763834641254038 -2.8377416421089565 -> 2.918883541504663 -8.0002718053250224 sin0017 sin 0.077105785180421563 -0.090056027316200674 -> 0.077341973814471304 -0.089909869380524587 sin0018 sin 3.9063227798142329e-17 -0.05954098654295524 -> 3.9132490348956512e-17 -0.059576172859837351 sin0019 sin 0.57333917932544598 8.7785221430594696e-06 -> 0.54244029338302935 7.3747869125301368e-06 sin0020 sin 0.024861722816513169 0.33044620756118515 -> 0.026228801369651 0.3363889671570689 sin0021 sin 1.4342727387492671 0.81361889790284347 -> 1.3370960060947923 0.12336137961387163 sin0022 sin 1.1518087354403725 4.8597235966150558 -> 58.919141989603041 26.237003403758852 sin0023 sin 0.00087773078406649192 34.792379211312095 -> 565548145569.38245 644329685822700.62 -- Additional real values (mpmath) sin0050 sin 1e-100 0.0 -> 1.00000000000000002e-100 0.0 sin0051 sin 3.7e-08 0.0 -> 3.6999999999999992001e-8 0.0 sin0052 sin 0.001 0.0 -> 0.00099999983333334168748 0.0 sin0053 sin 0.2 0.0 -> 0.19866933079506122634 0.0 sin0054 sin 1.0 0.0 -> 0.84147098480789650665 0.0 sin0055 sin -3.7e-08 0.0 -> -3.6999999999999992001e-8 0.0 sin0056 sin -0.001 0.0 -> -0.00099999983333334168748 0.0 sin0057 sin -1.0 0.0 -> -0.84147098480789650665 0.0 sin0058 sin 0.5235987755982989 0.0 -> 0.50000000000000004642 0.0 sin0059 sin -0.5235987755982989 0.0 -> -0.50000000000000004642 0.0 sin0060 sin 2.6179938779914944 0.0 -> 0.49999999999999996018 -0.0 sin0061 sin -2.6179938779914944 0.0 -> -0.49999999999999996018 -0.0 sin0062 sin 7.225663103256523 0.0 -> 0.80901699437494673648 0.0 sin0063 sin -8.79645943005142 0.0 -> -0.58778525229247340658 -0.0 -- special values sin1000 sin -0.0 0.0 -> -0.0 0.0 sin1001 sin -inf 0.0 -> nan 0.0 invalid ignore-imag-sign sin1002 sin nan 0.0 -> nan 0.0 ignore-imag-sign sin1003 sin -inf 2.2999999999999998 -> nan nan invalid sin1004 sin nan 2.2999999999999998 -> nan nan sin1005 sin -0.0 inf -> -0.0 inf sin1006 sin -1.3999999999999999 inf -> -inf inf sin1007 sin -2.7999999999999998 inf -> -inf -inf sin1008 sin -4.2000000000000002 inf -> inf -inf sin1009 sin -5.5999999999999996 inf -> inf inf sin1010 sin -7.0 inf -> -inf inf sin1011 sin -inf inf -> nan inf invalid ignore-imag-sign sin1012 sin nan inf -> nan inf ignore-imag-sign sin1013 sin -0.0 nan -> -0.0 nan sin1014 sin -2.2999999999999998 nan -> nan nan sin1015 sin -inf nan -> nan nan sin1016 sin nan nan -> nan nan sin1017 sin 0.0 0.0 -> 0.0 0.0 sin1018 sin inf 0.0 -> nan 0.0 invalid ignore-imag-sign sin1019 sin inf 2.2999999999999998 -> nan nan invalid sin1020 sin 0.0 inf -> 0.0 inf sin1021 sin 1.3999999999999999 inf -> inf inf sin1022 sin 2.7999999999999998 inf -> inf -inf sin1023 sin 4.2000000000000002 inf -> -inf -inf sin1024 sin 5.5999999999999996 inf -> -inf inf sin1025 sin 7.0 inf -> inf inf sin1026 sin inf inf -> nan inf invalid ignore-imag-sign sin1027 sin 0.0 nan -> 0.0 nan sin1028 sin 2.2999999999999998 nan -> nan nan sin1029 sin inf nan -> nan nan sin1030 sin 0.0 -0.0 -> 0.0 -0.0 sin1031 sin inf -0.0 -> nan 0.0 invalid ignore-imag-sign sin1032 sin nan -0.0 -> nan 0.0 ignore-imag-sign sin1033 sin inf -2.2999999999999998 -> nan nan invalid sin1034 sin nan -2.2999999999999998 -> nan nan sin1035 sin 0.0 -inf -> 0.0 -inf sin1036 sin 1.3999999999999999 -inf -> inf -inf sin1037 sin 2.7999999999999998 -inf -> inf inf sin1038 sin 4.2000000000000002 -inf -> -inf inf sin1039 sin 5.5999999999999996 -inf -> -inf -inf sin1040 sin 7.0 -inf -> inf -inf sin1041 sin inf -inf -> nan inf invalid ignore-imag-sign sin1042 sin nan -inf -> nan inf ignore-imag-sign sin1043 sin -0.0 -0.0 -> -0.0 -0.0 sin1044 sin -inf -0.0 -> nan 0.0 invalid ignore-imag-sign sin1045 sin -inf -2.2999999999999998 -> nan nan invalid sin1046 sin -0.0 -inf -> -0.0 -inf sin1047 sin -1.3999999999999999 -inf -> -inf -inf sin1048 sin -2.7999999999999998 -inf -> -inf inf sin1049 sin -4.2000000000000002 -inf -> inf inf sin1050 sin -5.5999999999999996 -inf -> inf -inf sin1051 sin -7.0 -inf -> -inf -inf sin1052 sin -inf -inf -> nan inf invalid ignore-imag-sign ------------------ -- tan: Tangent -- ------------------ -- zeros tan0000 tan 0.0 0.0 -> 0.0 0.0 tan0001 tan 0.0 -0.0 -> 0.0 -0.0 tan0002 tan -0.0 0.0 -> -0.0 0.0 tan0003 tan -0.0 -0.0 -> -0.0 -0.0 -- random inputs tan0004 tan -0.56378561833861074 -1.7110276237187664e+73 -> -0.0 -1.0 tan0005 tan -3.5451633993471915e-12 -2.855471863564059 -> -4.6622441304889575e-14 -0.99340273843093951 tan0006 tan -2.502442719638696 -0.26742234390504221 -> 0.66735215252994995 -0.39078997935420956 tan0007 tan -0.87639597720371365 -55.586225523280206 -> -1.0285264565948176e-48 -1.0 tan0008 tan -0.015783869596427243 -520.05944436039272 -> -0.0 -1.0 tan0009 tan -0.84643549990725164 2.0749097935396343 -> -0.031412661676959573 1.0033548479526764 tan0010 tan -0.43613792248559646 8.1082741629458059 -> -1.3879848444644593e-07 0.99999988344224011 tan0011 tan -1.0820906367833114 0.28571868992480248 -> -1.3622485737936536 0.99089269377971245 tan0012 tan -1.1477859580220084 1.9021637002708041 -> -0.034348450042071196 1.0293954097901687 tan0013 tan -0.12465543176953409 3.0606851016344815e-05 -> -0.12530514290387343 3.1087420769945479e-05 tan0014 tan 3.7582848717525343 -692787020.44038939 -> 0.0 -1.0 tan0015 tan 2.2321967655142176e-06 -10.090069423008169 -> 1.5369846120622643e-14 -0.99999999655723759 tan0016 tan 0.88371172390245012 -1.1635053630132823 -> 0.19705017118625889 -1.0196452280843129 tan0017 tan 2.1347414231849267 -1.9311339960416831 -> -0.038663576915982524 -1.0174399993980778 tan0018 tan 5.9027945255899974 -2.1574195684607135e-183 -> -0.39986591539281496 -2.5023753167976915e-183 tan0019 tan 0.44811489490805362 683216075670.07556 -> 0.0 1.0 tan0020 tan 4.1459766396068325 12.523017205605756 -> 2.4022514758988068e-11 1.0000000000112499 tan0021 tan 1.7809617968443272 1.5052381702853379 -> -0.044066222118946903 1.0932684517702778 tan0022 tan 1.1615313900880577 1.7956298728647107 -> 0.041793186826390362 1.0375339546034792 tan0023 tan 0.067014779477908945 5.8517361577457097 -> 2.2088639754800034e-06 0.9999836182420061 -- Additional real values (mpmath) tan0050 tan 1e-100 0.0 -> 1.00000000000000002e-100 0.0 tan0051 tan 3.7e-08 0.0 -> 3.7000000000000017328e-8 0.0 tan0052 tan 0.001 0.0 -> 0.0010000003333334666875 0.0 tan0053 tan 0.2 0.0 -> 0.20271003550867249488 0.0 tan0054 tan 1.0 0.0 -> 1.5574077246549022305 0.0 tan0055 tan -3.7e-08 0.0 -> -3.7000000000000017328e-8 0.0 tan0056 tan -0.001 0.0 -> -0.0010000003333334666875 0.0 tan0057 tan -1.0 0.0 -> -1.5574077246549022305 0.0 tan0058 tan 0.4636476090008061 0.0 -> 0.49999999999999997163 0.0 tan0059 tan -0.4636476090008061 0.0 -> -0.49999999999999997163 0.0 tan0060 tan 1.1071487177940904 0.0 -> 1.9999999999999995298 0.0 tan0061 tan -1.1071487177940904 0.0 -> -1.9999999999999995298 0.0 tan0062 tan 1.5 0.0 -> 14.101419947171719388 0.0 tan0063 tan 1.57 0.0 -> 1255.7655915007896475 0.0 tan0064 tan 1.5707963267948961 0.0 -> 1978937966095219.0538 0.0 tan0065 tan 7.225663103256523 0.0 -> 1.3763819204711701522 0.0 tan0066 tan -8.79645943005142 0.0 -> 0.7265425280053614098 0.0 -- special values tan1000 tan -0.0 0.0 -> -0.0 0.0 tan1001 tan -inf 0.0 -> nan nan invalid tan1002 tan -inf 2.2999999999999998 -> nan nan invalid tan1003 tan nan 0.0 -> nan nan tan1004 tan nan 2.2999999999999998 -> nan nan tan1005 tan -0.0 inf -> -0.0 1.0 tan1006 tan -0.69999999999999996 inf -> -0.0 1.0 tan1007 tan -1.3999999999999999 inf -> -0.0 1.0 tan1008 tan -2.1000000000000001 inf -> 0.0 1.0 tan1009 tan -2.7999999999999998 inf -> 0.0 1.0 tan1010 tan -3.5 inf -> -0.0 1.0 tan1011 tan -inf inf -> -0.0 1.0 ignore-real-sign tan1012 tan nan inf -> -0.0 1.0 ignore-real-sign tan1013 tan -0.0 nan -> -0.0 nan tan1014 tan -2.2999999999999998 nan -> nan nan tan1015 tan -inf nan -> nan nan tan1016 tan nan nan -> nan nan tan1017 tan 0.0 0.0 -> 0.0 0.0 tan1018 tan inf 0.0 -> nan nan invalid tan1019 tan inf 2.2999999999999998 -> nan nan invalid tan1020 tan 0.0 inf -> 0.0 1.0 tan1021 tan 0.69999999999999996 inf -> 0.0 1.0 tan1022 tan 1.3999999999999999 inf -> 0.0 1.0 tan1023 tan 2.1000000000000001 inf -> -0.0 1.0 tan1024 tan 2.7999999999999998 inf -> -0.0 1.0 tan1025 tan 3.5 inf -> 0.0 1.0 tan1026 tan inf inf -> -0.0 1.0 ignore-real-sign tan1027 tan 0.0 nan -> 0.0 nan tan1028 tan 2.2999999999999998 nan -> nan nan tan1029 tan inf nan -> nan nan tan1030 tan 0.0 -0.0 -> 0.0 -0.0 tan1031 tan inf -0.0 -> nan nan invalid tan1032 tan inf -2.2999999999999998 -> nan nan invalid tan1033 tan nan -0.0 -> nan nan tan1034 tan nan -2.2999999999999998 -> nan nan tan1035 tan 0.0 -inf -> 0.0 -1.0 tan1036 tan 0.69999999999999996 -inf -> 0.0 -1.0 tan1037 tan 1.3999999999999999 -inf -> 0.0 -1.0 tan1038 tan 2.1000000000000001 -inf -> -0.0 -1.0 tan1039 tan 2.7999999999999998 -inf -> -0.0 -1.0 tan1040 tan 3.5 -inf -> 0.0 -1.0 tan1041 tan inf -inf -> -0.0 -1.0 ignore-real-sign tan1042 tan nan -inf -> -0.0 -1.0 ignore-real-sign tan1043 tan -0.0 -0.0 -> -0.0 -0.0 tan1044 tan -inf -0.0 -> nan nan invalid tan1045 tan -inf -2.2999999999999998 -> nan nan invalid tan1046 tan -0.0 -inf -> -0.0 -1.0 tan1047 tan -0.69999999999999996 -inf -> -0.0 -1.0 tan1048 tan -1.3999999999999999 -inf -> -0.0 -1.0 tan1049 tan -2.1000000000000001 -inf -> 0.0 -1.0 tan1050 tan -2.7999999999999998 -inf -> 0.0 -1.0 tan1051 tan -3.5 -inf -> -0.0 -1.0 tan1052 tan -inf -inf -> -0.0 -1.0 ignore-real-sign ------------------------------------------------------------------------ -- rect: Conversion from polar coordinates to rectangular coordinates -- ------------------------------------------------------------------------ -- -- For cmath.rect, we can use the same testcase syntax as for the -- complex -> complex functions above, but here the input arguments -- should be interpreted as a pair of floating-point numbers rather -- than the real and imaginary parts of a complex number. -- -- Here are the 'spirit of C99' rules for rect. First, the short -- version: -- -- rect(x, t) = exp(log(x)+it) for positive-signed x -- rect(x, t) = -exp(log(-x)+it) for negative-signed x -- rect(nan, t) = exp(nan + it), except that in rect(nan, +-0) the -- sign of the imaginary part is unspecified. -- -- and now the long version: -- -- rect(x, -t) = conj(rect(x, t)) for all x and t -- rect(-x, t) = -rect(x, t) for all x and t -- rect(+0, +0) returns +0 + i0 -- rect(+0, inf) returns +- 0 +- i0, where the signs of the real and -- imaginary parts are unspecified. -- rect(x, inf) returns NaN + i NaN and raises the "invalid" -- floating-point exception, for finite nonzero x. -- rect(inf, inf) returns +-inf + i NaN and raises the "invalid" -- floating-point exception (where the sign of the real part of the -- result is unspecified). -- rect(inf, +0) returns inf+i0 -- rect(inf, x) returns inf*cis(x), for finite nonzero x -- rect(inf, NaN) returns +-inf+i NaN, where the sign of the real part -- of the result is unspecified. -- rect(NaN, x) returns NaN + i NaN for all nonzero numbers (including -- infinities) x -- rect(NaN, 0) returns NaN +- i0, where the sign of the imaginary -- part is unspecified -- rect(NaN, NaN) returns NaN + i NaN -- rect(x, NaN) returns NaN + i NaN for finite nonzero x -- rect(+0, NaN) return +-0 +- i0, where the signs of the real and -- imaginary parts are unspecified. -- special values rect1000 rect 0.0 0.0 -> 0.0 0.0 rect1001 rect 0.0 inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign rect1002 rect 2.3 inf -> nan nan invalid rect1003 rect inf inf -> inf nan invalid ignore-real-sign rect1004 rect inf 0.0 -> inf 0.0 rect1005 rect inf 1.4 -> inf inf rect1006 rect inf 2.8 -> -inf inf rect1007 rect inf 4.2 -> -inf -inf rect1008 rect inf 5.6 -> inf -inf rect1009 rect inf 7.0 -> inf inf rect1010 rect nan 0.0 -> nan 0.0 ignore-imag-sign rect1011 rect nan 2.3 -> nan nan rect1012 rect nan inf -> nan nan rect1013 rect nan nan -> nan nan rect1014 rect inf nan -> inf nan ignore-real-sign rect1015 rect 2.3 nan -> nan nan rect1016 rect 0.0 nan -> 0.0 0.0 ignore-real-sign ignore-imag-sign rect1017 rect 0.0 -0.0 -> 0.0 -0.0 rect1018 rect 0.0 -inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign rect1019 rect 2.3 -inf -> nan nan invalid rect1020 rect inf -inf -> inf nan invalid ignore-real-sign rect1021 rect inf -0.0 -> inf -0.0 rect1022 rect inf -1.4 -> inf -inf rect1023 rect inf -2.8 -> -inf -inf rect1024 rect inf -4.2 -> -inf inf rect1025 rect inf -5.6 -> inf inf rect1026 rect inf -7.0 -> inf -inf rect1027 rect nan -0.0 -> nan 0.0 ignore-imag-sign rect1028 rect nan -2.3 -> nan nan rect1029 rect nan -inf -> nan nan rect1030 rect -0.0 0.0 -> -0.0 -0.0 rect1031 rect -0.0 inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign rect1032 rect -2.3 inf -> nan nan invalid rect1033 rect -inf inf -> -inf nan invalid ignore-real-sign rect1034 rect -inf 0.0 -> -inf -0.0 rect1035 rect -inf 1.4 -> -inf -inf rect1036 rect -inf 2.8 -> inf -inf rect1037 rect -inf 4.2 -> inf inf rect1038 rect -inf 5.6 -> -inf inf rect1039 rect -inf 7.0 -> -inf -inf rect1040 rect -inf nan -> inf nan ignore-real-sign rect1041 rect -2.3 nan -> nan nan rect1042 rect -0.0 nan -> 0.0 0.0 ignore-real-sign ignore-imag-sign rect1043 rect -0.0 -0.0 -> -0.0 0.0 rect1044 rect -0.0 -inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign rect1045 rect -2.3 -inf -> nan nan invalid rect1046 rect -inf -inf -> -inf nan invalid ignore-real-sign rect1047 rect -inf -0.0 -> -inf 0.0 rect1048 rect -inf -1.4 -> -inf inf rect1049 rect -inf -2.8 -> inf inf rect1050 rect -inf -4.2 -> inf -inf rect1051 rect -inf -5.6 -> -inf -inf rect1052 rect -inf -7.0 -> -inf inf ------------------------------------------------------------------------- -- polar: Conversion from rectangular coordinates to polar coordinates -- ------------------------------------------------------------------------- -- -- For cmath.polar, we can use the same testcase syntax as for the -- complex -> complex functions above, but here the output arguments -- should be interpreted as a pair of floating-point numbers rather -- than the real and imaginary parts of a complex number. -- -- Annex G of the C99 standard describes fully both the real and -- imaginary parts of polar (as cabs and carg, respectively, which in turn -- are defined in terms of the functions hypot and atan2). -- overflow polar0100 polar 1.4e308 1.4e308 -> inf 0.78539816339744828 overflow -- special values polar1000 polar 0.0 0.0 -> 0.0 0.0 polar1001 polar 0.0 -0.0 -> 0.0 -0.0 polar1002 polar -0.0 0.0 -> 0.0 3.1415926535897931 polar1003 polar -0.0 -0.0 -> 0.0 -3.1415926535897931 polar1004 polar inf 0.0 -> inf 0.0 polar1005 polar inf 2.3 -> inf 0.0 polar1006 polar inf inf -> inf 0.78539816339744828 polar1007 polar 2.3 inf -> inf 1.5707963267948966 polar1008 polar 0.0 inf -> inf 1.5707963267948966 polar1009 polar -0.0 inf -> inf 1.5707963267948966 polar1010 polar -2.3 inf -> inf 1.5707963267948966 polar1011 polar -inf inf -> inf 2.3561944901923448 polar1012 polar -inf 2.3 -> inf 3.1415926535897931 polar1013 polar -inf 0.0 -> inf 3.1415926535897931 polar1014 polar -inf -0.0 -> inf -3.1415926535897931 polar1015 polar -inf -2.3 -> inf -3.1415926535897931 polar1016 polar -inf -inf -> inf -2.3561944901923448 polar1017 polar -2.3 -inf -> inf -1.5707963267948966 polar1018 polar -0.0 -inf -> inf -1.5707963267948966 polar1019 polar 0.0 -inf -> inf -1.5707963267948966 polar1020 polar 2.3 -inf -> inf -1.5707963267948966 polar1021 polar inf -inf -> inf -0.78539816339744828 polar1022 polar inf -2.3 -> inf -0.0 polar1023 polar inf -0.0 -> inf -0.0 polar1024 polar nan -inf -> inf nan polar1025 polar nan -2.3 -> nan nan polar1026 polar nan -0.0 -> nan nan polar1027 polar nan 0.0 -> nan nan polar1028 polar nan 2.3 -> nan nan polar1029 polar nan inf -> inf nan polar1030 polar nan nan -> nan nan polar1031 polar inf nan -> inf nan polar1032 polar 2.3 nan -> nan nan polar1033 polar 0.0 nan -> nan nan polar1034 polar -0.0 nan -> nan nan polar1035 polar -2.3 nan -> nan nan polar1036 polar -inf nan -> inf nan ====================================== Python IEEE 754 floating point support ====================================== >>> from sys import float_info as FI >>> from math import * >>> PI = pi >>> E = e You must never compare two floats with == because you are not going to get what you expect. We treat two floats as equal if the difference between them is small than epsilon. >>> EPS = 1E-15 >>> def equal(x, y): ... """Almost equal helper for floats""" ... return abs(x - y) < EPS NaNs and INFs ============= In Python 2.6 and newer NaNs (not a number) and infinity can be constructed from the strings 'inf' and 'nan'. >>> INF = float('inf') >>> NINF = float('-inf') >>> NAN = float('nan') >>> INF inf >>> NINF -inf >>> NAN nan The math module's ``isnan`` and ``isinf`` functions can be used to detect INF and NAN: >>> isinf(INF), isinf(NINF), isnan(NAN) (True, True, True) >>> INF == -NINF True Infinity -------- Ambiguous operations like ``0 * inf`` or ``inf - inf`` result in NaN. >>> INF * 0 nan >>> INF - INF nan >>> INF / INF nan However unambigous operations with inf return inf: >>> INF * INF inf >>> 1.5 * INF inf >>> 0.5 * INF inf >>> INF / 1000 inf Not a Number ------------ NaNs are never equal to another number, even itself >>> NAN == NAN False >>> NAN < 0 False >>> NAN >= 0 False All operations involving a NaN return a NaN except for nan**0 and 1**nan. >>> 1 + NAN nan >>> 1 * NAN nan >>> 0 * NAN nan >>> 1 ** NAN 1.0 >>> NAN ** 0 1.0 >>> 0 ** NAN nan >>> (1.0 + FI.epsilon) * NAN nan Misc Functions ============== The power of 1 raised to x is always 1.0, even for special values like 0, infinity and NaN. >>> pow(1, 0) 1.0 >>> pow(1, INF) 1.0 >>> pow(1, -INF) 1.0 >>> pow(1, NAN) 1.0 The power of 0 raised to x is defined as 0, if x is positive. Negative values are a domain error or zero division error and NaN result in a silent NaN. >>> pow(0, 0) 1.0 >>> pow(0, INF) 0.0 >>> pow(0, -INF) Traceback (most recent call last): ... ValueError: math domain error >>> 0 ** -1 Traceback (most recent call last): ... ZeroDivisionError: 0.0 cannot be raised to a negative power >>> pow(0, NAN) nan Trigonometric Functions ======================= >>> sin(INF) Traceback (most recent call last): ... ValueError: math domain error >>> sin(NINF) Traceback (most recent call last): ... ValueError: math domain error >>> sin(NAN) nan >>> cos(INF) Traceback (most recent call last): ... ValueError: math domain error >>> cos(NINF) Traceback (most recent call last): ... ValueError: math domain error >>> cos(NAN) nan >>> tan(INF) Traceback (most recent call last): ... ValueError: math domain error >>> tan(NINF) Traceback (most recent call last): ... ValueError: math domain error >>> tan(NAN) nan Neither pi nor tan are exact, but you can assume that tan(pi/2) is a large value and tan(pi) is a very small value: >>> tan(PI/2) > 1E10 True >>> -tan(-PI/2) > 1E10 True >>> tan(PI) < 1E-15 True >>> asin(NAN), acos(NAN), atan(NAN) (nan, nan, nan) >>> asin(INF), asin(NINF) Traceback (most recent call last): ... ValueError: math domain error >>> acos(INF), acos(NINF) Traceback (most recent call last): ... ValueError: math domain error >>> equal(atan(INF), PI/2), equal(atan(NINF), -PI/2) (True, True) Hyberbolic Functions ==================== This is a sample doctest in a text file that contains non-ASCII characters. This file is encoded using UTF-8. In order to get this test to pass, we have to manually specify the encoding. >>> 'föö' 'f\xf6\xf6' >>> 'bÄ…r' 'b\u0105r' -- 'f' code formatting, with explicit precision (>= 0). Output always -- has the given number of places after the point; zeros are added if -- necessary to make this true. -- zeros %.0f 0 -> 0 %.1f 0 -> 0.0 %.2f 0 -> 0.00 %.3f 0 -> 0.000 %.50f 0 -> 0.00000000000000000000000000000000000000000000000000 -- precision 0; result should never include a . %.0f 1.5 -> 2 %.0f 2.5 -> 2 %.0f 3.5 -> 4 %.0f 0.0 -> 0 %.0f 0.1 -> 0 %.0f 0.001 -> 0 %.0f 10.0 -> 10 %.0f 10.1 -> 10 %.0f 10.01 -> 10 %.0f 123.456 -> 123 %.0f 1234.56 -> 1235 %.0f 1e49 -> 9999999999999999464902769475481793196872414789632 %.0f 9.9999999999999987e+49 -> 99999999999999986860582406952576489172979654066176 %.0f 1e50 -> 100000000000000007629769841091887003294964970946560 -- precision 1 %.1f 0.0001 -> 0.0 %.1f 0.001 -> 0.0 %.1f 0.01 -> 0.0 %.1f 0.04 -> 0.0 %.1f 0.06 -> 0.1 %.1f 0.25 -> 0.2 %.1f 0.75 -> 0.8 %.1f 1.4 -> 1.4 %.1f 1.5 -> 1.5 %.1f 10.0 -> 10.0 %.1f 1000.03 -> 1000.0 %.1f 1234.5678 -> 1234.6 %.1f 1234.7499 -> 1234.7 %.1f 1234.75 -> 1234.8 -- precision 2 %.2f 0.0001 -> 0.00 %.2f 0.001 -> 0.00 %.2f 0.004999 -> 0.00 %.2f 0.005001 -> 0.01 %.2f 0.01 -> 0.01 %.2f 0.125 -> 0.12 %.2f 0.375 -> 0.38 %.2f 1234500 -> 1234500.00 %.2f 1234560 -> 1234560.00 %.2f 1234567 -> 1234567.00 %.2f 1234567.8 -> 1234567.80 %.2f 1234567.89 -> 1234567.89 %.2f 1234567.891 -> 1234567.89 %.2f 1234567.8912 -> 1234567.89 -- alternate form always includes a decimal point. This only -- makes a difference when the precision is 0. %#.0f 0 -> 0. %#.1f 0 -> 0.0 %#.0f 1.5 -> 2. %#.0f 2.5 -> 2. %#.0f 10.1 -> 10. %#.0f 1234.56 -> 1235. %#.1f 1.4 -> 1.4 %#.2f 0.375 -> 0.38 -- if precision is omitted it defaults to 6 %f 0 -> 0.000000 %f 1230000 -> 1230000.000000 %f 1234567 -> 1234567.000000 %f 123.4567 -> 123.456700 %f 1.23456789 -> 1.234568 %f 0.00012 -> 0.000120 %f 0.000123 -> 0.000123 %f 0.00012345 -> 0.000123 %f 0.000001 -> 0.000001 %f 0.0000005001 -> 0.000001 %f 0.0000004999 -> 0.000000 -- 'e' code formatting with explicit precision (>= 0). Output should -- always have exactly the number of places after the point that were -- requested. -- zeros %.0e 0 -> 0e+00 %.1e 0 -> 0.0e+00 %.2e 0 -> 0.00e+00 %.10e 0 -> 0.0000000000e+00 %.50e 0 -> 0.00000000000000000000000000000000000000000000000000e+00 -- precision 0. no decimal point in the output %.0e 0.01 -> 1e-02 %.0e 0.1 -> 1e-01 %.0e 1 -> 1e+00 %.0e 10 -> 1e+01 %.0e 100 -> 1e+02 %.0e 0.012 -> 1e-02 %.0e 0.12 -> 1e-01 %.0e 1.2 -> 1e+00 %.0e 12 -> 1e+01 %.0e 120 -> 1e+02 %.0e 123.456 -> 1e+02 %.0e 0.000123456 -> 1e-04 %.0e 123456000 -> 1e+08 %.0e 0.5 -> 5e-01 %.0e 1.4 -> 1e+00 %.0e 1.5 -> 2e+00 %.0e 1.6 -> 2e+00 %.0e 2.4999999 -> 2e+00 %.0e 2.5 -> 2e+00 %.0e 2.5000001 -> 3e+00 %.0e 3.499999999999 -> 3e+00 %.0e 3.5 -> 4e+00 %.0e 4.5 -> 4e+00 %.0e 5.5 -> 6e+00 %.0e 6.5 -> 6e+00 %.0e 7.5 -> 8e+00 %.0e 8.5 -> 8e+00 %.0e 9.4999 -> 9e+00 %.0e 9.5 -> 1e+01 %.0e 10.5 -> 1e+01 %.0e 14.999 -> 1e+01 %.0e 15 -> 2e+01 -- precision 1 %.1e 0.0001 -> 1.0e-04 %.1e 0.001 -> 1.0e-03 %.1e 0.01 -> 1.0e-02 %.1e 0.1 -> 1.0e-01 %.1e 1 -> 1.0e+00 %.1e 10 -> 1.0e+01 %.1e 100 -> 1.0e+02 %.1e 120 -> 1.2e+02 %.1e 123 -> 1.2e+02 %.1e 123.4 -> 1.2e+02 -- precision 2 %.2e 0.00013 -> 1.30e-04 %.2e 0.000135 -> 1.35e-04 %.2e 0.0001357 -> 1.36e-04 %.2e 0.0001 -> 1.00e-04 %.2e 0.001 -> 1.00e-03 %.2e 0.01 -> 1.00e-02 %.2e 0.1 -> 1.00e-01 %.2e 1 -> 1.00e+00 %.2e 10 -> 1.00e+01 %.2e 100 -> 1.00e+02 %.2e 1000 -> 1.00e+03 %.2e 1500 -> 1.50e+03 %.2e 1590 -> 1.59e+03 %.2e 1598 -> 1.60e+03 %.2e 1598.7 -> 1.60e+03 %.2e 1598.76 -> 1.60e+03 %.2e 9999 -> 1.00e+04 -- omitted precision defaults to 6 %e 0 -> 0.000000e+00 %e 165 -> 1.650000e+02 %e 1234567 -> 1.234567e+06 %e 12345678 -> 1.234568e+07 %e 1.1 -> 1.100000e+00 -- alternate form always contains a decimal point. This only makes -- a difference when precision is 0. %#.0e 0.01 -> 1.e-02 %#.0e 0.1 -> 1.e-01 %#.0e 1 -> 1.e+00 %#.0e 10 -> 1.e+01 %#.0e 100 -> 1.e+02 %#.0e 0.012 -> 1.e-02 %#.0e 0.12 -> 1.e-01 %#.0e 1.2 -> 1.e+00 %#.0e 12 -> 1.e+01 %#.0e 120 -> 1.e+02 %#.0e 123.456 -> 1.e+02 %#.0e 0.000123456 -> 1.e-04 %#.0e 123456000 -> 1.e+08 %#.0e 0.5 -> 5.e-01 %#.0e 1.4 -> 1.e+00 %#.0e 1.5 -> 2.e+00 %#.0e 1.6 -> 2.e+00 %#.0e 2.4999999 -> 2.e+00 %#.0e 2.5 -> 2.e+00 %#.0e 2.5000001 -> 3.e+00 %#.0e 3.499999999999 -> 3.e+00 %#.0e 3.5 -> 4.e+00 %#.0e 4.5 -> 4.e+00 %#.0e 5.5 -> 6.e+00 %#.0e 6.5 -> 6.e+00 %#.0e 7.5 -> 8.e+00 %#.0e 8.5 -> 8.e+00 %#.0e 9.4999 -> 9.e+00 %#.0e 9.5 -> 1.e+01 %#.0e 10.5 -> 1.e+01 %#.0e 14.999 -> 1.e+01 %#.0e 15 -> 2.e+01 %#.1e 123.4 -> 1.2e+02 %#.2e 0.0001357 -> 1.36e-04 -- 'g' code formatting. -- zeros %.0g 0 -> 0 %.1g 0 -> 0 %.2g 0 -> 0 %.3g 0 -> 0 %.4g 0 -> 0 %.10g 0 -> 0 %.50g 0 -> 0 %.100g 0 -> 0 -- precision 0 doesn't make a lot of sense for the 'g' code (what does -- it mean to have no significant digits?); in practice, it's interpreted -- as identical to precision 1 %.0g 1000 -> 1e+03 %.0g 100 -> 1e+02 %.0g 10 -> 1e+01 %.0g 1 -> 1 %.0g 0.1 -> 0.1 %.0g 0.01 -> 0.01 %.0g 1e-3 -> 0.001 %.0g 1e-4 -> 0.0001 %.0g 1e-5 -> 1e-05 %.0g 1e-6 -> 1e-06 %.0g 12 -> 1e+01 %.0g 120 -> 1e+02 %.0g 1.2 -> 1 %.0g 0.12 -> 0.1 %.0g 0.012 -> 0.01 %.0g 0.0012 -> 0.001 %.0g 0.00012 -> 0.0001 %.0g 0.000012 -> 1e-05 %.0g 0.0000012 -> 1e-06 -- precision 1 identical to precision 0 %.1g 1000 -> 1e+03 %.1g 100 -> 1e+02 %.1g 10 -> 1e+01 %.1g 1 -> 1 %.1g 0.1 -> 0.1 %.1g 0.01 -> 0.01 %.1g 1e-3 -> 0.001 %.1g 1e-4 -> 0.0001 %.1g 1e-5 -> 1e-05 %.1g 1e-6 -> 1e-06 %.1g 12 -> 1e+01 %.1g 120 -> 1e+02 %.1g 1.2 -> 1 %.1g 0.12 -> 0.1 %.1g 0.012 -> 0.01 %.1g 0.0012 -> 0.001 %.1g 0.00012 -> 0.0001 %.1g 0.000012 -> 1e-05 %.1g 0.0000012 -> 1e-06 -- precision 2 %.2g 1000 -> 1e+03 %.2g 100 -> 1e+02 %.2g 10 -> 10 %.2g 1 -> 1 %.2g 0.1 -> 0.1 %.2g 0.01 -> 0.01 %.2g 0.001 -> 0.001 %.2g 1e-4 -> 0.0001 %.2g 1e-5 -> 1e-05 %.2g 1e-6 -> 1e-06 %.2g 1234 -> 1.2e+03 %.2g 123 -> 1.2e+02 %.2g 12.3 -> 12 %.2g 1.23 -> 1.2 %.2g 0.123 -> 0.12 %.2g 0.0123 -> 0.012 %.2g 0.00123 -> 0.0012 %.2g 0.000123 -> 0.00012 %.2g 0.0000123 -> 1.2e-05 -- bad cases from http://bugs.python.org/issue9980 %.12g 38210.0 -> 38210 %.12g 37210.0 -> 37210 %.12g 36210.0 -> 36210 -- alternate g formatting: always include decimal point and -- exactly significant digits. %#.0g 0 -> 0. %#.1g 0 -> 0. %#.2g 0 -> 0.0 %#.3g 0 -> 0.00 %#.4g 0 -> 0.000 %#.0g 0.2 -> 0.2 %#.1g 0.2 -> 0.2 %#.2g 0.2 -> 0.20 %#.3g 0.2 -> 0.200 %#.4g 0.2 -> 0.2000 %#.10g 0.2 -> 0.2000000000 %#.0g 2 -> 2. %#.1g 2 -> 2. %#.2g 2 -> 2.0 %#.3g 2 -> 2.00 %#.4g 2 -> 2.000 %#.0g 20 -> 2.e+01 %#.1g 20 -> 2.e+01 %#.2g 20 -> 20. %#.3g 20 -> 20.0 %#.4g 20 -> 20.00 %#.0g 234.56 -> 2.e+02 %#.1g 234.56 -> 2.e+02 %#.2g 234.56 -> 2.3e+02 %#.3g 234.56 -> 235. %#.4g 234.56 -> 234.6 %#.5g 234.56 -> 234.56 %#.6g 234.56 -> 234.560 -- repr formatting. Result always includes decimal point and at -- least one digit after the point, or an exponent. %r 0 -> 0.0 %r 1 -> 1.0 %r 0.01 -> 0.01 %r 0.02 -> 0.02 %r 0.03 -> 0.03 %r 0.04 -> 0.04 %r 0.05 -> 0.05 -- values >= 1e16 get an exponent %r 10 -> 10.0 %r 100 -> 100.0 %r 1e15 -> 1000000000000000.0 %r 9.999e15 -> 9999000000000000.0 %r 9999999999999998 -> 9999999999999998.0 %r 9999999999999999 -> 1e+16 %r 1e16 -> 1e+16 %r 1e17 -> 1e+17 -- as do values < 1e-4 %r 1e-3 -> 0.001 %r 1.001e-4 -> 0.0001001 %r 1.0000000000000001e-4 -> 0.0001 %r 1.000000000000001e-4 -> 0.0001000000000000001 %r 1.00000000001e-4 -> 0.000100000000001 %r 1.0000000001e-4 -> 0.00010000000001 %r 1e-4 -> 0.0001 %r 0.99999999999999999e-4 -> 0.0001 %r 0.9999999999999999e-4 -> 9.999999999999999e-05 %r 0.999999999999e-4 -> 9.99999999999e-05 %r 0.999e-4 -> 9.99e-05 %r 1e-5 -> 1e-05 # -*- coding: utf-8 -*- # IMPORTANT: this file has the utf-8 BOM signature '\xef\xbb\xbf' # at the start of it. Make sure this is preserved if any changes # are made! # Arbitrary encoded utf-8 text (stolen from test_doctest2.py). x = 'ЉЊЈÐЂ' def y(): """ And again in a comment. ЉЊЈÐЂ """ pass This is a sample doctest in a text file. In this example, we'll rely on a global variable being set for us already: >>> favorite_color 'blue' We can make this fail by disabling the blank-line feature. >>> if 1: ... print('a') ... print() ... print('b') a b # These numbers are used to test floating point binary-to-decimal conversion. # They are based on the TCL test suite (tests/expr.test), which is based on # test data from: # Brigitte Verdonk, Annie Cuyt, Dennis Verschaeren, A precision and range # independent tool for testing floating-point arithmetic II: Conversions, # ACM Transactions on Mathematical Software 27:2 (March 2001), pp. 119-140. 0E0 -0E0 1E0 15E-1 125E-2 1125E-3 10625E-4 103125E-5 1015625E-6 10078125E-7 100390625E-8 1001953125E-9 10009765625E-10 100048828125E-11 1000244140625E-12 10001220703125E-13 100006103515625E-14 1000030517578125E-15 10000152587890625E-16 +8E153 -1E153 +9E306 -2E153 +7E-304 -3E-49 +7E-303 -6E-49 +9E43 -9E44 +8E303 -1E303 +7E-287 -2E-204 +2E-205 -9E-47 +34E195 -68E195 +85E194 -67E97 +93E-234 -19E-87 +38E-87 -38E-88 -69E220 +18E43 -36E43 +61E-99 -43E-92 +86E-92 -51E-74 +283E85 -566E85 +589E187 -839E143 -744E-234 +930E-235 -186E-234 +604E175 -302E175 +755E174 -151E175 +662E-213 -408E-74 +510E-75 +6782E55 -2309E92 +7963E34 -3391E55 +7903E-96 -7611E-226 +4907E-196 -5547E-311 +5311E241 -5311E243 +5311E242 +9269E-45 -8559E-289 +8699E-276 -8085E-64 +74819E201 -82081E41 +51881E37 -55061E157 +77402E-215 -33891E-92 +38701E-215 -82139E-76 +75859E25 +89509E140 -57533E287 +46073E-32 -92146E-32 +83771E-74 -34796E-276 +584169E229 +164162E41 -328324E41 +209901E-11 -419802E-11 +940189E-112 -892771E-213 +757803E120 -252601E120 +252601E121 -505202E120 +970811E-264 -654839E-60 +289767E-178 -579534E-178 -8823691E130 +9346704E229 -1168338E229 -6063369E-136 +3865421E-225 -5783893E-127 +2572231E223 -5144462E223 +1817623E109 +6431543E-97 -5444097E-21 +8076999E-121 -9997649E-270 +50609263E157 +70589528E130 -88236910E129 +87575437E-310 -23135572E-127 +85900881E177 -84863171E113 +68761586E232 -50464069E286 +27869147E-248 -55738294E-248 +70176353E-53 -80555086E-32 -491080654E121 +526250918E287 -245540327E121 -175150874E-310 +350301748E-310 -437877185E-311 +458117166E52 -916234332E52 +229058583E52 -525789935E98 +282926897E-227 -565853794E-227 +667284113E-240 -971212611E-126 +9981396317E-182 -5035231965E-156 +8336960483E-153 -8056371144E-155 +6418488827E79 -3981006983E252 +7962013966E252 -4713898551E261 +8715380633E-58 -9078555839E-109 +9712126110E-127 +42333842451E201 -84667684902E201 +23792120709E-315 -78564021519E-227 +71812054883E-188 -30311163631E-116 +71803914657E292 +36314223356E-109 +18157111678E-109 -45392779195E-110 +778380362293E218 -685763015669E280 +952918668151E70 -548357443505E32 +384865004907E-285 -769730009814E-285 +697015418417E-93 -915654049301E-28 +178548656339E169 -742522891517E259 +742522891517E258 -357097312678E169 -3113521449172E218 +3891901811465E217 -1556760724586E218 +9997878507563E-195 -7247563029154E-319 +3623781514577E-319 -3092446298323E-200 +6363857920591E145 -8233559360849E94 +2689845954547E49 -5379691909094E49 +5560322501926E-301 -7812878489261E-179 +8439398533053E-256 -2780161250963E-301 -87605699161665E155 -17521139832333E156 -88218101363513E-170 +38639244311627E-115 +35593959807306E261 -53390939710959E260 +71187919614612E261 -88984899518265E260 +77003665618895E-73 -15400733123779E-72 +61602932495116E-72 -30801466247558E-72 +834735494917063E-300 -589795149206434E-151 +475603213226859E-42 -294897574603217E-151 +850813008001913E93 -203449172043339E185 +406898344086678E185 -813796688173356E185 +6045338514609393E244 -5145963778954906E142 +2572981889477453E142 -6965949469487146E74 +6182410494241627E-119 -8510309498186985E-277 +6647704637273331E-212 -2215901545757777E-212 +3771476185376383E276 -3729901848043846E212 +3771476185376383E277 -9977830465649166E119 +8439928496349319E-142 -8204230082070882E-59 +8853686434843997E-244 -5553274272288559E-104 +36149023611096162E144 -36149023611096162E147 +18074511805548081E146 -18074511805548081E147 +97338774138954421E-290 -88133809804950961E-308 +94080055902682397E-243 -24691002732654881E-115 +52306490527514614E49 -26153245263757307E49 +55188692254193604E165 -68985865317742005E164 +27176258005319167E-261 -73169230107256116E-248 +91461537634070145E-249 -54352516010638334E-261 +586144289638535878E280 -601117006785295431E245 +293072144819267939E280 -953184713238516652E272 +902042358290366539E-281 -557035730189854663E-294 +902042358290366539E-280 -354944100507554393E-238 +272104041512242479E199 -816312124536727437E199 +544208083024484958E199 -792644927852378159E78 -679406450132979175E-263 +543525160106383340E-262 +7400253695682920196E215 -1850063423920730049E215 +3700126847841460098E215 -9250317119603650245E214 +8396094300569779681E-252 -3507665085003296281E-75 +7015330170006592562E-75 -7015330170006592562E-74 +7185620434951919351E205 -1360520207561212395E198 +2178999185345151731E-184 -8691089486201567102E-218 +4345544743100783551E-218 -4357998370690303462E-184 +59825267349106892461E177 -62259110684423957791E47 +58380168477038565599E265 -62259110684423957791E48 -33584377202279118724E-252 -57484963479615354808E205 +71856204349519193510E204 -14371240869903838702E205 +36992084760177624177E-318 -73984169520355248354E-318 +99257763227713890244E-115 -87336362425182547697E-280 +7E289 -3E153 +6E153 -5E243 +7E-161 -7E-172 +8E-63 -7E-113 +8E126 -4E126 +5E125 -1E126 +8E-163 -1E-163 +2E-163 -4E-163 +51E195 -37E46 +74E46 -56E289 +69E-145 -70E-162 +56E-161 -21E-303 +34E-276 -68E-276 +85E-277 -87E-274 +829E102 -623E100 +723E-162 -457E-102 +914E-102 -323E-135 +151E176 -302E176 +921E90 -604E176 +823E-206 -463E-114 +348E-274 +9968E100 -6230E99 +1246E100 +6676E-296 -8345E-297 +1669E-296 -3338E-296 +3257E58 -6514E58 +2416E176 +8085E-63 -3234E-62 +1617E-62 -6468E-62 +53418E111 -60513E160 +26709E111 -99447E166 +12549E48 -25098E48 +50196E48 -62745E47 +83771E-73 -97451E-167 +86637E-203 -75569E-254 +473806E83 -947612E83 +292369E76 -584738E76 +933587E-140 -720919E-14 +535001E-149 -890521E-235 +548057E81 -706181E88 +820997E106 -320681E63 +928609E-261 -302276E-254 +151138E-254 +4691773E45 -9383546E45 +3059949E-243 -6119898E-243 +5356626E-213 -4877378E-199 +7716693E223 -5452869E109 +4590831E156 -9181662E156 -3714436E-261 +4643045E-262 -7428872E-261 +52942146E130 -27966061E145 +26471073E130 -55932122E145 +95412548E-99 -47706274E-99 +23853137E-99 -78493654E-301 +65346417E29 -51083099E167 +89396333E264 -84863171E114 +59540836E-251 -74426045E-252 +14885209E-251 -29770418E-251 +982161308E122 -245540327E122 +491080654E122 +525452622E-310 -771837113E-134 +820858081E-150 -262726311E-310 +923091487E209 -653777767E273 +842116236E-53 -741111169E-202 +839507247E-284 -951487269E-264 -9821613080E121 +6677856011E-31 -3573796826E-266 +7147593652E-266 -9981396317E-181 +3268888835E272 -2615111068E273 +1307555534E273 +2990671154E-190 -1495335577E-190 +5981342308E-190 -7476677885E-191 +82259684194E-202 -93227267727E-49 +41129842097E-202 -47584241418E-314 -79360293406E92 +57332259349E225 -57202326162E111 +86860597053E-206 -53827010643E-200 +53587107423E-61 +635007636765E200 +508006109412E201 -254003054706E201 +561029718715E-72 -897647549944E-71 +112205943743E-71 -873947086081E-236 +809184709177E116 -573112917422E81 +286556458711E81 +952805821491E-259 -132189992873E-44 -173696038493E-144 +1831132757599E-107 -9155663787995E-108 +7324531030396E-107 -9277338894969E-200 +8188292423973E287 -5672557437938E59 +2836278718969E59 -9995153153494E54 +9224786422069E-291 -3142213164987E-294 +6284426329974E-294 -8340483752889E-301 +67039371486466E89 -62150786615239E197 +33519685743233E89 -52563419496999E156 +32599460466991E-65 -41010988798007E-133 +65198920933982E-65 -82021977596014E-133 +80527976643809E61 -74712611505209E158 +53390939710959E261 -69277302659155E225 +46202199371337E-72 -23438635467783E-179 +41921560615349E-67 -92404398742674E-72 +738545606647197E124 -972708181182949E117 -837992143580825E87 +609610927149051E-255 -475603213226859E-41 +563002800671023E-177 -951206426453718E-41 +805416432656519E202 -530658674694337E159 +946574173863918E208 -318329953318553E113 -462021993713370E-73 +369617594970696E-72 +3666156212014994E233 -1833078106007497E233 +8301790508624232E174 -1037723813578029E174 +7297662880581139E-286 -5106185698912191E-276 +7487252720986826E-165 -3743626360493413E-165 +3773057430100257E230 -7546114860200514E230 +4321222892463822E58 -7793560217139653E51 +26525993941010681E112 -53051987882021362E112 +72844871414247907E77 -88839359596763261E105 +18718131802467065E-166 -14974505441973652E-165 +73429396004640239E106 -58483921078398283E57 +41391519190645203E165 -82783038381290406E165 +58767043776702677E-163 -90506231831231999E-129 +64409240769861689E-159 -77305427432277771E-190 +476592356619258326E273 -953184713238516652E273 +899810892172646163E283 -929167076892018333E187 +647761278967534239E-312 -644290479820542942E-180 +926145344610700019E-225 -958507931896511964E-246 +272104041512242479E200 -792644927852378159E79 +544208083024484958E200 -929963218616126365E290 +305574339166810102E-219 -152787169583405051E-219 +611148678333620204E-219 -763935847917025255E-220 +7439550220920798612E158 -3719775110460399306E158 +9299437776150998265E157 -7120190517612959703E120 +3507665085003296281E-73 -7015330170006592562E-73 -6684428762278255956E-294 -1088416166048969916E200 -8707329328391759328E200 +4439021781608558002E-65 -8878043563217116004E-65 +2219510890804279001E-65 +33051223951904955802E55 -56961524140903677624E120 +71201905176129597030E119 +14030660340013185124E-73 -17538325425016481405E-74 +67536228609141569109E-133 -35620497849450218807E-306 +66550376797582521751E-126 -71240995698900437614E-306 +3E24 -6E24 +6E26 -7E25 +1E-14 -2E-14 +4E-14 -8E-14 +5E26 -8E27 +1E27 -4E27 +9E-13 -7E-20 +56E25 -70E24 +51E26 +71E-17 -31E-5 +62E-5 -94E-8 +67E27 -81E24 +54E23 -54E25 +63E-22 -63E-23 +43E-4 -86E-4 +942E26 -471E25 +803E24 -471E26 -409E-21 +818E-21 -867E-8 +538E27 -857E24 +269E27 -403E26 +959E-7 -959E-6 +373E-27 -746E-27 +4069E24 -4069E23 -8138E24 +8294E-15 -4147E-14 +4147E-15 -8294E-14 +538E27 -2690E26 +269E27 -2152E27 +1721E-17 -7979E-27 +6884E-17 -8605E-18 +82854E27 -55684E24 +27842E24 -48959E25 +81921E-17 -76207E-8 +4147E-15 -41470E-16 +89309E24 +75859E26 -75859E25 +14257E-23 -28514E-23 +57028E-23 -71285E-24 +344863E27 -951735E27 +200677E23 -401354E24 +839604E-11 -209901E-11 +419802E-11 -537734E-24 +910308E26 -227577E26 +455154E26 -531013E25 +963019E-21 -519827E-13 +623402E-27 -311701E-27 +9613651E26 -9191316E23 +4595658E23 -2297829E23 -1679208E-11 +3379223E27 -6758446E27 +5444097E-21 -8399969E-27 +8366487E-16 -8366487E-15 +65060671E25 +65212389E23 +55544957E-13 -51040905E-20 +99585767E-22 -99585767E-23 +40978393E26 -67488159E24 +69005339E23 -81956786E26 -87105552E-21 +10888194E-21 -21776388E-21 +635806667E27 -670026614E25 +335013307E26 -335013307E25 +371790617E-24 -371790617E-25 +743581234E-24 -743581234E-25 +202464477E24 -404928954E24 +997853758E27 -997853758E26 +405498418E-17 -582579084E-14 +608247627E-18 -291289542E-14 -9537100005E26 +6358066670E27 -1271613334E27 +5229646999E-16 +5229646999E-17 +4429943614E24 -8859887228E24 +2214971807E24 -4176887093E26 +4003495257E-20 -4361901637E-23 +8723803274E-23 -8006990514E-20 +72835110098E27 -36417555049E27 +84279630104E25 -84279630104E24 +21206176437E-27 -66461566917E-22 +64808355539E-16 -84932679673E-19 +65205430094E26 -68384463429E25 +32602715047E26 -62662203426E27 +58784444678E-18 -50980203373E-21 +29392222339E-18 -75529940323E-27 -937495906299E26 +842642485799E-20 -387824150699E-23 +924948814726E-27 -775648301398E-23 +547075707432E25 +683844634290E24 -136768926858E25 +509802033730E-22 +101960406746E-21 -815683253968E-21 +7344124123524E24 -9180155154405E23 +6479463327323E27 -1836031030881E24 +4337269293039E-19 -4599163554373E-23 +9198327108746E-23 +4812803938347E27 -8412030890011E23 +9625607876694E27 -4739968828249E24 +9697183891673E-23 -7368108517543E-20 +51461358161422E25 -77192037242133E26 +77192037242133E25 -51461358161422E27 +43999661561541E-21 -87999323123082E-21 +48374886826137E-26 -57684246567111E-23 +87192805957686E23 -75108713005913E24 +64233110587487E27 -77577471133384E-23 +48485919458365E-24 -56908598265713E-26 +589722294620133E23 +652835804449289E-22 -656415363936202E-23 +579336749585745E-25 -381292764980839E-26 +965265859649698E23 -848925235434882E27 +536177612222491E23 -424462617717441E27 +276009279888989E-27 -608927158043691E-26 +552018559777978E-27 -425678377667758E-22 +8013702726927119E26 +8862627962362001E27 -5068007907757162E26 -7379714799828406E-23 +4114538064016107E-27 -3689857399914203E-23 +5575954851815478E23 +3395700941739528E27 +4115535777581961E-23 -8231071555163922E-23 +6550246696190871E-26 -68083046403986701E27 +43566388595783643E27 -87132777191567286E27 +59644881059342141E25 -83852770718576667E23 +99482967418206961E-25 -99482967418206961E-26 +87446669969994614E-27 -43723334984997307E-27 +5E24 -8E25 +1E25 -4E25 +2E-5 -5E-6 +4E-5 -3E-20 +3E27 -9E26 +7E25 -6E27 +2E-21 -5E-22 -4E-21 +87E25 -97E24 +82E-24 -41E-24 +76E-23 +83E25 -50E27 +25E27 -99E27 +97E-10 -57E-20 +997E23 +776E24 -388E24 +521E-10 -506E-26 +739E-10 -867E-7 -415E24 +332E25 -664E25 +291E-13 -982E-8 +582E-13 -491E-8 +4574E26 -8609E26 +2287E26 -4818E24 +6529E-8 -8151E-21 +1557E-12 -2573E-18 +4929E-16 -3053E-22 +9858E-16 -7767E-11 +54339E26 -62409E25 +32819E27 -89849E27 +63876E-20 -15969E-20 +31938E-20 -79845E-21 +89306E27 -25487E24 +79889E24 -97379E26 +81002E-8 -43149E-25 +40501E-8 -60318E-10 -648299E27 +780649E24 +720919E-14 -629703E-11 +557913E24 -847899E23 +565445E27 -736531E24 +680013E-19 -529981E-10 +382923E-23 -633614E-18 +2165479E27 -8661916E27 +4330958E27 -9391993E22 -5767352E-14 +7209190E-15 -1441838E-14 +8478990E22 +1473062E24 +8366487E-14 -8399969E-25 +9366737E-12 -9406141E-13 +65970979E24 -65060671E26 +54923002E27 -63846927E25 +99585767E-21 +67488159E25 -69005339E24 +81956786E27 -40978393E27 +77505754E-12 -38752877E-12 +82772981E-15 -95593517E-25 +200036989E25 -772686455E27 +859139907E23 -400073978E25 +569014327E-14 -794263862E-15 +397131931E-15 -380398957E-16 +567366773E27 -337440795E24 +134976318E25 -269952636E25 +932080597E-20 -331091924E-15 -413864905E-16 +8539246247E26 -5859139791E26 +6105010149E24 -3090745820E27 +3470877773E-20 -6136309089E-27 +8917758713E-19 -6941755546E-20 +9194900535E25 -1838980107E26 +7355920428E26 -3677960214E26 +8473634343E-17 -8870766274E-16 +4435383137E-16 -9598990129E-15 +71563496764E26 -89454370955E25 +17890874191E26 -35781748382E26 +57973447842E-19 -28986723921E-19 +76822711313E-19 -97699466874E-20 +67748656762E27 -19394840991E24 +38789681982E24 -33874328381E27 +54323763886E-27 -58987193887E-20 +27161881943E-27 -93042648033E-19 +520831059055E27 -768124264394E25 +384062132197E25 +765337749889E-25 +794368912771E25 -994162090146E23 +781652779431E26 +910077190046E-26 -455038595023E-26 +471897551096E-20 -906698409911E-21 +8854128003935E25 -8146122716299E27 +7083302403148E26 -3541651201574E26 +8394920649291E-25 -7657975756753E-22 +5473834002228E-20 -6842292502785E-21 -2109568884597E25 +8438275538388E25 -4219137769194E25 +3200141789841E-25 -8655689322607E-22 +6400283579682E-25 -8837719634493E-21 +19428217075297E24 -38856434150594E24 +77712868301188E24 -77192037242133E27 +76579757567530E-23 +15315951513506E-22 -38289878783765E-23 +49378033925202E25 -50940527102367E24 +98756067850404E25 -99589397544892E26 -56908598265713E-25 +97470695699657E-22 -35851901247343E-25 +154384074484266E27 -308768148968532E27 +910990389005985E23 +271742424169201E-27 -543484848338402E-27 +162192083357563E-26 -869254552770081E-23 +664831007626046E24 -332415503813023E24 +943701829041427E24 -101881054204734E24 +828027839666967E-27 -280276135608777E-27 +212839188833879E-21 -113817196531426E-25 +9711553197796883E27 -2739849386524269E26 +5479698773048538E26 +6124568318523113E-25 -1139777988171071E-24 +6322612303128019E-27 -2955864564844617E-25 -9994029144998961E25 -2971238324022087E27 -1656055679333934E-27 -1445488709150234E-26 +55824717499885172E27 -69780896874856465E26 +84161538867545199E25 -27912358749942586E27 +24711112462926331E-25 -12645224606256038E-27 -12249136637046226E-25 +74874448287465757E27 -35642836832753303E24 -71285673665506606E24 +43723334984997307E-26 +10182419849537963E-24 -93501703572661982E-26 # A value that caused a crash in debug builds for Python >= 2.7, 3.1 # See http://bugs.python.org/issue7632 2183167012312112312312.23538020374420446192e-370 # Another value designed to test a corner case of Python's strtod code. 0.99999999999999999999999999999999999999999e+23 # Mailcap file for test_mailcap; based on RFC 1524 # Referred to by test_mailcap.py # # This is a comment. # application/frame; showframe %s; print="cat %s | lp" application/postscript; ps-to-terminal %s;\ needsterminal application/postscript; ps-to-terminal %s; \ compose=idraw %s application/x-dvi; xdvi %s application/x-movie; movieplayer %s; compose=moviemaker %s; \ description="Movie"; \ x11-bitmap="/usr/lib/Zmail/bitmaps/movie.xbm" application/*; echo "This is \"%t\" but \ is 50 \% Greek to me" \; cat %s; copiousoutput audio/basic; showaudio %s; compose=audiocompose %s; edit=audiocompose %s;\ description="An audio fragment" audio/* ; /usr/local/bin/showaudio %t image/rgb; display %s #image/gif; display %s image/x-xwindowdump; display %s # The continuation char shouldn't \ # make a difference in a comment. message/external-body; showexternal %s %{access-type} %{name} %{site} \ %{directory} %{mode} %{server}; needsterminal; composetyped = extcompose %s; \ description="A reference to data stored in an external location" text/richtext; shownonascii iso-8859-8 -e richtext -p %s; test=test "`echo \ %{charset} | tr '[A-Z]' '[a-z]'`" = iso-8859-8; copiousoutput video/*; animate %s video/mpeg; mpeg_play %s Here we check that `__file__` is provided: >>> type(__file__) This directory contains test cases that are known to leak references. The idea is that you can import these modules while in the interpreter and call the leak function repeatedly. This will only be helpful if the interpreter was built in debug mode. If the total ref count doesn't increase, the bug has been fixed and the file should be removed from the repository. Note: be careful to check for cyclic garbage. Sometimes it may be helpful to define the leak function like: def leak(): def inner_leak(): # this is the function that leaks, but also creates cycles inner_leak() gc.collect() ; gc.collect() ; gc.collect() Here's an example interpreter session for test_gestalt which still leaks: >>> from test.leakers.test_gestalt import leak [24275 refs] >>> leak() [28936 refs] >>> leak() [28938 refs] >>> leak() [28940 refs] >>> Once the leak is fixed, the test case should be moved into an appropriate test (even if it was originally from the test suite). This ensures the regression doesn't happen again. And if it does, it should be easier to track down. # IMPORTANT: this file has the utf-8 BOM signature '\xef\xbb\xbf' # at the start of it. Make sure this is preserved if any changes # are made! # Arbitrary encoded utf-8 text (stolen from test_doctest2.py). x = 'ЉЊЈÐЂ' def y(): """ And again in a comment. ЉЊЈÐЂ """ pass ********************************************************************* THESE INSTRUCTIONS ARE ONLY FOR MAC OS X 10.3, AND WILL ONLY CREATE STANDALONE BUNDLES FOR MAC OS X 10.3. THERE IS NO SUPPORT FOR MAC OS X 10.2. Also works on 10.4 and 10.5 ********************************************************************* Install py2app and its dependencies. easy_install py2app To create the bundle: python setup.py py2app Copyright (c) 2005-2017, NumPy Developers. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the NumPy Developers nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The NumPy repository and source distributions bundle several libraries that are compatibly licensed. We list these here. Name: Numpydoc Files: doc/sphinxext/numpydoc/* License: 2-clause BSD For details, see doc/sphinxext/LICENSE.txt Name: scipy-sphinx-theme Files: doc/scipy-sphinx-theme/* License: 3-clause BSD, PSF and Apache 2.0 For details, see doc/sphinxext/LICENSE.txt Name: lapack-lite Files: numpy/linalg/lapack_lite/* License: 3-clause BSD For details, see numpy/linalg/lapack_lite/LICENSE.txt Name: tempita Files: tools/npy_tempita/* License: BSD derived For details, see tools/npy_tempita/license.txt Name: dragon4 Files: numpy/core/src/multiarray/dragon4.c License: One of a kind For license text, see numpy/core/src/multiarray/dragon4.c ---- This binary distribution of NumPy also bundles the following software: Name: OpenBLAS Files: extra-dll\libopenb*.dll Description: bundled as a dynamically linked library Availability: https://github.com/xianyi/OpenBLAS/ License: 3-clause BSD Copyright (c) 2011-2014, The OpenBLAS Project All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the OpenBLAS project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Name: LAPACK Files: extra-dll\libopenb*.dll Description: bundled in OpenBLAS Availability: https://github.com/xianyi/OpenBLAS/ License 3-clause BSD Copyright (c) 1992-2013 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. Copyright (c) 2000-2013 The University of California Berkeley. All rights reserved. Copyright (c) 2006-2013 The University of Colorado Denver. All rights reserved. $COPYRIGHT$ Additional copyrights may follow $HEADER$ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution. - Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. The copyright holders provide no reassurances that the source code provided does not infringe any patent, copyright, or any other intellectual property rights of third parties. The copyright holders disclaim any liability to any recipient for claims brought against recipient by any third party for infringement of that parties intellectual property rights. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Name: GCC runtime library Files: extra-dll\*.dll Description: statically linked, in DLL files compiled with gfortran only Availability: https://gcc.gnu.org/viewcvs/gcc/ License: GPLv3 + runtime exception Copyright (C) 2002-2017 Free Software Foundation, Inc. Libgfortran is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. Libgfortran is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . Name: Microsoft Visual C++ Runtime Files Files: extra-dll\msvcp140.dll License: MSVC https://www.visualstudio.com/license-terms/distributable-code-microsoft-visual-studio-2015-rc-microsoft-visual-studio-2015-sdk-rc-includes-utilities-buildserver-files/#visual-c-runtime Subject to the License Terms for the software, you may copy and distribute with your program any of the files within the followng folder and its subfolders except as noted below. You may not modify these files. C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist You may not distribute the contents of the following folders: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\debug_nonredist C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\onecore\debug_nonredist Subject to the License Terms for the software, you may copy and distribute the following files with your program in your program’s application local folder or by deploying them into the Global Assembly Cache (GAC): VC\atlmfc\lib\mfcmifc80.dll VC\atlmfc\lib\amd64\mfcmifc80.dll Name: Microsoft Visual C++ Runtime Files Files: extra-dll\msvc*90.dll, extra-dll\Microsoft.VC90.CRT.manifest License: MSVC For your convenience, we have provided the following folders for use when redistributing VC++ runtime files. Subject to the license terms for the software, you may redistribute the folder (unmodified) in the application local folder as a sub-folder with no change to the folder name. You may also redistribute all the files (*.dll and *.manifest) within a folder, listed below the folder for your convenience, as an entire set. \VC\redist\x86\Microsoft.VC90.ATL\ atl90.dll Microsoft.VC90.ATL.manifest \VC\redist\ia64\Microsoft.VC90.ATL\ atl90.dll Microsoft.VC90.ATL.manifest \VC\redist\amd64\Microsoft.VC90.ATL\ atl90.dll Microsoft.VC90.ATL.manifest \VC\redist\x86\Microsoft.VC90.CRT\ msvcm90.dll msvcp90.dll msvcr90.dll Microsoft.VC90.CRT.manifest \VC\redist\ia64\Microsoft.VC90.CRT\ msvcm90.dll msvcp90.dll msvcr90.dll Microsoft.VC90.CRT.manifest ---- Full text of license texts referred to above follows (that they are listed below does not necessarily imply the conditions apply to the present binary release): ---- GCC RUNTIME LIBRARY EXCEPTION Version 3.1, 31 March 2009 Copyright (C) 2009 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This GCC Runtime Library Exception ("Exception") is an additional permission under section 7 of the GNU General Public License, version 3 ("GPLv3"). It applies to a given file (the "Runtime Library") that bears a notice placed by the copyright holder of the file stating that the file is governed by GPLv3 along with this Exception. When you use GCC to compile a program, GCC may combine portions of certain GCC header files and runtime libraries with the compiled program. The purpose of this Exception is to allow compilation of non-GPL (including proprietary) programs to use, in this way, the header files and runtime libraries covered by this Exception. 0. Definitions. A file is an "Independent Module" if it either requires the Runtime Library for execution after a Compilation Process, or makes use of an interface provided by the Runtime Library, but is not otherwise based on the Runtime Library. "GCC" means a version of the GNU Compiler Collection, with or without modifications, governed by version 3 (or a specified later version) of the GNU General Public License (GPL) with the option of using any subsequent versions published by the FSF. "GPL-compatible Software" is software whose conditions of propagation, modification and use would permit combination with GCC in accord with the license of GCC. "Target Code" refers to output from any compiler for a real or virtual target processor architecture, in executable form or suitable for input to an assembler, loader, linker and/or execution phase. Notwithstanding that, Target Code does not include data in any format that is used as a compiler intermediate representation, or used for producing a compiler intermediate representation. The "Compilation Process" transforms code entirely represented in non-intermediate languages designed for human-written code, and/or in Java Virtual Machine byte code, into Target Code. Thus, for example, use of source code generators and preprocessors need not be considered part of the Compilation Process, since the Compilation Process can be understood as starting with the output of the generators or preprocessors. A Compilation Process is "Eligible" if it is done using GCC, alone or with other GPL-compatible software, or if it is done without using any work based on GCC. For example, using non-GPL-compatible Software to optimize any GCC intermediate representations would not qualify as an Eligible Compilation Process. 1. Grant of Additional Permission. You have permission to propagate a work of Target Code formed by combining the Runtime Library with Independent Modules, even if such propagation would otherwise violate the terms of GPLv3, provided that all Target Code was generated by Eligible Compilation Processes. You may then convey such a combination under terms of your choice, consistent with the licensing of the Independent Modules. 2. No Weakening of GCC Copyleft. The availability of this Exception does not imply any general presumption that third-party software is unaffected by the copyleft requirements of the license of GCC. ---- GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================= NumPy Ufunc C-API ================= :: PyObject * PyUFunc_FromFuncAndData(PyUFuncGenericFunction *func, void **data, char *types, int ntypes, int nin, int nout, int identity, const char *name, const char *doc, int unused) :: int PyUFunc_RegisterLoopForType(PyUFuncObject *ufunc, int usertype, PyUFuncGenericFunction function, int *arg_types, void *data) :: int PyUFunc_GenericFunction(PyUFuncObject *ufunc, PyObject *args, PyObject *kwds, PyArrayObject **op) This generic function is called with the ufunc object, the arguments to it, and an array of (pointers to) PyArrayObjects which are NULL. 'op' is an array of at least NPY_MAXARGS PyArrayObject *. :: void PyUFunc_f_f_As_d_d(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_d_d(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_f_f(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_g_g(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_F_F_As_D_D(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_F_F(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_D_D(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_G_G(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_O_O(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_ff_f_As_dd_d(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_ff_f(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_dd_d(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_gg_g(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_FF_F_As_DD_D(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_DD_D(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_FF_F(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_GG_G(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_OO_O(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_O_O_method(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_OO_O_method(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_On_Om(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: int PyUFunc_GetPyValues(char *name, int *bufsize, int *errmask, PyObject **errobj) On return, if errobj is populated with a non-NULL value, the caller owns a new reference to errobj. :: int PyUFunc_checkfperr(int errmask, PyObject *errobj, int *first) :: void PyUFunc_clearfperr() :: int PyUFunc_getfperr(void ) :: int PyUFunc_handlefperr(int errmask, PyObject *errobj, int retstatus, int *first) :: int PyUFunc_ReplaceLoopBySignature(PyUFuncObject *func, PyUFuncGenericFunction newfunc, int *signature, PyUFuncGenericFunction *oldfunc) :: PyObject * PyUFunc_FromFuncAndDataAndSignature(PyUFuncGenericFunction *func, void **data, char *types, int ntypes, int nin, int nout, int identity, const char *name, const char *doc, int unused, const char *signature) :: int PyUFunc_SetUsesArraysAsData(void **data, size_t i) :: void PyUFunc_e_e(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_e_e_As_f_f(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_e_e_As_d_d(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_ee_e(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_ee_e_As_ff_f(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: void PyUFunc_ee_e_As_dd_d(char **args, npy_intp *dimensions, npy_intp *steps, void *func) :: int PyUFunc_DefaultTypeResolver(PyUFuncObject *ufunc, NPY_CASTING casting, PyArrayObject **operands, PyObject *type_tup, PyArray_Descr **out_dtypes) This function applies the default type resolution rules for the provided ufunc. Returns 0 on success, -1 on error. :: int PyUFunc_ValidateCasting(PyUFuncObject *ufunc, NPY_CASTING casting, PyArrayObject **operands, PyArray_Descr **dtypes) Validates that the input operands can be cast to the input types, and the output types can be cast to the output operands where provided. Returns 0 on success, -1 (with exception raised) on validation failure. :: int PyUFunc_RegisterLoopForDescr(PyUFuncObject *ufunc, PyArray_Descr *user_dtype, PyUFuncGenericFunction function, PyArray_Descr **arg_dtypes, void *data) =========== NumPy C-API =========== :: unsigned int PyArray_GetNDArrayCVersion(void ) Included at the very first so not auto-grabbed and thus not labeled. :: int PyArray_SetNumericOps(PyObject *dict) Set internal structure with number functions that all arrays will use :: PyObject * PyArray_GetNumericOps(void ) Get dictionary showing number functions that all arrays will use :: int PyArray_INCREF(PyArrayObject *mp) For object arrays, increment all internal references. :: int PyArray_XDECREF(PyArrayObject *mp) Decrement all internal references for object arrays. (or arrays with object fields) :: void PyArray_SetStringFunction(PyObject *op, int repr) Set the array print function to be a Python function. :: PyArray_Descr * PyArray_DescrFromType(int type) Get the PyArray_Descr structure for a type. :: PyObject * PyArray_TypeObjectFromType(int type) Get a typeobject from a type-number -- can return NULL. New reference :: char * PyArray_Zero(PyArrayObject *arr) Get pointer to zero of correct type for array. :: char * PyArray_One(PyArrayObject *arr) Get pointer to one of correct type for array :: PyObject * PyArray_CastToType(PyArrayObject *arr, PyArray_Descr *dtype, int is_f_order) For backward compatibility Cast an array using typecode structure. steals reference to dtype --- cannot be NULL This function always makes a copy of arr, even if the dtype doesn't change. :: int PyArray_CastTo(PyArrayObject *out, PyArrayObject *mp) Cast to an already created array. :: int PyArray_CastAnyTo(PyArrayObject *out, PyArrayObject *mp) Cast to an already created array. Arrays don't have to be "broadcastable" Only requirement is they have the same number of elements. :: int PyArray_CanCastSafely(int fromtype, int totype) Check the type coercion rules. :: npy_bool PyArray_CanCastTo(PyArray_Descr *from, PyArray_Descr *to) leaves reference count alone --- cannot be NULL PyArray_CanCastTypeTo is equivalent to this, but adds a 'casting' parameter. :: int PyArray_ObjectType(PyObject *op, int minimum_type) Return the typecode of the array a Python object would be converted to Returns the type number the result should have, or NPY_NOTYPE on error. :: PyArray_Descr * PyArray_DescrFromObject(PyObject *op, PyArray_Descr *mintype) new reference -- accepts NULL for mintype :: PyArrayObject ** PyArray_ConvertToCommonType(PyObject *op, int *retn) :: PyArray_Descr * PyArray_DescrFromScalar(PyObject *sc) Return descr object from array scalar. New reference :: PyArray_Descr * PyArray_DescrFromTypeObject(PyObject *type) :: npy_intp PyArray_Size(PyObject *op) Compute the size of an array (in number of items) :: PyObject * PyArray_Scalar(void *data, PyArray_Descr *descr, PyObject *base) Get scalar-equivalent to a region of memory described by a descriptor. :: PyObject * PyArray_FromScalar(PyObject *scalar, PyArray_Descr *outcode) Get 0-dim array from scalar 0-dim array from array-scalar object always contains a copy of the data unless outcode is NULL, it is of void type and the referrer does not own it either. steals reference to outcode :: void PyArray_ScalarAsCtype(PyObject *scalar, void *ctypeptr) Convert to c-type no error checking is performed -- ctypeptr must be same type as scalar in case of flexible type, the data is not copied into ctypeptr which is expected to be a pointer to pointer :: int PyArray_CastScalarToCtype(PyObject *scalar, void *ctypeptr, PyArray_Descr *outcode) Cast Scalar to c-type The output buffer must be large-enough to receive the value Even for flexible types which is different from ScalarAsCtype where only a reference for flexible types is returned This may not work right on narrow builds for NumPy unicode scalars. :: int PyArray_CastScalarDirect(PyObject *scalar, PyArray_Descr *indescr, void *ctypeptr, int outtype) Cast Scalar to c-type :: PyObject * PyArray_ScalarFromObject(PyObject *object) Get an Array Scalar From a Python Object Returns NULL if unsuccessful but error is only set if another error occurred. Currently only Numeric-like object supported. :: PyArray_VectorUnaryFunc * PyArray_GetCastFunc(PyArray_Descr *descr, int type_num) Get a cast function to cast from the input descriptor to the output type_number (must be a registered data-type). Returns NULL if un-successful. :: PyObject * PyArray_FromDims(int nd, int *d, int type) Construct an empty array from dimensions and typenum :: PyObject * PyArray_FromDimsAndDataAndDescr(int nd, int *d, PyArray_Descr *descr, char *data) Like FromDimsAndData but uses the Descr structure instead of typecode as input. :: PyObject * PyArray_FromAny(PyObject *op, PyArray_Descr *newtype, int min_depth, int max_depth, int flags, PyObject *context) Does not check for NPY_ARRAY_ENSURECOPY and NPY_ARRAY_NOTSWAPPED in flags Steals a reference to newtype --- which can be NULL :: PyObject * PyArray_EnsureArray(PyObject *op) This is a quick wrapper around PyArray_FromAny(op, NULL, 0, 0, NPY_ARRAY_ENSUREARRAY, NULL) that special cases Arrays and PyArray_Scalars up front It *steals a reference* to the object It also guarantees that the result is PyArray_Type Because it decrefs op if any conversion needs to take place so it can be used like PyArray_EnsureArray(some_function(...)) :: PyObject * PyArray_EnsureAnyArray(PyObject *op) :: PyObject * PyArray_FromFile(FILE *fp, PyArray_Descr *dtype, npy_intp num, char *sep) Given a ``FILE *`` pointer ``fp``, and a ``PyArray_Descr``, return an array corresponding to the data encoded in that file. If the dtype is NULL, the default array type is used (double). If non-null, the reference is stolen and if dtype->subarray is true dtype will be decrefed even on success. The number of elements to read is given as ``num``; if it is < 0, then then as many as possible are read. If ``sep`` is NULL or empty, then binary data is assumed, else text data, with ``sep`` as the separator between elements. Whitespace in the separator matches any length of whitespace in the text, and a match for whitespace around the separator is added. For memory-mapped files, use the buffer interface. No more data than necessary is read by this routine. :: PyObject * PyArray_FromString(char *data, npy_intp slen, PyArray_Descr *dtype, npy_intp num, char *sep) Given a pointer to a string ``data``, a string length ``slen``, and a ``PyArray_Descr``, return an array corresponding to the data encoded in that string. If the dtype is NULL, the default array type is used (double). If non-null, the reference is stolen. If ``slen`` is < 0, then the end of string is used for text data. It is an error for ``slen`` to be < 0 for binary data (since embedded NULLs would be the norm). The number of elements to read is given as ``num``; if it is < 0, then then as many as possible are read. If ``sep`` is NULL or empty, then binary data is assumed, else text data, with ``sep`` as the separator between elements. Whitespace in the separator matches any length of whitespace in the text, and a match for whitespace around the separator is added. :: PyObject * PyArray_FromBuffer(PyObject *buf, PyArray_Descr *type, npy_intp count, npy_intp offset) :: PyObject * PyArray_FromIter(PyObject *obj, PyArray_Descr *dtype, npy_intp count) steals a reference to dtype (which cannot be NULL) :: PyObject * PyArray_Return(PyArrayObject *mp) Return either an array or the appropriate Python object if the array is 0d and matches a Python type. steals reference to mp :: PyObject * PyArray_GetField(PyArrayObject *self, PyArray_Descr *typed, int offset) Get a subset of bytes from each element of the array steals reference to typed, must not be NULL :: int PyArray_SetField(PyArrayObject *self, PyArray_Descr *dtype, int offset, PyObject *val) Set a subset of bytes from each element of the array steals reference to dtype, must not be NULL :: PyObject * PyArray_Byteswap(PyArrayObject *self, npy_bool inplace) :: PyObject * PyArray_Resize(PyArrayObject *self, PyArray_Dims *newshape, int refcheck, NPY_ORDER order) Resize (reallocate data). Only works if nothing else is referencing this array and it is contiguous. If refcheck is 0, then the reference count is not checked and assumed to be 1. You still must own this data and have no weak-references and no base object. :: int PyArray_MoveInto(PyArrayObject *dst, PyArrayObject *src) Move the memory of one array into another, allowing for overlapping data. Returns 0 on success, negative on failure. :: int PyArray_CopyInto(PyArrayObject *dst, PyArrayObject *src) Copy an Array into another array. Broadcast to the destination shape if necessary. Returns 0 on success, -1 on failure. :: int PyArray_CopyAnyInto(PyArrayObject *dst, PyArrayObject *src) Copy an Array into another array -- memory must not overlap Does not require src and dest to have "broadcastable" shapes (only the same number of elements). TODO: For NumPy 2.0, this could accept an order parameter which only allows NPY_CORDER and NPY_FORDER. Could also rename this to CopyAsFlat to make the name more intuitive. Returns 0 on success, -1 on error. :: int PyArray_CopyObject(PyArrayObject *dest, PyObject *src_object) :: PyObject * PyArray_NewCopy(PyArrayObject *obj, NPY_ORDER order) Copy an array. :: PyObject * PyArray_ToList(PyArrayObject *self) To List :: PyObject * PyArray_ToString(PyArrayObject *self, NPY_ORDER order) :: int PyArray_ToFile(PyArrayObject *self, FILE *fp, char *sep, char *format) To File :: int PyArray_Dump(PyObject *self, PyObject *file, int protocol) :: PyObject * PyArray_Dumps(PyObject *self, int protocol) :: int PyArray_ValidType(int type) Is the typenum valid? :: void PyArray_UpdateFlags(PyArrayObject *ret, int flagmask) Update Several Flags at once. :: PyObject * PyArray_New(PyTypeObject *subtype, int nd, npy_intp *dims, int type_num, npy_intp *strides, void *data, int itemsize, int flags, PyObject *obj) Generic new array creation routine. :: PyObject * PyArray_NewFromDescr(PyTypeObject *subtype, PyArray_Descr *descr, int nd, npy_intp *dims, npy_intp *strides, void *data, int flags, PyObject *obj) Generic new array creation routine. steals a reference to descr. On failure or when dtype->subarray is true, dtype will be decrefed. :: PyArray_Descr * PyArray_DescrNew(PyArray_Descr *base) base cannot be NULL :: PyArray_Descr * PyArray_DescrNewFromType(int type_num) :: double PyArray_GetPriority(PyObject *obj, double default_) Get Priority from object :: PyObject * PyArray_IterNew(PyObject *obj) Get Iterator. :: PyObject * PyArray_MultiIterNew(int n, ... ) Get MultiIterator, :: int PyArray_PyIntAsInt(PyObject *o) :: npy_intp PyArray_PyIntAsIntp(PyObject *o) :: int PyArray_Broadcast(PyArrayMultiIterObject *mit) :: void PyArray_FillObjectArray(PyArrayObject *arr, PyObject *obj) Assumes contiguous :: int PyArray_FillWithScalar(PyArrayObject *arr, PyObject *obj) :: npy_bool PyArray_CheckStrides(int elsize, int nd, npy_intp numbytes, npy_intp offset, npy_intp *dims, npy_intp *newstrides) :: PyArray_Descr * PyArray_DescrNewByteorder(PyArray_Descr *self, char newendian) returns a copy of the PyArray_Descr structure with the byteorder altered: no arguments: The byteorder is swapped (in all subfields as well) single argument: The byteorder is forced to the given state (in all subfields as well) Valid states: ('big', '>') or ('little' or '<') ('native', or '=') If a descr structure with | is encountered it's own byte-order is not changed but any fields are: Deep bytorder change of a data-type descriptor Leaves reference count of self unchanged --- does not DECREF self *** :: PyObject * PyArray_IterAllButAxis(PyObject *obj, int *inaxis) Get Iterator that iterates over all but one axis (don't use this with PyArray_ITER_GOTO1D). The axis will be over-written if negative with the axis having the smallest stride. :: PyObject * PyArray_CheckFromAny(PyObject *op, PyArray_Descr *descr, int min_depth, int max_depth, int requires, PyObject *context) steals a reference to descr -- accepts NULL :: PyObject * PyArray_FromArray(PyArrayObject *arr, PyArray_Descr *newtype, int flags) steals reference to newtype --- acc. NULL :: PyObject * PyArray_FromInterface(PyObject *origin) :: PyObject * PyArray_FromStructInterface(PyObject *input) :: PyObject * PyArray_FromArrayAttr(PyObject *op, PyArray_Descr *typecode, PyObject *context) :: NPY_SCALARKIND PyArray_ScalarKind(int typenum, PyArrayObject **arr) ScalarKind Returns the scalar kind of a type number, with an optional tweak based on the scalar value itself. If no scalar is provided, it returns INTPOS_SCALAR for both signed and unsigned integers, otherwise it checks the sign of any signed integer to choose INTNEG_SCALAR when appropriate. :: int PyArray_CanCoerceScalar(int thistype, int neededtype, NPY_SCALARKIND scalar) Determines whether the data type 'thistype', with scalar kind 'scalar', can be coerced into 'neededtype'. :: PyObject * PyArray_NewFlagsObject(PyObject *obj) Get New ArrayFlagsObject :: npy_bool PyArray_CanCastScalar(PyTypeObject *from, PyTypeObject *to) See if array scalars can be cast. TODO: For NumPy 2.0, add a NPY_CASTING parameter. :: int PyArray_CompareUCS4(npy_ucs4 *s1, npy_ucs4 *s2, size_t len) :: int PyArray_RemoveSmallest(PyArrayMultiIterObject *multi) Adjusts previously broadcasted iterators so that the axis with the smallest sum of iterator strides is not iterated over. Returns dimension which is smallest in the range [0,multi->nd). A -1 is returned if multi->nd == 0. don't use with PyArray_ITER_GOTO1D because factors are not adjusted :: int PyArray_ElementStrides(PyObject *obj) :: void PyArray_Item_INCREF(char *data, PyArray_Descr *descr) :: void PyArray_Item_XDECREF(char *data, PyArray_Descr *descr) :: PyObject * PyArray_FieldNames(PyObject *fields) Return the tuple of ordered field names from a dictionary. :: PyObject * PyArray_Transpose(PyArrayObject *ap, PyArray_Dims *permute) Return Transpose. :: PyObject * PyArray_TakeFrom(PyArrayObject *self0, PyObject *indices0, int axis, PyArrayObject *out, NPY_CLIPMODE clipmode) Take :: PyObject * PyArray_PutTo(PyArrayObject *self, PyObject*values0, PyObject *indices0, NPY_CLIPMODE clipmode) Put values into an array :: PyObject * PyArray_PutMask(PyArrayObject *self, PyObject*values0, PyObject*mask0) Put values into an array according to a mask. :: PyObject * PyArray_Repeat(PyArrayObject *aop, PyObject *op, int axis) Repeat the array. :: PyObject * PyArray_Choose(PyArrayObject *ip, PyObject *op, PyArrayObject *out, NPY_CLIPMODE clipmode) :: int PyArray_Sort(PyArrayObject *op, int axis, NPY_SORTKIND which) Sort an array in-place :: PyObject * PyArray_ArgSort(PyArrayObject *op, int axis, NPY_SORTKIND which) ArgSort an array :: PyObject * PyArray_SearchSorted(PyArrayObject *op1, PyObject *op2, NPY_SEARCHSIDE side, PyObject *perm) Search the sorted array op1 for the location of the items in op2. The result is an array of indexes, one for each element in op2, such that if the item were to be inserted in op1 just before that index the array would still be in sorted order. Parameters ---------- op1 : PyArrayObject * Array to be searched, must be 1-D. op2 : PyObject * Array of items whose insertion indexes in op1 are wanted side : {NPY_SEARCHLEFT, NPY_SEARCHRIGHT} If NPY_SEARCHLEFT, return first valid insertion indexes If NPY_SEARCHRIGHT, return last valid insertion indexes perm : PyObject * Permutation array that sorts op1 (optional) Returns ------- ret : PyObject * New reference to npy_intp array containing indexes where items in op2 could be validly inserted into op1. NULL on error. Notes ----- Binary search is used to find the indexes. :: PyObject * PyArray_ArgMax(PyArrayObject *op, int axis, PyArrayObject *out) ArgMax :: PyObject * PyArray_ArgMin(PyArrayObject *op, int axis, PyArrayObject *out) ArgMin :: PyObject * PyArray_Reshape(PyArrayObject *self, PyObject *shape) Reshape :: PyObject * PyArray_Newshape(PyArrayObject *self, PyArray_Dims *newdims, NPY_ORDER order) New shape for an array :: PyObject * PyArray_Squeeze(PyArrayObject *self) return a new view of the array object with all of its unit-length dimensions squeezed out if needed, otherwise return the same array. :: PyObject * PyArray_View(PyArrayObject *self, PyArray_Descr *type, PyTypeObject *pytype) View steals a reference to type -- accepts NULL :: PyObject * PyArray_SwapAxes(PyArrayObject *ap, int a1, int a2) SwapAxes :: PyObject * PyArray_Max(PyArrayObject *ap, int axis, PyArrayObject *out) Max :: PyObject * PyArray_Min(PyArrayObject *ap, int axis, PyArrayObject *out) Min :: PyObject * PyArray_Ptp(PyArrayObject *ap, int axis, PyArrayObject *out) Ptp :: PyObject * PyArray_Mean(PyArrayObject *self, int axis, int rtype, PyArrayObject *out) Mean :: PyObject * PyArray_Trace(PyArrayObject *self, int offset, int axis1, int axis2, int rtype, PyArrayObject *out) Trace :: PyObject * PyArray_Diagonal(PyArrayObject *self, int offset, int axis1, int axis2) Diagonal In NumPy versions prior to 1.7, this function always returned a copy of the diagonal array. In 1.7, the code has been updated to compute a view onto 'self', but it still copies this array before returning, as well as setting the internal WARN_ON_WRITE flag. In a future version, it will simply return a view onto self. :: PyObject * PyArray_Clip(PyArrayObject *self, PyObject *min, PyObject *max, PyArrayObject *out) Clip :: PyObject * PyArray_Conjugate(PyArrayObject *self, PyArrayObject *out) Conjugate :: PyObject * PyArray_Nonzero(PyArrayObject *self) Nonzero TODO: In NumPy 2.0, should make the iteration order a parameter. :: PyObject * PyArray_Std(PyArrayObject *self, int axis, int rtype, PyArrayObject *out, int variance) Set variance to 1 to by-pass square-root calculation and return variance Std :: PyObject * PyArray_Sum(PyArrayObject *self, int axis, int rtype, PyArrayObject *out) Sum :: PyObject * PyArray_CumSum(PyArrayObject *self, int axis, int rtype, PyArrayObject *out) CumSum :: PyObject * PyArray_Prod(PyArrayObject *self, int axis, int rtype, PyArrayObject *out) Prod :: PyObject * PyArray_CumProd(PyArrayObject *self, int axis, int rtype, PyArrayObject *out) CumProd :: PyObject * PyArray_All(PyArrayObject *self, int axis, PyArrayObject *out) All :: PyObject * PyArray_Any(PyArrayObject *self, int axis, PyArrayObject *out) Any :: PyObject * PyArray_Compress(PyArrayObject *self, PyObject *condition, int axis, PyArrayObject *out) Compress :: PyObject * PyArray_Flatten(PyArrayObject *a, NPY_ORDER order) Flatten :: PyObject * PyArray_Ravel(PyArrayObject *arr, NPY_ORDER order) Ravel Returns a contiguous array :: npy_intp PyArray_MultiplyList(npy_intp *l1, int n) Multiply a List :: int PyArray_MultiplyIntList(int *l1, int n) Multiply a List of ints :: void * PyArray_GetPtr(PyArrayObject *obj, npy_intp*ind) Produce a pointer into array :: int PyArray_CompareLists(npy_intp *l1, npy_intp *l2, int n) Compare Lists :: int PyArray_AsCArray(PyObject **op, void *ptr, npy_intp *dims, int nd, PyArray_Descr*typedescr) Simulate a C-array steals a reference to typedescr -- can be NULL :: int PyArray_As1D(PyObject **op, char **ptr, int *d1, int typecode) Convert to a 1D C-array :: int PyArray_As2D(PyObject **op, char ***ptr, int *d1, int *d2, int typecode) Convert to a 2D C-array :: int PyArray_Free(PyObject *op, void *ptr) Free pointers created if As2D is called :: int PyArray_Converter(PyObject *object, PyObject **address) Useful to pass as converter function for O& processing in PyArgs_ParseTuple. This conversion function can be used with the "O&" argument for PyArg_ParseTuple. It will immediately return an object of array type or will convert to a NPY_ARRAY_CARRAY any other object. If you use PyArray_Converter, you must DECREF the array when finished as you get a new reference to it. :: int PyArray_IntpFromSequence(PyObject *seq, npy_intp *vals, int maxvals) PyArray_IntpFromSequence Returns the number of integers converted or -1 if an error occurred. vals must be large enough to hold maxvals :: PyObject * PyArray_Concatenate(PyObject *op, int axis) Concatenate Concatenate an arbitrary Python sequence into an array. op is a python object supporting the sequence interface. Its elements will be concatenated together to form a single multidimensional array. If axis is NPY_MAXDIMS or bigger, then each sequence object will be flattened before concatenation :: PyObject * PyArray_InnerProduct(PyObject *op1, PyObject *op2) Numeric.innerproduct(a,v) :: PyObject * PyArray_MatrixProduct(PyObject *op1, PyObject *op2) Numeric.matrixproduct(a,v) just like inner product but does the swapaxes stuff on the fly :: PyObject * PyArray_CopyAndTranspose(PyObject *op) Copy and Transpose Could deprecate this function, as there isn't a speed benefit over calling Transpose and then Copy. :: PyObject * PyArray_Correlate(PyObject *op1, PyObject *op2, int mode) Numeric.correlate(a1,a2,mode) :: int PyArray_TypestrConvert(int itemsize, int gentype) Typestr converter :: int PyArray_DescrConverter(PyObject *obj, PyArray_Descr **at) Get typenum from an object -- None goes to NPY_DEFAULT_TYPE This function takes a Python object representing a type and converts it to a the correct PyArray_Descr * structure to describe the type. Many objects can be used to represent a data-type which in NumPy is quite a flexible concept. This is the central code that converts Python objects to Type-descriptor objects that are used throughout numpy. Returns a new reference in *at, but the returned should not be modified as it may be one of the canonical immutable objects or a reference to the input obj. :: int PyArray_DescrConverter2(PyObject *obj, PyArray_Descr **at) Get typenum from an object -- None goes to NULL :: int PyArray_IntpConverter(PyObject *obj, PyArray_Dims *seq) Get intp chunk from sequence This function takes a Python sequence object and allocates and fills in an intp array with the converted values. Remember to free the pointer seq.ptr when done using PyDimMem_FREE(seq.ptr)** :: int PyArray_BufferConverter(PyObject *obj, PyArray_Chunk *buf) Get buffer chunk from object this function takes a Python object which exposes the (single-segment) buffer interface and returns a pointer to the data segment You should increment the reference count by one of buf->base if you will hang on to a reference You only get a borrowed reference to the object. Do not free the memory... :: int PyArray_AxisConverter(PyObject *obj, int *axis) Get axis from an object (possibly None) -- a converter function, See also PyArray_ConvertMultiAxis, which also handles a tuple of axes. :: int PyArray_BoolConverter(PyObject *object, npy_bool *val) Convert an object to true / false :: int PyArray_ByteorderConverter(PyObject *obj, char *endian) Convert object to endian :: int PyArray_OrderConverter(PyObject *object, NPY_ORDER *val) Convert an object to FORTRAN / C / ANY / KEEP :: unsigned char PyArray_EquivTypes(PyArray_Descr *type1, PyArray_Descr *type2) This function returns true if the two typecodes are equivalent (same basic kind and same itemsize). :: PyObject * PyArray_Zeros(int nd, npy_intp *dims, PyArray_Descr *type, int is_f_order) Zeros steals a reference to type. On failure or when dtype->subarray is true, dtype will be decrefed. accepts NULL type :: PyObject * PyArray_Empty(int nd, npy_intp *dims, PyArray_Descr *type, int is_f_order) Empty accepts NULL type steals referenct to type :: PyObject * PyArray_Where(PyObject *condition, PyObject *x, PyObject *y) Where :: PyObject * PyArray_Arange(double start, double stop, double step, int type_num) Arange, :: PyObject * PyArray_ArangeObj(PyObject *start, PyObject *stop, PyObject *step, PyArray_Descr *dtype) ArangeObj, this doesn't change the references :: int PyArray_SortkindConverter(PyObject *obj, NPY_SORTKIND *sortkind) Convert object to sort kind :: PyObject * PyArray_LexSort(PyObject *sort_keys, int axis) LexSort an array providing indices that will sort a collection of arrays lexicographically. The first key is sorted on first, followed by the second key -- requires that arg"merge"sort is available for each sort_key Returns an index array that shows the indexes for the lexicographic sort along the given axis. :: PyObject * PyArray_Round(PyArrayObject *a, int decimals, PyArrayObject *out) Round :: unsigned char PyArray_EquivTypenums(int typenum1, int typenum2) :: int PyArray_RegisterDataType(PyArray_Descr *descr) Register Data type Does not change the reference count of descr :: int PyArray_RegisterCastFunc(PyArray_Descr *descr, int totype, PyArray_VectorUnaryFunc *castfunc) Register Casting Function Replaces any function currently stored. :: int PyArray_RegisterCanCast(PyArray_Descr *descr, int totype, NPY_SCALARKIND scalar) Register a type number indicating that a descriptor can be cast to it safely :: void PyArray_InitArrFuncs(PyArray_ArrFuncs *f) Initialize arrfuncs to NULL :: PyObject * PyArray_IntTupleFromIntp(int len, npy_intp *vals) PyArray_IntTupleFromIntp :: int PyArray_TypeNumFromName(char *str) :: int PyArray_ClipmodeConverter(PyObject *object, NPY_CLIPMODE *val) Convert an object to NPY_RAISE / NPY_CLIP / NPY_WRAP :: int PyArray_OutputConverter(PyObject *object, PyArrayObject **address) Useful to pass as converter function for O& processing in PyArgs_ParseTuple for output arrays :: PyObject * PyArray_BroadcastToShape(PyObject *obj, npy_intp *dims, int nd) Get Iterator broadcast to a particular shape :: void _PyArray_SigintHandler(int signum) :: void* _PyArray_GetSigintBuf(void ) :: int PyArray_DescrAlignConverter(PyObject *obj, PyArray_Descr **at) Get type-descriptor from an object forcing alignment if possible None goes to DEFAULT type. any object with the .fields attribute and/or .itemsize attribute (if the .fields attribute does not give the total size -- i.e. a partial record naming). If itemsize is given it must be >= size computed from fields The .fields attribute must return a convertible dictionary if present. Result inherits from NPY_VOID. :: int PyArray_DescrAlignConverter2(PyObject *obj, PyArray_Descr **at) Get type-descriptor from an object forcing alignment if possible None goes to NULL. :: int PyArray_SearchsideConverter(PyObject *obj, void *addr) Convert object to searchsorted side :: PyObject * PyArray_CheckAxis(PyArrayObject *arr, int *axis, int flags) PyArray_CheckAxis check that axis is valid convert 0-d arrays to 1-d arrays :: npy_intp PyArray_OverflowMultiplyList(npy_intp *l1, int n) Multiply a List of Non-negative numbers with over-flow detection. :: int PyArray_CompareString(char *s1, char *s2, size_t len) :: PyObject * PyArray_MultiIterFromObjects(PyObject **mps, int n, int nadd, ... ) Get MultiIterator from array of Python objects and any additional PyObject **mps -- array of PyObjects int n - number of PyObjects in the array int nadd - number of additional arrays to include in the iterator. Returns a multi-iterator object. :: int PyArray_GetEndianness(void ) :: unsigned int PyArray_GetNDArrayCFeatureVersion(void ) Returns the built-in (at compilation time) C API version :: PyObject * PyArray_Correlate2(PyObject *op1, PyObject *op2, int mode) correlate(a1,a2,mode) This function computes the usual correlation (correlate(a1, a2) != correlate(a2, a1), and conjugate the second argument for complex inputs :: PyObject* PyArray_NeighborhoodIterNew(PyArrayIterObject *x, npy_intp *bounds, int mode, PyArrayObject*fill) A Neighborhood Iterator object. :: void PyArray_SetDatetimeParseFunction(PyObject *op) This function is scheduled to be removed TO BE REMOVED - NOT USED INTERNALLY. :: void PyArray_DatetimeToDatetimeStruct(npy_datetime val, NPY_DATETIMEUNIT fr, npy_datetimestruct *result) Fill the datetime struct from the value and resolution unit. TO BE REMOVED - NOT USED INTERNALLY. :: void PyArray_TimedeltaToTimedeltaStruct(npy_timedelta val, NPY_DATETIMEUNIT fr, npy_timedeltastruct *result) Fill the timedelta struct from the timedelta value and resolution unit. TO BE REMOVED - NOT USED INTERNALLY. :: npy_datetime PyArray_DatetimeStructToDatetime(NPY_DATETIMEUNIT fr, npy_datetimestruct *d) Create a datetime value from a filled datetime struct and resolution unit. TO BE REMOVED - NOT USED INTERNALLY. :: npy_datetime PyArray_TimedeltaStructToTimedelta(NPY_DATETIMEUNIT fr, npy_timedeltastruct *d) Create a timdelta value from a filled timedelta struct and resolution unit. TO BE REMOVED - NOT USED INTERNALLY. :: NpyIter * NpyIter_New(PyArrayObject *op, npy_uint32 flags, NPY_ORDER order, NPY_CASTING casting, PyArray_Descr*dtype) Allocate a new iterator for one array object. :: NpyIter * NpyIter_MultiNew(int nop, PyArrayObject **op_in, npy_uint32 flags, NPY_ORDER order, NPY_CASTING casting, npy_uint32 *op_flags, PyArray_Descr **op_request_dtypes) Allocate a new iterator for more than one array object, using standard NumPy broadcasting rules and the default buffer size. :: NpyIter * NpyIter_AdvancedNew(int nop, PyArrayObject **op_in, npy_uint32 flags, NPY_ORDER order, NPY_CASTING casting, npy_uint32 *op_flags, PyArray_Descr **op_request_dtypes, int oa_ndim, int **op_axes, npy_intp *itershape, npy_intp buffersize) Allocate a new iterator for multiple array objects, and advanced options for controlling the broadcasting, shape, and buffer size. :: NpyIter * NpyIter_Copy(NpyIter *iter) Makes a copy of the iterator :: int NpyIter_Deallocate(NpyIter *iter) Deallocate an iterator :: npy_bool NpyIter_HasDelayedBufAlloc(NpyIter *iter) Whether the buffer allocation is being delayed :: npy_bool NpyIter_HasExternalLoop(NpyIter *iter) Whether the iterator handles the inner loop :: int NpyIter_EnableExternalLoop(NpyIter *iter) Removes the inner loop handling (so HasExternalLoop returns true) :: npy_intp * NpyIter_GetInnerStrideArray(NpyIter *iter) Get the array of strides for the inner loop (when HasExternalLoop is true) This function may be safely called without holding the Python GIL. :: npy_intp * NpyIter_GetInnerLoopSizePtr(NpyIter *iter) Get a pointer to the size of the inner loop (when HasExternalLoop is true) This function may be safely called without holding the Python GIL. :: int NpyIter_Reset(NpyIter *iter, char **errmsg) Resets the iterator to its initial state If errmsg is non-NULL, it should point to a variable which will receive the error message, and no Python exception will be set. This is so that the function can be called from code not holding the GIL. :: int NpyIter_ResetBasePointers(NpyIter *iter, char **baseptrs, char **errmsg) Resets the iterator to its initial state, with new base data pointers. This function requires great caution. If errmsg is non-NULL, it should point to a variable which will receive the error message, and no Python exception will be set. This is so that the function can be called from code not holding the GIL. :: int NpyIter_ResetToIterIndexRange(NpyIter *iter, npy_intp istart, npy_intp iend, char **errmsg) Resets the iterator to a new iterator index range If errmsg is non-NULL, it should point to a variable which will receive the error message, and no Python exception will be set. This is so that the function can be called from code not holding the GIL. :: int NpyIter_GetNDim(NpyIter *iter) Gets the number of dimensions being iterated :: int NpyIter_GetNOp(NpyIter *iter) Gets the number of operands being iterated :: NpyIter_IterNextFunc * NpyIter_GetIterNext(NpyIter *iter, char **errmsg) Compute the specialized iteration function for an iterator If errmsg is non-NULL, it should point to a variable which will receive the error message, and no Python exception will be set. This is so that the function can be called from code not holding the GIL. :: npy_intp NpyIter_GetIterSize(NpyIter *iter) Gets the number of elements being iterated :: void NpyIter_GetIterIndexRange(NpyIter *iter, npy_intp *istart, npy_intp *iend) Gets the range of iteration indices being iterated :: npy_intp NpyIter_GetIterIndex(NpyIter *iter) Gets the current iteration index :: int NpyIter_GotoIterIndex(NpyIter *iter, npy_intp iterindex) Sets the iterator position to the specified iterindex, which matches the iteration order of the iterator. Returns NPY_SUCCEED on success, NPY_FAIL on failure. :: npy_bool NpyIter_HasMultiIndex(NpyIter *iter) Whether the iterator is tracking a multi-index :: int NpyIter_GetShape(NpyIter *iter, npy_intp *outshape) Gets the broadcast shape if a multi-index is being tracked by the iterator, otherwise gets the shape of the iteration as Fortran-order (fastest-changing index first). The reason Fortran-order is returned when a multi-index is not enabled is that this is providing a direct view into how the iterator traverses the n-dimensional space. The iterator organizes its memory from fastest index to slowest index, and when a multi-index is enabled, it uses a permutation to recover the original order. Returns NPY_SUCCEED or NPY_FAIL. :: NpyIter_GetMultiIndexFunc * NpyIter_GetGetMultiIndex(NpyIter *iter, char **errmsg) Compute a specialized get_multi_index function for the iterator If errmsg is non-NULL, it should point to a variable which will receive the error message, and no Python exception will be set. This is so that the function can be called from code not holding the GIL. :: int NpyIter_GotoMultiIndex(NpyIter *iter, npy_intp *multi_index) Sets the iterator to the specified multi-index, which must have the correct number of entries for 'ndim'. It is only valid when NPY_ITER_MULTI_INDEX was passed to the constructor. This operation fails if the multi-index is out of bounds. Returns NPY_SUCCEED on success, NPY_FAIL on failure. :: int NpyIter_RemoveMultiIndex(NpyIter *iter) Removes multi-index support from an iterator. Returns NPY_SUCCEED or NPY_FAIL. :: npy_bool NpyIter_HasIndex(NpyIter *iter) Whether the iterator is tracking an index :: npy_bool NpyIter_IsBuffered(NpyIter *iter) Whether the iterator is buffered :: npy_bool NpyIter_IsGrowInner(NpyIter *iter) Whether the inner loop can grow if buffering is unneeded :: npy_intp NpyIter_GetBufferSize(NpyIter *iter) Gets the size of the buffer, or 0 if buffering is not enabled :: npy_intp * NpyIter_GetIndexPtr(NpyIter *iter) Get a pointer to the index, if it is being tracked :: int NpyIter_GotoIndex(NpyIter *iter, npy_intp flat_index) If the iterator is tracking an index, sets the iterator to the specified index. Returns NPY_SUCCEED on success, NPY_FAIL on failure. :: char ** NpyIter_GetDataPtrArray(NpyIter *iter) Get the array of data pointers (1 per object being iterated) This function may be safely called without holding the Python GIL. :: PyArray_Descr ** NpyIter_GetDescrArray(NpyIter *iter) Get the array of data type pointers (1 per object being iterated) :: PyArrayObject ** NpyIter_GetOperandArray(NpyIter *iter) Get the array of objects being iterated :: PyArrayObject * NpyIter_GetIterView(NpyIter *iter, npy_intp i) Returns a view to the i-th object with the iterator's internal axes :: void NpyIter_GetReadFlags(NpyIter *iter, char *outreadflags) Gets an array of read flags (1 per object being iterated) :: void NpyIter_GetWriteFlags(NpyIter *iter, char *outwriteflags) Gets an array of write flags (1 per object being iterated) :: void NpyIter_DebugPrint(NpyIter *iter) For debugging :: npy_bool NpyIter_IterationNeedsAPI(NpyIter *iter) Whether the iteration loop, and in particular the iternext() function, needs API access. If this is true, the GIL must be retained while iterating. :: void NpyIter_GetInnerFixedStrideArray(NpyIter *iter, npy_intp *out_strides) Get an array of strides which are fixed. Any strides which may change during iteration receive the value NPY_MAX_INTP. Once the iterator is ready to iterate, call this to get the strides which will always be fixed in the inner loop, then choose optimized inner loop functions which take advantage of those fixed strides. This function may be safely called without holding the Python GIL. :: int NpyIter_RemoveAxis(NpyIter *iter, int axis) Removes an axis from iteration. This requires that NPY_ITER_MULTI_INDEX was set for iterator creation, and does not work if buffering is enabled. This function also resets the iterator to its initial state. Returns NPY_SUCCEED or NPY_FAIL. :: npy_intp * NpyIter_GetAxisStrideArray(NpyIter *iter, int axis) Gets the array of strides for the specified axis. If the iterator is tracking a multi-index, gets the strides for the axis specified, otherwise gets the strides for the iteration axis as Fortran order (fastest-changing axis first). Returns NULL if an error occurs. :: npy_bool NpyIter_RequiresBuffering(NpyIter *iter) Whether the iteration could be done with no buffering. :: char ** NpyIter_GetInitialDataPtrArray(NpyIter *iter) Get the array of data pointers (1 per object being iterated), directly into the arrays (never pointing to a buffer), for starting unbuffered iteration. This always returns the addresses for the iterator position as reset to iterator index 0. These pointers are different from the pointers accepted by NpyIter_ResetBasePointers, because the direction along some axes may have been reversed, requiring base offsets. This function may be safely called without holding the Python GIL. :: int NpyIter_CreateCompatibleStrides(NpyIter *iter, npy_intp itemsize, npy_intp *outstrides) Builds a set of strides which are the same as the strides of an output array created using the NPY_ITER_ALLOCATE flag, where NULL was passed for op_axes. This is for data packed contiguously, but not necessarily in C or Fortran order. This should be used together with NpyIter_GetShape and NpyIter_GetNDim. A use case for this function is to match the shape and layout of the iterator and tack on one or more dimensions. For example, in order to generate a vector per input value for a numerical gradient, you pass in ndim*itemsize for itemsize, then add another dimension to the end with size ndim and stride itemsize. To do the Hessian matrix, you do the same thing but add two dimensions, or take advantage of the symmetry and pack it into 1 dimension with a particular encoding. This function may only be called if the iterator is tracking a multi-index and if NPY_ITER_DONT_NEGATE_STRIDES was used to prevent an axis from being iterated in reverse order. If an array is created with this method, simply adding 'itemsize' for each iteration will traverse the new array matching the iterator. Returns NPY_SUCCEED or NPY_FAIL. :: int PyArray_CastingConverter(PyObject *obj, NPY_CASTING *casting) Convert any Python object, *obj*, to an NPY_CASTING enum. :: npy_intp PyArray_CountNonzero(PyArrayObject *self) Counts the number of non-zero elements in the array. Returns -1 on error. :: PyArray_Descr * PyArray_PromoteTypes(PyArray_Descr *type1, PyArray_Descr *type2) Produces the smallest size and lowest kind type to which both input types can be cast. :: PyArray_Descr * PyArray_MinScalarType(PyArrayObject *arr) If arr is a scalar (has 0 dimensions) with a built-in number data type, finds the smallest type size/kind which can still represent its data. Otherwise, returns the array's data type. :: PyArray_Descr * PyArray_ResultType(npy_intp narrs, PyArrayObject **arr, npy_intp ndtypes, PyArray_Descr **dtypes) Produces the result type of a bunch of inputs, using the UFunc type promotion rules. Use this function when you have a set of input arrays, and need to determine an output array dtype. If all the inputs are scalars (have 0 dimensions) or the maximum "kind" of the scalars is greater than the maximum "kind" of the arrays, does a regular type promotion. Otherwise, does a type promotion on the MinScalarType of all the inputs. Data types passed directly are treated as array types. :: npy_bool PyArray_CanCastArrayTo(PyArrayObject *arr, PyArray_Descr *to, NPY_CASTING casting) Returns 1 if the array object may be cast to the given data type using the casting rule, 0 otherwise. This differs from PyArray_CanCastTo in that it handles scalar arrays (0 dimensions) specially, by checking their value. :: npy_bool PyArray_CanCastTypeTo(PyArray_Descr *from, PyArray_Descr *to, NPY_CASTING casting) Returns true if data of type 'from' may be cast to data of type 'to' according to the rule 'casting'. :: PyArrayObject * PyArray_EinsteinSum(char *subscripts, npy_intp nop, PyArrayObject **op_in, PyArray_Descr *dtype, NPY_ORDER order, NPY_CASTING casting, PyArrayObject *out) This function provides summation of array elements according to the Einstein summation convention. For example: - trace(a) -> einsum("ii", a) - transpose(a) -> einsum("ji", a) - multiply(a,b) -> einsum(",", a, b) - inner(a,b) -> einsum("i,i", a, b) - outer(a,b) -> einsum("i,j", a, b) - matvec(a,b) -> einsum("ij,j", a, b) - matmat(a,b) -> einsum("ij,jk", a, b) subscripts: The string of subscripts for einstein summation. nop: The number of operands op_in: The array of operands dtype: Either NULL, or the data type to force the calculation as. order: The order for the calculation/the output axes. casting: What kind of casts should be permitted. out: Either NULL, or an array into which the output should be placed. By default, the labels get placed in alphabetical order at the end of the output. So, if c = einsum("i,j", a, b) then c[i,j] == a[i]*b[j], but if c = einsum("j,i", a, b) then c[i,j] = a[j]*b[i]. Alternatively, you can control the output order or prevent an axis from being summed/force an axis to be summed by providing indices for the output. This allows us to turn 'trace' into 'diag', for example. - diag(a) -> einsum("ii->i", a) - sum(a, axis=0) -> einsum("i...->", a) Subscripts at the beginning and end may be specified by putting an ellipsis "..." in the middle. For example, the function einsum("i...i", a) takes the diagonal of the first and last dimensions of the operand, and einsum("ij...,jk...->ik...") takes the matrix product using the first two indices of each operand instead of the last two. When there is only one operand, no axes being summed, and no output parameter, this function returns a view into the operand instead of making a copy. :: PyObject * PyArray_NewLikeArray(PyArrayObject *prototype, NPY_ORDER order, PyArray_Descr *dtype, int subok) Creates a new array with the same shape as the provided one, with possible memory layout order and data type changes. prototype - The array the new one should be like. order - NPY_CORDER - C-contiguous result. NPY_FORTRANORDER - Fortran-contiguous result. NPY_ANYORDER - Fortran if prototype is Fortran, C otherwise. NPY_KEEPORDER - Keeps the axis ordering of prototype. dtype - If not NULL, overrides the data type of the result. subok - If 1, use the prototype's array subtype, otherwise always create a base-class array. NOTE: If dtype is not NULL, steals the dtype reference. On failure or when dtype->subarray is true, dtype will be decrefed. :: int PyArray_GetArrayParamsFromObject(PyObject *op, PyArray_Descr *requested_dtype, npy_bool writeable, PyArray_Descr **out_dtype, int *out_ndim, npy_intp *out_dims, PyArrayObject **out_arr, PyObject *context) Retrieves the array parameters for viewing/converting an arbitrary PyObject* to a NumPy array. This allows the "innate type and shape" of Python list-of-lists to be discovered without actually converting to an array. In some cases, such as structured arrays and the __array__ interface, a data type needs to be used to make sense of the object. When this is needed, provide a Descr for 'requested_dtype', otherwise provide NULL. This reference is not stolen. Also, if the requested dtype doesn't modify the interpretation of the input, out_dtype will still get the "innate" dtype of the object, not the dtype passed in 'requested_dtype'. If writing to the value in 'op' is desired, set the boolean 'writeable' to 1. This raises an error when 'op' is a scalar, list of lists, or other non-writeable 'op'. Result: When success (0 return value) is returned, either out_arr is filled with a non-NULL PyArrayObject and the rest of the parameters are untouched, or out_arr is filled with NULL, and the rest of the parameters are filled. Typical usage: PyArrayObject *arr = NULL; PyArray_Descr *dtype = NULL; int ndim = 0; npy_intp dims[NPY_MAXDIMS]; if (PyArray_GetArrayParamsFromObject(op, NULL, 1, &dtype, &ndim, dims, &arr, NULL) < 0) { return NULL; } if (arr == NULL) { ... validate/change dtype, validate flags, ndim, etc ... // Could make custom strides here too arr = PyArray_NewFromDescr(&PyArray_Type, dtype, ndim, dims, NULL, is_f_order ? NPY_ARRAY_F_CONTIGUOUS : 0, NULL); if (arr == NULL) { return NULL; } if (PyArray_CopyObject(arr, op) < 0) { Py_DECREF(arr); return NULL; } } else { ... in this case the other parameters weren't filled, just validate and possibly copy arr itself ... } ... use arr ... :: int PyArray_ConvertClipmodeSequence(PyObject *object, NPY_CLIPMODE *modes, int n) Convert an object to an array of n NPY_CLIPMODE values. This is intended to be used in functions where a different mode could be applied to each axis, like in ravel_multi_index. :: PyObject * PyArray_MatrixProduct2(PyObject *op1, PyObject *op2, PyArrayObject*out) Numeric.matrixproduct2(a,v,out) just like inner product but does the swapaxes stuff on the fly :: npy_bool NpyIter_IsFirstVisit(NpyIter *iter, int iop) Checks to see whether this is the first time the elements of the specified reduction operand which the iterator points at are being seen for the first time. The function returns a reasonable answer for reduction operands and when buffering is disabled. The answer may be incorrect for buffered non-reduction operands. This function is intended to be used in EXTERNAL_LOOP mode only, and will produce some wrong answers when that mode is not enabled. If this function returns true, the caller should also check the inner loop stride of the operand, because if that stride is 0, then only the first element of the innermost external loop is being visited for the first time. WARNING: For performance reasons, 'iop' is not bounds-checked, it is not confirmed that 'iop' is actually a reduction operand, and it is not confirmed that EXTERNAL_LOOP mode is enabled. These checks are the responsibility of the caller, and should be done outside of any inner loops. :: int PyArray_SetBaseObject(PyArrayObject *arr, PyObject *obj) Sets the 'base' attribute of the array. This steals a reference to 'obj'. Returns 0 on success, -1 on failure. :: void PyArray_CreateSortedStridePerm(int ndim, npy_intp *strides, npy_stride_sort_item *out_strideperm) This function populates the first ndim elements of strideperm with sorted descending by their absolute values. For example, the stride array (4, -2, 12) becomes [(2, 12), (0, 4), (1, -2)]. :: void PyArray_RemoveAxesInPlace(PyArrayObject *arr, npy_bool *flags) Removes the axes flagged as True from the array, modifying it in place. If an axis flagged for removal has a shape entry bigger than one, this effectively selects index zero for that axis. WARNING: If an axis flagged for removal has a shape equal to zero, the array will point to invalid memory. The caller must validate this! If an axis flagged for removal has a shape larger then one, the aligned flag (and in the future the contiguous flags), may need explicit update. (check also NPY_RELAXED_STRIDES_CHECKING) For example, this can be used to remove the reduction axes from a reduction result once its computation is complete. :: void PyArray_DebugPrint(PyArrayObject *obj) Prints the raw data of the ndarray in a form useful for debugging low-level C issues. :: int PyArray_FailUnlessWriteable(PyArrayObject *obj, const char *name) This function does nothing if obj is writeable, and raises an exception (and returns -1) if obj is not writeable. It may also do other house-keeping, such as issuing warnings on arrays which are transitioning to become views. Always call this function at some point before writing to an array. 'name' is a name for the array, used to give better error messages. Something like "assignment destination", "output array", or even just "array". :: int PyArray_SetUpdateIfCopyBase(PyArrayObject *arr, PyArrayObject *base) Precondition: 'arr' is a copy of 'base' (though possibly with different strides, ordering, etc.). This function sets the UPDATEIFCOPY flag and the ->base pointer on 'arr', so that when 'arr' is destructed, it will copy any changes back to 'base'. DEPRECATED, use PyArray_SetWritebackIfCopyBase Steals a reference to 'base'. Returns 0 on success, -1 on failure. :: void * PyDataMem_NEW(size_t size) Allocates memory for array data. :: void PyDataMem_FREE(void *ptr) Free memory for array data. :: void * PyDataMem_RENEW(void *ptr, size_t size) Reallocate/resize memory for array data. :: PyDataMem_EventHookFunc * PyDataMem_SetEventHook(PyDataMem_EventHookFunc *newhook, void *user_data, void **old_data) Sets the allocation event hook for numpy array data. Takes a PyDataMem_EventHookFunc *, which has the signature: void hook(void *old, void *new, size_t size, void *user_data). Also takes a void *user_data, and void **old_data. Returns a pointer to the previous hook or NULL. If old_data is non-NULL, the previous user_data pointer will be copied to it. If not NULL, hook will be called at the end of each PyDataMem_NEW/FREE/RENEW: result = PyDataMem_NEW(size) -> (*hook)(NULL, result, size, user_data) PyDataMem_FREE(ptr) -> (*hook)(ptr, NULL, 0, user_data) result = PyDataMem_RENEW(ptr, size) -> (*hook)(ptr, result, size, user_data) When the hook is called, the GIL will be held by the calling thread. The hook should be written to be reentrant, if it performs operations that might cause new allocation events (such as the creation/destruction numpy objects, or creating/destroying Python objects which might cause a gc) :: void PyArray_MapIterSwapAxes(PyArrayMapIterObject *mit, PyArrayObject **ret, int getmap) :: PyObject * PyArray_MapIterArray(PyArrayObject *a, PyObject *index) Use advanced indexing to iterate an array. :: void PyArray_MapIterNext(PyArrayMapIterObject *mit) This function needs to update the state of the map iterator and point mit->dataptr to the memory-location of the next object Note that this function never handles an extra operand but provides compatibility for an old (exposed) API. :: int PyArray_Partition(PyArrayObject *op, PyArrayObject *ktharray, int axis, NPY_SELECTKIND which) Partition an array in-place :: PyObject * PyArray_ArgPartition(PyArrayObject *op, PyArrayObject *ktharray, int axis, NPY_SELECTKIND which) ArgPartition an array :: int PyArray_SelectkindConverter(PyObject *obj, NPY_SELECTKIND *selectkind) Convert object to select kind :: void * PyDataMem_NEW_ZEROED(size_t size, size_t elsize) Allocates zeroed memory for array data. :: int PyArray_CheckAnyScalarExact(PyObject *obj) return true an object is exactly a numpy scalar :: PyObject * PyArray_MapIterArrayCopyIfOverlap(PyArrayObject *a, PyObject *index, int copy_if_overlap, PyArrayObject *extra_op) Same as PyArray_MapIterArray, but: If copy_if_overlap != 0, check if `a` has memory overlap with any of the arrays in `index` and with `extra_op`. If yes, make copies as appropriate to avoid problems if `a` is modified during the iteration. `iter->array` may contain a copied array (UPDATEIFCOPY/WRITEBACKIFCOPY set). :: int PyArray_ResolveWritebackIfCopy(PyArrayObject *self) If WRITEBACKIFCOPY and self has data, reset the base WRITEABLE flag, copy the local data to base, release the local data, and set flags appropriately. Return 0 if not relevant, 1 if success, < 0 on failure :: int PyArray_SetWritebackIfCopyBase(PyArrayObject *arr, PyArrayObject *base) Precondition: 'arr' is a copy of 'base' (though possibly with different strides, ordering, etc.). This function sets the WRITEBACKIFCOPY flag and the ->base pointer on 'arr', call PyArray_ResolveWritebackIfCopy to copy any changes back to 'base' before deallocating the array. Steals a reference to 'base'. Returns 0 on success, -1 on failure.