zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
U
P±d’7ã@sž
dZddlZddlZddlZddlZddlZddlZddlZddlZ    ddlm
Z
m Z m Z m Z mZmZmZmZddlmZddlmZmZmZmZddlmZddlmZmZmZmZmZddlm Z dd    l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+d
d „Z,e&Z-dódd„Z&dd„Z.dd„Z/dd„Z0ddddddhZ1Gdd„dƒZ2dd„Z3e    j4 5d ¡gZ6e6e3de2d!e
d"d#gd$d%gge d&e
d#d"ge d&ƒe2d'e
d"d#gd$d%gge d&e
d#d"ge d&ƒe2d(e
d"d#gd$d%gge d&e
d#d"d%gd$d%d)gge d&ƒe2d*e
d+d,gd-d.gge d&e
d/d+ge d&ƒe2d0e
d+d,gd-d.gged&e
d/d+ged&ƒe2d1e
d+d,gd-d.gged&e
d/d+d2gd3d4d5gged&ƒe2d6e    j7d7e d&e    j7d8e d&dhd9e2d:e    j4 8d;d;¡e    j4 8d;¡ƒe2d<e    j4 8d=d=¡e    j4 8d=¡ƒe2d>d=d?gd@dAggd?d=gƒg
ƒ7Z6e6e3de2dBe
d"d#d$gd$d%d)gge d&e
d#d"ge d&ƒe2dCe
d"d#gd$d%gdDd)gge d&e
d#d"d$ge d&ƒe2dEe
d"d#d$gd$d%d)gge d&e
d#d"ge d&ƒe2dFe
d"d#gd$d%gdDd)gge d&e
d#d"d$ge d&ƒe2dGe
dHdIdJgdKdLdMgge d&e
d/d+ge d&ƒe2dNe
dHdIgdJdOgdPdQgge d&e
d/d+dJge d&ƒe2dRe
dHdIdJgdKdLdMgged&e
d/d+ged&ƒe2dSe
dHdIgdJdOgdPdQgged&e
d/d+dJged&ƒe2dTe
dHdIdJgdKdLdMgged&e
d/d+gdUdVgged&ƒe2dWe
dHdIgdJdOgdPdQgged&e
d/d+gdUdVgdUdVgged&ƒe2dXe    j4 8d;dY¡e    j4 8d;¡ƒe2dZe    j4 8d=d[¡e    j4 8d=¡ƒe2d\e    j4 8d[d=¡e    j4 8d[¡ƒe2d]e    j4 8ddA¡e    j4 8d¡dhd9e2d^e    j4 8dAd¡e    j4 8dA¡dhd9gƒ7Z6e6e3de2d_e
d"d#gd#d"gge d&dƒe2d`e
d"d#gd#d"gge d&dƒe2dae
d"d,gdbd=gge d&dƒe2dce
d"d,gdbd=gged&dƒe2dde    j7d7e d&ddhd9e2ded=d?gd?d=ggdƒe2dfe
d"d#gd#d"ggƒdƒe2dge    j4 8d=d=¡dƒgƒ7Z6dhdi„Z9e6e9ƒ7Z6djdk„Z:dldm„Z;e6e;ƒ7Z6Gdndo„doƒZ<Gdpdq„dqe<ƒZ=Gdrds„dse<ƒZ>Gdtdu„due<ƒZ?Gdvdw„dwe<ƒZ@Gdxdy„dye<ƒZAGdzd{„d{e<ƒZBd|d}„ZCd~d„ZDGd€d„de=e@ƒZEGd‚dƒ„dƒeEƒZFGd„d…„d…e=e@ƒZGGd†d‡„d‡eGƒZHGdˆd‰„d‰e=e@ƒZIGdŠd‹„d‹eIƒZJGdŒd„de=e@ƒZKGdŽd„deKƒZLGdd‘„d‘ƒZMGd’d“„d“e=e@ƒZNGd”d•„d•eNeMƒZOGd–d—„d—e?eBƒZPGd˜d™„d™ePeMƒZQGdšd›„d›e=e@ƒZRGdœd„deRƒZSGdždŸ„dŸe=e>e@eAƒZTGd d¡„d¡eTƒZUGd¢d£„d£e?eBƒZVGd¤d¥„d¥eVƒZWGd¦d§„d§e=e@ƒZXGd¨d©„d©eXƒZYGdªd«„d«e=e>ƒZZGd¬d­„d­eZƒZ[ej\ ]d®d¯d°„d±Dƒ¡Gd²d³„d³ƒƒZ^Gd´dµ„dµe?eBƒZ_Gd¶d·„d·ƒZ`Gd¸d¹„d¹e?eBƒZaGdºd»„d»ƒZbGd¼d½„d½ƒZcGd¾d¿„d¿ecƒZdGdÀdÁ„dÁecƒZeGdÂdÄdÃeeedƒZfGdÄdńdŃZgGdÆdDŽdÇecƒZhGdÈdɄdÉecƒZiGdÊd˄dËecƒZjGdÌd̈́dÍefehƒZkGdÎdτdÏefeiƒZlGdÐdфdÑefejƒZmGdÒdӄdӃZndÔdՄZoGdÖdׄd׃ZpGdØdلdكZqdÚdۄZrej\jse+dÜdݍdÞd߄ƒZtdàdá„Zuej\jse+dâdݍej\jvdãd䄃ƒZwGdådæ„dæƒZxGdçdè„dèƒZyGdédê„dêƒZzdëdì„Z{ej\j|dídݍdîdZ}ej\j~e* dðdݍdñdò„ƒZdS)ôz# Test functions for linalg module
 
éN)ÚarrayÚsingleÚdoubleÚcsingleÚcdoubleÚdotÚidentityÚmatmul)Úswapaxes)ÚmultiplyÚ
atleast_2dÚinfÚasarray)Úlinalg)Ú matrix_powerÚnormÚ matrix_rankÚ    multi_dotÚ LinAlgError)Ú_multi_dot_matrix_chain_order)
Úassert_Ú assert_equalÚ assert_raisesÚassert_array_equalÚassert_almost_equalÚassert_allcloseÚsuppress_warningsÚassert_raises_regexÚ HAS_LAPACK64ÚIS_WASMcCs"t|ƒt|tjƒrt|ƒntjkS©N)ÚtypeÚ
isinstanceÚnpÚndarray)ÚoutZin_©r&úUd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/linalg/tests/test_linalg.pyÚconsistent_subclasssÿr(éé cKs8t|ƒjjttfkr|}n|}t||fd|i|—ŽdS)NÚdecimal)rÚdtyper!rrÚold_assert_almost_equal)ÚaÚbÚsingle_decimalÚdouble_decimalÚkwr+r&r&r'r$srcCstttttttti|Sr )rrrr©r,r&r&r'Úget_real_dtype,sÿÿr4cCstttttttti|Sr )rrrrr3r&r&r'Úget_complex_dtype1sÿÿr5cCs|ttfkrdSdSdS)Ngñh㈵øä>g•dyáý¥=)rrr3r&r&r'Úget_rtol6s r6ÚsquareÚ    nonsquareÚ    hermitianÚ generalizedúsize-0Ústridedc@s*eZdZeƒfdd„Zdd„Zdd„ZdS)Ú
LinalgCasecCs.tt|tƒƒ||_||_||_t|ƒ|_dS)z¢
        A bundle of arguments to be passed to a test case, with an identifying
        name, the operands a and b, and a set of tags to filter the tests
        N)rr"ÚstrÚnamer.r/Ú    frozensetÚtags)Úselfr?r.r/rAr&r&r'Ú__init__Fs
zLinalgCase.__init__cCs||j|j|jddS)zN
        Run the function `do` on this test case, expanding arguments
        ©rAN)r.r/rA)rBÚdor&r&r'ÚcheckQszLinalgCase.checkcCsd|j›dS)Nz <LinalgCase: ú>)r?©rBr&r&r'Ú__repr__WszLinalgCase.__repr__N)Ú__name__Ú
__module__Ú __qualname__ÚsetrCrFrIr&r&r&r'r=Es r=cCs,|tkstdƒ‚|D]}|j|hB|_q|S)z^
    Add the given tag (a string) to each of the cases (a list of LinalgCase
    objects)
    z Invalid tag)Úall_tagsÚAssertionErrorrA)ÚtagZcasesÚcaser&r&r'Ú    apply_tag[srRéÒrçð?ç@ç@ç@r3rZdouble_2ç@ryð?@y@@y@@y@@y@ð?rZ    cdouble_2yð?@yð?Àyð?Àyð?ÀZ0x0©rr©rrDZ8x8éZ1x1éZnonarrayéééZ single_nsq_1Z single_nsq_2g@Z double_nsq_1Z double_nsq_2Z csingle_nsq_1yð?ð?y@@y@Ày@Ày@"@y@@Z csingle_nsq_2y@"Ày@Ày@ @Z cdouble_nsq_1Z cdouble_nsq_2Zcdouble_nsq_1_2yð?ð¿y@ÀZcdouble_nsq_2_2Z8x11é Z1x5éZ5x1Z0x4Z4x0ZhsingleZhdoubleZhcsingley@ÀZhcdoubleZhemptyZ    hnonarrayZ matrix_b_onlyZ hmatrix_1x1cCsg}tD]}t|jtjƒsqt |jd|jd|jg¡}|jdkrLd}nt |jd|jd|jg¡}t|jd|||j    dhBd}| 
|¡t |jgdd¡  d|jj ¡}|jdkrÆd}n$t |jgdd¡  d|jj ¡}t|jd    |||j    dhBd}| 
|¡q|S)
Nr]r^ér)Z_tile3r:rD©r^r]Z_tile213) ÚCASESr"r.r#r$rr/r=r?rAÚappendÚreshapeÚshape)Ú    new_casesrQr.r/Únew_caser&r&r'Ú_make_generalized_casesës*
 
 
ÿ
$
$
ÿ rjccsèt|tjƒs|dfVdSdg|j}d|d<|jdkr@d|d<|jdkrRd    |d
<tjt|ƒŽD]€}d d „t|j|ƒDƒ}td d „|Dƒƒ}tj    ||j
d}|  tj ¡  d¡||}||d<|  |j¡}tt ||k¡ƒ|dd dd „|Dƒ¡fV|jdkrF|jddkrFt|jƒ}d|d<tjjj||d}|dfV|jdkr|jddkrt|jƒ}d|d<tjjj||d}|dfV|jdkr`|jdd…dkr`t|jƒ}d|d<d|d<tjjj||d}|dfVq`dS)z<
    Generate cartesian product of strides for all axes
    ZnopN©r\)r\r^éüÿÿÿéÿÿÿÿr\éþÿÿÿr])r\rléýÿÿÿcSsg|]\}}t||ƒ‘qSr&)Úabs)Ú.0r.r/r&r&r'Ú
<listcomp>sz%_stride_comb_iter.<locals>.<listcomp>cSsg|]}tdd|ƒ‘qSr )Úslice)rqÚrepeatr&r&r'rrsr3lï>[=.Zstride_Ú_cSsg|] }d|‘qS)z%+dr&)rqÚjr&r&r'rr(sr)ÚstridesZ stride_xxx_0Zstride_xxx_0_x©r\r\Zstride_xxx_0_0)r"r#r$ÚndimÚ    itertoolsÚproductÚtupleÚziprgÚemptyr,ÚviewZuint32ÚfillÚ    __class__rÚallÚjoinÚlistrwÚlibZ stride_tricksZ
as_strided)ÚxZ
stride_setZrepeatsÚ    new_shapeZslicesÚxiÚsr&r&r'Ú_stride_comb_iter sF 
 
 
 
 
 
 
 
rŠc    Csng}tD]`}t|jƒD]P\}}t|jƒD]<\}}t|jd|d||||jdhBd}| |¡q(qq|S)Nrur<rD)rdrŠr.r/r=r?rAre)rhrQr.Za_labelr/Zb_labelrir&r&r'Ú_make_strided_cases=s
ÿr‹c@s"eZdZeZeƒeƒfdd„ZdS)ÚLinalgTestCasec Cs‚|jD]v}|j|@|krq|j|@r&qz| |j¡Wqtk
rz}z&d|›d}|t ¡7}t|ƒ|‚W5d}~XYqXqdS)zx
        Run func on each of the cases with all of the tags in require, and none
        of the tags in exclude
        zIn test case: z
 
N)Ú
TEST_CASESrArFrEÚ    ExceptionÚ    tracebackÚ
format_excrO)rBÚrequireÚexcluderQÚeÚmsgr&r&r'Ú check_casesQs
 
  zLinalgTestCase.check_casesN)rJrKrLrdrrMr•r&r&r&r'rŒNsrŒc@seZdZdd„Zdd„ZdS)ÚLinalgSquareTestCasecCs|jdhddhddS)Nr7r:r;©r‘r’©r•rHr&r&r'Ú test_sq_casesgsÿz"LinalgSquareTestCase.test_sq_casescCs|jddhdhddS)Nr7r;r:r—r˜rHr&r&r'Útest_empty_sq_casesks
ÿz(LinalgSquareTestCase.test_empty_sq_casesN)rJrKrLr™ršr&r&r&r'r–esr–c@seZdZdd„Zdd„ZdS)ÚLinalgNonsquareTestCasecCs|jdhddhddS)Nr8r:r;r—r˜rHr&r&r'Útest_nonsq_casesrsÿz(LinalgNonsquareTestCase.test_nonsq_casescCs|jddhdhddS)Nr8r;r:r—r˜rHr&r&r'Útest_empty_nonsq_casesvs
ÿz.LinalgNonsquareTestCase.test_empty_nonsq_casesN)rJrKrLrœrr&r&r&r'r›psr›c@seZdZdd„Zdd„ZdS)ÚHermitianTestCasecCs|jdhddhddS)Nr9r:r;r—r˜rHr&r&r'Útest_herm_cases}sÿz!HermitianTestCase.test_herm_casescCs|jddhdhddS)Nr9r;r:r—r˜rHr&r&r'Útest_empty_herm_casess
ÿz'HermitianTestCase.test_empty_herm_casesN)rJrKrLrŸr r&r&r&r'rž{sržc@s,eZdZejjdd„ƒZejjdd„ƒZdS)ÚLinalgGeneralizedSquareTestCasecCs|jddhdhddS)Nr:r7r;r—r˜rHr&r&r'Útest_generalized_sq_casesˆs
ÿz9LinalgGeneralizedSquareTestCase.test_generalized_sq_casescCs|jdddhddS)Nr:r7r;©r‘r˜rHr&r&r'Útest_generalized_empty_sq_casessz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_casesN)rJrKrLÚpytestÚmarkÚslowr¢r¤r&r&r&r'r¡†s
r¡c@s,eZdZejjdd„ƒZejjdd„ƒZdS)Ú"LinalgGeneralizedNonsquareTestCasecCs|jddhdhddS)Nr:r8r;r—r˜rHr&r&r'Útest_generalized_nonsq_cases”s
ÿz?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_casescCs|jdddhddS)Nr:r8r;r£r˜rHr&r&r'Ú"test_generalized_empty_nonsq_cases™szELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_casesN)rJrKrLr¥r¦r§r©rªr&r&r&r'r¨’s
r¨c@s,eZdZejjdd„ƒZejjdd„ƒZdS)ÚHermitianGeneralizedTestCasecCs|jddhdhddS)Nr:r9r;r—r˜rHr&r&r'Útest_generalized_herm_cases s
ÿz8HermitianGeneralizedTestCase.test_generalized_herm_casescCs|jdddhdhddS)Nr:r9r;Únoner—r˜rHr&r&r'Ú!test_generalized_empty_herm_cases¥s ÿz>HermitianGeneralizedTestCase.test_generalized_empty_herm_casesN)rJrKrLr¥r¦r§r¬r®r&r&r&r'r«žs
r«cCsÂt|ƒ}|jdkr´|j|jkr<|jdd…|jdd…}n(|j|jdkr\|jdd…}ntdƒ‚tj|t ||¡d}tjt    t
|jdd…ƒŽD]}t ||||ƒ||<q”|St ||ƒSdS)Nr^rmr\zNot implemented...r3rn) rryrgÚ
ValueErrorr#r~Z common_typerzr{ÚmapÚranger)r.r/r‡ÚrÚcr&r&r'Údot_generalized«s
 r´cCsLt|ƒ}|jdkr:tj|j|jd}t|jdƒ|d<|St|jdƒSdS)Nr^r3rn.r)rryr#r~rgr,r)r.r²r&r&r'Úidentity_like_generalized¾s 
rµc@seZdZdd„ZdS)Ú
SolveCasescCs.t ||¡}t|t||ƒƒtt||ƒƒdSr )rÚsolverr´rr()rBr.r/rAr†r&r&r'rEÊs z SolveCases.doN©rJrKrLrEr&r&r&r'r¶Èsr¶c@s:eZdZej deeee    g¡dd„ƒZ
dd„Z dd„Z dS)    Ú    TestSolver,cCs2tjddgddgg|d}tt ||¡j|ƒdS©Nr\çà?r3)r#rrrr·r,©rBr,r†r&r&r'Ú
test_typesÑszTestSolve.test_typesc    Cs.Gdd„dtjƒ}t d¡ ddd¡}t d¡ ddd¡ |¡}t ||¡dd…dd…dd…f}t |dd…dd…dd…f|dd…dd…dd…f¡}t||ƒtt    ||ƒƒt
tj tj|dd…dd…dd…f|ƒt
t tj||dd…dd…dd…fƒt d¡ ddd¡}t
t tj||ƒt
t tj|dd…|dd…ƒt d¡ dd¡ |¡}t ||¡dd…dd…f}t |dd…dd…dd…f|dd…dd…f¡}t||ƒtt    ||ƒƒt d¡ dd¡}t
t tj||ƒt
t tj|dd…|dd…ƒt
t tj|dd…dd…dd…f|ƒdS)    Nc@s eZdZdS)z,TestSolve.test_0_size.<locals>.ArraySubclassN©rJrKrLr&r&r&r'Ú ArraySubclass×sr¿r[r]r)r\r^r) r#r$Úarangerfrrr·rrr"rrr¯©rBr¿r.r/ÚexpectedÚresultr&r&r'Ú test_0_sizeÖs*"8
(& 2
 zTestSolve.test_0_sizecCsGdd„dtjƒ}t d¡ ddd¡}t d¡ ddd¡ |¡}t ||¡dd…dd…dd…f}t ||dd…dd…dd…f¡}t||ƒtt    ||ƒƒt ||¡dd…dd…dd…f}t |dd…dd…dd…f|dd…dd…dd…f¡}t||ƒtt    ||ƒƒdS)    Nc@s eZdZdS)z.TestSolve.test_0_size_k.<locals>.ArraySubclassNr¾r&r&r&r'r¿ùsr¿r_r\r]r)r^r)
r#r$rÀrfrrr·rrr"rÁr&r&r'Ú test_0_size_k÷s""
"8
zTestSolve.test_0_size_kN) rJrKrLr¥r¦Ú parametrizerrrrr½rÄrÅr&r&r&r'r¹Ðs
!r¹c@seZdZdd„ZdS)ÚInvCasescCs0t |¡}tt||ƒt|ƒƒtt||ƒƒdSr )rÚinvrr´rµrr()rBr.r/rAZa_invr&r&r'rE s
 
 
ÿz InvCases.doNr¸r&r&r&r'rÇ
srÇc@s2eZdZej deeee    g¡dd„ƒZ
dd„Z dS)ÚTestInvr,cCs0tjddgddgg|d}tt |¡j|ƒdSrº)r#rrrrÈr,r¼r&r&r'r½szTestInv.test_typescCs²Gdd„dtjƒ}tjdtjd |¡}t |¡}t|jj    tj
kƒt |j |j ƒtt ||ƒƒtjdtjd |¡}t |¡}t|jj    tjkƒt |j |j ƒtt ||ƒƒdS)Nc@s eZdZdS)z*TestInv.test_0_size.<locals>.ArraySubclassNr¾r&r&r&r'r¿sr¿©rr\r\r3rY)r#r$ÚzerosÚint_rrrÈrr,r!Úfloat64rrgr"Ú    complex64©rBr¿r.Úresr&r&r'rÄs
 
zTestInv.test_0_sizeN© rJrKrLr¥r¦rÆrrrrr½rÄr&r&r&r'rÉs
rÉc@seZdZdd„ZdS)Ú EigvalsCasescCs&t |¡}t |¡\}}t||ƒdSr )rÚeigvalsÚeigr)rBr.r/rAÚevÚevaluesÚevectorsr&r&r'rE,s
zEigvalsCases.doNr¸r&r&r&r'rÒ*srÒc@s2eZdZej deeee    g¡dd„ƒZ
dd„Z dS)Ú TestEigvalsr,cCs`tjddgddgg|d}tt |¡j|ƒtjddgddgg|d}tt |¡jt|ƒƒdS©Nr\r»r3rm)r#rrrrÓr,r5r¼r&r&r'r½3szTestEigvals.test_typescCs²Gdd„dtjƒ}tjdtjd |¡}t |¡}t|jj    tj
kƒt d|j ƒtt |tjƒƒtjdtjd |¡}t |¡}t|jj    tjkƒt d|j ƒtt |tjƒƒdS)Nc@s eZdZdS)z.TestEigvals.test_0_size.<locals>.ArraySubclassNr¾r&r&r&r'r¿<sr¿rÊr3©rr\rYrZ)r#r$rËrÌrrrÓrr,r!rÍrrgr"rÎrÏr&r&r'rÄ:s
 
 zTestEigvals.test_0_sizeNrÑr&r&r&r'rØ2s
rØc@seZdZdd„ZdS)ÚEigCasescCsXt |¡\}}tt||ƒt |¡t |¡dddd…ft|jƒdtt    ||ƒƒdS)N.©Úrtol)
rrÔrr´r#rr6r,rr()rBr.r/rArÖr×r&r&r'rEOs 
 þz EigCases.doNr¸r&r&r&r'rÛMsrÛc@s2eZdZej deeee    g¡dd„ƒZ
dd„Z dS)ÚTestEigr,cCstjddgddgg|d}tj |¡\}}t|j|ƒt|j|ƒtjddgddgg|d}tj |¡\}}t|jt|ƒƒt|jt|ƒƒdSrÙ)r#rrrÔrr,r5©rBr,r†ÚwÚvr&r&r'r½Xs  zTestEig.test_typescCsúGdd„dtjƒ}tjdtjd |¡}t |¡\}}t|jj    tj
kƒt|jj    tj
kƒt |j |j ƒt d|j ƒtt |tjƒƒtjdtjd |¡}t |¡\}}t|jj    tjkƒt|jj    tjkƒt |j |j ƒt d|j ƒtt |tjƒƒdS)Nc@s eZdZdS)z*TestEig.test_0_size.<locals>.ArraySubclassNr¾r&r&r&r'r¿fsr¿rÊr3rÚrYrZ)r#r$rËrÌrrrÔrr,r!rÍrrgr"rΩrBr¿r.rÐZres_vr&r&r'rÄds  zTestEig.test_0_sizeNrÑr&r&r&r'rÞWs
rÞc@s.eZdZdZej deee    e
g¡dd„ƒZ dS)Ú SVDBaseTestsFr,cCsxtjddgddgg|d}t |¡\}}}t|j|ƒt|jt|ƒƒt|j|ƒtj|d|jd}t|jt|ƒƒdS)Nr\r»r3F©Ú
compute_uvr9)r#rrÚsvdrr,r4r9)rBr,r†Úur‰Úvhr&r&r'r½~s  zSVDBaseTests.test_typesN) rJrKrLr9r¥r¦rÆrrrrr½r&r&r&r'rã{srãc@seZdZdd„ZdS)ÚSVDCasesc    Cspt |d¡\}}}t|tt |¡t |¡dddd…ft |¡ƒt|jƒdtt    ||ƒƒtt    ||ƒƒdS)NF.rÜ)
rrærr´r#rr6r,rr()rBr.r/rArçr‰Úvtr&r&r'rE‹s&ÿþz SVDCases.doNr¸r&r&r&r'ré‰sréc@seZdZdd„ZdS)ÚTestSVDcCs˜t d¡}tj|d|jd\}}}t|jdƒt|jdƒt|t d¡ƒt d¡}tj|d|jd\}}}t|jdƒt|jdƒt|t d¡ƒdS)    z6 Empty input should put an identity matrix in u or vh )r_rTrä©r_r_rYr_)rr_N)r#r~rrær9rrgÚeye)rBr†rçr‰rèr&r&r'Útest_empty_identity•s
 
  zTestSVD.test_empty_identityN)rJrKrLrîr&r&r&r'rë”srëc@seZdZdd„ZdS)ÚSVDHermitianCasesc    Csòtj|ddd\}}}t|tt |¡t |¡dddd…ft |¡ƒt|jƒddd„}tt     |||ƒ¡t 
t  |j d¡|j ¡ƒtt     |||ƒ¡t 
t  |j d¡|j ¡ƒt t |¡dddd…f|ƒtt||ƒƒtt||ƒƒdS)    NFT©r9.rÜcSs<tt|jƒƒ}|d|d|d<|d<t tj||d¡S)Nrnrm©Úaxes)r„r±ryr#ÚconjÚ    transpose)Úmatròr&r&r'r9«sz'SVDHermitianCases.do.<locals>.hermitianrm)rrærr´r#rr6r,rr    Ú broadcast_torírgrÚsortrr()rBr.r/rArçr‰rêr9r&r&r'rE¦s&ÿþ,,zSVDHermitianCases.doNr¸r&r&r&r'rï¤srïc@seZdZdZdS)ÚTestSVDHermitianTN)rJrKrLr9r&r&r&r'rø·srøc@seZdZdd„ZdS)Ú    CondCasescCsêt|ƒ}d|kr"tttj|ƒdStj|dd}tt |¡|d|ddddtt |d    ¡|d|ddddtt |d
¡|d|ddddtj |¡}tt |d ¡t    |ƒ 
d
¡  d ¡t    |ƒ 
d
¡  d ¡dddtt |d ¡t    |ƒ 
d
¡  d ¡t    |ƒ 
d
¡  d ¡dddtt |tj ¡t    |ƒ 
d ¡  d ¡t    |ƒ 
d ¡  d ¡dddtt |tj ¡t    |ƒ 
d ¡  d ¡t    |ƒ 
d ¡  d ¡dddtt |d ¡t t    |ƒd     
d ¡ 
d ¡t    |ƒd     
d ¡ 
d ¡¡ddddS)Nr;F)rå).r).rmrar`©r0r1r]rnr\rmÚfro)rrrrÚcondrærr#rÈrpÚsumÚmaxÚminr Úsqrt)rBr.r/rAr³r‰Zcinvr&r&r'rE¾spþ
þ
þ 
&ý
&ý &ý&ý
ÿüz CondCases.doNr¸r&r&r&r'rù»srùc@s>eZdZdd„Zdd„Zejjddddd    d
„ƒZd d „Z    d S)ÚTestCondcCs†tdddgdddgdddggƒ}tt |t¡dƒtt |t ¡dƒtt |d¡dƒtt |d¡d    ƒtt |d
¡t d ¡ƒdS) NrTrr\gÀrVr_gUUUUUUå?rmr»rûgUUUUU6@)rrrrür r#r©rBÚAr&r&r'Útest_basic_nonsvdês  zTestCond.test_basic_nonsvdcCsxt d¡t d¡g}ddddg}ddg}t ||¡D]\}}tt ||¡dkƒq4t ||¡D]\}}t ||¡q^dS)N©r]r]r\r]rûrmrnç4&õk C)r#rËÚonesrzr{rrrü)rBZAsÚp_posZp_negrÚpr&r&r'Ú test_singularós zTestCond.test_singularTFz/Platform/LAPACK-dependent failure, see gh-18914)ÚrunÚreasoncCsöddddddg}ddddg}t d¡}tj|d<|D].}t ||¡}tt|tjƒƒtt |¡ƒq4t d¡}tj|d    <|D]t}t ||¡}tt |d¡ƒ||krÈt|d
d kƒt|dd kƒq|tt |d
¡ ƒtt |d¡ ƒq|dS) Nr\rmr]rnrûrrÚ)r^r]r])r\rr\rr)    r#rÚnanrrürr"Zfloat_Úisnan)rBZpsrrr    r³r&r&r'Útest_nans$ 
 
 
 
 zTestCond.test_nancCsŒtj d¡tj dddd¡}d|d<d|d<dD]T}t ||¡}t|dtjƒt|dtjƒtt     |d¡ƒtt     |d¡ƒq2dS)    NrSr]rrYrx)Nr\r]rûrmrnrÚ©r\r)
r#ÚrandomÚseedÚrandrrürr rÚisfinite)rBrr    r³r&r&r'Útest_stacked_singulars  zTestCond.test_stacked_singularN)
rJrKrLrr
r¥r¦Úxfailrrr&r&r&r'rés    
ÿ
rc@seZdZdd„ZdS)Ú    PinvCasescCs<t |¡}t}t||||ƒ|ƒ|dddtt||ƒƒdS)Nrar`rú©rÚpinvr´rrr(©rBr.r/rAZa_ginvrr&r&r'rE1s
z PinvCases.doNr¸r&r&r&r'r,src@s eZdZdS)ÚTestPinvNr¾r&r&r&r'r9src@seZdZdd„ZdS)ÚPinvHermitianCasescCs@tj|dd}t}t||||ƒ|ƒ|dddtt||ƒƒdS)NTrðrar`rúrrr&r&r'rE?szPinvHermitianCases.doNr¸r&r&r&r'r=src@s eZdZdS)ÚTestPinvHermitianNr¾r&r&r&r'rGsrc@seZdZdd„ZdS)ÚDetCasesc
CsÌt |¡}t |¡\}}t|ƒjjttfkr<t|ƒ t¡}nt|ƒ t    ¡}t 
|¡}t |t j |ddƒt |t |¡t j |ddƒt |¡}t |¡}|dk}    t t ||    ¡dƒt||    t ƒdS)Nrm©Úaxisrr\)rÚdetÚslogdetrr,r!rrÚastyperrÓrr Úreducer#ÚexpZ
atleast_1drprr )
rBr.r/rAÚdr‰ZldÚadrÕÚmr&r&r'rEMs
 
 
 
z DetCases.doNr¸r&r&r&r'rKsrc@s:eZdZdd„Zej deee    e
g¡dd„ƒZ dd„Z dS)    ÚTestDetcCstt dgg¡dƒttt dgg¡ƒtƒtt dgg¡dƒttt dgg¡ƒtƒtt dgg¡dt fƒttt dgg¡dƒtƒttt dgg¡dƒtƒtt dgg¡dt fƒttt dgg¡dƒtƒttt dgg¡dƒtƒdS)Nçyrr\)rrr!r!rrr"r rHr&r&r'Ú    test_zero`szTestDet.test_zeror,cCs^tjddgddgg|d}ttj |¡j|ƒtj |¡\}}t|jt|ƒƒt|j|ƒdSrº)r#rrrr!r,r"r4)rBr,r†Úphr‰r&r&r'r½ms
zTestDet.test_typescCsðtjdtjd}t |¡}t|dƒt|jjtjkƒt     |¡}t|dƒt|djjtjkƒt|djjtj
kƒtjdtj d}t |¡}t|dƒt|jjtj kƒt     |¡}t|dƒt|djjtj kƒt|djjtj kƒdS)NrYr3rTrrr\) r#rËrÎrr!rrr,r!r"Úfloat32rÍ)rBr.rÐr&r&r'rÄus 
 
 
 
 
 
 
 
zTestDet.test_0_sizeN) rJrKrLr+r¥r¦rÆrrrrr½rÄr&r&r&r'r)_s 
r)c@seZdZdd„ZdS)Ú
LstsqCasescCsLt |¡}|j\}}t |d¡\}}}    tj||dd\}
} } } |dkrVt|
dk ¡ƒ||krzt|t    ||
ƒƒt
| |ƒn
t
| |ƒt| |   |¡ƒ| |krú||krút t t     ||
¡|ƒ¡dj dd}t |¡}t |¡jdkrød|_t
| j|jƒnt g¡ t|
ƒ¡}t| |ƒtt | jtj¡ƒtt|
|ƒƒtt| |ƒƒdS)    NFrm©Zrcondrr]rr\rk)r#rrgrræÚlstsqrr‚rrrZ__array_wrap__rprýryrrr!Ú
issubdtyper,Úfloatingr()rBr.r/rAÚarrr(Únrçr‰rêr†Ú    residualsÚrankÚsvZ expect_residsr&r&r'rE‹s2
 
 
ÿÿ
 
z LstsqCases.doNr¸r&r&r&r'r.‰sr.c
@sFeZdZdd„Zej dddgdddd    d
d d g¡d d„ƒZdd„ZdS)Ú    TestLstsqc     Csôt ddddddgddddddgddddddgddddddgg¡j}t ddddddg¡}tƒŠ}| td¡}t ||¡\}}}}t|d    kƒtj||d
d \}}}}t|d    kƒtj||dd \}}}}t|d kƒtt    |ƒdkƒW5QRXdS) Nr*rTrUrWrVr\rz`rcond` parameter will changer_rmr/r^)
r#rÚTrÚrecordÚ FutureWarningrr0rÚlen)    rBr.r/Úsupràr†r5r6r‰r&r&r'Útest_future_rcond¨sý    zTestLstsq.test_future_rcondr(r4Ún_rhs)r_r]r])rr_r\)rr_r])r_rr\)r_rr])r_r]r)rrrc CsÜt ||¡ ||¡}t ||f¡}tj||dd\}}}}    |dkrTt|dk ¡ƒt|j    ||fƒt|j    ||krx|fndƒ||kr´|dkr´|t 
||¡}
t ||
|
j ddƒt|t ||ƒƒt|    j    t ||ƒfƒdS)Nr/rrZrnr)r#rÀrfrrr0rr‚rrgrrrýrÿ) rBr(r4r?r.r/r†r5r6r‰r²r&r&r'Útest_empty_a_bºs
zTestLstsq.test_empty_a_bc    Csjt ddddg¡}t ddddd    g¡}t |t t|ƒ¡g¡j}ttd
ƒtj    ||dd W5QRXdS) Nrr\r]r^rmgš™™™™™É?gÍÌÌÌÌÌì?gÍÌÌÌÌÌ@gffffff
@zIncompatible dimensionsr/)
r#rZvstackrr<r9rrrr0)rBr†Úyrr&r&r'Útest_incompatible_dimsÒs
 z TestLstsq.test_incompatible_dimsN)    rJrKrLr>r¥r¦rÆr@rBr&r&r&r'r8§sù    
r8ÚdtcCsg|]}t |¡‘qSr&)r#r,)rqr³r&r&r'rrÛsrrz?bBhHiIqQefdgFDGOc@sèeZdZe d¡ZeddddgZeddddgZeddddgZeeeegZ    e
ddgddggƒZ e  egggd¡Z ee d¡e d¡e d¡gZd    d
„Zd d „Zd d„Zdd„Zdd„Zdd„Zdd„Zejjedddd„ƒZdS)ÚTestMatrixPowerr_r^rr\r]r“ÚgÚGcCs˜|j |¡}tt|dddddƒ|jƒtt|dddddƒ|jƒtt|dddddƒ|jƒtt|dddddƒ|jƒdS)Nr]édié rr\r^)Úrshft_1r#rrÚrshft_0Úrshft_2Úrshft_3)rBrCZrshftr&r&r'Útest_large_powerès" ÿÿÿÿz TestMatrixPower.test_large_powercCs>dd„}|jD]*}|| |¡ƒ|tkr||j |¡ƒqdS)NcSs*t|dƒ}t|t|ƒƒt|j|jƒdS)Nr)rrrµr,)ÚMÚmzr&r&r'Útzôs
z.TestMatrixPower.test_power_is_zero.<locals>.tz©Ú    rshft_allr#ÚobjectÚstacked©rBrCrPrõr&r&r'Útest_power_is_zeroós
 
z"TestMatrixPower.test_power_is_zerocCs>dd„}|jD]*}|| |¡ƒ|tkr||j |¡ƒqdS)NcSs&t|dƒ}t||ƒt|j|jƒdS)Nr\)rrr,)rõrOr&r&r'rPÿs
 
z-TestMatrixPower.test_power_is_one.<locals>.tzrQrUr&r&r'Útest_power_is_oneþs
 
z!TestMatrixPower.test_power_is_onecCs>dd„}|jD]*}|| |¡ƒ|tkr||j |¡ƒqdS)NcSs>t|dƒ}|jtkrtnt}t||||ƒƒt|j|jƒdS)Nr])rr,rSr    rr)rõrOÚmmulr&r&r'rP
s
z-TestMatrixPower.test_power_is_two.<locals>.tzrQrUr&r&r'Útest_power_is_two    s
 
z!TestMatrixPower.test_power_is_twocCs0dd„}|jD]}||jkr|| |¡ƒqdS)NcSs4t|dƒ}|jtkrtnt}t|||ƒt|ƒƒdS©Nrm)rr,rSr    rrrµ)rõZinvmatrXr&r&r'rPs 
ÿz3TestMatrixPower.test_power_is_minus_one.<locals>.tz)rRÚdtnoinvr#rUr&r&r'Útest_power_is_minus_ones
 
z'TestMatrixPower.test_power_is_minus_onecCs.|j |¡}ttt|dƒttt|dgƒdS)Ngø?r\)rJr#rÚ    TypeErrorr©rBrCrõr&r&r'Útest_exceptions_bad_power s z)TestMatrixPower.test_exceptions_bad_powercCsPtttt dg|¡dƒtttt dgdgg|¡dƒtttt d|¡dƒdS)Nr\r])r_r^r])rrrr#rr)rBrCr&r&r'Útest_exceptions_non_square%sz*TestMatrixPower.test_exceptions_non_squareúfp errors don't work in wasm©r cCs,||jkrdS|j |¡}ttt|dƒdSrZ)r[Únoninvr#rrrr^r&r&r'Útest_exceptions_not_invertible*s
 z.TestMatrixPower.test_exceptions_not_invertibleN)rJrKrLr#rírJrIrKrLrRrrcÚblockrTrSr,r[rMrVrWrYr\r_r`r¥r¦Úskipifrrdr&r&r&r'rDÛs"
      rDc@seZdZdd„ZdS)ÚTestEigvalshCasescCs^t |d¡}t |¡\}}|jddt||t|jƒdt |d¡}t||t|jƒddS)NÚLrmrrÜÚU)rÚeigvalshrÔr÷rr6r,)rBr.r/rArÕrÖr×Úev2r&r&r'rE4s    zTestEigvalshCases.doNr¸r&r&r&r'rg2srgc@sBeZdZej deeee    g¡dd„ƒZ
dd„Z dd„Z dd    „Z d
S) Ú TestEigvalshr,cCs:tjddgddgg|d}tj |¡}t|jt|ƒƒdSrº)r#rrrjrr,r4)rBr,r†ràr&r&r'r½As zTestEigvalsh.test_typescCsXtjddgddggtjd}tttjj|ddtttjj|dƒtttjj|dƒdS©Nr\r»r3Zlrong©ZUPLOÚlowerÚupper)r#rr-rr¯rrj©rBr†r&r&r'Ú test_invalidGszTestEigvalsh.test_invalidcCsìtjddgddggtjd}tjddgddggtjd}tjddgtjd}ttjƒ}tj |¡}t|||dtjj|dd}t|||dtjj|dd}t|||dtjj|d    d}t|||dtjj|d
d}t|||ddS© Nrr\r3rmrÜrhrnÚlrirç)r#rrr6rrjr)rBÚKloÚKupÚtgtrÝràr&r&r'Ú    test_UPLOMs
 zTestEigvalsh.test_UPLOcCs²Gdd„dtjƒ}tjdtjd |¡}t |¡}t|jj    tj
kƒt d|j ƒtt |tjƒƒtjdtjd |¡}t |¡}t|jj    tjkƒt d|j ƒtt |tjƒƒdS)Nc@s eZdZdS)z/TestEigvalsh.test_0_size.<locals>.ArraySubclassNr¾r&r&r&r'r¿esr¿rÊr3rÚrYrZ)r#r$rËrÌrrrjrr,r!rÍrrgr"rÎr-rÏr&r&r'rÄcs
 
 zTestEigvalsh.test_0_sizeN©rJrKrLr¥r¦rÆrrrrr½rrrxrÄr&r&r&r'rl@s
 
rlc@seZdZdd„ZdS)Ú TestEighCasesc
CsÆt |¡\}}t |¡\}}|jddt||ƒtt||ƒt |¡dddd…ft |¡t    |j
ƒdt |d¡\}}    t||ƒtt||    ƒt |¡dddd…ft |    ¡t    |j
ƒt |ƒddS)Nrmr.rÜri)rÝÚerr_msg) rÚeighrÔr÷rrr´r#rr6r,Úrepr)
rBr.r/rArÕZevcrÖr×rkZevc2r&r&r'rExs 
 
 þ
 
 þzTestEighCases.doNr¸r&r&r&r'rzvsrzc@sBeZdZej deeee    g¡dd„ƒZ
dd„Z dd„Z dd    „Z d
S) ÚTestEighr,cCsJtjddgddgg|d}tj |¡\}}t|jt|ƒƒt|j|ƒdSrº)r#rrr|rr,r4rßr&r&r'r½szTestEigh.test_typescCsXtjddgddggtjd}tttjj|ddtttjj|dƒtttjj|dƒdSrm)r#rr-rr¯rr|rqr&r&r'rr”szTestEigh.test_invalidcCstjddgddggtjd}tjddgddggtjd}tjddgtjd}ttjƒ}tj |¡\}}t|||dtjj|dd\}}t|||dtjj|dd\}}t|||dtjj|d    d\}}t|||dtjj|d
d\}}t|||ddSrs)r#rrr6rr|r)rBrurvrwrÝràrár&r&r'rxšs
zTestEigh.test_UPLOcCsúGdd„dtjƒ}tjdtjd |¡}t |¡\}}t|jj    tj
kƒt|jj    tj
kƒt |j |j ƒt d|j ƒtt |tjƒƒtjdtjd |¡}t |¡\}}t|jj    tjkƒt|jj    tjkƒt |j |j ƒt d|j ƒtt |tjƒƒdS)Nc@s eZdZdS)z+TestEigh.test_0_size.<locals>.ArraySubclassNr¾r&r&r&r'r¿²sr¿rÊr3rÚrYrZ)r#r$rËrÌrrr|rr,r!rÍrrgr"rÎr-râr&r&r'rİs  zTestEigh.test_0_sizeNryr&r&r&r'r~Œs
 
r~c@s eZdZdZdZedd„ƒZdS)Ú _TestNormBaseNcCs:t|jjtjƒr"t|j|jjƒntt|jjtjƒƒdSr )    Ú
issubclassr,r!r#ZinexactrÚrealrr2)r†rÐr&r&r'Ú check_dtypeËsz_TestNormBase.check_dtype)rJrKrLrCÚdecÚ staticmethodr‚r&r&r&r'rÇsrc@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) Ú_TestNormGeneralcCsFttgƒdƒtttg|jdƒdƒttttg|jdƒƒdƒdS)Nr*r3)rrrrCr rHr&r&r'Ú
test_emptyÖsz_TestNormGeneral.test_emptyc    
Csrt dddg¡}tjd}tjd}||}|D]:}| |¡}t|tj ƒ}| ||¡t|dƒtƒ2}|     t
d¡t|dƒ}| ||¡t|dƒW5QRXt|dƒ}| ||¡t|dƒt|dƒ}| ||¡t|d    ƒt|dƒ}| ||¡t||j   d    ¡|j   d
¡ƒt|d ƒ}| ||¡t||j   d    ¡|j   d ¡ƒt|tjƒ}| ||¡t|d ƒq0dS)Nr\rÚ
AllIntegerZAllFloatr*údivide by zero encounteredrmr]rUr»r_gÐ?rT) r#rÚ    typecodesr#rr r‚rrÚfilterÚRuntimeWarningr,r!©    rBr.Z exact_typesZ inexact_typesZ    all_typesZ    each_typeÚatZanr=r&r&r'Útest_vector_return_typeÛs:
 
 
 
 
 
 
 
 
 
 
 
   z(_TestNormGeneral.test_vector_return_typecs‚ddddg}ddddg}ddddg}‡fd    d
„}|||fD] }||ƒq:t|ˆjd t|ˆjd t|ˆjd fD] }||ƒqpdS) Nr\r]r^r_rmrnrorlcsÔtjjt|ƒdˆjdtjjt|tƒdˆjdtjjt|t ƒdˆjdtjjt|dƒdˆjdtjjt|dƒdˆjdtjjt|d    ƒdˆjdtjjt|d
ƒd ˆjdtjjt|d ƒd ˆjddS)Ng¥6Ò­è@©r+rWrTr\ç$@rmg¸…ëQ¸Þ?r]rngÊsÔcÙÑê?rr_)r#Útestingrrrƒr )rárHr&r'Ú_test    s0ÿÿÿÿÿÿÿÿz+_TestNormGeneral.test_vector.<locals>._testr3)rrC)rBr.r/r³r’rár&rHr'Ú test_vectors    
 ÿz_TestNormGeneral.test_vectorc        s¼tdddgdddgg|jd‰ddd    dddtjtj fD]h‰‡‡fd
d „tˆjdƒDƒ}ttˆˆd    d |ƒ‡‡fd d „tˆjd    ƒDƒ}ttˆˆdd |ƒq8tjdd|jd     ddd¡‰ˆj
}dddddtjtj dfD]؉t   t| |ƒd¡D]¾}|\}}|d    kr||7}|d    kr&||7}||krDt ttˆˆ|d qötˆˆ|d }|||‰||krЇ‡‡fdd „tˆjˆƒDƒ}n ‡‡‡fdd „tˆjˆƒDƒ}t||ƒqöqÞdS)Nr\r]r^r_rar)r3rmrcs$g|]}tˆdd…|fˆd‘qS©N©Úord©r©rqÚk©rÚorderr&r'rr(sz._TestNormGeneral.test_axis.<locals>.<listcomp>©r–r cs$g|]}tˆ|dd…fˆd‘qSr”r—r˜ršr&r'rr*sérnrûcs*g|]"}tˆdd…j|ˆdˆd‘qS©Nrr•)rÚtaker˜©ÚBÚk_indexr›r&r'rr@sÿcs,g|]$}tˆdd…j|ˆdjˆd‘qSrž)rrŸr9r˜r r&r'rrCsÿ)rrCr#ÚInfr±rgrrrÀrfryrzÚ combinationsrr¯)    rBZ    expected0Z    expected1Zndr Zrow_axisZcol_axisr4rÂr&)rr¡r¢r›r'Ú    test_axis"s6
 
 
 
 ÿ ÿz_TestNormGeneral.test_axisc    
Csætjdd|jd ddd¡}d}d}t|ddd    }t|ddd
d }tt |¡|| dd¡d d }t|j    |k| |j    |dd¡ƒddddddtj
tj
fD]†}t |j ƒD]v}t|||d    }t|||d
d }tt |¡|| ||¡d t |j    ƒ}d||<t|ƒ}t|j    |k| |j    |||¡ƒq¨qšdddddtj
tj
ddf    D]¢}t t |j ƒd¡D]ˆ}t|||d    }t|||d
d }tt |¡|| ||¡d t |j    ƒ}d||d<d||d<t|ƒ}t|j    |k| |j    |||¡ƒqTq>dS)Nr\rr3r]r^r_zorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}rœT)r–r Zkeepdims)r{)r\r\r\rmrrnrûÚnuc)r#rÀrCrfrrZsqueezeÚformatrrgr£r±ryr„r|rzÚ permutations)    rBrZ allclose_errZ    shape_errrÂÚfoundZexpected_shaper›r™r&r&r'Ú test_keepdimsGsN 
ÿ
ÿ 
ÿ
 
ÿ  
ÿ
 
ÿz_TestNormGeneral.test_keepdimsN)rJrKrLr†rŽr“r¥rªr&r&r&r'r…Ôs
)%r…c@s:eZdZejZdd„Zdd„Zdd„Zdd„Zd    d
„Z    d S) Ú _TestNorm2DcCs tt|jgg|jdƒdƒdS)Nr3r*)rrrrCrHr&r&r'Útest_matrix_emptywsz_TestNorm2D.test_matrix_emptyc    
Csv| dddgdddgg¡}tjd}d}||}|D]:}| |¡}t|tj ƒ}| ||¡t|dƒtƒ2}|     t
d¡t|dƒ}| ||¡t|dƒW5QRXt|dƒ}| ||¡t|dƒt|d    ƒ}| ||¡t|d
ƒt|d ƒ}| ||¡t|dƒt|tjƒ}| ||¡t|dƒt|d ƒ}| ||¡t|dƒt|d ƒ}| ||¡tj j|dddq4dS)Nr\rr‡ZfdFDrUrˆrmrTr]gªLXèz¶û?rnrûr¦gU&,t=Û@r)r) rr#r‰r#rr r‚rrrŠr‹r‘rŒr&r&r'Útest_matrix_return_typezs@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 z#_TestNorm2D.test_matrix_return_typecCsÚ|jddgddgg|jd}tt|ƒdƒtt|dƒdƒtt|dƒd    ƒtt|tƒd
ƒtt|t ƒd ƒtt|dƒd    ƒtt|d ƒd ƒtt|dƒdƒtt|dƒdƒttt|dƒttt|dƒttt|dƒdS)Nr\r^rarbr3g…¹ŽT"@rûr¦rg(@rWrmrXr]g„öW³?"@rngї€Ê„ì?Znofroror)rrCrrr rr¯rr&r&r'Útest_matrix_2x2­sz_TestNorm2D.test_matrix_2x2cCsÀd|jdddgdddgdddgg|jd}tt|ƒd    ƒtt|d
ƒd    ƒtt|d ƒd ƒtt|tƒd ƒtt|t ƒdƒtt|dƒdƒtt|dƒdƒtt|dƒdƒtt|dƒdƒdS)Ngš™™™™™¹?r\r]r^r)rrar3grj=Q0î?rûr¦gþB+pcõ?gš™™™™™ñ?g333333ã?rTrmgš™™™™™Ù?gû&Þê.dì?rngܸՠˆçÈ?)rrCrrr rr&r&r'Útest_matrix_3x3½s&ÿz_TestNorm2D.test_matrix_3x3cCs
|jdddgdddgg|jd}tjdd|jd ddd¡}ttt|d    d
ƒttt|d d
ƒtttddgd    dƒtttddgd dƒtttddgd dƒd D]4}ttt||dƒttt||dƒttt||dƒqœttjt|ddƒttjt|ddƒttt|ddƒdS)Nr\r]r^r_rar)r3rrûrr¦Útest©rr^rÚ)r\r]©r]r^)rr\r])    rrCr#rÀrfrr¯rZ    AxisError)rBrr¡r›r&r&r'Ú test_bad_argsÎs z_TestNorm2D.test_bad_argsN)
rJrKrLr#rr¬r­r®r¯r³r&r&r&r'r«rs 3r«c@s eZdZdS)Ú    _TestNormNr¾r&r&r&r'r´êsr´c@s$eZdZdd„Zdd„Zdd„ZdS)ÚTestNorm_NonSystematiccCs*tjdtjd}tt|ddddddS)Né
r3r^r•gÍÌÌÌÌL)@r]r)r#rÀZ
longdoubler-rrqr&r&r'Útest_longdouble_normðsz+TestNorm_NonSystematic.test_longdouble_normcCs,tjdgtjd}tt|ddddddS)Ni€r3r^r•lrar)r#rÚint32r-rrqr&r&r'Ú test_intminösz"TestNorm_NonSystematic.test_intmincCsŽtjdtjd}d|d<d|d<d}ttjj|dd    |d
d | tj¡}ttjj|dd    |d d | tj¡}ttjj|dd    |d d dS)N©r]r3y@@ryÀ@r\g¨ËþÿV;'@r^r•r¶ré    ra)    r#r~Z clongdoubler-rrr#Ú
complex128rÎ)rBr&rÐr&r&r'Útest_complex_high_ordüs  z,TestNorm_NonSystematic.test_complex_high_ordN)rJrKrLr·r¹r½r&r&r&r'rµîsrµc@seZdZejZdZdS)Ú_TestNormDoubleBaser*N)rJrKrLr#rrCrƒr&r&r&r'r¾
sr¾c@seZdZejZdZdS)Ú_TestNormSingleBaser)N)rJrKrLr#r-rCrƒr&r&r&r'r¿sr¿c@seZdZejZdZdS)Ú_TestNormInt64Baser*N)rJrKrLr#Úint64rCrƒr&r&r&r'rÀsrÀc@s eZdZdS)ÚTestNormDoubleNr¾r&r&r&r'rÂsrÂc@s eZdZdS)ÚTestNormSingleNr¾r&r&r&r'rÃsrÃc@s eZdZdS)Ú TestNormInt64Nr¾r&r&r&r'rÄ!srÄc@seZdZdd„Zdd„ZdS)ÚTestMatrixRankcCsÊtdtt d¡ƒƒt d¡}d|d<tt|ƒdƒttt d¡ƒdƒttddddgƒdƒttt d¡ƒdƒttdgƒdƒt |t d¡t d¡g¡}tt|ƒt dddg¡ƒttdƒdƒdS)    Nr_r*©rmrmr^rìrr\)r_)rrr#rírËr)rBÚIÚmsr&r&r'Útest_matrix_rank's
zTestMatrixRank.test_matrix_rankcCs tdtt d¡ddƒtdtt d¡ddƒtdtt d¡ddƒt d¡}d|d<td    t|ddƒd
|d<tdt|dd d ƒtd    t|dd d ƒdS)Nr_Trðr\rìrr*rÆr^g:Œ0âŽyE>g¾Ü|"•BE>)r9Ztolgµ;䡈°E>)rrr#rírrË)rBrÇr&r&r'Útest_symmetric_rank;s
z"TestMatrixRank.test_symmetric_rankN)rJrKrLrÉrÊr&r&r&r'rÅ%srÅcCsžtj d¡}tdƒD]„}|jdd}|dd…df|dd…df|dd…df<tt|ƒdƒ|dd…d    f|dd…d
f|dd…d f<tt|ƒd ƒqdS) NiŠ3rG)é(r¶©Úsizer\r]rr»r_rar^r[)r#rZ RandomStater±Únormalrr)ÚrngÚiÚXr&r&r'Útest_reduced_rankIs   ,,rÒc    @s¤eZdZejZdd„Zej ddgdddg¡dd    „ƒZ    d
d „Z
d d „Z dd„Z ej ddddddg¡ej ddddg¡ej dej ejejejg¡dd„ƒƒƒZdS)ÚTestQRc Cs®t|ƒ}|j}|j\}}t||ƒ}tj|dd\}}t|j|kƒt|j|kƒtt||ƒƒtt||ƒƒt|j||fkƒt|j||fkƒtt    ||ƒ|ƒtt    |j
  ¡|ƒt   |¡ƒtt  |¡|ƒtj|dd\}    }
t|    j|kƒt|
j|kƒtt|    |ƒƒtt|
|ƒƒt|    j||fkƒt|
j||fkƒtt    |    |
ƒ|ƒtt    |    j
  ¡|    ƒt   |¡ƒtt  |
¡|
ƒtj|dd} t| j|kƒtt| |ƒƒt| |
ƒdS)NÚcomplete©ÚmodeÚreducedr²)r!r,rgrÿrÚqrrr"rrr9rór#ríÚtriu) rBr.Úa_typeÚa_dtyper(r4r™Úqr²Úq1Úr1Úr2r&r&r'Úcheck_qrZs8
 
zTestQR.check_qrr(r4)r^rr±rYcCstt||ƒ}t ||f¡}| |¡tjj|dd\}}t|jtjƒt|jtjƒt|j    ||fƒt|j    |fƒdS)NÚrawrÕ)
rÿr#r~ràrrØrr,rrg)rBr(r4r™r.ÚhÚtaur&r&r'Ú test_qr_emptys
 
zTestQR.test_qr_emptycCsÄ|jddgddgddggtjd}tj|dd    \}}t|jtjkƒt|jtjkƒt|jd
kƒt|jd kƒtj|jdd    \}}t|jtjkƒt|jtjkƒt|jd kƒt|jd kƒdS) Nr\r]r^r_rar)r3rárÕr²rºrc)    rr#rrrØrr,rgr9)rBr.rârãr&r&r'Ú test_mode_raw’s"zTestQR.test_mode_rawcCsÂ| ddgddgg¡}| ddgddgddgg¡}dD]8}| |¡}| |¡}| |¡| |¡| |j¡q6dD]H}dd| |¡}dd| |¡}| |¡| |¡| |j¡qtdS)    Nr\r]r^r_rar)Úfdùð?)rr#ràr9)rBr.r/rCÚm1Úm2r&r&r'Útest_mode_all_but_economic¨s
 
 
 
 
 
z!TestQR.test_mode_all_but_economiccCsft|ƒ}|j}|jdd…\}}t||ƒ}tj|dd\}}t|j|kƒt|j|kƒtt||ƒƒtt||ƒƒt|jdd…||fkƒt|jdd…||fkƒtt    ||ƒ|ƒt
  |jd¡}    t
  |    |jdd…|jdfd¡}
tt    t |ddƒ ¡|ƒ|
ƒtt
 |ddd…dd…f¡|ƒtj|dd\} } t| j|kƒt| j|kƒtt| |ƒƒtt| |ƒƒt| jdd…||fkƒt| jdd…||fkƒtt    | | ƒ|ƒt
  | jd¡}    t
  |    | jdd…| jdfd¡}
tt    t | ddƒ ¡| ƒ|
ƒtt
 | ddd…dd…f¡| ƒtj|dd} t| j|kƒtt| |ƒƒt| | ƒdS)    NrnrÔrÕrmr].r×r²)r!r,rgrÿrrØrr"rr    r#rrör
rórÙ)rBr.rÚrÛr(r4r™rÜr²ZI_matZ stack_I_matrÝrÞrßr&r&r'Úcheck_qr_stacked¹sL
ÿ"ÿÿ"zTestQR.check_qr_stackedrÍ)r^r_)r_r^rìÚ
outer_sizerrº)r]r^r_rCcCsPtjj||d |¡}tjj||d |¡}| |¡| |d|¡dS)NrÌrç)r#rrÎr#rë)rBrìrÍrCrr¡r&r&r'Útest_stacked_inputsæs
 
zTestQR.test_stacked_inputsN)rJrKrLr#rràr¥r¦rÆrärårêrërrrrrír&r&r&r'rÓVs<' ý
-þÿþrÓc@sReZdZej ddddddg¡ej dejejej    ej
f¡dd    „ƒƒZ d
d „Z d S) Ú TestCholeskyrgrxr©r^r^)é2rð)r^r¶r¶r,c Csôtj d¡tjj|Ž}t |tj¡r:|dtjj|Ž}ttt|ƒƒƒ}d|dd…<t     | 
|¡  ¡|¡}tj ||d}tj  |¡}t     || 
|¡  ¡¡}t ¡ d|jdt |¡j}W5QRXt||||›d|›d    |›d    |›d
dS) Nr\rç)rmrnrnr3iôrú Ú
)Úatolr{)r#rrÚrandnr1Zcomplexfloatingr„r±r<r    rôrórrÚcholeskyZ_no_nep50_warningrgZfinfoZepsr)rBrgr,r.Útr³r/rór&r&r'Útest_basic_propertyùs    
$z TestCholesky.test_basic_propertycCs¶Gdd„dtjƒ}tjdtjd |¡}t |¡}t|j|jƒt    |j
j tj kƒt    t |tjƒƒtjdtjd |¡}t |¡}t|j|jƒt    |j
j tjkƒt    t |tjƒƒdS)Nc@s eZdZdS)z/TestCholesky.test_0_size.<locals>.ArraySubclassNr¾r&r&r&r'r¿sr¿rÊr3)r\rr)r#r$rËrÌrrrõrrgrr,r!rÍr"rÎrÏr&r&r'rÄs
 
zTestCholesky.test_0_sizeN) rJrKrLr¥r¦rÆr#r-rÍrÎr¼r÷rÄr&r&r&r'rîös ÿÿ rîcCs˜tjdkrd}nd}tjtjfD]r}tjd|d}| |¡}| d¡ ¡}t|j    jdƒt
j t
j t
j fD](}||ƒ}t|||ƒƒt|||ƒƒqhq dS)NÚlittleú<rGr_r3ÚSú=)ÚsysÚ    byteorderr#r-rÍríZ newbyteorderZbyteswaprr,rrÈr!rr)ZnativeZdttr3Zn_arrZsw_arrZroutinerÐr&r&r'Útest_byteorder_check$s
 
rþrarbcCspt ddgddgg¡}t ddgddgg¡}t ddddg¡ddd…}||d<||d<ttjjtjj|ƒdS)Nr\r]r^r_.rY)r#rrËrrrrÈ)Z
invertibleZnon_invertibler†r&r&r'Ú test_generalized_raise_multiloop9s rÿc CsRd}z t ¡}Wn"ttfk
r2t d¡YnX|dkr(t d¡t d¡ddl}| |j    d¡zt
j j   ¡Wn2tk
rŒYn tk
rªt tj¡YnXz0t
 dgg¡}t
j j  ddd|d||dd¡    Wn<tk
r}zdt|ƒkrt |¡W5d}~XYnXt tj¡n&t ¡\}}t |¡|krNt d¡dS)    NéÿzNot POSIX or fork failed.rr\rYrTzDORGQR parameter number 5zNumpy xerbla not linked in.)ÚosÚforkÚOSErrorÚAttributeErrorr¥ÚskipÚcloseÚresourceZ    setrlimitZ RLIMIT_COREr#rÚ lapack_liteZxerblar¯rŽÚ_exitZ    EX_CONFIGrZdorgqrr>ÚwaitÚ WEXITSTATUS)Z    XERBLA_OKÚpidrr.r“Ústatusr&r&r'Útest_xerbla_overrideHsH 
 
 
ý rzCannot start subprocesscCsdddg}t d¡}|D]H}|jdd|d}t tjd|g¡|jdd|d}t tjd|g¡qdS)    NzPyQt5.QtWidgetsZIPythonzÕ
    import sys
    {before}
    try:
        import {bad_lib}
    except ImportError:
        sys.exit(0)
    {after}
    x = np.ones(2, dtype=np.float32)
    sys.exit(0 if np.allclose(x.dot(x), 2.0) else 1)
    zimport numpy as npÚ)ÚbeforeÚafterÚbad_libz-c)rrr)ÚtextwrapÚdedentr§Ú
subprocessÚ
check_callrüÚ
executable)Zbad_libsÚtemplaterÚcoder&r&r'Útest_sdot_bug_8577ys 
ÿÿrc@sdeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dS)Ú TestMultiDotc    Csltj d¡}tj d¡}tj d¡}tt|||gƒ| |¡ |¡ƒtt|||gƒt |t ||¡¡ƒdS©N©r)r]©r]r)©r#rrrr)rBrr¡ÚCr&r&r'Ú(test_basic_function_with_three_argumentsŸs
    z5TestMultiDot.test_basic_function_with_three_argumentscCsNtj d¡}tj d¡}tt||gƒ| |¡ƒtt||gƒt ||¡ƒdSrr)rBrr¡r&r&r'Ú&test_basic_function_with_two_arguments©s  z3TestMultiDot.test_basic_function_with_two_argumentscCs\tj d¡}tj d¡}tj d¡}tj d¡}tt||||gƒ| |¡ |¡ |¡ƒdS)Nrr©r]r\r)rBrr¡r ÚDr&r&r'Ú9test_basic_function_with_dynamic_programming_optimization±s
    zFTestMultiDot.test_basic_function_with_dynamic_programming_optimizationcCsLtj d¡}tj d¡}tj d¡}tj d¡}tt||||gƒjdƒdS)Nr]rrrrº©r#rrrrg)rBÚA1dr¡r r$r&r&r'Útest_vector_as_first_argumentºs
    z*TestMultiDot.test_vector_as_first_argumentcCsLtj d¡}tj d¡}tj d¡}tj d¡}tt||||gƒjdƒdS)Nrrr])r)r&)rBrr¡r ÚD1dr&r&r'Útest_vector_as_last_argumentÄs
    z)TestMultiDot.test_vector_as_last_argumentcCsLtj d¡}tj d¡}tj d¡}tj d¡}tt||||gƒjdƒdS)Nr]rrr&r&)rBr'r¡r r)r&r&r'Ú&test_vector_as_first_and_last_argumentÎs
    z3TestMultiDot.test_vector_as_first_and_last_argumentc    Cs€tj d¡}tj d¡}tj d¡}t d¡}t|||g|d}||ksLt‚t|| |¡ |¡ƒt|t |t ||¡¡ƒdS)Nrr©r%©r#rrËrrOrr)rBrr¡r r%Úretr&r&r'Útest_three_arguments_and_outØs   
 z)TestMultiDot.test_three_arguments_and_outcCsdtj d¡}tj d¡}t d¡}t||g|d}||ks>t‚t|| |¡ƒt|t ||¡ƒdS)Nrr)r)r)r,r-)rBrr¡r%r.r&r&r'Útest_two_arguments_and_outås  
 z'TestMultiDot.test_two_arguments_and_outcCsztj d¡}tj d¡}tj d¡}tj d¡}t d¡}t||||g|d}||ksZt‚t|| |¡ |¡ |¡ƒdS)Nrrr#)r)r\r,r-)rBrr¡r r$r%r.r&r&r'Ú-test_dynamic_programming_optimization_and_outïs    
 z:TestMultiDot.test_dynamic_programming_optimization_and_outc Cshtj d¡tj d¡tj d¡tj d¡tj d¡tj d¡g}t ddd    d
d d gddd dddgddddddgddddddgddddddgddddddgg¡}tjddddddgddddddgddddddgddddddgddddddgddddddggtd}|d8}t|dd\}}tt |dd …dd…f¡t |dd …dd…f¡ƒtt |¡t |¡ƒdS)!N)éé#)r3é)r4ra)rar¶)r¶é)r5rr*gÃÎ@gþ@g€OÂ@g€1Ç@g€ŠÍ@g‚¤@g±@gÕ»@g‚Ä@gp‡@gˆ£@gÿ´@g@@gX«@gˆ³@rr\r^r]r_rar3T)Z return_costsrm)r#rrÚintrrrÙ)rBZarraysZ
m_expectedZ
s_expectedr‰r(r&r&r'Útest_dynamic_programming_logicûs:
 
 
 
 
 
ûûûûÿz+TestMultiDot.test_dynamic_programming_logiccCs&tttgƒttttj d¡gƒdS)Nrï)rr¯rr#rrHr&r&r'Útest_too_few_input_arrayss z&TestMultiDot.test_too_few_input_arraysN)rJrKrLr!r"r%r(r*r+r/r0r1r7r8r&r&r&r'rs
    
 
 
 
 rc@sveZdZej de d¡dfe d¡dfg¡dd„ƒZej dd    d
g¡d d „ƒZ    ej d ddg¡dd„ƒZ
dd„Z dS)Ú TestTensorinvzarr, ind©r_r)r[r]r]©r^r^r]r\c    Cs&ttƒtj||dW5QRXdS)N©Úind)rrrÚ    tensorinv)rBr3r=r&r&r'Útest_non_square_handling s
z&TestTensorinv.test_non_square_handlingz
shape, ind)©r_r)r[r^r])©ér[r^r\cCsNt d¡}||_tj||d}|j|d…|jd|…}|j}t||ƒdS)NrB©r.r=)r#rírgrr>r)rBrgr=r.ÚainvrÂÚactualr&r&r'Útest_tensorinv_shape(s 
z"TestTensorinv.test_tensorinv_shaper=rrnc    Cs6t d¡}d|_ttƒtj||dW5QRXdS)NrBr@rC)r#rírgrr¯rr>)rBr=r.r&r&r'Útest_tensorinv_ind_limit5s
 
z&TestTensorinv.test_tensorinv_ind_limitcCsJt d¡}d|_tj|dd}t d¡}tt ||d¡tj ||¡ƒdS)NrBrAr\r<)    r#rírgrr>rrÚ    tensordotÚ tensorsolve)rBr.rDr/r&r&r'Útest_tensorinv_result>s
 
 
z#TestTensorinv.test_tensorinv_resultN) rJrKrLr¥r¦rÆr#rr?rFrGrJr&r&r&r'r9s   þ
ý
ÿ
r9c@sVeZdZej de d¡dfe d¡dfg¡dd„ƒZej dd    d
d g¡d d „ƒZ    dS)ÚTestTensorsolveza, axesr:Nr;)rr]c    Cs<ttƒ*t |jdd…¡}tj|||dW5QRXdS©Nr]rñ)rrr#rrgrrI)rBr.ròr/r&r&r'r?Is
z(TestTensorsolve.test_non_square_handlingrg)r]r^r))r^r_r_r^)rr^r^rcCsNtjj|Ž}t |jdd…¡}tj ||¡}ttj||t    |jƒd|ƒdSrL)
r#rrôrrgrrIrrHr<)rBrgr.r/r†r&r&r'Útest_tensorsolve_resultRs z'TestTensorsolve.test_tensorsolve_result)
rJrKrLr¥r¦rÆr#rr?rMr&r&r&r'rKGs  þ
ÿrKc    Cs>tjddgddggdd}ttdƒt |¡W5QRXdS)Nr\rnr]raÚfloat16r3zunsupported in linalg)r#rrr]rrõ)r3r&r&r'Útest_unsupported_commontype\s rOz,Bad memory reports lead to OOM in ci testingcCsRd}tjd|gtjd}tjddgtjd}d|d<t ||¡}t|ddƒdS)Nìr\r3)rrm)r#rËr-rrr)r4r.r/r³r&r&r'Útest_blas64_dotgs  rQz*Numpy not compiled with 64-bit BLAS/LAPACKc
    Csºtj}tjjj}d}d}|}tjddg|d}tjdg|d}tjdg|d}|||||||ddƒ}t|ddƒt|d|ƒt|d|ƒt| ¡ƒ}    t    d    |    ko®d
knƒdS) Nlr\r3rmrÚinfor(r4rPl)
r#rÍrrZdgeqrfrËrr6Úitemr)
r,Zlapack_routiner(r4Zldar.ZworkrãÚresultsZlworkr&r&r'Ú!test_blas64_geqrf_lwork_smoketestqs
 rU)r)r*)€Ú__doc__rrürzrrrr¥Únumpyr#rrrrrrrr    Z
numpy.corer
r r r rrZ numpy.linalgrrrrrZnumpy.linalg.linalgrZ numpy.testingrrrrrrrrrrr(r-r4r5r6rNr=rRrrrdr~rrjrŠr‹rŒr–r›ržr¡r¨r«r´rµr¶r¹rÇrÉrÒrØrÛrÞrãrérërïrørùrrrrrrr)r.r8r¦rÆrDrgrlrzr~rr…r«r´rµr¾r¿rÀrÂrÃrÄrÅrÒrÓrîrþrfrÿrr§rrr9rKrOrrQrrUr&r&r&r'Ú<module>s$(   0
 
þ þþþþþþ  ý 
þ 
þþã#þþþþÿýÿýÿýÿýÿýÿý 
þ 
þ 
þ 
ý 
ýÎ9þþþþ ýþþ þé 
0
 
:    
$ .C ý 
*4V6; x$ !.
1 ") 
    
ÿ