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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
U
O±dDuã@s\ddlZddlZddlZddlmZmZddlmZddl    m
Z
ddl m Z m Z mZmZdZdZeegeƒZdZdZd    d
„Zd d „Zd d„Zdd„Zdd„Zejjdd„ƒZdd„Zdd„Zdd„Z d;dd„Z!dd „Z"ejjd!d"„ƒZ#ejjd#d$„ƒZ$d%d&„Z%d'd(„Z&d)d*„Z'd+d,„Z(d<d-d.„Z)d/d0„Z*d1d2„Z+d3d4„Z,d5d6„Z-d7d8„Z.Gd9d:„d:ƒZ/dS)=éN)Úsolve_diophantineÚinternal_overlap)Ú _umath_tests)Ú
as_strided)Úassert_Ú assert_raisesÚ assert_equalÚassert_array_equaléé
éÿÿÿÿc    Csl|dkrtdgSg}dD]L}dD]B}td|||d}||||}| t||||ƒ¡q"q|S)zGReturns slices of length nelems, from start onwards, in direction sign.rr
©ér
)r r)ÚsizeÚappendÚslice)ÚnelemsÚresÚstepÚsignÚstartÚstop©rúXd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/core/tests/test_mem_overlap.pyÚ_indices_for_nelemss
rcCs,g}dD]}t|ƒ}| t ||¡¡q|S)z$Returns (src, dst) pairs of indices.)rr
é)rÚextendÚ    itertoolsÚproduct)rrÚindrrrÚ_indices_for_axis%s
r cCstƒ}tj||dS)zKReturns ((axis0_src, axis0_dst), (axis1_src, axis1_dst), ... ) index pairs.)Úrepeat)r rr)ÚndimsrrrrÚ_indices0sr#cCsVt t t¡¡ t¡}| ¡}||||<||||<tt ||k¡d||fƒdS)z1Check assignment arr[dstidx] = arr[srcidx] works.zassigning arr[%s] = arr[%s]N)ÚnpÚarangerÚshapeÚreshapeÚcopyrÚall)ÚsrcidxÚdstidxZarrÚcpyrrrÚ_check_assignment7s  
ÿr-cCsDttƒ}|D]2}tdd„|Dƒƒ}tdd„|Dƒƒ}t||ƒq dS)NcSsg|] }|d‘qS©rr©Ú.0ÚarrrÚ
<listcomp>Ksz0test_overlapping_assignments.<locals>.<listcomp>cSsg|] }|d‘qS©rrr/rrrr2Ls)r#r"Útupler-)Zindsrr*r+rrrÚtest_overlapping_assignmentsEs
r5c s6tj d¡‰t tj¡j}tdƒD] }d}d}d|d}t||ƒ|kr"dˆjddtjdd‰ˆjddtjdd‰t|ˆƒ‰t|dˆƒ‰t    ‡‡fd    d
„t|ƒDƒƒ}t    ‡‡fd d
„t|ƒDƒƒ}t|d t
d d
„t ||ƒDƒƒƒ}t ˆjd|d tjdƒ‰|dkr||krd‰t ||ˆƒ}|dkrÄt ||ˆdd}    t|    dk||ˆ|    fƒt    dd
„t ||ƒDƒƒ}
d} |
D]} | t| ƒ9} qz| dkr.tt‡fdd
„tj|
ŽDƒƒ ƒ|d7}q<t ||ˆdd}    t|    dk    ||ˆ|    fƒtt
dd
„t ||ƒDƒƒˆkƒttdd
„t ||ƒDƒƒƒ|d7}q<q"dS)NéÒr réôré ©Údtypeéc3s(|] }tˆjdˆdtjdƒVqdS)rr9N©ÚintÚrandintr$Úintp©r0Új)ÚA_maxÚrngrrÚ    <genexpr>fsÿz(test_diophantine_fuzz.<locals>.<genexpr>c3s(|] }tˆjdˆdtjdƒVqdS)rr
r9Nr<r@)ÚU_maxrCrrrDhsÿr
css|]\}}||VqdS©Nr©r0r1ÚubrrrrDksr )Zsimplifycss&|]\}}td||d|ƒVqdS)rrN©ÚrangerGrrrrD{si †c3s|]}t|ƒˆkVqdSrF)Úsum)r0Úw)ÚbrrrDscss|]\}}||VqdSrFr©r0r1ÚxrrrrD‰scss*|]"\}}d|ko|knVqdS©rNr)r0rOrHrrrrDŠs)r$ÚrandomÚ RandomStateÚiinfor?ÚmaxrJÚminr>r4rKÚzipr=rrÚlenÚanyrrr)) Zmax_intÚndimZfeasible_countZinfeasible_countÚ    min_countÚAÚUZb_ubÚXZ X_simplifiedÚrangesrÚrr)rBrErMrCrÚtest_diophantine_fuzzQsJ  
ÿÿ" 
 
"
 r`cCsrt tj¡j}t tj¡j}||krn|d|ddf}|d|ddf}d|dd}tt|||ƒdƒdS)Nr
r )rr)r$rSr?rTÚint64rr)Zmax_intpZ    max_int64r[r\rMrrrÚtest_diophantine_overflowŽsrbc CsÜtj||td}tt ||¡tj||tdƒ| d¡| d¡| d¡| ¡}d}||krÊdd d|jdd|jddfd    |j    fd
|j    fd |j
fd |j
fd |j fd|j fg¡}t|||ddS)N©Zmax_workrrÚz    z
    zbase_a - base_b = %rÚdataz shape_a = %rz shape_b = %rzstrides_a = %rzstrides_b = %rz size_a = %rz size_b = %r©Úerr_msg) r$Úmay_share_memoryÚMAY_SHARE_EXACTrÚMAY_SHARE_BOUNDSÚfillrXÚjoinÚ__array_interface__r&Ústridesr)r1rMÚgotÚexactrgrrrÚcheck_may_share_memory_exacts( ÿ
 
 
 
 
 
 
 
 
ù
rqc
Cs¢tjddddgtjdtjddddgtjddd…dd…ddd…dd…fg}g}|D]<}tjtdƒtdddƒgfd    ŽD]}||}| |¡qzqV|D]Ø}tt |dd…d
dd…f|dd…d dd…f¡ƒttj|dd…d
dd…f|dd…d dd…fdd ƒt    |dd…d
dd…f|dd…d dd…fƒt    |dd…ddd …f|dd…ddd…fƒz&| 
¡}|j j r~Wq˜|  tj¡}Wntk
r¦Yq˜YnXt    | 
¡dd…| dddd¡dd…ddd …fƒt    |dd…ddd …f| dddd¡ƒt    |dd…ddd …f| dddd¡dd…ddd…fƒt    | 
¡dd …| dddd¡dd…ddd …fƒq˜tjd gtjd}t    ||ƒt    || ¡ƒdS)Né ééér9é.r
r érrrcérr;r8)r$ÚzerosÚint8rrrrrrhrqZravelÚflagsZowndataÚviewÚint16Ú
ValueErrorr'r()Zxs0ÚxsrOÚssÚxprrrÚtest_may_share_memory_manual·sF4þ$
48..
 
 ÿÿ ÿ ÿ
r‚TFc#sRtj d¡‰|r|rtƒ‚‡fdd„‰‡fdd„‰||fVtdddƒD]D}||d…|d| …fV|d    |d…f|d    d| …ffVqHt|jƒ}d
|d
<t||j|d }||fV||fVt|jƒ}|d
dkrâd|d
<t||j|d }||fV||fVt    ‡fd d „t|j
ƒDƒƒ}t    ‡fdd „t |j|ƒDƒƒ}t  |j
¡}ˆ  |¡|rb|}    nt  |j
¡}    ˆ  |    ¡||}
|rÜ|
jd
kr–qt    ‡fdd „t |j||
jƒDƒƒ} t    ‡fdd „t |j| |
jƒDƒƒ} n(|rè|} nt    ‡fdd „t|j
ƒDƒƒ} |s(t    ‡fdd „t |j| ƒDƒƒ} |
 |¡}
||  |    ¡} |
| fVqdS)Nr6cs`ˆjd|dtjd}ˆj||dtjd}ˆjddtjddkrT||}}|d9}t|||ƒS©Nrrr9r
r ©r>r$r?r©Únrrr©rCrrÚ random_sliceðs 
z,iter_random_view_pairs.<locals>.random_slicecsnˆ d|d||¡}||d|d}ˆ dd¡dkrb|d|d}}|dkrZd}|d9}t|||ƒS)Nrrr
r )r>r)r†rrrrr‡rrÚrandom_slice_fixed_sizeøsz7iter_random_view_pairs.<locals>.random_slice_fixed_sizerrxr.r)r&rnc3s:|]2}ˆjddtjddkr.ˆjddtjdndVqdS©rér9rr8N©r>r$r?r@r‡rrrDsÿÿz)iter_random_view_pairs.<locals>.<genexpr>c3s|]\}}ˆ||ƒVqdSrFr©r0ÚpÚs©rˆrrrDsc    3sB|]:\}}}ˆ dd¡dkr6ˆ dtd|d|ƒ¡ndVqdS)rr‹rr
N)r>rT©r0rŽrÚpar‡rrrD-sÿÿc3s |]\}}}ˆ|||ƒVqdSrFrr‘)r‰rrrD0sÿc3s:|]2}ˆjddtjddkr.ˆjddtjdndVqdSrŠrŒr@r‡rrrD5sÿÿc3s|]\}}ˆ||ƒVqdSrFrrrrrrD:s)r$rQrRr~rJÚlistrnrr&r4rYrVr%ÚshufflerÚ    transpose)rOÚ
same_stepsÚ
equal_sizerArnrÚstepsÚs1Út1Út2r1Zsteps2Ús2rMr)rˆr‰rCrÚiter_random_view_pairsêsd  
&
 
 
 
 
 
 þ 
 
  þ ÿ
 þ
rc CsÆtjddddgtjd}d}d}t||ƒ}t||ƒ|krÂt|ƒ\}}t ||¡}    t ||¡}
tj|||||ƒd} tj||td} | | kr”t| | ƒ|
|    kr¦t|
|    ƒ|    r*| r¸|d7}q*|d7}q*dS)    Néé"éGéar9rrcr)    r$ryr}rrUÚnextrhrir) Ú get_max_workr–rZrOZfeasibleZ
infeasibleZ    pair_iterr1rMZbounds_overlapZmay_share_answerZ easy_answerZ exact_answerrrrÚ check_may_share_memory_easy_fuzzBs$
 
 
 
r¤cCstdd„ddddS)NcSsdS©Nrr©r1rMrrrÚ<lambda>góz1test_may_share_memory_easy_fuzz.<locals>.<lambda>TéЩr£r–rZ©r¤rrrrÚtest_may_share_memory_easy_fuzzbsþr¬cCstdd„ddddS)NcSst|j|jƒdS)Nr
)rTrr¦rrrr§ur¨z3test_may_share_memory_harder_fuzz.<locals>.<lambda>Fr©rªr«rrrrÚ!test_may_share_memory_harder_fuzzls    þr­cCs¼tjdddgtjd}tt ||¡dƒtt || ¡¡dƒ|dd…ddd…ddd…f}|dd…ddd…ddd…f}tt ||¡dƒttj||dd    dƒttjtj||d
d    dS) Nrwr‹r;r9TFr
rrcr)r$ryrzrÚ shares_memoryr(rZ TooHardError)rOr1rMrrrÚtest_shares_memory_apizsr¯cCs@t dg¡}tttj||dddtttj||ddddS)Nrr édrc)r$ryrÚ OverflowErrorrhr®)rOrrrÚ"test_may_share_memory_bad_max_work‡s r²cCs*d
dd„}|dddd|ddd    ddS) NcSsÂt||ddd}|dkr |dk    }|dk    r”ttdd„t||ƒDƒƒtdd„t||ƒDƒƒkƒttdd„t||ƒDƒƒƒttdd„t||ƒDƒƒƒ|r¬t|dk    t|ƒƒnt|dkt|ƒƒdS)    Nrr)Zrequire_ub_nontrivialcss|]\}}||VqdSrFrrNrrrrD•szCtest_internal_overlap_diophantine.<locals>.check.<locals>.<genexpr>css|]\}}||dVqdS©r
Nr)r0r1ÚurrrrD•scss*|]"\}}d|ko|knVqdSrPr©r0rOr´rrrrD–scss|]\}}||dkVqdSr³rrµrrrrD—s)rrrKrVr)rXÚrepr)r[r\Úexistsr]rrrÚcheckŽs4z0test_internal_overlap_diophantine.<locals>.check)rr
)rwr;T)r·)r;r
)érwF)Nr)r¸rrrÚ!test_internal_overlap_diophantines
rºcsºtjddddgtjd}tj d¡‰‡fdd„‰d    }d
}||kr¶t‡fd d „t|jƒDƒƒ}t |j¡}ˆ     |¡t‡fd d „t
|j |ƒDƒƒ}||  |¡}t t|ƒ ƒ|d7}q8dS)NržrŸr r¡r9r6cs`ˆjd|dtjd}ˆj||dtjd}ˆjddtjddkrT||}}|d9}t|||ƒSrƒr„r…r‡rrrˆªs 
z2test_internal_overlap_slices.<locals>.random_sliceréˆc3s:|]2}ˆjddtjddkr.ˆjddtjdndVqdSrŠrŒr@r‡rrrD¶sÿÿz/test_internal_overlap_slices.<locals>.<genexpr>c3s|]\}}ˆ||ƒVqdSrFrrrrrrD»sr)r$ryr}rQrRr4rJrYr%r”rVr&r•rr)rOZcasesrZr˜ršr™r1r)rˆrCrÚtest_internal_overlap_slices£s   þ 
r¼cCs¬t|ƒ}tƒ}tdd„|jDƒƒ}tj|ŽD]:}tdd„t|j|ƒDƒƒ}||kr\d}qlq,|     |¡q,d}||krŽt
||t |j|jfƒd|dk    r¨||kr¨t
||ƒ|S)Ncss|]}t|ƒVqdSrFrI)r0r†rrrrDÇsz)check_internal_overlap.<locals>.<genexpr>css|]\}}||VqdSrFr)r0rrLrrrrDÉsTFrf) rÚsetr4r&rrrKrVrnÚaddrr¶)r1Zmanual_expectedroÚmr^ÚvÚoffsetÚexpectedrrrÚcheck_internal_overlapÂs 
rÃcCsðt d¡ tj¡}t|dƒt| g¡dƒt|ddd}t|dƒt|ddd}t|dƒt|ddd}t|dƒt|dd    d}t|dƒt|dd
d}t|dƒt|d d d}t|dƒt|d d d}t|dƒt|d dd}t|dƒdS)NrF)rrw)rwrw©rnr&)r‹rwTr.r3)r
)ri÷Øÿÿ)éWru)rru)rru)r$r%ÚastyperzrÃr'r)rOr1rrrÚtest_internal_overlap_manualÚs&
 
 
 
 
 
 
 
rÇc    s°t d¡ tj¡}d}d}d}tj d¡‰t||ƒ|kr¬ˆjddtjd}t    ‡fdd„t
|ƒDƒƒ}t    ‡fd    d„t
|ƒDƒƒ}t |||d
}t |ƒ}|r¢|d7}q*|d7}q*dS) Nrrr°r6rwr9c3s |]}ˆjddtjdVqdS)iüÿÿéèr9NrŒr@r‡rrrD sÿz-test_internal_overlap_fuzz.<locals>.<genexpr>c3s |]}ˆjddtjdVqdS)rr¹r9NrŒr@r‡rrrDsÿrÄ) r$r%rÆrzrQrRrUr>r?r4rJrrÃ)    rOÚoverlapZ
no_overlaprZrYrnr&r1Úresultrr‡rÚtest_internal_overlap_fuzzÿs$  ÿ ÿ
rËc    CsÚGdd„dƒ}Gdd„dƒ}||fD]°}t d¡}tt ||ddd…ƒ|ddd…¡ƒtt ||ddd…ƒ|ddd…¡ ƒtt ||ddd…ƒ|ddd…¡ƒtt ||ddd…ƒ|ddd…¡ƒq$dS)    Nc@s eZdZdd„Zedd„ƒZdS)z(test_non_ndarray_inputs.<locals>.MyArraycSs
||_dSrF©re©ÚselfrerrrÚ__init__sz1test_non_ndarray_inputs.<locals>.MyArray.__init__cSs|jjSrF)rerm©rÎrrrrm"sz<test_non_ndarray_inputs.<locals>.MyArray.__array_interface__N)Ú__name__Ú
__module__Ú __qualname__rÏÚpropertyrmrrrrÚMyArraysrÕc@seZdZdd„Zdd„ZdS)z)test_non_ndarray_inputs.<locals>.MyArray2cSs
||_dSrFrÌrÍrrrrÏ'sz2test_non_ndarray_inputs.<locals>.MyArray2.__init__cSs|jSrFrÌrÐrrrÚ    __array__*sz3test_non_ndarray_inputs.<locals>.MyArray2.__array__N)rÑrÒrÓrÏrÖrrrrÚMyArray2&sr×r‹r
rr)r$r%rrhr®)rÕr×ÚclsrOrrrÚtest_non_ndarray_inputss 
(*(rÙcCs8ddlm}t|jƒ}d|d<dg|d<t |||ƒ¡S)z@Construct an array viewing the first byte of each element of `x`r)Ú
DummyArrayú|b1Ztypestr)rdrÛÚdescr)Únumpy.lib.stride_tricksrÚÚdictrmr$Zasarray)rOrÚZ    interfacerrrÚview_element_first_byte7s
 
 
rßcKsj||d<t|ƒ}| ¡|d<| ¡}|||Ž|d<| ¡}||d<|||Ž ¡}||k ¡rft||ƒdS)z}
    Check that operation(*args, out=out) produces results
    equivalent to out[...] = operation(*args, out=out.copy())
    Úout.N)rÞr(rXr)Ú    operationÚargsràÚkwargsZkwargs2Zout_origrÂrorrrÚassert_copy_equivalent@s  räc@s eZdZdZejdfdd„Zejj    dd„ƒZ
ejj    dd„ƒZ d    d
„Z d d „Z d d„Zdd„Zejj    dd„ƒZdd„Zdd„Zdd„Zejj    dd„ƒZdd„ZdS)Ú    TestUFuncz1
    Test ufunc call memory overlap handling
    r»cCs ddddddg}tj d¡}tdd    ƒD]Þ}|jd
d |d|…d  |¡}t|d dd}    ||dd}
d
} | |
kr&t|    ƒ\} } |  ¡}|  ¡}|dkr¾t    || g| dt 
| | ¡r¼| d7} qlt   t|ƒdg¡D]0}|| d<|| d<|| | |ƒ\}}|dkrqÐt dƒg|}|dkr\|dkr@t d
dƒgd
g|d}nt d
|ƒgd
g|d}nb|dkrœ| j|d}|dkr’t ||dƒ||<n|||<n"| j||ks°t‚t d
|ƒ||<| t|ƒ}|rÚ| g¡}t 
| |¡rð| d7} t    || g||dqÐqlq&dS)Nrxrrérséé r6rr;ri)rFT©r–r—r
©rà.Úskip©ràÚaxis)r$rQrRrJr>rÆrr¢r(rär®rÚchainrr&ÚAssertionErrorr4r')rÎráÚget_out_axis_sizer:ÚcountÚshapesrCrYrOÚitrZÚ overlappingr1rMÚa_origÚb_origríZoutsizeZ    scalarizeÚslÚkZb_outrrrÚcheck_unary_fuzzZsN   
 
 
 
 
 
 
 
zTestUFunc.check_unary_fuzzcCs| tjdtj¡dSrF)rùr$Úinvertr}rÐrrrÚtest_unary_ufunc_call_fuzz™sz$TestUFunc.test_unary_ufunc_call_fuzzcCs|jtjdtjdddS)Nr7)rñ)rùr$ÚnegativeÚ
complex128rÐrrrÚ"test_unary_ufunc_call_complex_fuzzsz,TestUFunc.test_unary_ufunc_call_complex_fuzzcCs$dd„}|jtjj|tjdddS)NcSs4|dkr"|jdkr|jdfSdSn|j|dfSdS©NrF)rëF©rYrr&©r1rMrírrrrð£s
 
 
zFTestUFunc.test_binary_ufunc_accumulate_fuzz.<locals>.get_out_axis_sizer7©r:rñ)rùr$r¾Ú
accumulater}©rÎrðrrrÚ!test_binary_ufunc_accumulate_fuzz¢s
     ÿz+TestUFunc.test_binary_ufunc_accumulate_fuzzcCs$dd„}|jtjj|tjdddS)NcSsd|dkp|jdkfSr¥)rYrrrrrð°szBTestUFunc.test_binary_ufunc_reduce_fuzz.<locals>.get_out_axis_sizer7r)rùr$r¾Úreducer}rrrrÚtest_binary_ufunc_reduce_fuzz¯s
 ÿz'TestUFunc.test_binary_ufunc_reduce_fuzzcCs(dd„}dd„}|j||tjdddS)NcSs4|dkr"|jdkr|jdfSdSn|j|dfSdSrÿrrrrrrð·s
 
 
zDTestUFunc.test_binary_ufunc_reduceat_fuzz.<locals>.get_out_axis_sizecSs^|dkrt|ƒ}|t|ƒ}n|j|}|j||j|}t d||¡}tjj||||dS)Nrrì)rWr&r$r%r¾Úreduceat)r1ràrírrÚidxrrrÚ do_reduceatÀs
z>TestUFunc.test_binary_ufunc_reduceat_fuzz.<locals>.do_reduceatr7r)rùr$r})rÎrðr
rrrÚtest_binary_ufunc_reduceat_fuzz¶s     
ÿz)TestUFunc.test_binary_ufunc_reduceat_fuzzcCsddd„}tjdtjd}|tj||ddd… ¡|ƒtjdtjd}|tj||ddd…|ƒdS)NcSs:|j| ¡| ¡| ¡d}|j|||d}t||ƒdS©Nrê)rr(r    )Úufuncr1rràÚc1Úc2rrrr¸Îsz:TestUFunc.test_binary_ufunc_reduceat_manual.<locals>.checké'r9r )r$r%r}r¾r()rÎr¸r1rrrÚ!test_binary_ufunc_reduceat_manualÍs
z+TestUFunc.test_binary_ufunc_reduceat_manualc
CsÒddddddg}tj}tj d¡}tdd    ƒD]ž}|j|d|…Ž}t|d
d d }d |dd}d}||kr,t|ƒ\}    }
t    |    j
dd…ƒdksft    |
j
dd…ƒdksf|    j
ddkr¶qf|
j
d|
j
dkrÞ|
dddd…f}
n|
ddd…df}
|    j
d} | | dd} | |
j
dkr6| dkr6|
dd| …f}
nTt dt t  |
j
d¡ƒdƒ} | | dd} |    dd| …dd…f}    |
dd| …f}
t |    |
¡r |d7}tjdddt||    g|
dW5QRXqfq,dS)Nrxrrrærsrçrèr6r
r;FTrér7rréþÿÿÿr .Úignore)ZoverÚinvalidrê)rZeuclidean_pdistr$rQrRrJÚrandrr¢rUr&rTr=Úsqrtr®Úerrstaterä) rÎròZgufuncrCrYrOrórZrôr1rMr†rŽrrrÚtest_unary_gufunc_fuzzÛs6  :
z TestUFunc.test_unary_gufunc_fuzzcCsrd dd„}tjdtjd}|tj|ddd…|ƒtjdtjd}tjdddtjd}|tj|||d    d
…ƒdS) NcSs€| ¡}|dkr>| || ¡¡| ¡}| ||¡| ¡}n4| || ¡| ¡¡| ¡}| |||¡| ¡}t||ƒdSrF)r(Úatr    )r r1rrMZa0rrrrrr¸s 
z-TestUFunc.test_ufunc_at_manual.<locals>.checkrr9r r°rr
ééK)N)r$r%r}rúr¾)rÎr¸r1rrrrÚtest_ufunc_at_manuals 
zTestUFunc.test_ufunc_at_manualc sÔ‡fdd„}tjtjtjtjtjtjtjtjg}dd„|Dƒ}|D]Š}t     |tj
¡r^tj ‰ntj ‰d}d}tj d|…tj |||…tj |ddd…tj ||d|dd…tj dd    |d    …tj ||d    |d    …tj d    |ddd
…tj |d    |d|dd
…g}t ||¡D]¬\}}tjdd|d    ||d }    |    |}
|    |} tjd d d||
| ƒ||
dd…| ƒ||
dd…| ƒ||
dd… g¡| ƒ||
dd… g¡| ƒW5QRXq qBdS)Nc    sÔ| ¡}| ¡}| ¡}ˆ||d}ˆ||d}t||ƒt|ƒ tj¡}||d<||d<ˆ|| ¡| ¡d ¡}||d<||d<ˆ||| ¡d ¡}||d<||d<ˆ|||d ¡}t||ƒt||ƒdS)Nrê.©ràÚwhere)r(r    rßr|r$Úbool_)    r1rMrõröZb0rrÚmaskÚc3©r rrr¸"s$  
 
z3TestUFunc.test_unary_ufunc_1d_manual.<locals>.checkcSsg|]}t |¡‘qSr)r$r:)r0rOrrrr2@sz8TestUFunc.test_unary_ufunc_1d_manual.<locals>.<listcomp>rÈr rr r
rr9r)r))r$rzr}Úint32raÚfloat32Úfloat64Ú    complex64rýZ
issubdtypeÚintegerrúZ
reciprocalÚ    index_exprrr%rr') rÎr¸Zdtypesr:r†røÚindicesÚxiÚyirÀrOÚyrr"rÚtest_unary_ufunc_1d_manuals@ ÿ
 ø 
z$TestUFunc.test_unary_ufunc_1d_manualcsTtj‰‡fdd„}t d¡ tj¡}||||ƒ||| ¡|ƒ|||| ¡ƒdS)Ncs2ˆ|| ¡| ¡d}ˆ|||d}t||ƒdS)Nr©r(r    )r1ràr rrr"rrr¸gsz4TestUFunc.test_unary_ufunc_where_same.<locals>.checkr°)r$rúr%rÆrr()rÎr¸rOrr"rÚtest_unary_ufunc_where_samecs   z%TestUFunc.test_unary_ufunc_where_samec sÌtj‰‡fdd„}tjtjtjtjtjtjtjtj    fD]Ž}d}d}g}dD]n}| 
tj d|||…tj |||||…tj ||dd| …tj |||d|d| …g¡qLt   |||¡D]ú\}}}    t d|¡ |¡}
|
|}|
|}|
|    }    ||||    ƒ||dd…||    ƒ||dd…||    ƒ||dd… g¡||    ƒ||dd… g¡||    ƒ|||dd…|    ƒ|||dd…|    ƒ|||dd… g¡|    ƒ|||dd… g¡|    ƒqÊq6dS)    Ncs2| ¡}ˆ|||d}ˆ|||d}t||ƒdSr r.)r1rMÚcZc0rrr"rrr¸vsz4TestUFunc.test_binary_ufunc_1d_manual.<locals>.checkrÈr r rr;r )r$r¾rzr}r#rar$r%r&rýrr(rrr%rÆr') rÎr¸r:r†rør)rŽrOr,ÚzrÀrr"rÚtest_binary_ufunc_1d_manualrs@ ÿ
 ü z%TestUFunc.test_binary_ufunc_1d_manualcCs6tj d¡}| dd¡}||j7}t||jdƒdS)Nr6éÈr)r$rQrRrÚTr    )rÎrCrOrrrÚtest_inplace_op_simple_manualžs  
z'TestUFunc.test_inplace_op_simple_manualN)rÑrÒrÓÚ__doc__r$r}rùÚpytestÚmarkÚslowrûrþrrr rrrr-r/r2r5rrrrråUs(ÿ
?
 
 
+D
+rå)TF)N)0rr7Únumpyr$Znumpy.core._multiarray_testsrrZ
numpy.corerrÝrZ numpy.testingrrrr    r"rr4r&rjrirr r#r-r5r8r9r`rbrqr‚rr¤r¬r­r¯r²rºr¼rÃrÇrËrÙrßrärårrrrÚ<module>sL    
<3
X 
    
 
%