1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
U
P±d“Iã@sžddlZddlmZmZmZmZmZmZmZm    Z    m
Z
m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZGdd„dejƒZ dS)éN)ÚExprÚOpÚArithOpÚLanguageÚ    as_symbolÚ    as_numberÚ    as_stringÚas_arrayÚ
as_complexÚas_termsÚ
as_factorsÚeliminate_quotesÚ insert_quotesÚ
fromstringÚas_exprÚas_applyÚas_numer_denomÚ
as_ternaryÚas_refÚas_derefÚ    normalizeÚas_eqÚas_neÚas_ltÚas_gtÚas_leÚas_geé)Úutilc@sdeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dS)Ú TestSymboliccCsrdd„}dD]`}||dƒ||d|dƒ||dƒ||d|dƒ||d    ƒ|d
|d ƒq dS) NcSs&t|ƒ\}}t||ƒ}||ks"t‚dS©N)r rÚAssertionError)ÚsÚrÚdÚs1©r&úUd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/f2py/tests/test_symbolic.pyÚworker%s 
z2TestSymbolic.test_eliminate_quotes.<locals>.worker)ÚZmykind_z"1234" // "ABCD"z
"1234" // z"ABCD"z"1234" // 'ABCD'z'ABCD'z "1\"2'AB'34"za = z '1\'2"AB"34'r&)Úselfr(Úkindr&r&r'Útest_eliminate_quotes$s   z"TestSymbolic.test_eliminate_quotescCsœtdƒ}tdƒ}tdƒ}|jtjks(t‚t|ƒdks8t‚||ksDt‚||ksPt‚t|ƒdk    s`t‚tdƒ}tdƒ}|jtjks€t‚t|ƒdkst‚||ksœt‚||ks¨t‚t|ƒdk    s¸t‚tdƒ}td    ƒ}|jtj    ksØt‚t|ƒd
ksèt‚||ksôt‚||kst‚t|ƒdk    st‚t
d d ƒ}t
d dƒ}    |jtj ks:t‚t|ƒdksLt‚||ksZt‚||    ksht‚t|ƒdk    szt‚t dƒ}
t dƒ} |
jtj ksœt‚t|
ƒdks¶tt|
ƒƒ‚|
|
ksÄt‚|
| ksÒt‚t||fƒ} t|fƒ} | jtjksút‚t| ƒdks t‚| | kst‚| | ks(t‚t|ƒ}t|ƒ}|jtjksJt‚t|ƒdks\t‚||ksjt‚||ksxt‚t|ƒdk    sŠt‚t|ƒ}t|ƒ}|jtjks¬t‚t|ƒdks¾t‚||ksÌt‚||ksÚt‚t|ƒdk    sìt‚t|||ƒ}t|||ƒ}|jtjkst‚||ks$t‚||ks2t‚t|ƒdk    sDt‚t||ƒ}t||ƒ}|jtjksjt‚||ksxt‚||ks†t‚t|ƒdk    s˜t‚dS)NÚxÚyÚzzExpr(Op.SYMBOL, 'x')é{éÈzExpr(Op.INTEGER, (123, 4))gš™™™™™(@gÍÌÌÌÌÌF@zExpr(Op.REAL, (12.3, 4))rééézFExpr(Op.COMPLEX, (Expr(Op.INTEGER, (1, 4)), Expr(Op.INTEGER, (2, 4))))z'123'ú"ABC"zExpr(Op.STRING, ("'123'", 1))zHExpr(Op.ARRAY, (Expr(Op.INTEGER, (123, 4)), Expr(Op.INTEGER, (456, 4))))z)Expr(Op.TERMS, {Expr(Op.SYMBOL, 'x'): 1})z+Expr(Op.FACTORS, {Expr(Op.SYMBOL, 'x'): 1}))rÚoprÚSYMBOLr!ÚreprÚhashrÚINTEGERZREALr
ZCOMPLEXrÚSTRINGr    ÚARRAYr ÚTERMSr ÚFACTORSrZTERNARYrrZ
RELATIONAL)r*r-r.r/ÚnÚmÚfnZfmÚcÚc2r"Ús2ÚaÚbÚtÚuÚvÚwÚeÚfr&r&r'Ú test_sanity2s†     
 
 
 
 
zTestSymbolic.test_sanityc    
Cstdƒ}tdƒ}tdƒ}tdƒ}tdƒ}t||fƒ}t||ƒ}t|ƒdksNt‚t|ƒdks^t‚t|ƒdksnt‚t|ƒdks~t‚tttj|d    iƒƒdksšt‚tttj|d
iƒƒd ks¶t‚tttj|d iƒƒd ksÒt‚tttj|diƒƒdksît‚tttj|d    |d    iƒƒdkst‚tttj|d |d iƒƒdks2t‚tttj|d
|diƒƒdksTt‚tttj|d|diƒƒdksvt‚tttj|d
|diƒƒdks˜t‚tttj    |d    iƒƒdks¶t‚tttj    |d
iƒƒdksÔt‚tttj    |d iƒƒdksòt‚tttj    |diƒƒdkst‚tttj    |d    |d    iƒƒdks2t‚tttj    |d
|diƒƒdksTt‚ttj    |d
ttj|d    |d    iƒdiƒ}t|ƒdks’tt|ƒƒ‚ttj    |d
ttj    |d    |d    iƒdiƒ}t|ƒdksÐtt|ƒƒ‚tttj
ddifƒƒd ksðt‚tttj
d|fifƒƒd!kst‚tttj
d||fifƒƒd"ks6t‚tttj d|fƒƒd#ksTt‚tt |||ƒƒd$ksnt‚tt ||ƒƒd%ks†t‚tt||ƒƒd&ksžt‚tt||ƒƒd'ks¶t‚tt||ƒƒd(ksÎt‚tt||ƒƒd)ksæt‚tt||ƒƒd*ksþt‚dS)+Nr-r.r/r0r1Ú123z
[123, 456]z
(123, 456)rr2z2 * xéÿÿÿÿz-xéþÿÿÿz-2 * xúx + yz-x - yr3z 2 * x + 3 * yz-2 * x + 3 * yéýÿÿÿz 2 * x - 3 * yúx ** 2zx ** -1zx ** -2úx * yzx ** 2 * y ** 3zx ** 2 * (x + y) ** 3zx ** 2 * (x * y) ** 3rLr&zf()úf(x)zf(x, y)úf[x]zmerge(y, z, x)úx .eq. yúx .ne. yúx .lt. yúx .le. yúx .gt. yúx .ge. y)rrr    r
Ústrr!rrr=r>ÚAPPLYZINDEXINGrrrrrrr)    r*r-r.r/r?r@rErBrIr&r&r'Útest_tostring_fortranƒsR 
"""""""$$ "$z"TestSymbolic.test_tostring_fortrancCsätj}tdƒ}tdƒ}tdƒ}tdƒ}ttj|diƒj|ddksFt‚ttj||diƒj|ddksjt‚ttj|d    iƒj|dd
ksŠt‚t    t
j ||ƒj|dd ks¨t‚t    t
j |||ƒj|dd ksÊt‚t    t
j ||||ƒj|dd ksðt‚||||||j|ddkst‚t |||ƒj|ddks8t‚t ||ƒj|ddksTt‚t||ƒj|ddkspt‚t||ƒj|ddksŒt‚t||ƒj|ddks¨t‚t||ƒj|ddksÄt‚t||ƒj|ddksàt‚dS)Nr-r.r/r0r2©Úlanguagezx * xz(x + y) * (x + y)é z
pow(x, 12)úx / yz x / (x + y)z(x - y) / (x + y)z123 + x + (x - y) / (x + y)z(x?y:z)úx == yúx != yúx < yúx <= yúx > yúx >= y)rÚCrrrrr>Útostringr!rrÚDIVrrrrrrr)r*rar-r.r/r?r&r&r'Útest_tostring_c´sr ÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿ
zTestSymbolic.test_tostring_cc Cs"tdƒ}tdƒ}tdƒ}||ttj|diƒks4t‚||ttjdƒksLt‚||ttj|d|diƒkslt‚||ttj|d|diƒksŒt‚||ttj|diƒks¨t‚||ttj|d|diƒksÈt‚|
|ksÖt‚| ttj|diƒksútt| ƒƒ‚d|ttj|diƒkst‚d|ttj|dtdƒdiƒks>t‚d|d|ttj|d|diƒksht‚||dttj|d|diƒksŽt‚|dttj|diƒks¬t‚||dttjttj|diƒdttj|diƒdttj|d|diƒdiƒksþt‚||||d||ks t‚||d|dd|||dksNt‚||d||dd|dd|dks„t‚|||||||ks¦t‚|||||||ksÈt‚|dt    t
j |tdƒƒksèt‚d|d|ksþt‚d|dt    t
j d|tdƒƒks&t‚d    |dd|ks@t‚d
|dt    t
j d
|tdƒƒksht‚d |dd|ks‚t‚d |d t    t
j d
|tdƒƒksªt‚d |d|d    d|d|dt    t
j d
|d    |ƒksît‚d |d d
t    t
j |tdƒƒks&td |d d
ƒ‚|d
|t    t
j |dtd
ƒƒksNt‚|dttj|diƒkslt‚t dƒ}t dƒ}||ttj dƒks–t‚||ttj||fƒks´t‚||ttj||fƒksÒt‚tddƒ}| tddƒksòt‚||tdƒkst‚||tdƒkst‚dS)Nr-r.r/r2)rr4rrOr3r4ééééég@gà?r5ú"123")z"ABC123"rgð?gð¿gÀy@@yÀ@)rrrr=r!r:r>r8rrrrlrr;ZCONCATr
r)r*r-r.r/r"rGrBr&r&r'Útest_operationsÔs€   $&*& þúþ ".6"" ((((ÿ ÿ
ÿ(
zTestSymbolic.test_operationscCsVtdƒ}tdƒ}tdƒ}t||fƒ}| ||i¡|ks:t‚|| ||i¡||ksXt‚|| ||i¡||ksvt‚|d ||i¡|dks”t‚|| ||i¡||ks²t‚| |||i¡||ksÐt‚| |||i¡t|||fƒksöt‚t|||ƒ |||i¡t||||ƒks&t‚t||ƒ |||i¡t|||ƒksRt‚dS)Nr-r.r/r4)rr    Ú
substituter!rr)r*r-r.r/rEr&r&r'Útest_substitutes& &ÿ
ÿÿ
zTestSymbolic.test_substitutec    Cs>tdƒ}tdƒ}tdƒ}tdƒ}tdƒ}tdƒ}t||fƒ}tdƒ|ksLt‚tdƒ|ks\t‚tdƒ| ksnt‚td    ƒ||ks‚t‚td
ƒ|d ks–t‚td ƒ||ksªt‚td ƒ|dks¾t‚tdƒ||ksÒt‚tdtjd|dksìt‚tdtjd|dkst‚tdƒ|||ks"t‚tdƒ||ƒks8t‚tdƒ|||ƒksPt‚tdƒ||ksft‚tdƒ|||ks€t‚tdƒ|ks’t‚ttdtjdƒ||ks²t‚tdƒ||ƒksÈt‚tdƒtddƒksàt‚tdƒ|ksúttdƒƒ‚tdƒ||ƒkst‚tdƒt|||fƒks0t‚td ƒt    d!ƒksFt‚td"ƒt    d!dƒks^t‚td#ƒt    d!d$ƒksvt‚td%ƒt    d&d'ƒksŽt‚td(ƒt    d&d'ƒks¦t‚td)ƒt    d&dƒks¾t‚td*ƒt    d&d'ƒksÖt‚td+ƒt    d&dƒksît‚td,ƒt    d&dƒkst‚td-ƒt    d&d'ƒkst‚td.ƒt    d&dƒks6t‚td/ƒt    d&d0ƒksNt‚td1ƒt    d2d'ƒksft‚td3ƒt
d dƒks~t‚td4ƒt
t    d5ƒtd6ƒƒksžt‚td7ƒtt    d ƒt    dƒfƒksÀt‚td8ƒt td9ƒ|t    d ƒd:ksät‚td;ƒt td<ƒtd=ƒt    d>ƒtt    d?ƒt    d@ƒfƒdAkst‚tdBƒt |||ƒks8t‚tdCƒt |ƒksNt‚tdDƒt t |ƒƒksht‚tdEƒt|ƒks~t‚tdFƒt |ƒt |ƒksœt‚tdGƒt |ƒt |ƒksºt‚tdHƒt |ƒt |ƒksØt‚tdIƒt |ƒt |ƒksöt‚tdJƒt||ƒkst‚tdKƒt||ƒks&t‚tdLƒt||ƒks>t‚tdMƒt||ƒksVt‚tdNƒt||ƒksnt‚tdOƒt||ƒks†t‚tdPtjdt||ƒks¤t‚tdQtjdt||ƒksÂt‚tdRtjdt||ƒksàt‚tdStjdt||ƒksþt‚tdTtjdt||ƒkst‚tdUtjdt||ƒks:t‚dS)VNr-r.r/rLr5rsz+ xz-  xrQzx + 1rrTzx * 2r2rcrSr`z x ** 2 ** 3éz (x + y) * zrUzf(x,y)rVzf[x][y]z"ABC" // "123" zf("ABC")zMYSTRKIND_"ABC"Z    MYSTRKINDz(/x, y/)z f((/x, y/))z (/(x+y)*z/)rNr0Z123_2Z 123_myintkindZ    myintkindz123.0gÀ^@r4z123.0_4z123.0_8z123.0e0z123.0d0Z123d0z123e-0z123d+0z123.0_myrealkindZ
myrealkindZ3E4gLÝ@z(1, 2)z    (1e2, PI)gY@ÚPIz[1, 2]z POINT(x, y=1)ÚPOINT)r.z-PERSON(name="John", age=50, shape=(/34, 23/))ZPERSONz"John"é2é"é)ÚnameZageÚshapezx?y:zz*xz**xz&xz (*x) * (*y)z    (*x) * *yz*x * *yz*x**yrdrerfrhrgrirWrXrYr[rZr\)rrr    rr!rÚPythonrZFortranrr
rrrrrrrrrr)r*r-r.r/rLr"rGrEr&r&r'Útest_fromstring&s® ÿÿþ
 ÿ "þÿüÿ
zTestSymbolic.test_fromstringcstdƒ‰tdƒ}tdƒ}tdƒ}|f‡fdd„    }ˆ |¡|ksBt‚| |¡|ksTt‚| |¡|ksft‚||ƒ |¡||ƒks€t‚|ˆƒ |¡||ƒksšt‚|| |¡||ks´t‚|| |¡||ksÎt‚ˆ|| |¡d||ksðt‚ˆ||ˆ|ƒ |¡|||tdƒƒks t‚tˆ|ƒ |¡t||ƒks@t‚tƒ‰tƒ‰‡‡fd    d
„}ˆ||ˆ|ƒ |¡ˆ|hks‚t‚ˆˆ||hks–t‚d d „}tƒ‰ˆ||ˆ|ƒ |ˆ¡ˆˆ|||hksÔt‚d d„}tƒ‰ˆ||ˆ|ƒ |ˆ¡ˆˆhks t‚dS)Nr-r.r/rLcs|ˆkr |SdSr r&)r"r#©r-r&r'Ú replace_visit‹sz1TestSymbolic.test_traverse.<locals>.replace_visitr2rcsV|jtjkr4|jd}ˆ |¡|ˆkrRˆ |¡n|jtjkrR|ˆkrRˆ |¡dS)Nr)r6rr^ÚdataÚaddÚremover7)r"Úoper)Úfunction_symbolsÚsymbolsr&r'Úcollect_symbols s 
 
 z3TestSymbolic.test_traverse.<locals>.collect_symbolscSs|jtjkr| |¡dSr )r6rr7r„©Úexprrˆr&r&r'Úcollect_symbols2®s z4TestSymbolic.test_traverse.<locals>.collect_symbols2cSs*|jtjkr|S|jtjkr&| |¡dSr )r6rr^r7r„rŠr&r&r'Úcollect_symbols3·s  z4TestSymbolic.test_traverse.<locals>.collect_symbols3)rZtraverser!rrÚset)r*r.r/rLr‚r‰rŒrr&)r‡rˆr-r'Ú test_traverse„sJ" ÿÿ ÿÿ
     zTestSymbolic.test_traversecs¦tdƒ‰tdƒ}tdƒ}ˆ ˆ¡tdƒtdƒfks6t‚ˆd ˆ¡tdƒtdƒfksXt‚dˆ ˆ¡tdƒtdƒfkszt‚dˆd ˆ¡tdƒtdƒfks t‚tdƒ ˆ¡tdƒtdƒfksÂt‚| ˆ¡tdƒ|fksÜt‚|| ˆ¡tdƒ||fksþt‚ˆ| ˆ¡tdƒ|fkst‚|ˆ| ˆ¡||fks>t‚||ˆ| ˆ¡|||fksft‚||ˆ| ˆ¡|||fksŽt‚t t‡fdd    „¡dS)
Nr-r.r/rrr2r3csˆˆ ˆ¡Sr )Ú linear_solver&rr&r'Ú<lambda>Ôóz0TestSymbolic.test_linear_solve.<locals>.<lambda>)rrrr!ÚpytestZraisesÚ RuntimeError)r*r.r/r&rr'Útest_linear_solveÂs""&""  ((zTestSymbolic.test_linear_solvecCsôtdƒ}tdƒ}tdƒ}t|ƒ|tdƒfks0t‚t||ƒ||fksHt‚t||ƒ||fks`t‚t||ƒ||fksxt‚t||ƒ||tdƒfks˜t‚t|||ƒ||||fks¼t‚t|||||ƒ||d|||fksðt‚dS)Nr-r.r0rr2)rrrr!©r*r-r.r?r&r&r'Útest_as_numer_denomÖs $z TestSymbolic.test_as_numer_denomcCsÚtdƒ}tdƒ}tdƒ}| ¡|hks*t‚| ¡tƒks<t‚|| ¡||hksVt‚||ƒ ¡||ƒhkspt‚||ƒ| ¡||ƒ|hkst‚||ƒ|| ¡||ƒ||hks¸t‚||ƒ| ¡||ƒhksÖt‚dS)Nr-r.r0)rrZpolynomial_atomsr!rŽr–r&r&r'Útest_polynomial_atomsãs (z"TestSymbolic.test_polynomial_atomsN)Ú__name__Ú
__module__Ú __qualname__r,rMr_rmrtrvr€rr•r—r˜r&r&r&r'r#sQ1 @^> r)!r“Znumpy.f2py.symbolicrrrrrrrr    r
r r r rrrrrrrrrrrrrrrr)rZF2PyTestrr&r&r&r'Ú<module>st