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
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
U
O±d ³ã
@s¬ddlZddlZddlZddlZddlZddlZddlZddlZddlm    Z    ddl
m Z ddl m Z ddlmmZddlmZddlZddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z'dd    „ejjj( )¡DƒZ*d
d    „e*DƒZ+d d    „e+DƒZ,d d    „e*DƒZ-d d    „e-DƒZ.dd„Z/dd„Z0dd„Z1Gdd„dƒZ2Gdd„dƒZ3Gdd„dƒZ4Gdd„dƒZ5Gdd„dƒZ6Gdd„dƒZ7d d!„Z8d"d#„Z9Gd$d%„d%ƒZ:Gd&d'„d'ƒZ;Gd(d)„d)ƒZ<Gd*d+„d+ƒZ=Gd,d-„d-ƒZ>Gd.d/„d/ƒZ?Gd0d1„d1ƒZ@Gd2d3„d3e2ƒZAGd4d5„d5ƒZBGd6d7„d7ƒZCGd8d9„d9ƒZDGd:d;„d;ƒZEGd<d=„d=ƒZFGd>d?„d?ƒZGd@dAdBgddCdBgd@dDdBgd@dCdBgddCdBgddCdBgddCdBgddCdBgdEœZHGdFdG„dGƒZIGdHdI„dIƒZJGdJdK„dKe2ƒZKGdLdM„dMƒZLGdNdO„dOƒZMGdPdQ„dQƒZNdRdS„ZOdTdU„ZPGdVdW„dWƒZQdXdY„ZRdZd[„ZSd\d]„ZTd^d_„ZUd`da„ZVGdbdc„dcƒZWGddde„deƒZXGdfdg„dge2ƒZYGdhdi„die2ƒZZGdjdk„dke2ƒZ[Gdldm„dme2ƒZ\Gdndo„doƒZ]Gdpdq„dqƒZ^Gdrds„dsƒZ_Gdtdu„duƒZ`Gdvdw„dwƒZaGdxdy„dyƒZbGdzd{„d{ƒZcGd|d}„d}ƒZdGd~d„dƒZeGd€d„dƒZfGd‚dƒ„dƒƒZgGd„d…„d…ƒZhGd†d‡„d‡ƒZiGdˆd‰„d‰ƒZjGdŠd‹„d‹ƒZkGdŒd„dƒZlGdŽd„dƒZmGdd‘„d‘ƒZnGd’d“„d“ƒZod@d”d•epfd–d—„Zqd˜d™„Zrdšd›„Zsdœd„ZtdždŸ„Zuejvjwe xejy¡e xejz¡kd d¡ejvj{e |¡ }d¢¡d£d¤d¥d¦„ƒƒZ~d§d¨„Zd©dª„Z€d«d¬„Zd­d®„Z‚ejvjwe xejy¡e xejz¡kd d¡ejvj{e |¡ }d¢¡d£d¤d¯d°„ƒƒZƒd±d²„Z„d³d´„Z…dµd¶„Z†d·d¸„Z‡d¹dº„Zˆd»d¼„Z‰d½d¾„ZŠejv ‹d¿ejŒejg¡dÀdÁ„ƒZŽejv ‹dÂdÃd    „e.Dƒ¡dÄdńƒZejv ‹dÂdÆd    „e.Dƒ¡dÇdȄƒZdÉdʄZ‘ejv ‹dËe ’dÌ¡e “dd@g¡e “dd@gdÌdÍgg¡g¡dÎdτƒZ”dÐdфZ•dÒdӄZ–dÔdՄZ—ejv ‹dÖe ’dסdAdDdØgg¡dÙdڄƒZ˜dS)ÛéN)ÚFraction©Úreduce)Ú
namedtuple)Ú _umath_tests)Úassert_Ú assert_equalÚ assert_raisesÚassert_raises_regexÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_array_max_ulpÚassert_allcloseÚassert_no_warningsÚsuppress_warningsÚ_gen_alignment_dataÚassert_array_almost_equal_nulpÚIS_WASM)Ú_glibc_older_thancCsg|]}t|tjƒr|‘qS©)Ú
isinstanceÚnpÚufunc)Ú.0ÚobjrrúRd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/core/tests/test_umath.pyÚ
<listcomp>s ÿrcCsg|]}|jdkr|‘qS©é©Únin©rZufrrrrs
cCsg|]}d|jkr|‘qS)zf->f©Útypesr"rrrrs
cCsg|]}|jdkr|‘qS)ér r"rrrr"s
cCs$g|]}t|dƒr|jdkr|‘qS)Ú
accumulater)ÚhasattrÚnoutr"rrrr%s
 
c
#sJd}tjd||d}tjd||d}||d<||d<dd„}|d|d|dfVdd„}|d    |d    |d
fV||d<||d<d D]^‰||ˆ<||ˆ<‡fd d„}|||d ˆ›fV||ˆ|d ˆ›dfV||ˆ<||ˆ<q„dD]\}|dd|…}|dd|…}    ||d<||    d<dd„}||    |d|›fV||d<||    d<qèdS)a
    Helper to create "interesting" operands to cover common code paths:
    * scalar inputs
    * only first "values" is an array (e.g. scalar division fast-paths)
    * Longer array (SIMD) placing the value of interest at different positions
    * Oddly strided arrays which may not be SIMD compatible
 
    It does not attempt to cover unaligned access or mixed dtypes.
    These are normally handled by the casting/buffering machinery.
 
    This is not a fixture (currently), since I believe a fixture normally
    only yields once?
    ri')ÚdtypeÚ
fill_valuercSs|S©Nr©ÚresrrrÚ<lambda>?óz,interesting_binop_operands.<locals>.<lambda>ZscalarscSs|Sr+rr,rrrr.Br/)r.z scalar-arrays)
rrr%ééééÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿcs|ˆSr+rr,©Úposrrr.Mr/zoff-z -with-scalar)r3éqNé
cSs|dS)Nr:rr,rrrr.Zr/zstride-)rÚfull)
Úval1Úval2r)r*Úarr1Úarr2Ú    extractorÚstrideÚop1Úop2rr7rÚinteresting_binop_operands)s8 
rDcCst ¡dkpt ¡ d¡S)z/ True if we are running on a Power PC platform.ZpowerpcÚppc)ÚplatformÚ    processorÚmachineÚ
startswithrrrrÚ
on_powerpcas  ÿrJcCsXt ¡dkrd}ntƒrd}ndSt t |¡¡}t t |¡¡j}t||dƒdkS)zôThe blocklisted trig functions are not accurate on aarch64/PPC for
    complex256. Rather than dig through the actual problem skip the
    test. This should be fixed when we can move past glibc2.17
    which is the version in manylinux2014
    Úaarch64g€Ù£wÑvè=gýzý    Ó¯í=Fçð?gQ²@³-(;)    rFrHrJrÚarcsinhZfloat128Z
complex256ÚrealÚabs)ÚxÚv1Úv2rrrÚ bad_arcsinhgs rSc@seZdZdd„Zdd„ZdS)Ú_FilterInvalidscCstjdd|_dS)NÚignore©Úinvalid©rZseterrZolderr©ÚselfrrrÚ setup_methodzsz_FilterInvalids.setup_methodcCstjf|jŽdSr+rXrYrrrÚteardown_method}sz_FilterInvalids.teardown_methodN)Ú__name__Ú
__module__Ú __qualname__r[r\rrrrrTysrTc@s$eZdZdd„Zdd„Zdd„ZdS)Ú TestConstantscCsttjddƒdS)Ng-DTû!    @çV瞯Ò<)rÚncuÚpirYrrrÚtest_pi‚szTestConstants.test_picCsttjddƒdS)NgiW‹
¿@ra)rrbÚerYrrrÚtest_e…szTestConstants.test_ecCsttjddƒdS)Ng¶oüŒxâ?ra)rrbZ euler_gammarYrrrÚtest_euler_gammaˆszTestConstants.test_euler_gammaN)r]r^r_rdrfrgrrrrr`sr`c@seZdZdd„Zdd„ZdS)ÚTestOutc
 
Cs¾dD]²}t d¡}t d¡}tj|d||d}t||kƒtj|d||d}t||kƒtj|d|f|d}t||kƒt d¡}t d¡}tjdtjd}tj||d|d\}}    t||kƒtj|d||d\}}    t|    |kƒtj||||d\}}    t||kƒt|    |kƒtj||df|d\}}    t||kƒtj|d|f|d\}}    t|    |kƒtj|||f|d\}}    t||kƒt|    |kƒttƒtj|||d\}}    W5QRXtttj|d|||dtttj|d|||dtttj|dd||dtt    tj|d||f|dtt    tj|dd|dtttj|dg|dtttj|dg|dtttj|dgf|dd    |j
_ tt    tj|d||dtt    tj|d||dtt    tj|d|f|dqdS)
N©TFçà?rr%©Úsubok©ÚoutrlçÍÌÌÌÌÌ@©r)F) rÚarrayÚemptyÚaddrÚint32Úfrexpr    Ú    TypeErrorÚ
ValueErrorÚflagsZ    writeable)
rZrlÚaÚoÚrÚdÚo1Úo2Úr1Úr2rrrÚtest_out_suboksP
 
 
 
 
 
zTestOut.test_out_subokc
 
CsŽGdd„dtjƒ}dD]p}|dgƒ}tj|d|d}|rJtt||ƒƒntt|ƒtjkƒtj|dd|d}|r‚tt||ƒƒntt|ƒtjkƒtj|dd|d}|rºtt||ƒƒntt|ƒtjkƒtj|dd|d}|ròtt||ƒƒntt|ƒtjkƒ|d    gƒ}t d
¡}tjd
tjd }tj|||d\}}    |rRtt|    |ƒƒntt|    ƒtjkƒtj||d|d\}}    |rtt|    |ƒƒntt|    ƒtjkƒtj|d||d\}}    |rÎtt||ƒƒntt|ƒtjkƒtj||df|d\}}    |rtt|    |ƒƒntt|    ƒtjkƒtj|d|f|d\}}    |rNtt||ƒƒntt|ƒtjkƒt    t
ƒtj|||d\}}    W5QRXqdS) Nc@s eZdZdZdd„Zdd„ZdS)z.TestOut.test_out_wrap_subok.<locals>.ArrayWrapr:cSst |¡ |¡ ¡Sr+©rÚasarrayÚviewÚcopy)ÚclsÚarrrrrÚ__new__Âsz6TestOut.test_out_wrap_subok.<locals>.ArrayWrap.__new__cSs| t|ƒ¡Sr+©r„Útype©rZr‡ÚcontextrrrÚ__array_wrap__Åsz=TestOut.test_out_wrap_subok.<locals>.ArrayWrap.__array_wrap__N©r]r^r_Ú__array_priority__rˆrrrrrÚ    ArrayWrap¿srrirjr%rkrmr+rorrp) rÚndarrayrsrrrŠrrrtrur    rv)
rZrrlryr{r|r}r~rr€rrrÚtest_out_wrap_subok¾sX    
 
 
 
 
zTestOut.test_out_wrap_subokN)r]r^r_rr’rrrrrhŒs1rhc @s¾eZdZddlZej dejdejdejdej    g¡ej dej
ej fej ej fejejfejejfejejfejejfg¡dd    „ƒƒZd
d „Zd d „Zdd„Zdd„Zdd„ZdS)ÚTestComparisonsrNr)ÚuintÚintÚfloatzpy_comp,np_compcsZ|tjkr8tjjddgdd}tjjddgdd}d‰n4tjjdddd |¡}tjjdddd |¡}d‰t |¡ ˆ¡}| ¡}| ¡}|||ƒ     tj
¡}    ‡fd    d
„t ||ƒDƒ}
|||ƒ     tj
¡} ‡‡fd d
„|Dƒ} |||ƒ     tj
¡} ‡‡fd d
„|Dƒ}t |     ¡|
kd ˆj ›dƒt |  ¡| kd ˆj ›dƒt |  ¡|kd ˆj ›dƒdS)NFTéè)ryÚsizerr:©ÚlowÚhighr˜r2csg|]\}}tˆ||ƒƒ‘qSr©r•©rrPÚy)Úpy_comprrr'sz=TestComparisons.test_comparison_functions.<locals>.<listcomp>csg|]}tˆˆ|ƒƒ‘qSrrœ©rrP©rŸZscalarrrr+scsg|]}tˆ|ˆƒƒ‘qSrrœr r¡rrr/szFailed comparison (ú))rÚbool_ÚrandomÚchoiceÚrandintÚastyper)rŠÚtolistr„Úuint8Úziprr])rZr)rŸZnp_compryÚbZ    np_scalarÚa_lstÚb_lstZcomp_bZ comp_b_listZcomp_s1Z comp_s1_listZcomp_s2Z comp_s2_listrr¡rÚtest_comparison_functions s2
  ÿ  ÿ  ÿz)TestComparisons.test_comparison_functionscCs„tjt dddg¡dgtd}tttj||ƒGdd„dƒ}t |ƒg¡}tttj||ƒtjtjgtd}tt ||¡dgƒdS)Nrr%r0rpc@seZdZdd„ZdS)zGTestComparisons.test_ignore_object_identity_in_equal.<locals>.FunkyTypecSs tdƒ‚dS©NzI won't compare©rv©rZÚotherrrrÚ__eq__AszNTestComparisons.test_ignore_object_identity_in_equal.<locals>.FunkyType.__eq__N)r]r^r_r³rrrrÚ    FunkyType@sr´F)    rrqÚobjectr    rwÚequalrvÚnanr©rZryr´rrrÚ$test_ignore_object_identity_in_equal9sz4TestComparisons.test_ignore_object_identity_in_equalcCs„tjt dddg¡dgtd}tttj||ƒGdd„dƒ}t |ƒg¡}tttj||ƒtjtjgtd}tt ||¡dgƒdS)Nrr%r0rpc@seZdZdd„ZdS)zKTestComparisons.test_ignore_object_identity_in_not_equal.<locals>.FunkyTypecSs tdƒ‚dSr¯r°r±rrrÚ__ne__SszRTestComparisons.test_ignore_object_identity_in_not_equal.<locals>.FunkyType.__ne__N)r]r^r_rºrrrrr´Rsr´T)    rrqrµr    rwÚ    not_equalrvr·rr¸rrrÚ(test_ignore_object_identity_in_not_equalKsz8TestComparisons.test_ignore_object_identity_in_not_equalcCs8t ddg¡}ttjj|tddƒtttjj|ƒdS)NrrpT)rrqrr¶rÚboolr    rv©rZryrrrÚtest_error_in_equal_reduce]sz*TestComparisons.test_error_in_equal_reducecCs<tjddgtdjtkst‚tjddgddjtks8t‚dS)Nrrp)NNÚO)Ú    signature)rr¶rµr)ÚAssertionErrorrYrrrÚtest_object_dtypeesz!TestComparisons.test_object_dtypec    Csvtjddgtdjtkst‚tjtddtjddtjdW5QRXtjtddtjddddW5QRXdS)NrrpzNo loop matching©Úmatch)NNÚl)Úsig)    rr¶r½r)rÂÚpytestÚraisesrvÚint64rYrrrÚtest_object_nonbool_dtype_erroris
z/TestComparisons.test_object_nonbool_dtype_error)r]r^r_ÚoperatorrÈÚmarkÚ parametrizerÚsctypesr£ÚltZlessÚleZ
less_equalÚgtZgreaterÚgeZ greater_equalÚeqr¶Úner»r®r¹r¼r¿rÃrËrrrrr“
s(ÿÿ
 
 
 
 
 
ú "r“c@seZdZdd„ZdS)ÚTestAddcCs<tjddtjfdtjfgd}d|d<t|d ¡dƒdS)Nr%ryr«rpr3r)rÚzerosrtÚfloat64rÚsumr¾rrrÚtest_reduce_alignmentvszTestAdd.test_reduce_alignmentN)r]r^r_rÚrrrrrÖusrÖc@sFeZdZdd„Zejjeddej de     
e j de j dd¡¡d    d
„ƒƒZ ejjeddej de     
e j de j dd ¡¡d d „ƒƒZej de  dd¡e  dd¡dfe  dd¡e  dd¡dfe  dd¡e  dd¡dfe  dd¡e  dd¡dfe  dd¡e  dd¡dfe  dd¡e  dd¡dfe  dd¡de  dd¡fe  dd¡de  dd¡fe  dd¡de  dd¡fe  dd¡de  dd¡fe  dd¡de  dd¡fe  dd¡de  dd¡fe  dd¡de  dd¡fg ¡dd„ƒZdd„Zdd„Zd d!„Zd"d#„Zejjeddej d$e jd%¡d&d'„ƒƒZej d$e jd%¡d(d)„ƒZd*S)+Ú TestDivisionc Csªt ddddddddd    g    ¡}d
d
krFt|dd d d ddddddg    ƒn t|ddddddddddg    ƒt|ddddddddddg    ƒt|ddddddddddg    ƒdS)Nr2r:éZédéûÿÿÿéöÿÿÿi¦ÿÿÿéœÿÿÿiˆÿÿÿrjgš™™™™™©?皙™™™™¹?gÍÌÌÌÌÌì?rgš™™™™™©¿çš™™™™™¹¿gÍÌÌÌÌÌì¿r3g333333ó¿rr4é_éP)rrqr©rZrPrrrÚtest_division_intsÿ  zTestDivision.test_division_intúfp errors don't work in wasm©Úreasonz dtype,ex_valr•r”)z\np.array(range(fo.max-lsize, fo.max)).astype(dtype),np.arange(lsize).astype(dtype),range(15)zunp.arange(fo.min, fo.min+lsize).astype(dtype),np.arange(lsize//-2, lsize//2).astype(dtype),range(fo.min, fo.min + 15)zŒnp.array(range(fo.max-lsize, fo.max)).astype(dtype),np.arange(lsize).astype(dtype),[1,3,9,13,neg, fo.min+1, fo.min//2, fo.max//3, fo.max//4]c
s8t |¡‰ˆjdkrdnd}d}t|ƒ\}}}| ¡| ¡}}    ‡fdd„‰tjdd| ¡}
|
|}
||} W5QRX‡fd    d
„t||    ƒDƒ} d } t| | kƒs¬t    | ƒ‚d }t|
| kƒsÄt    |ƒ‚|D]t‰| ¡}
tjddd |ˆ}|
ˆ}
W5QRX‡‡fdd
„|Dƒ} t|| kƒs(t    | ƒ‚t|
| kƒsÈt    |ƒ‚qÈtjddd âd|kr|t
j t dd||W5QRXn||ˆjr¼ˆj|kr¼t
j t dd|dW5QRXnˆjrÌ|dt
j t dd|dW5QRXt
j t dd| ¡}
|
d}
W5QRXtj g|ddW5QRXdS)Nrr3rics0|dkr dS|r(|ˆjkr(|dkr(ˆjS||S©Nrr3©Úmin©Únr|©Úforrr.°s z9TestDivision.test_division_int_boundary.<locals>.<lambda>rU©Údividecsg|]\}}ˆ||ƒ‘qSrrr)Úc_divrrr¹sz;TestDivision.test_division_int_boundary.<locals>.<listcomp>z(Integer arrays floor division check (//)z)Integer arrays floor division check (//=)©ròÚovercsg|]}ˆ|ˆƒ‘qSrr©rÚi)róÚdivisorrrrÅsÚraisez*divide by zero encountered in floor_dividerÄz$overflow encountered in floor_dividerp)rÚiinforìÚevalr¨Úerrstater…rªÚallrÂrÈrÉÚFloatingPointErrorrq)rZr)Úex_valÚnegZlsizeryr«Zdivisorsr¬r­ÚacZdiv_abÚdiv_lstÚmsgZmsg_eqÚdiv_ar)rórørðrÚtest_division_int_boundaryŒs^
 
ÿÿÿÿz'TestDivision.test_division_int_boundary)z1np.array([fo.max, 1, 2, 1, 1, 2, 3], dtype=dtype)z4np.array([fo.min, 1, -2, 1, 1, 2, -3]).astype(dtype)z3np.arange(fo.min, fo.min+(100*10), 10, dtype=dtype)z8np.array(range(fo.max-(100*7), fo.max, 7)).astype(dtype)c    
søt |¡‰t|ƒ}| ¡}‡fdd„}tjddtj |¡}W5QRXt||ƒ}d}||ksht|ƒ‚tjdddxtj    t
dd     tj t  d
d ¡  |¡¡W5QRXˆj rêtj    t
d d    $tj tjˆj d dg|d¡W5QRXW5QRXdS)Ncs*|dks|r"|ˆjkr"|dkr"dS||Srêrërírïrrr.ïsz7TestDivision.test_division_int_reduce.<locals>.<lambda>rUrñz#Reduce floor integer division checkrùrôz$divide by zero encountered in reducerÄràrÝzoverflow encountered in reducerr3rp)rrúrûr¨rüÚ floor_dividerrÂrÈrÉrþÚaranger§rìrq)    rZr)rÿryÚlstrórrrrrïrÚtest_division_int_reduceâs*
 
 
ÿ$ÿÿz%TestDivision.test_division_int_reducezdividend,divisor,quotientr%ÚYÚMé r4éôÿÿÿr3rrr5ZNatc
Cs¸|rnt|tƒst |¡snd}|||ks0t|ƒ‚d}t |gd¡}t |gd¡}t|||kƒs´t|ƒ‚nFtr|t     d¡tj
ddd$t  t ¡||W5QRXW5QRXdS)NzTimedelta floor division checkz%Timedelta arrays floor division checkr2rçrù©ròrW) rr•rZisnatrÂrqrýrrÈÚskiprürÉrþ)rZÚdividendrøZquotientrZdividend_arrayZquotient_arrayrrrÚtest_division_int_timedeltas
 z(TestDivision.test_division_int_timedeltacCsnd}tjdddgtjd}t|d|||dd}tjd    d
gtjd}|d|}t||d d g|ddS) Nz%Complex division implementation checkùð?ð?yð?à?ùð?@rpr%©Úerr_msgz)Complex division overflow/underflow checkgþ”ÆG0JÅVgòys? )r)rrqÚ
complex128r )rZrrPržrrrÚtest_division_complex&s z"TestDivision.test_division_complexc    CsÐtjddd¸tjdgtjd}d|}tt |¡dƒttjtjƒ|}tt |¡dƒttjtjƒ|}tt |¡dƒttjtjƒ|}tt |¡dƒd|}tt     |¡dƒW5QRXdS)NrU©rWròçrprLr)
rrürqrrÚisinfÚcomplexÚinfr·Úisnan)rZrPržrrrÚtest_zero_division_complex1sz'TestDivision.test_zero_division_complexc    Cs~tjddddgtjd}t t¡|dW5QRXt t¡t |d¡W5QRXt t¡t |d¡W5QRXdS)NyÍÌÌÌÌÌì?ð?yš™™™™™¹¿ð?yÍÌÌÌÌÌì?à?yÍÌÌÌÌÌì?@rpé)rrqrrÈrÉrvÚdivmodÚ    remainderrårrrÚtest_floor_division_complex?s   z(TestDivision.test_floor_division_complexcCs8t d¡}tt |d¡dƒtt | d¡dƒdS)Nr:rr)rr×rÚsignbitrårrrÚtest_floor_division_signed_zeroIs
z,TestDivision.test_floor_division_signed_zeror)ÚFloatc    CsØtjtj|d}tjd|d}tjd|d}tjtj|d}tjdddtttj||ƒW5QRXtjdddt ||¡W5QRXtjdd6t ||¡t ||¡t ||¡t ||¡W5QRXdS)NrprLrrùrUr©rý)rrqr·rrür    rþr)rZr)ÚfnanÚfoneÚfzerÚfinfrrrÚtest_floor_division_errorsPs   z'TestDivision.test_floor_division_errorsc     Cs"tjd|d}tjd|d}tjtj|d}tjd|d}tjd|d}tjtj|d}tƒ„}| td¡t     ||¡}    t 
|    ¡s’t dt |    fƒ‚t     ||¡}    t 
|    ¡s¸t dt |    fƒ‚t     ||¡}    t 
|    ¡sÞt dt |    fƒ‚W5QRXtj dd$t     ||¡}
tt |
¡ ¡ƒW5QRXdS)    Nr:rprLrz)invalid value encountered in floor_divideúdt: %s, div: %srUrñ)rr×Úonesrqr·rrÚfilterÚRuntimeWarningrrrÂÚdtrürrrý) rZr)rPržr'r(r)r*ÚsupÚdivÚzrrrÚ test_floor_division_corner_casesds"    $ z-TestDivision.test_floor_division_corner_casesN)r]r^r_rærÈrÍÚskipifrrÎÚ    itertoolsÚproductrrÏrr    Z timedelta64rrrr"r$Ú    typecodesr+r4rrrrrۀsP  ÿ : ÿ ôþ
 
 rÛcCst ||¡t ||¡fSr+)rrr!©rPržrrrÚfloor_divide_and_remainderzsr:cCs|tjdkrdSdSdS)NÚUnsignedIntegerr©rr3)rr8)r0rrrÚ_signs~sr=c@sêeZdZdd„Zdd„Zdd„Zejje    ddejj
e j   d    ¡d
dej d ejd ¡d d„ƒƒƒZejje    ddejj
e j   d    ¡d
dej d ejd ¡ej dejejg¡dd„ƒƒƒƒZejje    dddd„ƒZdd„Zdd„ZdS)Ú TestRemainderc     Cstjdtjd}ttjfD]Þ}t ||¡D]Ì\}}t t|ƒt|ƒ¡D]®\}}d}||j||||f}tj|d|d}    tj|d|d}
||    |
ƒ\} } t    | |
| |    |d|dkrÚt
|
| koÎd    kn|ƒqJt
|
| koîd    kn|ƒqJq.qdS)
AllIntegerr%ú*op: %s, dt1: %s, dt2: %s, sg1: %s, sg2: %séGrpérr3r) rr8r:r r6r7r=r]rqrr© rZr0ÚopZdt1Zdt2Zsg1Zsg2Úfmtrryr«r2ÚremrrrÚtest_remainder_basic‡s z"TestRemainder.test_remainder_basiccCs(ttddƒƒ}ttddƒƒ}|dg|}||}tt ||¡ƒ}tdd„|Dƒƒ}tj|tdj\}}tj|tdj\}    }
t     |    dk|dk|dkA@d    |    ¡}    t     |
dk|dk@d    |
¡}
t
tj fD]`} tj d
D]P} d | j | f} | | ¡}| | ¡}| ||ƒ\}}t||    | d t||
| d qÐqÂdS) Niÿÿÿrré€css|]}t|ŽVqdSr+)r )rÚtrrrÚ    <genexpr>Ÿsz;TestRemainder.test_float_remainder_exact.<locals>.<genexpr>rprç€r%zop: %s, dtype: %sr)ÚlistÚranger6r7rrqr•ÚTr–Úwherer:r r8r]r§r)rZZnlstZplstrrøÚargÚtgtryr«ZtgtdivZtgtremrDr0rÚfaZfbr2rFrrrÚtest_float_remainder_exact—s$"
 
z(TestRemainder.test_float_remainder_exactc     Csôtjd}ttjfD]Ú}t ||¡D]È\}}t dd¡D]²\}}d}||j||||f}tj|dd|d}    tj|d|d}
||    |
ƒ\} } t| |
| |    |d|dkrÌt    |
| koÀd    kn|ƒq8t    |
| koàd    kn|ƒq8q$qdS)
Nr%r<r@éNg+i¤)+p>rprr3r)
rr8r:r r6r7r]rqrrrCrrrÚtest_float_remainder_roundoff±s
 z+TestRemainder.test_float_remainder_roundoffrçrèÚdarwinz_MacOS seems to not give the correct 'invalid' warning for `fmod`.  Hopefully, others always do.r)r%c    Cs4tjd|d}tjd|d}tjtj|d}tjtj|d}tjdddtttj||ƒW5QRXtjdddtttj||ƒW5QRXtjddtttj||ƒW5QRXtjddtttj||ƒW5QRXtjdddtttj||ƒW5QRXtjdddt ||¡W5QRXdS)NrrprLrùrUrrV)rrqrr·rür    rþr )rZr)Úfzeror(r*r'rrrÚtest_float_divmod_errorsÃs z&TestRemainder.test_float_divmod_errorsÚfnc
Cs¤tjd|d}tjd|d}tjtj|d}tjtj|d}tjddRtjtdd|||ƒW5QRX|||ƒ|||ƒ|||ƒ|||ƒW5QRXdS)NrrprLrùr&z invalid valuerÄ)rrqrr·rürÈrÉrþ)rZr)rYrWr(r*r'rrrÚtest_float_remainder_errorsÞsÿ
 
 
z)TestRemainder.test_float_remainder_errorsc    Cs¦t tj¡j}tjddd,t d|¡\}}t |¡t|dkƒW5QRXtjdddtt    tjd|ƒW5QRXtjdddtt    tjd|ƒW5QRXdS)NrU)rõrWr1rrù)rWrõ)
rÚfinforØÚtinyrür rrr    rþ)rZryr2ÚmodrrrÚtest_float_remainder_overflowôs
z+TestRemainder.test_float_remainder_overflowc    
CsntjdD]\}tjtj|d}tjd|d}tjd|d}tjtj|d}tƒ}| td¡| td¡t ||¡\}}t     |¡s˜t
d||fƒ‚t  |¡s²t
d||fƒ‚t ||¡\}}t  |¡sÜt
d||fƒ‚t t  |¡ƒd||fft ||¡\}}t  |¡s"t
d||fƒ‚t  |¡s>t
d||fƒ‚t ||¡\}}t     |¡sjt
d||fƒ‚t  |¡s†t
d||fƒ‚t ||¡\}}t  |¡s²t
d||fƒ‚t  |¡sÎt
d||fƒ‚t ||¡\}}t  |¡sút
d||fƒ‚t  |¡st
d||fƒ‚t ||¡\}}t  |¡sBt
d||fƒ‚t  |¡s^t
d||fƒ‚W5QRXq
dS)    Nr%rprLrz#invalid value encountered in divmodz$divide by zero encountered in divmodr,údt: %s, rem: %s) rr8rqr·rrr.r/r rrÂrr)    rZr0r'r(r)r*r1r2rFrrrÚtest_float_divmod_corner_casess:
  z,TestRemainder.test_float_divmod_corner_casesc     CsötjdD]˜}tjd|d}tjd|d}tjtj|d}tjd|d}t tjd|d| ¡}t ||¡}t||kd|ƒt | | ¡}t|| kd|ƒq
tƒ@}| t    d¡| t    d¡tjdD]}tjd|d}tjd|d}tjtj
|d}    tjtj|d}t ||¡}tt  |¡d||fƒt |    |¡}t  |    |¡}
tt  |
¡d    ||
fƒtt  |¡d||fƒt |    |    ¡}t  |    |¡}
tt  |¡d||fƒtt  |
¡d    ||
fƒt |    |¡}t  |    |¡}
tt  |¡d||fƒtt  |
¡d    ||
fƒt ||¡}t  ||¡}
tt  |¡d||fƒtt  |
¡d    ||
fƒt ||¡}t  ||¡}
tt  |¡d||fƒtt  |
¡d    ||fƒt ||¡}t  ||¡}
tt  |¡d||fƒtt  |
¡d    ||fƒqÐW5QRXdS)
Nr%rLrprzdt: %sz&invalid value encountered in remainderz!invalid value encountered in fmodr_zdt: %s, fmod: %s) rr8rqr·Ú    nextafterr!rrr.r/rrÚfmod) rZr0r(r)r'r«ryrFr1r*rbrrrÚ!test_float_remainder_corner_cases sX 
               z/TestRemainder.test_float_remainder_corner_casesN)r]r^r_rGrSrUrÈrÍr5rÚxfailÚsysrFrIrÎrr8rXrbr!rZr^r`rcrrrrr>…s(ÿÿ
 r>c@s†eZdZedddgƒZdd„dd„dd„dd„d    d„d
œZejeed ed ƒejeed ed ƒe    j
eed ed ƒe    j eed ed ƒej eed ed ƒej eededƒiZejjeddej dejd¡dd„ƒƒZejjeddej dejd¡dd„ƒƒZejjeddej dejd¡ej dejd¡ej dejejej ej e    j
e    j g¡ejddddd „ƒƒƒƒƒZd!S)"Ú+TestDivisionIntegerOverflowsAndDivideByZeroÚ result_typeÚnocastÚcastedcCsdS©Nrrrprrrr.Yr/z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>cCs t |¡jSr+©rrúrìrprrrr.Zr/cCst |¡j Sr+rkrprrrr.[r/cCst |¡jdfSrjrkrprrrr.\r/cCst |¡j dfSrjrkrprrrr.]r/)ÚzerorìÚneg_minúmin-zeroú neg_min-zerorlrìrmrnrorçrèr)ÚIntegerc
 
Cs4tt |¡jd|ƒ}|D]\}}}}tjtdd||}W5QRX|j|jksXt‚||ƒt |j¡jksrt‚||}|j|jksŠt‚||ƒdksšt‚t     ||¡}||ƒdks¶t‚tjtddt 
||¡\}}    W5QRX|j|    jkrü|jksnt‚||ƒt |j¡jkst‚||    ƒdkst‚qdS)Nr3zoverflow encounteredrÄr) rDrrúrìrÈÚwarnsr/r)rÂrbr ©
rZr)Zto_checkrBrCr@Zoperand_identifierr-Úres1Úres2rrrÚtest_signed_division_overflowns  "zITestDivisionIntegerOverflowsAndDivideByZero.test_signed_division_overflowr?c
 
CsÎtdd|ƒ}|D]¸\}}}}tjtdd||}W5QRX|j|jksNt‚||ƒdks^t‚tjtddt ||¡\}}    W5QRX|j|    jkr¢|jks¨nt‚||ƒdks¸t‚||    ƒdkst‚qdS)Nrrzdivide by zerorÄ)rDrÈrqr/r)rÂrr rrrrrÚtest_divide_by_zero‰s  z?TestDivisionIntegerOverflowsAndDivideByZero.test_divide_by_zeroÚdividend_dtyper•Ú divisor_dtypeÚ    operationÚwarnrôc    
s–‡fdd„tddƒDƒ}tjdg|d}t ˆ¡jt |¡jkr|tjtjtjfkrt    j
t dd8|ˆt  ˆ¡j ƒ|dƒƒ}||j| ˆ¡ksšt‚W5QRX|D]b}t    j
t ddJt |||ƒ¡ d    ¡}t |j| ˆ¡gt|ƒ¡ ¡}t||ƒW5QRXq¨n„|ˆt  ˆ¡j ƒ|dƒƒ}||j| ˆ¡ksBt‚|D]J}t |||ƒ¡ d    ¡}t |j| ˆ¡gt|ƒ¡ ¡}t||ƒqFdS)
Ncs(g|] }tjt ˆ¡jg|ˆd‘qS)rp)rrqrúrìrö©rwrrr«sÿÿzNTestDivisionIntegerOverflowsAndDivideByZero.test_overflows.<locals>.<listcomp>rér3rpzoverflow encountered inrÄÚf)rMrrqr)Úitemsizer rrÌÚfloordivrÈrqr/rúrìÚoverflow_resultsrhrÂÚflattenÚlenr ri)    rZrwrxryZarraysrøÚresultryZexpected_arrayrr{rÚtest_overflowssn
ÿÿ
ÿÿþþ ÿþ
ÿÿÿþ ÿ 
ÿÿÿz:TestDivisionIntegerOverflowsAndDivideByZero.test_overflowsN)r]r^r_rrgZhelper_lambdasrr!rbrÌr]rrr r€rÈrÍr5rrÎr8rurvrÏrür„rrrrrfUszÿûÿÿÿÿÿÿõ  ÿÿÿÿ rfc@seZdZdd„Zdd„ZdS)ÚTestCbrtcCstt t d¡d¡dƒdS)NçÀr0)r rÚcbrtÚfloat32rYrrrÚtest_cbrt_scalarßszTestCbrt.test_cbrt_scalarcCstt dddtjtj g¡}tt |d¡|ƒtt t tj¡¡ƒtt tj¡tjƒtt tj ¡tj ƒdS)NrLç@çÀr0)    rrqrr r‡rrr·rrårrrÚ    test_cbrtâs
zTestCbrt.test_cbrtN)r]r^r_r‰rŒrrrrr…Þsr…c@s\eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dS)Ú    TestPowercCsPt dddg¡}t|ddddgƒt|d|ƒt|ddddgƒ| ¡}|dC}t|dddgƒt|d    dd
d gƒt|d
dt d¡t d ¡gƒttjd ddD]F\}}}dd„|Dƒ}t|d
||dtj||dt|||dqªttj    d ddD]H\}}}dd„|Dƒ}t|d
||dtj||dt|||dqdS)NrLrŠç@rrr%ç@ç"@r3rjgUUUUUUÕ?r0Úunaryé ©r)rŠÚmax_sizecSsg|]}t |¡‘qSr©rbÚsqrtrörrrrúsz.TestPower.test_power_float.<locals>.<listcomp>r©rnrcSsg|]}t |¡‘qSrr•rörrrrs)
rrqrr…r rbr–rrˆrØ)rZrPržrnÚinprÚexprrrÚtest_power_floatìs2 þþzTestPower.test_power_floatc
sŒt dddg¡}t|ddddgƒt|d|ƒt|ddd    d
gƒt|d d d dgƒt|ddddgƒt|ddddgƒt|ddddgƒt|ddddgƒt|dt d¡t d¡t d¡gƒd|d d‰t|d ˆ‡fd!d"„d#Dƒƒd$d%„}tdtjƒtdtjƒfD]f}tj|gtjd&}tj    d'd(<||d|ƒ||d||ƒ||d |||ƒW5QRXq dS))Nry@@y@@rrLrr%yÀ@yÀ(@yÀ8@r0y&ÀÀyGÀ"@y@]ÀF@r1yÀ8ÀyÀ]À^Àyx€ÀuÀr3yš™™™™™É?š™™™™™Ù¿y;±;±Ã?žØ‰Ø‰Í¿y¸…ëQ¸¾?{®GázÄ¿r4y¸…ëQ¸¾¿{®GázÄ¿y”n_Y½Kž¿&œq-²¿yǺ¸ð†¿a2U0*©£¿r5yºI +‡¶¿ü©ñÒMb?y:бb­p•¿Ô—|Çp¿yF–̱¼«~¿¢&ú|”g¿rjécsg|] }|ˆ‘qSrrrö©Znormrrrsz0TestPower.test_power_complex.<locals>.<listcomp>)y°©òÀ~Ï@y0žvA Õ΋AyãÌôA¥Þ]âAcSs t|j|jƒt|j|jƒdSr+)r rNÚimagr9rrrÚassert_complex_equalsz:TestPower.test_power_complex.<locals>.assert_complex_equalrprUrV)
rrqrr rbr–rrÚcomplex_rü)rZrPržr3rrœrÚtest_power_complexs2 ÿÿ ÿzTestPower.test_power_complexc    CsÂt dg¡}t dg¡}t ttjtjƒg¡}dd„}dD]}|t ||¡|ƒq:|t |d¡|ƒtjddH|t |d    ¡|ƒdD]}|t || ¡|ƒqˆ|t |d
¡|ƒW5QRXdS) Nyyð?cSs6t |¡t |¡}}t|j|jƒt|j|jƒdSr+)rrƒr rNrr9rrrrž-sz7TestPower.test_power_zero.<locals>.assert_complex_equal)    g…ëQ¸Õ?rjrçø?r%r0r1r2gffffff@rrUrVùð?y𿚙™™™™É?)rrqrr·Úpowerrü)rZrlÚoneÚcnanržÚprrrÚtest_power_zero%s  zTestPower.test_power_zerocCs†t dddgtj¡}|d}t|dj|jkƒt|dddgƒtt ||¡ ƒt|dddgƒ|t dggg¡}t|jdƒdS)    Nrr%r0rŠg9b->@r1é    )rrr0)    rrqÚint16rr)r Zmay_share_memoryrÚshape)rZrPr-rrrÚtest_fast_power@szTestPower.test_fast_powercCs.t ddgd¡}t ||¡}t|ddgƒdS)NéÚi8lïî2±X0)rrqr£r©rZryr«rrrÚtest_integer_powerMs zTestPower.test_integer_powercCsztjd}|D],}tjdd|d}tt |d¡t |¡ƒqtjd}|D]*}tjd|d}tt |d¡t |¡ƒqJdS)Nrprßr:rprr;©rr8rrr£Ú    ones_like©rZÚdtypesr0r‡rrrÚ-test_integer_power_with_integer_zero_exponentRs
 
z7TestPower.test_integer_power_with_integer_zero_exponentcCs>tjd}|D]*}tjd|d}tt d|¡t |¡ƒqdS)Nr?r:rprr°r²rrrÚtest_integer_power_of_1]s
z!TestPower.test_integer_power_of_1cCs@tjd}|D],}tjdd|d}tt d|¡t |¡ƒqdS)Nr?rr:rpr)rr8rrr£Ú
zeros_liker²rrrÚtest_integer_power_of_zerocs
z$TestPower.test_integer_power_of_zerocCs tjd}|D]Œ}tjddddg|d}tjddddg|d}tjd|d}tjd|d}tttj||ƒtttj||ƒtttj||ƒtttj||ƒqdS)    Nrprrr%r0rpr5r3)rr8rqr    rwr£)rZr³r0ryr«r¤ZminusonerrrÚtest_integer_to_negative_poweris
z(TestPower.test_integer_to_negative_powerc Cs tjtjfD]Ž}t ddddddtjtj g|¡}t tjtj tjtj tjtj tjtj g|¡}t ddtjdtjdtjdg|¡}tt ||¡|ƒq dS)Nrr%r4r)rrˆrØrqrrr£)rZr0ryr«r{rrrÚtest_float_to_inf_powerus"ÿÿ"z!TestPower.test_float_to_inf_powerN) r]r^r_ršr r§r«r¯r´rµr·r¸r¹rrrrrës   rc@seZdZdd„ZdS)ÚTestFloat_powercCs`d}d}t||ƒD]H\}}d||f}tjd|d}t ||¡}t|jjt |¡jk|ƒqdS)Nz?bhilBHILefdgFDGZddddddddddddgDDGzdtin: %s, dtout: %srrp)rªrr-Z float_powerrr)Úname)rZZarg_typeZres_typeZdtinZdtoutrrPr-rrrÚtest_type_conversions  z$TestFloat_power.test_type_conversionN)r]r^r_r¼rrrrrº~srºc@s\eZdZej ddddg¡dd„ƒZej dedd    ƒ¡d
d „ƒZejj    e
d d dd„ƒZ dS)ÚTestLog2r0r}r|Úgc Csdddddddddd    d
d g }d ddd dddddddg }tj||d}tj||d}tt |¡|ƒdS)Nrr%r1ééé é@rHééérr0r2érr¨r:rp)rrqr Úlog2©rZr0rPržÚxfÚyfrrrÚtest_log2_valuesŠs
zTestLog2.test_log2_valuesr÷réAcCs(t d|¡}t|t|ƒd|ddS)NrŠzat exponent %dr)rrÇrr–)rZr÷ÚvrrrÚtest_log2_ints’szTestLog2.test_log2_intsrçrèc    CsÚtt d¡dƒtt tj¡tjƒtt t tj¡¡ƒtjddŠ}t     ddt
¡tt t d¡¡ƒtt t tj ¡¡ƒtt d¡tj ƒt|dj t
kƒt|d    j t
kƒt|d
j t
kƒW5QRXdS) NrLrT)ÚrecordÚalwaysÚçð¿rrr%) rrrÇrrrr·ÚwarningsÚcatch_warningsÚfilterwarningsr/Úcategory)rZÚwrrrÚtest_log2_special™szTestLog2.test_log2_specialN) r]r^r_rÈrÍrÎrËrMrÎr5rrØrrrrr½‰s 
 
r½c@seZdZdd„ZdS)ÚTestExp2c Csnddddddddd    d
d g }d ddd dddddddg }dD]0}tj||d}tj||d}tt |¡|ƒq8dS)Nrr%r1r¿rÀrÁrÂrHrÃrÄrÅrr0r2rÆrr¨r:©r}r|r¾rp)rrqr Úexp2©rZrPržr0rÉrÊrrrÚtest_exp2_valuesªs zTestExp2.test_exp2_valuesN)r]r^r_rÝrrrrrÙ©srÙc@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) ÚTestLogAddExp2c    Cs dddddg}dddddg}dddddg}tddd    gdd
d
gƒD]Z\}}t tj||d ¡}t tj||d ¡}t tj||d ¡}tt ||¡||d q@dS© Nrr%r0r1r2rÆr}r|r¾r¬rp©Údecimal)rªrrÇrqr Ú
logaddexp2©    rZrPržr3r0Údec_rÉrÊÚzfrrrÚtest_logaddexp2_valuesµsz%TestLogAddExp2.test_logaddexp2_valuescCsnddddg}ddddg}ddddg}dD]@}tj||d}tj||d}tj||d}tt ||¡|ƒq(dS©Né@BiÀ½ðÿiCiø¼ðÿrÚrp)rrqr râ©rZrPržr3r0ÚlogxfÚlogyfÚlogzfrrrÚtest_logaddexp2_range¿s   z$TestLogAddExp2.test_logaddexp2_rangec        Cs²tj}|| || |d| dg}||| | d|d| g}|||| ||ddg}tjddLdD]@}tj||d}tj||d}tj||d}tt ||¡|ƒqbW5QRXdS©NrrùrVrÚrp)rrrürqrrâ©    rZrrPržr3r0rêrërìrrrÚtest_infÉszTestLogAddExp2.test_infcCs‚tt t tjtj¡¡ƒtt t tjtj¡¡ƒtt t tjd¡¡ƒtt t dtj¡¡ƒtt t tjtj¡¡ƒdSrj)rrrrâr·rrYrrrÚtest_nanÕs
zTestLogAddExp2.test_nancCsbttjjtj ƒttj g¡tj ƒttj tj g¡tj ƒttj tj dg¡dƒdSrj)rrrâÚidentityrrrYrrrÚ test_reduceÜszTestLogAddExp2.test_reduceN)r]r^r_rærírðrñrórrrrrÞ³s
 
 
 rÞc@seZdZdd„Zdd„ZdS)ÚTestLogc Csàddddddddd    d
d g }d ddd dddddddg }dD]8}d}tj||d}tj||d|}tt |¡|ƒq8t ddd ddg¡}t |¡}ttj||d|ƒdD]2}tjddt |¡j}t |¡W5QRXq¨dS)Nrr%r1r¿rÀrÁrÂrHrÃrÄrÅrr0r2rÆrr¨r:rÚçï9úþB.æ?rpgî?gR¸…ëQî?gl#ö    àð?r—rùr&)rrqr Úlogrür[Úmax©rZrPržr0Zlog2_rÉrÊrrrÚtest_log_valuesäs
 zTestLog.test_log_valuesc    
CsÜtj d¡t dddddddd    g¡}t dd
¡}|D] }t tjjd d |d ¡}| ¡}d|ddd    …<t |¡}t |¡}|D]T}t    t |dd|…¡|dd|…ddt    t |dd|…¡|dd|…ddq€q6dS)Né*r6r5r4r3rr%r0r1rÝç{®Gáz„?çY@r™rL©Znulp)
rr¤ÚseedrqrrØÚuniformr…rör)    rZÚstridesÚsizesÚiiÚx_f64Z    x_specialÚy_trueZ    y_specialÚjjrrrÚtest_log_stridesøs  
 
(zTestLog.test_log_stridesN)r]r^r_rùrrrrrrôãsrôc@seZdZdd„Zdd„ZdS)ÚTestExpc Csvddddddddd    d
d g }d ddd dddddddg }dD]8}d}tj||d}tj||d|}tt |¡|ƒq8dS)Nrr%r1r¿rÀrÁrÂrHrÃrÄrÅrr0r2rÆrr¨r:rÚrõrp)rrqr r™rørrrÚtest_exp_valuesszTestExp.test_exp_valuesc
Cs”tj d¡t dddddddd    g¡}t dd
¡}|D]X}t tjjd d |d ¡}t |¡}|D],}tt |dd|…¡|dd|…ddq`q6dS)Nrúr6r5r4r3rr%r0r1rÝrûgÍÌÌÌÌ(†@r™rý)    rr¤rþrqrrØrÿr™r)rZrrrrrrrrrÚtest_exp_stridess  
zTestExp.test_exp_stridesN)r]r^r_rr    rrrrrs    rc#@säeZdZdd„Zejjedƒdddd„ƒZejj    e
ddd    d
„ƒZ ejj    e
ddd d „ƒZ ej  d ddddg¡dd„ƒZdd„Zejj    e
dddd„ƒZejj    e
dddd„ƒZejj    e
dddd„ƒZejj    e
dddd„ƒZdd„Zejj    e
ddd d!„ƒZejj    e
ddd"d#„ƒZd$d%„Zd&d'„Zejj    e
ddd(d)„ƒZejj    e
ddd*d+„ƒZejjedƒddd,d-„ƒZejj    e
ddd.d/„ƒZejejej ej!ej"ej#ej$gZ%ej&ej'ej(ej)ej*ej+ej$gZ,ej$gZ-ej+gZ.ej&ej'ej(ej/ej+gZ0ej  d0e1¡ej  d1d2¡ej  d3d4ge.fd4gd5e.fd6ge,fd6gd5e,fd7ge-fd7gd5e-fd8ge0fd8gd5e0fd9ge0fd9gd5e0fd:d:d:ej2ge.fd:d:d:ej2gd5e.fej2d7d7d7ge-fej2d7d7d7gd5e-fej2ggfej2gd5gfd:d:d:ej3ge%e.fd:d:d:ej3gd5e%e.fej3d7d7d7ge%fej3d7d7d7gd5e%fej3ge%fej3gd5e%fd:d:d:ej3 ge,e%e.fd:d:d:ej3 gd5e,e%e.fej3 d7d7d7ge,e%fej3 d7d7d7gd5e,e%fej3 ge,e%fej3 gd5e,e%ff¡d;d<„ƒƒƒZ4d=S)>ÚTestSpecialFloatsc    Cs~tjdddftjtjtjdg}tjtj tjtj g}dD]0}tj||d}tj||d}tt |¡|ƒq>W5QRXdS)Nrù)Úunderrõr©rer}r|r¾rp)rrür·rrqrr™rÜrrrrsz!TestSpecialFloats.test_exp_valuesú2.17z<Older glibc versions may not raise appropriate FP exceptionsrèc    Csütjddjtttjt d¡ƒtttjt d¡ƒtttjt d¡ƒtttjt d¡ƒtttjt d¡ƒW5QRXtjddjtttjt d¡ƒtttjt d    ¡ƒtttjt d
¡ƒtttjt d    ¡ƒtttjt d
¡ƒW5QRXdS) Nrù©rõg Òo_.&@rüg=‘`äXáCg‰@)r g€1Àg@Àg=‘`äXáÃ)rrür    rþr™Úfloat16rˆrØrYrrrÚtest_exp_exceptions%sz%TestSpecialFloats.test_exp_exceptionsrçc        Cs†tjddÐtjtjtjtjtj tjg}tjtj tjtj ddg}tjtj tjtj ddg}dD]n}tj||d}tj||d}tj||d}tt |¡|ƒtt |¡|ƒtt |¡|ƒtt     |¡|ƒqhW5QRXtjdd    pd
D]d}t
t tjtjd|dƒt
t tjtjd|dƒt
t tjtjd|dƒt
t tj    tjd|dƒqôW5QRXtjdd âd
D]Ö}t
t tjtjtj |dƒt
t tjtjd|dƒt
t tjtjtj |dƒt
t tjtjd|dƒt
t tjtjtj |dƒt
t tjtjd|dƒt
t tj    tjtj |dƒt
t tj    tjd|dƒqvW5QRXt ƒtjd d d}t |¡W5QRXdS)NrUr&rrÒçÀr rprùrñ©rer}r|rVgeÍÍArˆ) rrür·rrqrrörÇÚlog10Úlog1pr    rþr)    rZrPržZy1pr0rÉrÊZyf1pryrrrrù8sn ÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿz!TestSpecialFloats.test_log_valuesc Csîtjddxtjtjtjtjg}tjtj tjtj g}dD]@}tj||d}tj||d}tt |¡|ƒtt |¡|ƒq>W5QRXtjddNtjtjfD]:}tjtj fD]&}dD]}tt    |tj|g|dƒq¾q¶q¤W5QRXdS)NrUr&r rprùrVr)
rrür·rrqrÚsinÚcosr    rþ)rZrPržr0rÉrÊÚcallableÚvaluerrrÚtest_sincos_valuesjsÿz$TestSpecialFloats.test_sincos_valuesr0rer}r|r¾c    Csxtjddbtjtjtjtjdg}tjtj tjtj dg}tj||d}tj||d}tt |¡|ƒW5QRXdS)NrUr&rrp)rrür·rrqrr–rÈrrrÚtest_sqrt_values}s z"TestSpecialFloats.test_sqrt_valuescCsvtjtjtjtjddddg}tjtj tjtj ddddg}dD]0}tj||d}tj||d}tt |¡|ƒq@dS)NrrLrKrÒr rp)rr·rrqrrOrÜrrrÚtest_abs_values‹s  z!TestSpecialFloats.test_abs_valuesc    CsÞtjtjtjtjg}tjtj tjtj g}tjdd<dD]0}tj||d}tj||d}tt |¡|ƒq>W5QRXtjddNtttjtjdddƒtttjtjd    d
dƒtttjtjd d dƒW5QRXdS) NrUr&r rprùrç@@regnµµ¸“Fr}gZb××çtir|)    rr·rrürqrÚsquarer    rþrÜrrrÚtest_square_values“s" ÿ ÿ ÿz$TestSpecialFloats.test_square_valuesc    CsÂtjddrtjtjddtjtj g}tjtj tjtj ddg}dD]0}tj||d}tj||d}tt |¡|ƒqHW5QRXtjdd(dD]}tttjtjd|dƒq–W5QRXdS)    NrUr&rrKr rprùrñ)    rrür·rrqrÚ
reciprocalr    rþrÜrrrÚtest_reciprocal_values¥s ÿz(TestSpecialFloats.test_reciprocal_valuesc    CsÞtjddptjtj ddtjtj g}tjtjddtjtjg}dD]0}tj||d}tj||d}tt |¡|ƒqFW5QRXtjddFdD]:}tttjtjtj|dƒtttjtjtj |dƒq”W5QRXdS)    NrUr&rrKrrprùrV)    rrür·rrqrÚtanr    rþ©rZÚin_rnr0Úin_arrÚout_arrrrrÚtest_tan´sÿÿzTestSpecialFloats.test_tanc Csðtjddxtjtj tjtj g}tjtjtjtjg}dD]@}tj||d}tj||d}tt |¡|ƒtt |¡|ƒq>W5QRXtjtjfD]T}tjtj ddfD]<}dD]2}tjddtt    |tj||dƒW5QRXq´q¬q–dS)    NrUr&rrprŠrrùrV)
rrür·rrqrÚarcsinÚarccosr    rþ)rZr#rnr0r$r%rrrrrÚtest_arcsincosÅs ÿz TestSpecialFloats.test_arcsincosc    CsltjddVtjtj g}tjtjg}dD]0}tj||d}tj||d}tt |¡|ƒq,W5QRXdS)NrUr&rrp)rrür·rqrÚarctanr"rrrÚ test_arctan×s zTestSpecialFloats.test_arctanc    CsÈtjtj tjtj g}tjtjtjtj g}dD]0}tj||d}tj||d}tt |¡|ƒq2tjddNtttjtjdddƒtttjtjdddƒtttjtjd    d
dƒW5QRXdS© Nrrprùrç(@reg^@r}gÀ’@r|)    rr·rrqrÚsinhrür    rþr"rrrÚ    test_sinhàs  ÿ ÿ ÿzTestSpecialFloats.test_sinhc    CsÆtjtj tjtj g}tjtjtjtjg}dD]0}tj||d}tj||d}tt |¡|ƒq0tjddNtttjtjdddƒtttjtjdddƒtttjtjd    d
dƒW5QRXdSr,)    rr·rrqrÚcoshrür    rþr"rrrÚ    test_coshñs  ÿ ÿ ÿzTestSpecialFloats.test_coshcCsbtjtj tjtj g}tjtjddg}dD]0}tj||d}tj||d}tt |¡|ƒq,dS)NrLrÒrrp)rr·rrqrÚtanhr"rrrÚ    test_tanhs zTestSpecialFloats.test_tanhcCshtjtj tjtj g}tjtjtjtj g}dD]0}tj||d}tj||d}tt |¡|ƒq2dS)Nrrp)rr·rrqrrMr"rrrÚ test_arcsinh
s zTestSpecialFloats.test_arcsinhc
CsÔtjddrtjtj tjtj ddg}tjtjtjtjdtjg}dD]0}tj||d}tj||d}tt |¡|ƒqHW5QRXdtj fD]>}tjdd(dD]}tttjtj||dƒq¦W5QRXqdS)    NrUr&rLrrrprùrV)    rrür·rrqrÚarccoshr    rþ©rZr#rnr0r$r%rrrrÚ test_arccoshs ÿzTestSpecialFloats.test_arccoshc
Csètjdd|tjtj tjtj dddg}tjtjtjtjtjtj tjg}dD]0}tj||d}tj||d}tt |¡|ƒqRW5QRXdtjtj ddfD]@}tjd    d    d
(dD]}tttjtj||dƒqºW5QRXq¢dS) NrUr&rLrÒrŠrrpg)\Âõ(ð?rùr)    rrür·rrqrÚarctanhr    rþr6rrrÚ test_arctanh"s" ÿzTestSpecialFloats.test_arctanhc
CsÂtjddftjtj tjtj g}tjtjtjdg}dD]0}tj||d}tj||d}tt |¡|ƒq<W5QRXdD]@}tjddd(dD]}tttjtj||dƒq”W5QRXq|dS)    NrUr&rrrp)ç@Ÿ@g@ŸÀrù)rõr )    rrür·rrqrrÛr    rþr6rrrÚ    test_exp23s ÿzTestSpecialFloats.test_exp2c
CsÀtjddftjtj tjtj g}tjtjtjdg}dD]0}tj||d}tj||d}tt |¡|ƒq<W5QRXdD]>}tjdd(d    D]}tttjtj||dƒq’W5QRXq|dS)
NrUr&rÒrrp)gi@r:rùr)rer})    rrür·rrqrÚexpm1r    rþr6rrrÚ
test_expm1Fs ÿzTestSpecialFloats.test_expm1rr)rz data, escapeg¸…ëQ¸ž?rÁrÒrLrrKrjc    CsX|r||krdS|tjtjfkr,|dkr,dStj||d}tƒ||ƒW5QRXdS)Nrerp)rÚspacingÚceilrqr)rZrr)ÚdataÚescaperqrrrÚtest_unary_spurious_fpexceptionhs) z1TestSpecialFloats.test_unary_spurious_fpexceptionN)5r]r^r_rrÈrÍrdrrr5rrùrrÎrrrr r&r)r+r/r1r3r4r7r9r;r=rrrr!r(r'r>r8ZINF_INVALID_ERRrörÇrrr–r5ZNEG_INVALID_ERRZONE_INVALID_ERRZLTONE_INVALID_ERRrZ
BYZERO_ERRÚUFUNCS_UNARY_FPr·rrBrrrrr
sÌ
þ
 
1
 
 
 
 
 
    
 
 
 
þ
 
ÿþÿÿÿ       
 
 
ÿ
ÿÜ&r
c    @s.eZdZej dddddddg¡dd    „ƒZd
S) Ú TestFPClassrAr6r4r3rr%r1c Csøtjtjtj tjtj ddddddg
dd}tjtjtj tjtj ddddd    d
g
d d}t d d d d d d d d d d g
¡}t d d d d d d d d d d g
¡}t d d d d d d d d d d g
¡}t d d d d d d d d d d g
¡}tt |dd|…¡|dd|…ƒtt |dd|…¡|dd|…ƒtt |dd|…¡|dd|…ƒtt |dd|…¡|dd|…ƒtt |dd|…¡|dd|…ƒtt |dd|…¡|dd|…ƒtt |dd|…¡|dd|…ƒtt |dd|…¡|dd|…ƒdS)NrÒrLrKrgiV½Q giV½Q €r|rpg¶J-& 6g¶J-& ¶r}TF)    rrqr·rrrrr#Úisfinite)rZrAZarr_f64Zarr_f32r·rÚsignZfiniterrrÚ test_fpclasss..$$$$$$$zTestFPClass.test_fpclassN)r]r^r_rÈrÍrÎrGrrrrrDœsrDc    @s@eZdZej dddddddg¡ej dd    d
g¡d d „ƒƒZd S)Ú    TestLDExprAr6r4r3rr%r1r)r}r|c    Cs¾tjddddddddg|d}tjd    d
d d d d ddgdd}tjd|d}ttj|dd|…|dd|…|dd|…dtjd|ddd|…ƒt|dd|…tjd|ddd|…ƒdS)NgÀ?çÐ?rjrLrŠrg @rpr0r%rrr3r4r5r÷r¿r—)rrqr×rÚldexpr-)rZr)rAÚmantr™rnrrrÚ
test_ldexp¯s
HzTestLDExp.test_ldexpN)r]r^r_rÈrÍrÎrLrrrrrH®srHc    @sZeZdZej dddddddg¡ej dd    d
g¡ejjej     d ¡ d d dd„ƒƒƒZ
dS)Ú    TestFRExprAr6r4r3rr%r1r)r}r|ÚlinuxzAnp.frexp gives different answers for NAN/INF on windows and linuxrèc
    Cs*tjtjtjtjtj ddddg|d}tjtjtjtjtj ddddg|d}tjddddddd    d    gd
d}tjd |d}d tjd d
d}tj|dd|…|dd|…|dd|…fd \}}    t|dd|…|ƒt|dd|…|    ƒt|dd|…|dd|…ƒt|dd|…|dd|…ƒdS)NrrKrLrÒrprjçà¿rrr÷r¿r%r—)rrqr·rr-rur)
rZr)rAr‡Z    mant_trueÚexp_trueZout_mantZout_exprKr™rrrÚ
test_frexp¹s((4zTestFRExp.test_frexpN) r]r^r_rÈrÍrÎr5rerFrIrQrrrrrM¸s ÿrMrrrüçYÀrL)r–ÚabsoluterrÚrintÚfloorr?Útruncc@seZdZdd„ZdS)Ú TestAVXUfuncsc
Cspt ddddddddg¡}tj d    ¡t ¡D]:\}}|d
}|d}|d}tdd ƒD] }tt|ƒ}t tjj    |||d ¡}    t 
|    ¡}
t  |    ¡} || ƒ} |d
krÐt ||    ƒt | ¡ƒt ||
ƒt 
| ¡ƒn0t ||    ƒt | ¡|d t ||
ƒt 
| ¡|d |dkrZ||    ƒ} ||
ƒ}|D]J}t ||
dd|…ƒ|dd|…ƒt ||    dd|…ƒ| dd|…ƒqqZq.dS)Nr6r5r4r3rr%r0r1rúrrÁr™©Zmaxulp)rrqr¤rþÚ
avx_ufuncsÚitemsrMÚgetattrrˆrÿrØÚ
longdoublerr)rZrÚfuncÚpropZ    maxulperrÚminvalÚmaxvalr˜ZmyfuncÚx_f32rZx_f128Z    y_true128Zy_true32Zy_true64rrrrÚtest_avx_based_ufuncÔs: 
ÿ
 
ÿÿ"z"TestAVXUfuncs.test_avx_based_ufuncN)r]r^r_rbrrrrrWÓsrWc@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
ÚTestAVXFloat32TranscendentalcCsRtj d¡t tjjdddd¡}t |¡}tt |¡t t |¡¡dddS)NrúrçfffffV@rèr™r0rX)rr¤rþrˆrÿrØrr™©rZrarrrrÚtest_exp_float32ôs 
z-TestAVXFloat32Transcendental.test_exp_float32cCsRtj d¡t tjjdddd¡}t |¡}tt |¡t t |¡¡dddS)Nrúrr—rèr™r1rX)rr¤rþrˆrÿrØrrörerrrÚtest_log_float32ús 
z-TestAVXFloat32Transcendental.test_log_float32cCstj d¡d}t |d¡}tjjd||d}t tjjdd|d¡}tdƒsjt d    tj |¡¡||<t     |¡}t
t  |¡t t  |¡¡d
d t
t  |¡t t  |¡¡d
d |  ¡}t
tj ||d t t  |¡¡d
d t
tj ||d t t  |¡¡d
d dS) Nrúrèérr™rRrür gèvH7Br%rXr—)rr¤rþÚint_r¦rˆrÿrZrandrØrrrr…)rZÚNr ÚindexrarZtx_f32rrrÚtest_sincos_float32s 
  $z0TestAVXFloat32Transcendental.test_sincos_float32c
CsBtj d¡t dddddddd    g¡}t dd
¡}|D]}t tjjd d |d ¡}| ¡}d|ddd    …<t |¡}t     |¡}t 
|¡}t  |¡}    |D]¤}
t t |dd|
…¡|dd|
…ddt t     |dd|
…¡|dd|
…ddt t 
|dd|
…¡|dd|
…ddt t  |dd|
…¡|    dd|
…ddq–q6dS)Nrúr6r5r4r3rr%r0r1rÝrûrdr™gLý@rý) rr¤rþrqrrˆrÿr…r™rörrr) rZrrrraZ x_f32_largerPZlog_trueZsin_trueZcos_truerrrrÚtest_strided_float32s   
 
 
 
 
(((z1TestAVXFloat32Transcendental.test_strided_float32N)r]r^r_rfrgrlrmrrrrrcósrcc@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) Ú TestLogAddExpc    Cs dddddg}dddddg}dddddg}tddd    gdd
d
gƒD]Z\}}t tj||d ¡}t tj||d ¡}t tj||d ¡}tt ||¡||d q@dSrß)rªrrörqr Ú    logaddexprãrrrÚtest_logaddexp_values%sz#TestLogAddExp.test_logaddexp_valuescCsnddddg}ddddg}ddddg}dD]@}tj||d}tj||d}tj||d}tt ||¡|ƒq(dSrç)rrqr rorérrrÚtest_logaddexp_range/s   z"TestLogAddExp.test_logaddexp_rangec        Cs²tj}|| || |d| dg}||| | d|d| g}|||| ||ddg}tjddLdD]@}tj||d}tj||d}tj||d}tt ||¡|ƒqbW5QRXdSrî)rrrürqrrorïrrrrð9szTestLogAddExp.test_infcCs‚tt t tjtj¡¡ƒtt t tjtj¡¡ƒtt t tjd¡¡ƒtt t dtj¡¡ƒtt t tjtj¡¡ƒdSrj)rrrror·rrYrrrrñEs
zTestLogAddExp.test_nancCs,ttjjtj ƒttj g¡tj ƒdSr+)rrroròrrrYrrrróLszTestLogAddExp.test_reduceN)r]r^r_rprqrðrñrórrrrrn$s
 
 
 rnc@seZdZdd„Zdd„ZdS)Ú    TestLog1pcCs0tt d¡t d¡ƒtt d¡t d¡ƒdS)N皙™™™™É?g333333ó?çíµ ÷ư>g zo ð?)r rbrrörYrrrÚ
test_log1pRszTestLog1p.test_log1pc    Cs‚tjdddjtt tj¡tjƒtt tj¡tjƒtt d¡tj ƒtt d¡tjƒtt tj ¡tjƒW5QRXdS)NrUrrÒr)rrürrbrr·rrYrrrÚ test_specialVs zTestLog1p.test_specialN)r]r^r_rurvrrrrrrQsrrc@s$eZdZdd„Zdd„Zdd„ZdS)Ú    TestExpm1cCs8tt d¡t d¡dƒtt d¡t d¡dƒdS)Nrsrrt)r rbr<r™rYrrrr=`szTestExpm1.test_expm1cCs`tt tj¡tjƒtt d¡dƒtt d¡dƒtt tj¡tjƒtt tj ¡dƒdS)NrrKrÒ)rrbr<rrrYrrrrvds
zTestExpm1.test_specialcCs:t d¡}t|t |¡ƒ| tj¡}t|t |¡ƒdS)Ngê-™—q=)rrƒrrbr<r§rrårrrÚ test_complexks
 zTestExpm1.test_complexN)r]r^r_r=rvrxrrrrrw_srwc@seZdZdd„Zdd„ZdS)Ú    TestHypotcCs.tt dd¡t d¡ƒtt dd¡dƒdS©Nrr%r)r rbÚhypotr–rYrrrÚ test_simplesszTestHypot.test_simplecCs\ttj ddg¡dƒttj dddg¡dƒttj dddg¡dƒttj g¡d    ƒdS)
NrŽrç@rrr-ç4@g9@r)r rbr{rrrYrrrrówszTestHypot.test_reduceN)r]r^r_r|rórrrrryrsryc
CsFtjdd0tt t ||¡¡d||t ||¡fƒW5QRXdS)NrUrVzhypot(%s, %s) is %s, not nan)rrürrrbr{r9rrrÚassert_hypot_isnan~sÿrc
CsFtjdd0tt t ||¡¡d||t ||¡fƒW5QRXdS)NrUrVzhypot(%s, %s) is %s, not inf)rrürrrbr{r9rrrÚassert_hypot_isinf„sÿr€c@s$eZdZdd„Zdd„Zdd„ZdS)ÚTestHypotSpecialValuescCsttjtjƒttjdƒdS©Nr)rrr·rYrrrÚtest_nan_outputs‹sz'TestHypotSpecialValues.test_nan_outputscCsRttjtjƒttjtjƒttjdƒtdtjƒttjtjƒttjdƒdS)Nrg7@)r€rr·rrYrrrÚtest_nan_outputs2s   z(TestHypotSpecialValues.test_nan_outputs2cCsttjtjdƒdSrj)rrbr{rrrYrrrÚ test_no_fpe—sz"TestHypotSpecialValues.test_no_fpeN)r]r^r_rƒr„r…rrrrrŠsrc    Cs.tt t ||¡¡d||t ||¡fƒdS)Nzarctan(%s, %s) is %s, not nan)rrrrbÚarctan2r9rrrÚassert_arctan2_isnan›sr‡c    Cs>tt t ||¡¡o"t ||¡dkd||t ||¡fƒdS)Nrzarctan(%s, %s) is %s, not +inf©rrrrbr†r9rrrÚassert_arctan2_ispinfŸsr‰c    Cs>tt t ||¡¡o"t ||¡dkd||t ||¡fƒdS)Nrzarctan(%s, %s) is %s, not -infrˆr9rrrÚassert_arctan2_isninf£srŠc    Cs@tt ||¡dko$t t ||¡¡ d||t ||¡fƒdS)Nrzarctan(%s, %s) is %s, not +0©rrbr†rr#r9rrrÚassert_arctan2_ispzero§srŒc    Cs>tt ||¡dko"t t ||¡¡d||t ||¡fƒdS)Nrzarctan(%s, %s) is %s, not -0r‹r9rrrÚassert_arctan2_isnzero«src@steZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„ZdS)ÚTestArctan2SpecialValuescCsLtt dd¡dtjƒtt dd¡dtjƒtt dd¡dtjƒdS)NrrIr3çпçè?)r rbr†rrcrYrrrÚ test_one_one°sz%TestArctan2SpecialValues.test_one_onecCs6tt tjtj¡tjƒtt tjtj¡tj ƒdSr+)r rbr†rÚPZEROÚNZEROrcrYrrrÚtest_zero_nzero¶sz(TestArctan2SpecialValues.test_zero_nzerocCs ttjtjƒttjtjƒdSr+©rŒrr’rr“rYrrrÚtest_zero_pzero»sz(TestArctan2SpecialValues.test_zero_pzerocCs2tt tjd¡tjƒtt tjd¡tj ƒdS)Nr3©r rbr†rr’rcr“rYrrrÚtest_zero_negativeÀsz+TestArctan2SpecialValues.test_zero_negativecCsttjdƒttjdƒdSr‚r•rYrrrÚtest_zero_positiveÅs z+TestArctan2SpecialValues.test_zero_positivecCs8tt dtj¡dtjƒtt dtj¡dtjƒdS)Nrrjr—rYrrrÚtest_positive_zeroÊsz+TestArctan2SpecialValues.test_positive_zerocCs8tt dtj¡dtjƒtt dtj¡dtjƒdS)Nr3rOr—rYrrrÚtest_negative_zeroÏsz+TestArctan2SpecialValues.test_negative_zerocCs2tt dtj¡tjƒtt dtj¡tj ƒdS©Nrr3)r rbr†rZNINFrcrYrrrÚ test_any_ninfÔsz&TestArctan2SpecialValues.test_any_ninfcCstdtjƒtdtjƒdSrœ)rŒrrrrYrrrÚ test_any_pinfÙs z&TestArctan2SpecialValues.test_any_pinfcCs:tt tjd¡dtjƒtt tj d¡dtjƒdS)NrrjrO©r rbr†rrrcrYrrrÚ test_inf_anyÞsz%TestArctan2SpecialValues.test_inf_anycCsBtt tjtj ¡dtjƒtt tj tj ¡dtjƒdS)Nrgè¿rŸrYrrrÚ test_inf_ninfãsz&TestArctan2SpecialValues.test_inf_ninfcCs>tt tjtj¡dtjƒtt tj tj¡dtjƒdS)NrIrrŸrYrrrÚ test_inf_pinfèsz&TestArctan2SpecialValues.test_inf_pinfcCs.ttjtjƒttjtjƒttjtjƒdSr+)r‡rr·rrYrrrÚ test_nan_anyísz%TestArctan2SpecialValues.test_nan_anyN)r]r^r_r‘r”r–r˜r™ršr›rržr r¡r¢r£rrrrrޝsrŽc@s$eZdZdd„Zdd„Zdd„ZdS)Ú    TestLdexpcCsptt t dtj¡t d|¡¡dƒtt t dtj¡t d|¡¡dƒtt t dtj¡t d|¡¡dƒdS)NrŠr0ç0@)r rbrJrrqrˆrØr\)rZÚtprrrÚ _check_ldexpõs
ÿÿ
ÿÿ
ÿÿzTestLdexp._check_ldexpcCsNtt dd¡dƒ| tj¡| tj¡| tj¡| d¡| d¡dS)NrŠr0r¥r÷rÆ)r rbrJr§rÚint8r©rtrYrrrrLýs    
zTestLdexp.test_ldexpc    CsftjddPt t d¡¡j}t t d¡¡j}tt d|¡tj    ƒtt d|¡dƒW5QRXdS)NrUrrÆrŠr)
rrürúr)r÷rìrrbrJr)rZZimaxZiminrrrÚtest_ldexp_overflows
zTestLdexp.test_ldexp_overflowN)r]r^r_r§rLr©rrrrr¤ôs
r¤c@sLeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dS)Ú TestMaximumc    Csìtjd}tjd}t d¡}|ddd…}tjj}|D]4}| |¡}| |¡}t||ƒdƒt||ƒdƒq8|D]t}| |¡}| |¡}t||ƒdƒt||ƒdƒtj|ddd…<tj|ddd…<t||ƒtjƒt||ƒtjƒqrdS)NÚAllFloatr?r’r3r:r%)rr8rÚmaximumrr§rr·©    rZZdfltZdintZseq1Zseq2r]r0Ztmp1Ztmp2rrrrós&
 
 
 
 
 
 
zTestMaximum.test_reducecCs0ttj ddg¡dƒttj ddg¡dƒdS©Nrù@yð?@)rrr¬rrYrrrÚtest_reduce_complex&szTestMaximum.test_reduce_complexcCsLtj}t d||g¡}t |d|g¡}t |||g¡}tt ||¡|ƒdSrj)rr·rqrr¬©rZr·Úarg1Úarg2rnrrrÚtest_float_nans*s
zTestMaximum.test_float_nanscCs^tdƒD]P}t tdƒt¡}d}t tdƒt¡}tt ||¡dkƒtt ||¡dkƒqdS©Nrr·rL)rMrrqr–rµrr¬©rZr÷rPržr3rrrÚtest_object_nans1s  zTestMaximum.test_object_nanscCsztj}t|dƒtd|ƒt||ƒfD]R}tjd||gtd}tj|d|gtd}tj|||gtd}tt ||¡|ƒq"dS©Nrrp)rr·rrqrr¬©rZr·r¥r²r³rnrrrÚtest_complex_nans<s  zTestMaximum.test_complex_nanscCs,tjdtd}|d}tt ||¡|ƒdS©Nr2rpr)rrrµrr¬©rZr²r³rrrÚtest_object_arrayDszTestMaximum.test_object_arrayc
Cs„t ddddtjtj tjtj g¡}t ddtjddtjddg¡}t ddtjdtjtjtjdg¡}t d¡}t ddddddtjdg¡}tt ||¡|ƒtt |ddd    …|ddd    …¡|ddd    …ƒtt |dd
…|ddd    …¡t dtjddg¡ƒtt |ddd …|dd …¡t ddtjg¡ƒttj|dd d    …|ddd …|ddd …d t ddtjg¡ƒt||ƒdS©NgÀrLg$@rrrÒr‹r¿r%r1r0rÆr—)rrqr·rr-rr¬)rZr>r?ZmaxtruernZ out_maxtruerrrÚtest_strided_arrayIs&"
042BzTestMaximum.test_strided_arrayc Cs¾tjtjtjtjg}|D] }t |¡j}t |¡j}|dƒ}t |tj    ¡}|tj     |f|tj     |f|||f|tj
tj
fg}|D]8\}}    }
t t  |g|    g¡|
gƒt tj   ||    g¡|
ƒq~qdS©Nrá)rrrˆrØr\r[rìr÷rarr·rr¬r© rZr³r0ZdtminZdtmaxÚd1Zd1_nextZ
test_casesrQrRÚexpectedrrrÚtest_precisionVs     ûzTestMaximum.test_precisionN© r]r^r_rór°r´r·rºr½r¿rÄrrrrrªs  rªc@sLeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dS)Ú TestMinimumc    Csìtjd}tjd}t d¡}|ddd…}tjj}|D]4}| |¡}| |¡}t||ƒdƒt||ƒdƒq8|D]t}| |¡}| |¡}t||ƒdƒt||ƒdƒtj|ddd…<tj|ddd…<t||ƒtjƒt||ƒtjƒqrdS)Nr«r?r’r3rr%)rr8rÚminimumrr§rr·r­rrrróms&
 
 
 
 
 
 
zTestMinimum.test_reducecCs0ttj ddg¡dƒttj ddg¡dƒdSr®)rrrÇrrYrrrr°‚szTestMinimum.test_reduce_complexcCsLtj}t d||g¡}t |d|g¡}t |||g¡}tt ||¡|ƒdSrj)rr·rqrrÇr±rrrr´†s
zTestMinimum.test_float_nanscCs^tdƒD]P}t tdƒt¡}d}t tdƒt¡}tt ||¡dkƒtt ||¡dkƒqdSrµ)rMrrqr–rµrrÇr¶rrrr·s  zTestMinimum.test_object_nanscCsztj}t|dƒtd|ƒt||ƒfD]R}tjd||gtd}tj|d|gtd}tj|||gtd}tt ||¡|ƒq"dSr¸)rr·rrqrrÇr¹rrrrº˜s  zTestMinimum.test_complex_nanscCs,tjdtd}|d}tt ||¡|ƒdSr»)rrrµrrÇr¼rrrr½ szTestMinimum.test_object_arrayc
Cs†t ddddtjtj tjtj g¡}t ddtjddtjddg¡}t ddtjdtjtjdtj g¡}t d¡}t ddddddtjdg¡}tt ||¡|ƒtt |ddd    …|ddd    …¡|ddd    …ƒtt |dd
…|ddd    …¡t dtjddg¡ƒtt |ddd …|dd …¡t ddtjg¡ƒttj|dd d    …|ddd …|ddd …d t ddtjg¡ƒt||ƒdSr¾)rrqr·rr-rrÇ)rZr>r?ZmintruernZ out_mintruerrrr¿¥s&$
042BzTestMinimum.test_strided_arrayc Csºtjtjtjtjg}|D]œ}t |¡j}t |¡j}|dƒ}t |tj    ¡}|tj    |f|tj    |f|||f|tj
tj
fg}|D]8\}}    }
t t  |g|    g¡|
gƒt tj   ||    g¡|
ƒqzqdSrÀ)rrrˆrØr\r[rìr÷rarr·rrÇrrÁrrrrIJs  
 
 ûzTestMinimum.test_precisionNrÅrrrrrÆls  rÆc@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) ÚTestFmaxc    Csètjd}tjd}t d¡}|ddd…}tjj}|D]4}| |¡}| |¡}t||ƒdƒt||ƒdƒq8|D]p}| |¡}| |¡}t||ƒdƒt||ƒdƒtj|ddd…<tj|ddd…<t||ƒdƒt||ƒdƒqrdS)Nr«r?r’r3r:r%r¨)rr8rÚfmaxrr§rr·r­rrrróÉs&
 
 
 
 
 
 
zTestFmax.test_reducecCs0ttj ddg¡dƒttj ddg¡dƒdSr®)rrrÉrrYrrrr°ÞszTestFmax.test_reduce_complexcCsLtj}t d||g¡}t |d|g¡}t dd|g¡}tt ||¡|ƒdSrj)rr·rqrrÉr±rrrr´âs
zTestFmax.test_float_nanscCsztj}t|dƒtd|ƒt||ƒfD]R}tjd||gtd}tj|d|gtd}tjdd|gtd}tt ||¡|ƒq"dSr¸)rr·rrqrrÉr¹rrrrºés  zTestFmax.test_complex_nansc Cs¼tjtjtjtjg}|D]ž}t |¡j}t |¡j}|dƒ}t |tj    ¡}|tj     |f|tj     |f|||f|tj
|fg}|D]8\}}    }
t t  |g|    g¡|
gƒt tj   ||    g¡|
ƒq|qdSrÀ)rrrˆrØr\r[rìr÷rarr·rrÉrrÁrrrrÄñs    
ûzTestFmax.test_precisionN©r]r^r_rór°r´rºrÄrrrrrÈÈs
rÈc@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) ÚTestFminc    Csètjd}tjd}t d¡}|ddd…}tjj}|D]4}| |¡}| |¡}t||ƒdƒt||ƒdƒq8|D]p}| |¡}| |¡}t||ƒdƒt||ƒdƒtj|ddd…<tj|ddd…<t||ƒdƒt||ƒdƒqrdS)Nr«r?r’r3rr%r)rr8rÚfminrr§rr·r­rrrró    s&
 
 
 
 
 
 
zTestFmin.test_reducecCs0ttj ddg¡dƒttj ddg¡dƒdSr®)rrrÌrrYrrrr°    szTestFmin.test_reduce_complexcCsLtj}t d||g¡}t |d|g¡}t dd|g¡}tt ||¡|ƒdSrj)rr·rqrrÌr±rrrr´!    s
zTestFmin.test_float_nanscCsztj}t|dƒtd|ƒt||ƒfD]R}tjd||gtd}tj|d|gtd}tjdd|gtd}tt ||¡|ƒq"dSr¸)rr·rrqrrÌr¹rrrrº(    s  zTestFmin.test_complex_nansc Cs¸tjtjtjtjg}|D]š}t |¡j}t |¡j}|dƒ}t |tj    ¡}|tj    |f|tj    |f|||f|tj
|fg}|D]8\}}    }
t t  |g|    g¡|
gƒt tj   ||    g¡|
ƒqxqdSrÀ)rrrˆrØr\r[rìr÷rarr·rrÌrrÁrrrrÄ0    s  
 
 
ûzTestFmin.test_precisionNrÊrrrrrË    s
rËc@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
ÚTestBoolcCs@tjdtjd}tttj|ƒtttj|ƒtttj||ƒdS)Nrrp)rr-r£r    rvÚnegativeÚpositiveÚsubtractr¾rrrÚtest_exceptionsG    szTestBool.test_exceptionsc    Csþddddg}ddddg}tjdtjdd}ttj|ƒD]¼}tj||d}tj||d}d    d
d
d
g}tjtjfD]}t|||ƒ t    ¡|ƒqtd    d    d    d
g}tj
tj fD]}t|||ƒ t    ¡|ƒq¨d    d
d
d    g}tj tj fD]}t|||ƒ t    ¡|ƒqÜq<dS) Nrr0r%r1r«r?ú?rpFT)rr8Úmapr)rƒÚ
logical_orr¬rr§r½Ú logical_andrÇÚ logical_xorr»)    rZZinput1Zinput2r8r)r²r³rnr]rrrÚtest_truth_table_logicalM    s&  ÿþ   z!TestBool.test_truth_table_logicalcCsvddddg}ddddg}ddddg}tt ||¡|ƒddddg}tt ||¡|ƒddddg}tt ||¡|ƒdS)NFT)rrÚ
bitwise_orÚ bitwise_andÚ bitwise_xor)rZr²r³rnrrrÚtest_truth_table_bitwisef    s     z!TestBool.test_truth_table_bitwisecCsÀt ddddgt¡}t ddddgt¡}t ddddgt¡}t gt¡}||||g}|D]}ttj |¡t|ƒƒqX|D]}ttj |¡t|ƒƒqx|D]"}ttj     |¡| 
¡ddkƒq˜dS)Nrrr%) rrqr½rrÕrrýrÔÚanyrÖrÙ)rZÚnoneZsomeZeveryrrZarrsr‡rrrrós    s  zTestBool.test_reduceN)r]r^r_rÑr×rÛrórrrrrÍF    s rÍc@s:eZdZdd„dDƒZdd„Zdd„Zdd    „Zd
d „Zd S) ÚTestBitwiseUFuncscCsg|]}t |¡‘qSr)rr))rÚcrrrr‡    szTestBitwiseUFuncs.<listcomp>z ?bBhHiIlLqQOcCsn|jD]`}tjdg|d}t dg¡ |¡}d|j}tt |¡||dtt |¡||dtt ||¡||dtt ||¡||dtt ||¡||dtt ||¡||dtt ||¡||dtt ||¡||dtt ||¡||dtt ||¡||dtt     ||¡||dtt     ||¡||dtt     ||¡||dtt     ||¡||dqdS)Nrrpr3ú    dt = '%s'r)
Ú bitwise_typesrrqr§ÚcharrÚ bitwise_notrØrÚrÙ©rZr0r×r-rrrrÚ test_values‰    s$ 
zTestBitwiseUFuncs.test_valuescCsš|jD]Ž}tjdg|d}t dg¡ |¡}d|j}tt |¡j|k|ƒtt ||¡j|k|ƒtt     ||¡j|k|ƒtt 
||¡j|k|ƒqdS)Nrrpr3rà) rárrqr§rârrãr)rØrÚrÙrärrrÚ
test_types¡    s
 
zTestBitwiseUFuncs.test_typescCs:ttjjdkdƒttjjdkdƒttjjdkdƒdS)NrrØrÚr3rÙ)rrrØròrÚrÙrYrrrÚ test_identity¬    szTestBitwiseUFuncs.test_identityc Csrtjtjtjf}|jD]d}tjdg|d}t dg¡ |¡}|D]8}d||f}t| |¡||dt| |¡||dq@q|jdd…D]d}tjg|d}|D]L}d||f}t |j    ¡ |¡}| |¡}    t|    ||dt
|    j |j k|ƒq qŠ|D]:}d|f}tjgt d}|j    }| |¡}    t|    ||dqô|D]8}d|f}tjdgt d}
t
t | |
¡ƒtk|ƒq4dS)Nrrpr3zdt: '%s', f: '%s'rzdt: '%s'T)rrØrÚrÙrárqr§rrròrr)rµrŠr½) rZZ binary_funcsr0r×r-r}rrrrQr-ZbtyperrrÚtest_reduction±    s4
 
 
 
 
z TestBitwiseUFuncs.test_reductionN)r]r^r_rárårærçrèrrrrrÞ…    s
 rÞc@seZdZdd„ZdS)ÚTestIntcCsdtjdtjd}tjdtd}| ¡}d|ddd…<|ddd…}ttj||ddƒt||ƒdS)Nr:rprhFr%r—)rr-r©r½r…r Z logical_not)rZrPrzrQÚosrrrÚtest_logical_notÚ    szTestInt.test_logical_notN)r]r^r_rërrrrréÙ    sréc@seZdZdd„ZdS)ÚTestFloatingPointcCsttjdƒdSr‚)rrbZFLOATING_POINT_SUPPORTrYrrrÚtest_floating_pointå    sz%TestFloatingPoint.test_floating_pointN)r]r^r_rírrrrrìä    srìc@seZdZdd„ZdS)Ú TestDegreescCs,tt tj¡dƒtt dtj¡dƒdS)Nç€f@rOç€VÀ)r rbÚdegreesrrcrYrrrÚ test_degreesê    szTestDegrees.test_degreesN)r]r^r_ròrrrrrîé    srîc@seZdZdd„ZdS)Ú TestRadianscCs,tt d¡tjƒtt d¡dtjƒdS)NrïrðrO)r rbÚradiansrrcrYrrrÚ test_radiansð    szTestRadians.test_radiansN)r]r^r_rõrrrrróï    sróc@seZdZdd„ZdS)Ú TestHeavsidecCsÚt ddddgdtjtjtj gg¡}t ddddgdtjddgg¡}| ¡}d|d    <t |d¡}t||ƒt |d¡}t||ƒ| tj    ¡}t |t     d¡¡}t|| tj    ¡ƒt |t     d¡¡}t|| tj    ¡ƒdS)
Ng>Àrârrsg@rjrLr©rr%)
rrqr·rr…rbZ    heavisiderr§rˆ)rZrPZ expectedhalfZ    expected1ÚhrrrÚtest_heavisideö    s&  
 
 zTestHeavside.test_heavisideN)r]r^r_rùrrrrröõ    sröc@s$eZdZdd„Zdd„Zdd„ZdS)ÚTestSignc    Cs’t tjtj tjdddg¡}t |j¡}t ddtjdddg¡}tjdd:t |¡}t    ||ƒt ||¡}t    ||ƒt    ||ƒW5QRXdS)NrrŽr‹rLrÒrUrV)
rrqrr·r×rªrürbrFr)rZryrnrQr-rrrÚ    test_sign
s 
 
 
zTestSign.test_signcCs8t dddg¡}t | t¡¡}t |¡}t||ƒdS)Nrârrá)rrqrFr§rµr )rZÚfooryr«rrrÚtest_sign_dtype_object
s
zTestSign.test_sign_dtype_objectcCsdd„}tt|ƒdS)NcSs"t tjg¡}t | t¡¡}dSr+)rrqr·rFr§rµ)rüryrrrrñ#
sz5TestSign.test_sign_dtype_nan_object.<locals>.test_nan)r    rv)rZrñrrrÚtest_sign_dtype_nan_object!
sz#TestSign.test_sign_dtype_nan_objectN)r]r^r_rûrýrþrrrrrú
s     rúc@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
Ú
TestMinMaxc sútjdftjdffD]à\}}t|d|dD]È\}‰‰tˆjƒD]²}tjˆj|dˆdd…<tjˆ|<‡‡fdd„}tƒ>}|     t
d¡t t  ˆ  ¡¡|d    t t  ˆ ¡¡|d    W5QRXd
ˆ|<tˆ  ¡d
ˆd d ˆ|<tˆ ¡d ˆd q>q*qdS) Nr¬rr‘r“rpcs dˆˆfS)Nz%r
%srr©r˜rrrr.4
r/z0TestMinMax.test_minmax_blocked.<locals>.<lambda>z#invalid value encountered in reduce)rg _ Brg _ Â)rrˆrØrrMr˜rr·rr.r/rrr÷rìr)rZr0Úszrnr÷Úemsgr1rrrÚtest_minmax_blocked+
s$ÿ
ÿ zTestMinMax.test_minmax_blockedcCsHtjdtjddd… tj¡}t| ¡|dƒt| ¡|dƒdS)Né¸rpr1r6r)rr×r¨r„rØrr÷rì©rZr|rrrÚtest_lower_align@
s zTestMinMax.test_lower_aligncCsXdD]N}tjtjtjfD]8}t tjtjg||d¡D]}tt |¡tjƒq8qqdS)N)r%r1r¿rÀrÁrp)    rrˆrÚ    complex64Zdiagflatrqr·rrì)rZrîr0r{rrrÚtest_reduce_reorderG
s zTestMinMax.test_reduce_reordercCst tjd¡}t|tjƒdSr‚)rrÇr·rr¾rrrÚtest_minimize_no_warnsP
sz!TestMinMax.test_minimize_no_warnsN)r]r^r_rrrr    rrrrrÿ*
s    rÿc@seZdZdd„Zdd„ZdS)ÚTestAbsoluteNegativec
    CsttjdftjdffD]X\}}t|d|dD]>\}}}dd„|Dƒ}tj||dt|||dt|d    k ¡ƒd
d„|Dƒ}tj||dt|||dtj    tj
tj
fD]¼}t |j ƒD]¬}tj |j |d }    |     |dd…<|||<|tj
krø| n||    |<tt |¡|    |dtj||dt||    |dt| d ||dd |}    tj||dt||    |dq¼q®q,qdS) Nr’r2r‘r“cSsg|]}t |¡‘qSr)rbrSrörrrr[
sz=TestAbsoluteNegative.test_abs_neg_blocked.<locals>.<listcomp>r—rrcSsg|] }d|‘qS)r3rrörrrr`
srpr3)rrˆrØrrSrrrýrÎr·rrMr˜rr rO)
rZr0rrnr˜rrQrÍr÷r|rrrÚtest_abs_neg_blockedV
s0ÿz)TestAbsoluteNegative.test_abs_neg_blockedcCsŠtjdtjddd… tj¡}tt |¡|ƒtt |¡| ƒtj||dtjt |¡|dtj||dtjt |¡|ddS)Nrrpr1r6r—)    rr×r¨r„rØrrOrÎr±rrrrrs
s z%TestAbsoluteNegative.test_lower_alignN)r]r^r_r rrrrrr
U
sr
c@seZdZdd„Zdd„ZdS)Ú TestPositivecCsDttttg}|D].}tjd|d}t |¡}t||t|ƒdqdS)Nr2rpr)    r•r–rrµrrrÏrÚstr)rZZ valid_dtypesr)rPrƒrrrÚ
test_valid€
s
 
zTestPositive.test_validc    Csšttƒt d¡W5QRXttƒt t d¡¡W5QRXttƒt tjdgtd¡W5QRXttƒt tjdgtd¡W5QRXdS)NTz
2000-01-01rürpÚbar)r    rvrrÏZ
datetime64rqr rµrYrrrÚ test_invalid‡
s
 
 
 
zTestPositive.test_invalidN)r]r^r_rrrrrrr 
sr c@sèeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z e j dddg¡dd„ƒZe j dddg¡dd„ƒZdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2S)3ÚTestSpecialMethodscsˆG‡fdd„dƒ‰ˆƒ}t ||¡}t|jt d¡ƒ|j\}}}t|tjkƒtt|ƒdƒt|d|ƒt|d|ƒt|dƒdS)Ncs eZdZdd„Z‡fdd„ZdS)z/TestSpecialMethods.test_wrap.<locals>.with_wrapcSs
t d¡Sr‚©rr×rYrrrÚ    __array__–
sz9TestSpecialMethods.test_wrap.<locals>.with_wrap.__array__csˆƒ}||_||_|Sr+)r‡rŒ©rZr‡rŒr{©Ú    with_wraprrr™
sz>TestSpecialMethods.test_wrap.<locals>.with_wrap.__array_wrap__N©r]r^r_rrrrrrr•
srrr%r)    rbrÇrr‡rr×rŒrr‚)rZryrPr]Úargsr÷rrrÚ    test_wrap“
s
  zTestSpecialMethods.test_wrapcsÄGdd„dtjƒ‰‡fdd„}|dd„dd„ƒ|dd„d    d„ƒ|d
d„d d„ƒ|d d„d d„ƒ|dd„dd„ƒ|dd„dd„ƒ|dd„dd„ƒ|dd„dd„ƒ|dd„dd„ƒdS)Nc@s@eZdZdZdZdd„Zdd„Zdd„Zedd    „ƒZ    d
d „Z
dS) zKTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrapNcSst d¡ |¡S)Nr)rr×r„©r†rrrrˆ°
szSTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__new__cSs|d|_|Sr‚)Ú
_wrap_args©rZrrŒrrrr²
s
zZTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__array_wrap__cSs|d|_|Sr‚)Ú _prepare_argsrrrrÚ__array_prepare__µ
s
z]TestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__array_prepare__cSs |j|jfSr+)rrrYrrrr¸
szPTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.argscSsdS)NryrrYrrrÚ__repr__½
szTTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__repr__) r]r^r_rrrˆrrÚpropertyrrrrrrÚStoreArrayPrepareWrap­
s
r!c sˆˆƒ}||ƒ|j\}}||ƒ}zt||ƒt||ƒWnJtk
r‚}z,td dd |¡d |¡d |¡g¡ƒ‚W5d}~XYnXdS)NÚ
z"Bad arguments passed in ufunc callz expected:              {}z __array_prepare__ got: {}z __array_wrap__ got:    {})rrrÂÚjoinÚformat)Zf_callZ
f_expectedryr¦r×rÃre©r!rrÚdo_testÀ
s
 
üz=TestSpecialMethods.test_wrap_and_prepare_out.<locals>.do_testcSs t |d¡Srj©rrs©ryrrrr.Ò
r/z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>cSs|dfSrjrr(rrrr.Ò
r/cSst |dd¡Srjr'r(rrrr.Ó
r/cSs|dfSrjrr(rrrr.Ó
r/cSstj|dddS©Nrr—r'r(rrrr.Ô
r/cSs|dfSrjrr(rrrr.Ô
r/cSstj|dddS)Nrr+r—r'r(rrrr.Õ
r/cSs|dfSrjrr(rrrr.Õ
r/cSst dd|¡Srjr'r(rrrr.Ø
r/cSs
dd|fSrjrr(rrrr.Ø
r/cSstjdd|dSr)r'r(rrrr.Ù
r/cSs
dd|fSrjrr(rrrr.Ù
r/cSstjdd|fdSr)r'r(rrrr.Ú
r/cSs
dd|fSrjrr(rrrr.Ú
r/cSstj|dddS©NrF©rOr'r(rrrr.Ý
r/cSs|dfSrjrr(rrrr.Ý
r/cSstjdd|ddSr*r'r(rrrr.Þ
r/cSs
dd|fSrjrr(rrrr.Þ
r/)rr‘)rZr&rr%rÚtest_wrap_and_prepare_out©
s z,TestSpecialMethods.test_wrap_and_prepare_outcCsFGdd„dtjƒ}|ƒ}t |d¡}tt||ƒƒt|t d¡ƒdS)Nc@s eZdZdZdd„Zdd„ZdS)z=TestSpecialMethods.test_wrap_with_iterable.<locals>.with_wrapr:cSst d¡ |¡ ¡Sr‚r‚rrrrrˆæ
szETestSpecialMethods.test_wrap_with_iterable.<locals>.with_wrap.__new__cSs| t|ƒ¡Sr+r‰r‹rrrré
szLTestSpecialMethods.test_wrap_with_iterable.<locals>.with_wrap.__array_wrap__NrŽrrrrrã
sr)rr%r0)rr‘rbÚmultiplyrrr rq©rZrryrPrrrÚtest_wrap_with_iterableà
s
     z*TestSpecialMethods.test_wrap_with_iterablecCsHGdd„dtjƒ}|ƒ}t d¡|}tt||ƒƒt|t d¡ƒdS)Nc@seZdZdZdd„ZdS)z7TestSpecialMethods.test_priority_with_scalar.<locals>.Ar:cSst dd¡ |¡ ¡S)NrLrØr‚rrrrrˆ÷
sz?TestSpecialMethods.test_priority_with_scalar.<locals>.A.__new__N)r]r^r_rrˆrrrrÚAô
sr0r)rr‘rØrrr rq)rZr0ryrPrrrÚtest_priority_with_scalarñ
s
z,TestSpecialMethods.test_priority_with_scalarcs:G‡fdd„dƒ‰ˆƒ}t ||¡}t|jt d¡ƒdS)Ncs eZdZdd„Z‡fdd„ZdS)z3TestSpecialMethods.test_old_wrap.<locals>.with_wrapcSs
t d¡Sr‚rrYrrrr sz=TestSpecialMethods.test_old_wrap.<locals>.with_wrap.__array__csˆƒ}||_|Sr+)r‡)rZr‡r{rrrr szBTestSpecialMethods.test_old_wrap.<locals>.with_wrap.__array_wrap__Nrrrrrr srr)rbrÇrr‡rr×)rZryrPrrrÚ test_old_wrapÿ
s     z TestSpecialMethods.test_old_wrapc    CsÌGdd„dƒ}Gdd„d|ƒ}Gdd„d|ƒ}t d¡}|ƒ}|ƒ}|ƒ}tj}tt|||ƒƒtjkƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒtt|||ƒƒ|kƒttt |¡|kƒƒttt |¡|kƒƒttt |¡|kƒƒdS)Nc@seZdZdd„Zdd„ZdS)z+TestSpecialMethods.test_priority.<locals>.AcSs
t d¡Sr‚rrYrrrr sz5TestSpecialMethods.test_priority.<locals>.A.__array__cSst|ƒƒ}||_||_|Sr+)rŠr‡rŒrrrrr s
z:TestSpecialMethods.test_priority.<locals>.A.__array_wrap__Nrrrrrr0 sr0c@seZdZdZdS)z+TestSpecialMethods.test_priority.<locals>.Br~N©r]r^r_rrrrrÚB sr4c@seZdZdZdS)z+TestSpecialMethods.test_priority.<locals>.CgD@Nr3rrrrÚC sr5r)rr×rbrÇrrŠr‘r™)    rZr0r4r5rPryr«rßr}rrrÚ test_priority s2
 
z TestSpecialMethods.test_prioritycCs8Gdd„dƒ}|ƒ}tttj||ƒtttjj|ƒdS)Nc@seZdZdd„Zdd„ZdS)z/TestSpecialMethods.test_failing_wrap.<locals>.AcSs
t d¡S©Nr%rrYrrrr< sz9TestSpecialMethods.test_failing_wrap.<locals>.A.__array__cSst‚dSr+©Ú RuntimeErrorr‹rrrr? sz>TestSpecialMethods.test_failing_wrap.<locals>.A.__array_wrap__Nrrrrrr0; sr0)r    r9rbr¬r©rZr0ryrrrÚtest_failing_wrap9 sz$TestSpecialMethods.test_failing_wrapcsxt dg¡‰G‡fdd„dtjƒ}Gdd„dtjƒ}t d¡ |¡}t d¡ |¡}tdƒD]}tttj    d||ƒq\dS)NrLcseZdZ‡fdd„ZdS)z4TestSpecialMethods.test_failing_out_wrap.<locals>.OkcsˆSr+r©rZr©Z    singletonrrrK szCTestSpecialMethods.test_failing_out_wrap.<locals>.Ok.__array_wrap__N©r]r^r_rrr=rrÚOkJ sr?c@seZdZdd„ZdS)z5TestSpecialMethods.test_failing_out_wrap.<locals>.BadcSst‚dSr+r8r<rrrrO szDTestSpecialMethods.test_failing_out_wrap.<locals>.Bad.__array_wrap__Nr>rrrrÚBadN sr@rr:)
rrqr‘rrr„rMr    r9rbru)rZr?r@ÚokÚbadr÷rr=rÚtest_failing_out_wrapF s  z(TestSpecialMethods.test_failing_out_wrapcCs*Gdd„dƒ}|ƒ}tt ||¡dƒdS)Nc@seZdZdd„Zddd„ZdS)z,TestSpecialMethods.test_none_wrap.<locals>.AcSs
t d¡Sr‚rrYrrrr\ sz6TestSpecialMethods.test_none_wrap.<locals>.A.__array__NcSsdSr+rr‹rrrr_ sz;TestSpecialMethods.test_none_wrap.<locals>.A.__array_wrap__)Nrrrrrr0[ sr0)rrbr¬r:rrrÚtest_none_wrapX sz!TestSpecialMethods.test_none_wrapcCsDGdd„dƒ}|ƒ}t ||¡}t|t d¡ƒtt|ƒtjƒdS)Nc@s eZdZdZdd„Zdd„ZdS)z:TestSpecialMethods.test_default_prepare.<locals>.with_wrapr:cSs
t d¡Sr‚rrYrrrrj szDTestSpecialMethods.test_default_prepare.<locals>.with_wrap.__array__cSs|Sr+rr‹rrrrm szITestSpecialMethods.test_default_prepare.<locals>.with_wrap.__array_wrap__N)r]r^r_rrrrrrrrg srr)rbrÇrrr×rŠr‘r.rrrÚtest_default_preparee s
     z'TestSpecialMethods.test_default_prepareÚ    use_whereTFcsrG‡fdd„dtjƒ‰t d¡jˆd}|rDtj||t d¡d}n t ||¡}t|t d¡ƒtt|ƒˆƒdS)NcseZdZdZ‡fdd„ZdS)z5TestSpecialMethods.test_prepare.<locals>.with_preparer:cst |¡jˆdS©N©rŠ©rrqr„r‹©Ú with_preparerrr{ szGTestSpecialMethods.test_prepare.<locals>.with_prepare.__array_prepare__N©r]r^r_rrrrJrrrKx srKrrHTr+r%)rr‘rqr„rsrrŠ©rZrFryrPrrJrÚ test_prepareu s zTestSpecialMethods.test_preparecsˆG‡fdd„dtjƒ‰t dg¡jˆd}|rDtj|||dgd}nt |||¡}tt ||¡ ƒt|t dg¡ƒtt|ƒˆƒdS)NcseZdZdZ‡fdd„ZdS)z9TestSpecialMethods.test_prepare_out.<locals>.with_preparer:cst |¡jˆdSrGrIr‹rJrrr szKTestSpecialMethods.test_prepare_out.<locals>.with_prepare.__array_prepare__NrLrrJrrrKŠ srKrrHTr+r%)    rr‘rqr„rsrZ shares_memoryrrŠrMrrJrÚtest_prepare_out‡ sz#TestSpecialMethods.test_prepare_outcCs<Gdd„dƒ}|ƒ}tttj||ƒtttj||dddS)Nc@seZdZdd„Zddd„ZdS)z2TestSpecialMethods.test_failing_prepare.<locals>.AcSs
t d¡Sr‚rrYrrrrž sz<TestSpecialMethods.test_failing_prepare.<locals>.A.__array__NcSst‚dSr+r8r‹rrrr¡ szDTestSpecialMethods.test_failing_prepare.<locals>.A.__array_prepare__)N)r]r^r_rrrrrrr0 sr0Fr+)r    r9rbr¬r:rrrÚtest_failing_prepare› sz'TestSpecialMethods.test_failing_preparecCs(Gdd„dƒ}|ƒ}ttdtj|ƒdS)Nc@seZdZdd„ZdS)z6TestSpecialMethods.test_array_too_many_args.<locals>.AcSs
t d¡Sr‚r)rZr)rŒrrrr« sz@TestSpecialMethods.test_array_too_many_args.<locals>.A.__array__N)r]r^r_rrrrrr0ª sr0z2 required positional)r
rvrrÙr:rrrÚtest_array_too_many_args¨ sz+TestSpecialMethods.test_array_too_many_argscCsöGdd„dƒ}Gdd„dtjƒ}|ƒ}t dg¡ |¡}t ||¡}tj|||d}t|d|ƒt|d|ƒt|dtjƒt|dtjƒt|dd    ƒt|dd    ƒt|d
||fƒt|d
||fƒt|d iƒt|d d |fiƒdS) Nc@seZdZdd„ZdS)z1TestSpecialMethods.test_ufunc_override.<locals>.Ac_s|||||fSr+r©rZr]ÚmethodÚinputsÚkwargsrrrÚ__array_ufunc__´ szATestSpecialMethods.test_ufunc_override.<locals>.A.__array_ufunc__N©r]r^r_rVrrrrr0³ sr0c@seZdZdZdS)z9TestSpecialMethods.test_ufunc_override.<locals>.MyNDArrayrÝNr3rrrrÚ    MyNDArray· srXrr—rr%Ú__call__r0r1rn)rr‘rqr„r-r)rZr0rXryr«Úres0rsrrrÚtest_ufunc_override± s  z&TestSpecialMethods.test_ufunc_overridecCs¤dd„}dd„}t |dd¡}t |dd¡}Gdd    „d    ƒ}Gd
d „d |ƒ}Gd d „d ƒ}Gdd„dƒ}Gdd„d|ƒ}    |ƒ}
|ƒ} |ƒ} |ƒ} t |
| ¡}t|d ƒt | | ¡}t|d ƒt | |
¡}t|d    ƒt| jdƒt | |
¡}t| jdƒ|ƒ} |    ƒ}tttj| |ƒt| jdƒt|jdƒd| _|_tttj|| ƒt| jdƒt|jdƒd| _tttj| | ƒt| jdƒd| _tttjd| ƒt| jdƒt||
ddƒd    ƒt|d|
dƒd    ƒt|dd|
ƒd    ƒt||
|
dƒd    ƒt||
d|
ƒd    ƒt||
d| ƒd    ƒt||
d| ƒd ƒt||
| dƒd ƒd| _t|| | dƒd ƒt| jdƒd| _t|d| | ƒd ƒt| jdƒd| _t||
| | ƒd    ƒt| jdƒd|_t||
| |ƒd    ƒt|jdƒt|dd| ƒd ƒtt|dd| ƒtt||d| ƒtt||ddƒt||
dddƒd    ƒt|d|
ddƒd    ƒt|dd|
dƒd    ƒt|ddd|
ƒd    ƒt||
| ddƒd    ƒt|d|
d| ƒd    ƒt|| d|
dƒd ƒt|| dd|
ƒd ƒt||
dd| ƒd ƒ|ƒ} |    ƒ}tt|ddd| ƒt| jdƒd| _tt|dd|| ƒt|jdƒt| jdƒ|ƒ}d| _|_tt|d| ||ƒt|jdƒt| jdƒt|jdƒd| _|_|_tt||| || ƒt|jdƒt| jdƒt|jdƒdS)NcSs |||Sr+r)ryr«rßrrrÚtres_mulÎ sz<TestSpecialMethods.test_ufunc_override_mro.<locals>.tres_mulcSs||||Sr+r)ryr«rßr|rrrÚ
quatro_mulÑ sz>TestSpecialMethods.test_ufunc_override_mro.<locals>.quatro_mulr0rr1c@seZdZdd„ZdS)z5TestSpecialMethods.test_ufunc_override_mro.<locals>.Ac_sdS)Nr0rrRrrrrVÙ szETestSpecialMethods.test_ufunc_override_mro.<locals>.A.__array_ufunc__NrWrrrrr0Ø sr0c@seZdZdd„ZdS)z8TestSpecialMethods.test_ufunc_override_mro.<locals>.ASubc_sdS)NÚASubrrRrrrrVÝ szHTestSpecialMethods.test_ufunc_override_mro.<locals>.ASub.__array_ufunc__NrWrrrrr^Ü sr^c@seZdZdd„ZdS)z5TestSpecialMethods.test_ufunc_override_mro.<locals>.Bc_sdS)Nr4rrRrrrrVá szETestSpecialMethods.test_ufunc_override_mro.<locals>.B.__array_ufunc__NrWrrrrr4à sr4c@seZdZdd„Zdd„ZdS)z5TestSpecialMethods.test_ufunc_override_mro.<locals>.CcSs
d|_dSrj)ÚcountrYrrrÚ__init__å sz>TestSpecialMethods.test_ufunc_override_mro.<locals>.C.__init__c_s|jd7_tSr‚©r_ÚNotImplementedrRrrrrVè szETestSpecialMethods.test_ufunc_override_mro.<locals>.C.__array_ufunc__N)r]r^r_r`rVrrrrr5ä sr5c@seZdZdd„ZdS)z8TestSpecialMethods.test_ufunc_override_mro.<locals>.CSubc_s|jd7_tSr‚rarRrrrrVí szHTestSpecialMethods.test_ufunc_override_mro.<locals>.CSub.__array_ufunc__NrWrrrrÚCSubì srcr%rrÆ)rÚ
frompyfuncr-rr_r    rv)rZr\r]Zthree_mul_ufuncZfour_mul_ufuncr0r^r4r5rcryZa_subr«rßr-Zc_subÚc2rrrÚtest_ufunc_override_mroË s² 
 
 
                       z*TestSpecialMethods.test_ufunc_override_mroc    CsnGdd„dƒ}|ƒ}ttƒtjjd|dddW5QRXtjjd|ddd}t|d|ƒt|dtjƒt|d    d
ƒt|d d|fƒt|d dddœƒtttj|ƒtttj||||ƒtttj||d d dtttj||dddgdtj |dddd¡}t|d|ƒt|dtjƒt|d    dƒt|d |fƒt|d dddddœƒtjj|ddddddd}t|d|ƒt|dtjƒt|d    dƒt|d |fƒt|d dddddddœƒtj |dddd¡}t|d ddddœƒtjj|dddd}t|d dddœƒtjj|dd dd!}t|d ddd"œƒtj |ddddd    d¡}t|d dddd    dd#œƒtj |ddddtj    d¡}t|d ddddd$œƒtj |dddddd¡}t|d dddddd#œƒtt
tjj|d%d&tt
tjj|d'd&tttjj|ddd(tj  |ddd¡}t|d|ƒt|dtjƒt|d    d)ƒt|d |fƒt|d dddd*œƒtjj |dddd+}t|d|ƒt|dtjƒt|d    d)ƒt|d |fƒt|d dddd*œƒtj  |ddd¡}t|d ddd"œƒtjj |ddd,d-}t|d dd,d"œƒtjj |dd dd!}t|d ddd"œƒtt
tjj |d%d&tt
tjj |d'd&tttjj |ddd(tj  |d d    gddd¡}t|d|ƒt|dtjƒt|d    d.ƒt|d |d d    gfƒt|d dddd*œƒtjj |d d    gdddd+}t|d|ƒt|dtjƒt|d    d.ƒt|d |d d    gfƒt|d dddd*œƒtj  |d d    gddd¡}t|d ddd"œƒtjj |d d    gddd/d0}t|d dd/d"œƒtjj |d d    gddd d&}t|d ddd"œƒtt
tjj|d d    gd%d&tt
tjj|d d    gd'd&tttjj|d d    gddd(tj  |d¡}t|d|ƒt|dtjƒt|d    d1ƒt|d |dfƒt|d iƒtttjj |ƒtttjj ||||ƒtttjj ||d d dtj |d d    gd2¡}t|d|ƒt|dtjƒt|d    d3ƒt|d |d d    gd2fƒtttjj|ƒtttjj||||ƒdS)4Nc@seZdZdd„ZdS)z9TestSpecialMethods.test_ufunc_override_methods.<locals>.Ac_s|||||fSr+r©rZrrSrTrUrrrrVU szITestSpecialMethods.test_ufunc_override_methods.<locals>.A.__array_ufunc__NrWrrrrr0T sr0rrrú)rüZanswer)rlrOrr%rYr0r1ry)rÇrÁ)ÚaxisZaxesZaxis0Zdtype0Úout0Zkeep0r)ri)r)rnÚkeepdimsrhZinit0Zwhere0)rhr)rnrjÚinitialrO)r)rnrjrhrkrOF)rhr)rjT)rnrhrj)rhrjr+)rnr))rhr))rhr)rjrkrO)rhr)rjrOrr—)riÚout1©rhr&)r)rnrh)rhr)rnZdtype1)rnrhr)Úreduceatr0)rhrnr)ÚouterZb0Úat)r    rvrr-rYrÚ    ncu_testsÚinner1drZ_NoValuerwr&rnrorp)rZr0ryr-rrrÚtest_ufunc_override_methodsR s,
 
ýþ
û    ÿÿÿÿ
þ ÿ
þ ÿ ÿ
þÿ
þÿÿz.TestSpecialMethods.test_ufunc_override_methodsc     Cs”Gdd„dƒ}Gdd„dƒ}|ƒ}|ƒ}t ||d¡}tj||dd}t d|d¡}tjd|dd}t |d    d¡}    tj|d
dd}
t|d d dƒt|d d dƒt|d d dƒt|d d dƒt|    d d dƒt|
d d dƒt |d d¡} t |d d¡} t| d d d ƒt| d ddƒt| d d d ƒt| d ddƒtt |d¡ikƒttj|ddikƒttj|ddikƒtt |d¡ikƒtt |dd¡ikƒttj|ddikƒttƒtj|ddW5QRXtttj||dddtttj||ddƒtt    tj||ddtttj|ddtttj|dddtttj|dddƒtt    tj|ddtt    tj|dddS)Nc@seZdZdd„ZdS)z5TestSpecialMethods.test_ufunc_override_out.<locals>.Ac_s|Sr+rrgrrrrV szETestSpecialMethods.test_ufunc_override_out.<locals>.A.__array_ufunc__NrWrrrrr0ÿ sr0c@seZdZdd„ZdS)z5TestSpecialMethods.test_ufunc_override_out.<locals>.Bc_s|Sr+rrgrrrrV szETestSpecialMethods.test_ufunc_override_out.<locals>.B.__array_ufunc__NrWrrrrr4 sr4Zout_argr—r%r0r1r2rnrrirlrr+)NNr¤Útwo©r¤rtr)rtÚthreerv)r¤rtrv)r¤)
rr-rÚmodfrurrr    rvrw) rZr0r4ryr«rZrsrtZres3Zres4Zres5Zres6Zres7rrrÚtest_ufunc_override_outý sL
z*TestSpecialMethods.test_ufunc_override_outcCsHGdd„dƒ}|ƒ}tttjd|dtttj|ƒtttjd|ƒdS)Nc@seZdZdd„ZdS)z;TestSpecialMethods.test_ufunc_override_exception.<locals>.Ac_s tdƒ‚dS)NZoops)rw)rZryrUrrrrV8 szKTestSpecialMethods.test_ufunc_override_exception.<locals>.A.__array_ufunc__NrWrrrrr07 sr0rr—rL)r    rwrrÎròr:rrrÚtest_ufunc_override_exception5 s
z0TestSpecialMethods.test_ufunc_override_exceptionc    CsrGdd„dƒ}d}ttt |¡ƒt |ƒ¡W5QRXd}ttt |¡ƒtj|ƒtƒddW5QRXdS)Nc@seZdZdd„ZdS)zATestSpecialMethods.test_ufunc_override_not_implemented.<locals>.Ac_stSr+)rb©rZrrUrrrrVC szQTestSpecialMethods.test_ufunc_override_not_implemented.<locals>.A.__array_ufunc__NrWrrrrr0B sr0zjoperand type(s) all returned NotImplemented from __array_ufunc__(<ufunc 'negative'>, '__call__', <*>): 'A'zŒoperand type(s) all returned NotImplemented from __array_ufunc__(<ufunc 'add'>, '__call__', <*>, <object *>, out=(1,)): 'A', 'object', 'int'rr—)r
rvÚfnmatchÚ    translaterrÎrsrµ)rZr0rrrrÚ#test_ufunc_override_not_implemented@ sz6TestSpecialMethods.test_ufunc_override_not_implementedc    CsîGdd„dƒ}|ƒ}d}tt|ƒt |d¡W5QRXtt|ƒt d|¡W5QRXtt|ƒt |¡W5QRXGdd„dƒ}|ƒ}tt |¡|kƒtt|ƒt ||¡W5QRXtt|ƒtj|d|dW5QRXdS)Nc@seZdZdZdS)z?TestSpecialMethods.test_ufunc_override_disabled.<locals>.OptOutNrWrrrrÚOptOutS sr~z(operand 'OptOut' does not support ufuncsrc@seZdZdd„ZdS)zDTestSpecialMethods.test_ufunc_override_disabled.<locals>.GreedyArrayc_s|Sr+rrzrrrrVe szTTestSpecialMethods.test_ufunc_override_disabled.<locals>.GreedyArray.__array_ufunc__NrWrrrrÚ GreedyArrayd srr—)r
rvrrsrÎr)rZr~Zopt_outrrZgreedyrrrÚtest_ufunc_override_disabledQ s      z/TestSpecialMethods.test_ufunc_override_disabledcCs&Gdd„dƒ}tj}|ƒ}|||ƒ}t|d|ƒt|d|ƒt|ddƒt|d||fƒt|diƒ|dd|d    }t|d|ƒt|d|ƒt|ddƒt|dd
ƒt|dd |fiƒtt||d d    tt|||d d d    tt|||d d ƒtt|||dd    tt|||dd    dS)Nc@seZdZdd„ZdS)z2TestSpecialMethods.test_gufunc_override.<locals>.Ac_s|||||fSr+rrgrrrrVs szBTestSpecialMethods.test_gufunc_override.<locals>.A.__array_ufunc__NrWrrrrr0r sr0rrr%rYr0r1r—)rrrnrtr¤rur)rqrrrr    rvrw)rZr0rrryr-rrrÚtest_gufunc_overrideo s(
z'TestSpecialMethods.test_gufunc_overridec sZG‡fdd„dtjƒ‰G‡fdd„dƒ}t d¡}t d¡ ˆ¡}t |¡}t |¡}tt ||k¡ƒt|jddgiƒtj||fd}tt ||k¡ƒt|jd    dgiƒt||kƒt d¡ ˆ¡}tj||d}tt ||k¡ƒt|jdgdgd
œƒt d¡ ˆ¡}t     |¡\}}t|jddgiƒtj    |d|fd\}}t||kƒt|jd    d giƒt d¡ ˆ¡}t d¡ ˆ¡}tj    |||fd\}}    t||kƒt|    |kƒt|jdgdd gd
œƒt d¡ ˆ¡}t d¡ ˆ¡}tj
|||d}
t|
|kƒt|
jdd gdgd
œƒt d¡}|ƒ}t|  tj
d ||¡t kƒt|  tj
d ||¡t kƒt ttj
||ƒ| ˆ¡}t|  tj
d ||¡t kƒt|  tj
d ||¡d kƒtt 
||¡d kƒt d ddgd ddgg¡}| ˆ¡}| ¡}
| ¡}t|
|ƒt|
jddgiƒ| ¡}
| ¡}t|
|ƒt|
jddgiƒt d¡ ˆ¡}|j|d}
t|
|ƒt|
|kƒt|
jdgdgd
œƒ|jdd}t |¡ ˆ¡}|jd|d}
t|
|ƒt|
|kƒt|
jdgdgd
œƒtj
j|d d}tj
j|d d}
t|
|ƒt|
jddgiƒt |
¡}tj
 |d d|¡}
t|
|ƒt|
|kƒt|
jdgdgd
œƒtj
j|dd}tj
j|dd}
t|
|ƒt|
jddgiƒt |
¡}tj
 |dd|¡}
t|
|ƒt|
|kƒt|
jdgdgd
œƒddd g} tj
j|| d d}tj
j|| d d}
t|
|ƒt|
jddgiƒt |
¡}tj
 || d d|¡}
t|
|ƒt|
|kƒt|
jdgdgd
œƒt d ddgd ddgg¡}| ¡}| ¡ ˆ¡}tj
 |dd gddgfd¡tj
 |dd gddgfd¡t||ƒt|jddgiƒt d¡ ˆ¡}| ¡ ˆ¡}tj
 |dd gddgf|¡t||ƒt|jdddgiƒdS)Ncs$eZdZddœ‡‡fdd„
Z‡ZS)z<TestSpecialMethods.test_ufunc_override_with_super.<locals>.ANr—cs†g}g}t|ƒD]:\}}    t|    ˆƒr@| |¡| |     tj¡¡q| |    ¡q|}
g} |
r®g} t|
ƒD]:\} }t|ˆƒr”|  | ¡|  | tj¡¡qd|  |¡qdt| ƒ|d<n
d|j}
i}|rÈ||d<| rÔ| |d<tƒj    ||f|ž|Ž}|t
kröt
S|dkrt|dˆƒr||d_ dS|jdkr0|f}t‡fdd    „t ||
ƒDƒƒ}|rlt|dˆƒrl||d_ t |ƒdkr‚|dS|S)
Nrnr+rTÚoutputsrprrc3s.|]&\}}|dkr"t |¡ ˆ¡n|VqdSr+)rrƒr„)rrƒÚoutput©r0rrrJ¼ sÿÿz_TestSpecialMethods.test_ufunc_override_with_super.<locals>.A.__array_ufunc__.<locals>.<genexpr>)Ú    enumeraterÚappendr„rr‘Útupler(ÚsuperrVrbÚinforªr‚)rZrrSrnrTrUrZin_nor÷Úinput_r‚Zout_noZout_argsÚjrƒr‰Úresults)r0Ú    __class__rrrV‘ sT
 
 
 
 
 ÿÿ
 
  þ
zLTestSpecialMethods.test_ufunc_override_with_super.<locals>.A.__array_ufunc__)r]r^r_rVÚ __classcell__rr„)rrr0 sr0cseZdZ‡fdd„ZdS)z<TestSpecialMethods.test_ufunc_override_with_super.<locals>.Bcs"t‡fdd„|DƒƒrdStSdS)Nc3s|]}t|ˆƒVqdSr+)r)rrŠr„rrrJÆ sz_TestSpecialMethods.test_ufunc_override_with_super.<locals>.B.__array_ufunc__.<locals>.<genexpr>úA!)rÜrbrgr„rrrVÅ szLTestSpecialMethods.test_ufunc_override_with_super.<locals>.B.__array_ufunc__NrWrr„rrr4Ä sr4r}rTrr—r‚)rTr‚rrYrr%r0rm)rhrnrL)rr‘rr„rrrýrr‰rwrsrVrbr    rvrqrÜr÷r¶rr&rnr…rp) rZr4r|ryr«ÚcheckZb1Zb2Zc1rerßÚindicesrr„rÚtest_ufunc_override_with_super sÎ4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
z1TestSpecialMethods.test_ufunc_override_with_superN)r]r^r_rr,r/r1r2r6r;rCrDrErÈrÍrÎrNrOrPrQr[rfrsrxryr}r€rr’rrrrr’
s67+  
 
     ,8 rc@seZdZdd„ZdS)Ú
TestChoosecCs@t ddg¡}t ddg¡}tt ||df¡t ddg¡ƒdS)NTr)rrqrÚchoose)rZrßryrrrÚ
test_mixed<szTestChoose.test_mixedN)r]r^r_r•rrrrr“;sr“c@sdeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dS)ÚTestRationalFunctionscCs| tj¡| tj¡dSr+)Ú_test_lcm_innerrr©Úuint16rYrrrÚtest_lcmCs zTestRationalFunctions.test_lcmcCs| tj¡dSr+)r—rÚobject_rYrrrÚtest_lcm_objectGsz%TestRationalFunctions.test_lcm_objectcCs| tj¡| tj¡dSr+)Ú_test_gcd_innerrr©r—r˜rYrrrÚtest_gcdJs zTestRationalFunctions.test_gcdcCs| tj¡dSr+)rœrršrYrrrÚtest_gcd_objectNsz%TestRationalFunctions.test_gcd_objectcCsìtjddg|d}tjddg|d}tt ||¡ddgƒt|tjƒsŠtjddddg|d}tjddd    d    g|d}tt ||¡dgd
ƒtjd ddg|d}ttj d ddg¡dƒt d ¡ |¡}d}tt ||¡d dddddgƒdS)Nr éxrprhéÈé<iXr éìÿÿÿr1r0rÆr)    rrqrÚlcmÚ
issubclassÚunsignedintegerrrr§©rZr)ryr«rrrr—Qs z%TestRationalFunctions._test_lcm_innercCsætjddg|d}tjddg|d}tt ||¡ddgƒt|tjƒsŠtjddddg|d}tjddd    d    g|d}tt ||¡dgdƒtjd
d d g|d}ttj |¡d ƒt d¡ |¡}d}tt ||¡dddddd gƒdS)Nr rŸrprhr r1é(r r¢r¬éé#r2rÆrr%)    rrqrÚgcdr¤r¥rrr§r¦rrrrœfs z%TestRationalFunctions._test_gcd_innercCsBt t tj¡jd¡}d|}d|}tt ||¡d|ƒdS)Nr’r%r2r:)rrtrúr÷rr£)rZÚbigryr«rrrÚtest_lcm_overflow{sz'TestRationalFunctions.test_lcm_overflowcCs^tjtjfD]L}|t |¡jƒ}|d }tt ||d¡|ƒtt || d¡|ƒq dS)Nr1r0)rrtrÊrúrìrrª)rZr)ryÚqrrrÚtest_gcd_overflow‚s
 
z'TestRationalFunctions.test_gcd_overflowcCs|ddlm}t ddddg¡|dƒ}t ddddg¡|dƒ}tt ||¡d|dƒgƒtt ||¡d|d    ƒgƒdS)
Nr)ÚDecimalrr3z0.20z0.12r1z0.04z0.60)rár¯rrqrrªr£)rZr¯ryr«rrrÚ test_decimal‹s
 z"TestRationalFunctions.test_decimalcCs$tttjddƒtttjddƒdS)Ng333333Ó?gš™™™™™Ù?)r    rvrrªr£rYrrrÚ
test_float“sz TestRationalFunctions.test_floatcCs¦tt dd¡ ¡ddƒt ddd¡}t ddddg¡}tt ||¡dddgƒtt ||¡dddddddgƒtt ddd    d¡d
ƒdS) Nr%r rÝéói-1l U9l`i©ær0r)rrrqÚitemrªr£r®rrrÚtest_builtin_long˜s *z'TestRationalFunctions.test_builtin_longN)r]r^r_r™r›rržr—rœr¬r®r°r±r´rrrrr–Bs    r–c@s$eZdZdd„Zdd„Zdd„ZdS)ÚTestRoundingFunctionscCs`Gdd„dƒ}t |ƒ|ƒg¡}tt |¡ddgƒtt |¡ddgƒtt |¡ddgƒdS)z3 test direct implementation of these magic methods c@s$eZdZdd„Zdd„Zdd„ZdS)z3TestRoundingFunctions.test_object_direct.<locals>.CcSsdSr‚rrYrrrÚ    __floor__ªsz=TestRoundingFunctions.test_object_direct.<locals>.C.__floor__cSsdSr7rrYrrrÚ__ceil__¬sz<TestRoundingFunctions.test_object_direct.<locals>.C.__ceil__cSsdS)Nr0rrYrrrÚ    __trunc__®sz=TestRoundingFunctions.test_object_direct.<locals>.C.__trunc__N)r]r^r_r¶r·r¸rrrrr5©sr5rr%r0N)rrqrrUr?rV©rZr5r‡rrrÚtest_object_direct§s
z(TestRoundingFunctions.test_object_directc    CslGdd„dƒ}t |ƒ|ƒg¡}tt |¡ddgƒtt |¡ddgƒt t¡t |¡W5QRXdS)z$ test implementations via __float__ c@seZdZdd„ZdS)z5TestRoundingFunctions.test_object_indirect.<locals>.CcSsdS)Nr†rrYrrrÚ    __float__¹sz?TestRoundingFunctions.test_object_indirect.<locals>.C.__float__N)r]r^r_r»rrrrr5¸sr5r5r4N)    rrqrrUr?rÈrÉrvrVr¹rrrÚtest_object_indirect¶s  z*TestRoundingFunctions.test_object_indirectcCs>tddƒ}tt |¡dƒtt |¡dƒtt |¡dƒdS)Nr6r0r4r3)rrrrUr?rV)rZr}rrrÚ test_fractionÂs
z#TestRoundingFunctions.test_fractionN)r]r^r_rºr¼r½rrrrrµ¥s rµc@sîeZdZejejejejejej    ej
ej ej ej ejejejejejejgZdd„Zejjedddd„ƒZejjedddd„ƒZejjeddd    d
„ƒZd d „Zejjeddej d ejej ej!g¡dd„ƒƒZ"ej#dddd„ƒZ$dS)ÚTestComplexFunctionscCs`|jD]T}|tjkrd}nd}||ƒ}|t|ƒƒ}t|j|d|dt|jdd|dqdS)Nr¡rjz real part %srrz imag part %s)Úfuncsrr5rr rNr)rZr}rPÚfrZfzrrrÚtest_itÏs
 
 zTestComplexFunctions.test_itz doesn't workrècCsfd}|jD]V}|t |¡ƒ}|t |¡ƒ}|t |¡ƒ}t||dd|dt||dd|dq
dS)NrrÆz
fch-fcd %s)rárr¬z
fch-fcl %s)r¿rZcsingleZcdoubleZ clongdoubler )rZr3r}ZfcfZfcdZfclrrrÚtest_precisions_consistentÚs
z/TestComplexFunctions.test_precisions_consistentcCs¸ttjdddddƒttjdddddƒttjdddddƒttjdddddƒttjdddddƒttjddgddgdddƒttjddgddgdddƒttj    d    d
gddgdddƒttj
d    d
gddgdddƒttj dd gddgdddƒttj ddgddgdddƒttjd    d
gddgddƒttjd    d
gddgddƒttj    ddgddgddƒttj
ddd gdddgddƒttj d    d
dgdddgddƒttj d    d
d gdddgddƒdS) NrOr¢rr3Tçø¿r4r%ùÀr¯rjr) Ú_check_branch_cutrrörÇrrr–r'r(r*rMr5r8rYrrrÚtest_branch_cutsäs"z%TestComplexFunctions.test_branch_cutscCsttjdddddtjƒttjdddddtjƒttjdddddtjƒttjdddddtjƒttjdddddtjƒttjddgddgdddtjƒttj    ddgddgdddtjƒttj
d    d
gddgdddtjƒttj d    d
gddgdddtjƒttj dd gddgdddtjƒttj ddgddgdddtjƒttjd    d
gddgddd tjƒttj    d    d
gddgddd tjƒttj
ddgddgddd tjƒttj ddd gdddgddd tjƒttj d    d
dgdddgddd tjƒttj d    d
d gdddgddd tjƒdS)NrOr¢rr3TrÃr4r%rÄr¯rjFr)rÅrrörrÇrrr–r'r(r*rMr5r8rYrrrÚtest_branch_cuts_complex64þs"         $$z/TestComplexFunctions.test_branch_cuts_complex64c     CsÐddl}ddddg}dddd    d
d d œ}d t t¡j}|jD]Ž}|j d¡d}| ||¡}zt    ||ƒ}Wnt
k
r‚Yq<YnX|D]@}    t|t  |    ¡ƒƒ}
||    ƒ} t t |
| ƒ|kd||    |
| fƒqˆq<dS)Nryð¿ð¿yð¿ð?yð?ð¿rÚasinÚacosÚatanÚasinhÚacoshÚatanh)r'r(r*rMr5r8r1Ú.r3z%s %s: %s; cmath: %s)Úcmathrr[rÚepsr¿r]ÚsplitÚgetr[ÚAttributeErrorrŸrrO) rZrÏZpointsZname_mapÚatolr]ÚfnameÚcnameZcfuncr¦ryr«rrrÚtest_against_cmaths& ÿ
 
z'TestComplexFunctions.test_against_cmathr)c sÂt ˆ¡}ˆdƒjj‰|j‰‡‡fdd„}t ddd¡}tjddd    d
d }ˆtjkrttƒrdt     d ¡||d ˆƒn||dˆƒ||dˆdƒtj
dgˆd}d}t  dt  |¡|¡}t t |dk¡ƒd}t  dt |¡|¡}t t |dk¡ƒd}t  dt |¡|¡}t t |dk¡ƒd}t  dt |¡|¡}t t |dk¡ƒd ‡‡fdd„    }tjtjtjtj tjfD]8}    dd„dDƒ}
||    |
dƒ||    |
dƒ||    |
dƒq„dS)!z1Check loss of precision in complex arc* functionsrcs~| ˆ¡}| ˆ¡}t t |¡t |¡jd¡}tt ||k¡t |¡|t |¡| ¡dfƒd| ˆ¡}t t |¡t     |¡j
d¡}tt ||k¡t |¡|t |¡| ¡dfƒ| ˆ¡}t t  |¡t  |¡jd¡}tt ||k¡t |¡|t |¡| ¡dfƒd| ˆ¡}t t  |¡t  |¡j
d¡}tt ||k¡t |¡|t |¡| ¡dfƒdS)NrrMr¢r'r8r*) r§rrSrMrNrrýZargmaxr÷r'rr8r*)rPZrtolr3r|)r)Ú
real_dtyperrr6s*
 
 (ÿ (ÿ
 (ÿ (ÿz:TestComplexFunctions.test_loss_of_precision.<locals>.checkr¢g5^ºI Àr gË¡E¶óýÀrr:F)ZendpointzvTrig functions of np.longcomplex values known to be inaccurate on aarch64 and PPC for some compilation configurations.gI@çÍÌÌÌÌÌ@rŠçü©ñÒMbP?yñh㈵øä>ñh㈵øä>rpy¶g݈µøä>+j鈵øä>rrayŽi戵øä>Shàˆµøä>y+j鈵øä>¶g݈µøä>yShàˆµøä>Ži戵øä>cstj|ˆd}|t|ƒ|ˆd}|t|ƒ|ˆd}tt ||k¡||fƒt||ƒ||ƒƒdˆk}tt |¡|||fƒdS)Nrpr%)rrƒrOrrý)r]Zz0r|ZzpZzmZgood)r)rÐrrrus cSs2g|]*}dD] }|dks |dkr |d|‘q qS)©gü©ñÒMbP¿rrÚrr¢r)rÚrpÚiprrrr€s ÿz?TestComplexFunctions.test_loss_of_precision.<locals>.<listcomp>rÛr¢rN)r)rr[rNr)rÐZlogspaceÚ longcomplexrSrÈrrqrSr8rrýrMr*r') rZr)r‰rZx_seriesZx_basicr3r¦r|r]Zptsr)r)rÐrØrÚtest_loss_of_precision+s>
 
 
 
  z+TestComplexFunctions.test_loss_of_precisionrUr&cCs^|jD]R}|t d¡ƒjtjks$t‚|t d¡ƒjtjks>t‚|t d¡ƒjtjkst‚qdSr‚)r¿rrr)rÂr©r©rˆ)rZr]rrrÚtest_promotion_corner_cases†s
z0TestComplexFunctions.test_promotion_corner_casesN)%r]r^r_rr'r(r*rMr5r8rrr!r™rÛrör–rrÇrr¿rÁrÈrÍrdrrÂrÆrÇr×rÎrrŸrÞrßrüràrrrrr¾És4ý 
    
 
 Y
r¾c@seZdZdd„Zdd„ZdS)ÚTestAttributescCsVtj}t|jdƒt|jdkƒtd|jkƒt|jdƒt|jdƒt|j    dƒdS)Nrsézii->ir%rr)
rbrsrr]rZntypesr$r!r(rò)rZrsrrrÚtest_attributess   zTestAttributes.test_attributescCs(ttjj d¡ƒttjj d¡ƒdS)Nz&add(x1, x2, /, out=None, *, where=Truez<frexp(x[, out1, out2], / [, out=(None, None)], *, where=True)rrbrsÚ__doc__rIrurYrrrÚtest_doc™s 
ÿ
ÿzTestAttributes.test_docN)r]r^r_rãrårrrrrás    rác@seZdZdd„ZdS)Ú TestSubclasscCs,Gdd„dtjƒ}|dƒ}t|||ƒdS)Nc@seZdZdd„ZdS)z-TestSubclass.test_subclass_op.<locals>.simplecSs tjj||td}| d¡|S)Nrpr)rr‘rˆrµÚfill)ÚsubtyperªrZrrrrˆ§s
z5TestSubclass.test_subclass_op.<locals>.simple.__new__N)r]r^r_rˆrrrrÚsimple¦sré)r0r1)rr‘r)rZréryrrrÚtest_subclass_op¤szTestSubclass.test_subclass_opN)r]r^r_rêrrrrræ¢sræc@seZdZdd„ZdS)ÚTestFrompyfunccsüdd„}tj|dddd‰tˆ dddg¡dƒtˆjt d    ¡d
d dƒtˆ g¡dƒtj|dddd‰tˆ dddg¡dƒtˆjt d    ¡d
d dƒtt‡fd d „ƒtj|ddd‰tˆ dddg¡dƒtt‡fdd „ƒtt‡fdd „ƒdS)NcSs||Sr+r)ryr«rrrÚmul³sz)TestFrompyfunc.test_identity.<locals>.mulr%r)r!r(ròr0r1é©r%r%©rrrmcs
ˆ g¡Sr+rr©Z    mul_ufuncrrr.Àr/z.TestFrompyfunc.test_identity.<locals>.<lambda>)r!r(csˆjt d¡ddS)Nrîrïrm)rrr-rrðrrr.År/cs
ˆ g¡Sr+rrrðrrr.Ær/)rrdrrr-r    rw)rZrìrrðrrç²szTestFrompyfunc.test_identityN)r]r^r_rçrrrrrë°srër3FcCs’t |¡ |¡}t |¡ |¡}t |¡jdkrLt |¡jd}t d¡}nt |¡jd}d}||ƒ}    ||||t |¡t |¡ƒ}
||||t |¡t |¡ƒ} t    t 
t |    j |
j ¡|k¡|    |
fƒt    t 
t |    j |
j ¡|k¡|    |
fƒt    t 
t |    j | j |¡|k¡|    | fƒt    t 
t |    j | j |¡|k¡|    | fƒ|rŽ|j dk|j dk@} |j dk|j dk@} t  | ¡r|| }tj|_ ||ƒ} t    t 
t |    | j | j |¡|k¡|    | | fƒt    t 
t |    | j | j |¡|k¡|    | | fƒt  | ¡rŽ|| }tj|_ ||ƒ} t    t 
t |    | j | j |¡|k¡|    | | fƒt    t 
t |    | j | j |¡|k¡|    | | fƒdS)aR
    Check for a branch cut in a function.
 
    Assert that `x0` lies on a branch cut of function `f` and `f` is
    continuous from the direction `dx`.
 
    Parameters
    ----------
    f : func
        Function to check
    x0 : array-like
        Point on branch cut
    dx : array-like
        Direction to check continuity in
    re_sign, im_sign : {1, -1}
        Change of sign of the real or imaginary part expected
    sig_zero_ok : bool
        Whether to check if the branch cut respects signed zero (if applicable)
    dtype : dtype
        Dtype to check (should be complex)
 
    ÚFrürûrg-Cëâ6?rN)rZ
atleast_1dr§r)râr[rÐrˆrSrrýrNrrÜr“)r}Zx0ZdxZre_signZim_signZ sig_zero_okr)ZscalerÔZy0ZypZymZjrZjirPrrrrÅÉs: $$&&** 22 2rÅc    Cs’tt dd¡dkƒtjdd6tdt dd¡dkƒtdt dd¡dkƒW5QRXtt t tjd¡¡ƒtt t tjd¡¡ ƒdS)Nrr3rUrñr)rrÚcopysignrür#r·rrrrÚ test_copysigns "rócCsœ|dƒ}|dƒ}|dƒ}t |¡j}tt ||¡||kƒtt ||¡|dkƒtt t tj|¡¡ƒtt t |tj¡¡ƒtt ||¡|kƒdSrz)rr[rÐrrarr·)rIr¤rtrlrÐrrrÚ_test_nextafters rôcCs
ttjƒSr+)rôrrØrrrrÚtest_nextaftersrõcCs
ttjƒSr+)rôrrˆrrrrÚtest_nextafterfsrözlong double is same as doublerèÚppc64zIBM double double)Ú    conditionrécCs
ttjƒSr+)rôrr\rrrrÚtest_nextafterl!srùc
Cs°t tjdd¡D]˜\}}tƒ^}| t¡t t |¡j    ¡szt |¡j    }t
d|t  |dƒ||ƒ¡kor|knƒW5QRXt t  |dƒ||ƒ¡|dƒ|dƒqdS)Nr–r<rrrÙ) r6r7rrÏrr.Ú UserWarningrr[r\rrar)rIÚ    directionr1r\rrrÚtest_nextafter_0)s
 *ÿrüc    Csª|dƒ}t |¡j}|tjƒ}|tjƒ}tjddltt |¡|kƒtt t |¡¡ƒtt t |¡¡ƒtt t | ¡¡ƒtt |dƒ¡dkƒW5QRXdS)NrrUrVgꌠ9Y>)Fr)    rr[rÐr·rrürr>r)rIr¤rÐr·rrrrÚ _test_spacing5s 
 
rýcCs
ttjƒSr+)rýrrØrrrrÚ test_spacingAsrþcCs
ttjƒSr+)rýrrˆrrrrÚ test_spacingfDsrÿcCs
ttjƒSr+)rýrr\rrrrÚ test_spacinglHsrcCsntjddddgtjddddgi}ttjtjgd    ƒD]6\}}tjd
d d d g|d}tt |¡|||dq2dS)Ng ;g°<g@=g€=g5(p=gýô€>g…K8?gP?)r:rhçñh㈵øä>rr—i)rprà)rrØrˆrªrqr r>)Úrefr0rärPrrrÚtest_spacing_gfortranOsýýü    rcCsRtjtjfD]@}dD]6}||ƒ}||dƒ}tt ||¡|t |¡kƒqq dS)N)rrr—r)rrˆrØrrar>)rIZ_fr}Úf1rrrÚtest_nextafter_vs_spacingms
 rcCstt tj¡dkƒdS)zCheck np.nan is a positive nan.rN)rrr#r·rrrrÚ test_pos_nanusrcCs
t ddtjfdtjfg¡}tjdg|d}d|d<d|d<d|d<d    d
d d g}g}|d    }|d d…D]&}| tj |d||…¡¡|}qh| tj |d|d…¡¡t |¡}tj     |d|¡}t
||ƒt  d¡tj     |d|¡}t  tj ¡t
||ƒdS)z;Test bug in reduceat when structured arrays are not copied.)r»ZS11ÚtimerrÝrpZSimpler»r:rrr¬r¨rNrÁ) rr)rÊrˆrrr†rsrrqrnr Z
setbufsizeZUFUNC_BUFSIZE_DEFAULT)ÚdbryZindxÚh2r<r=Úh1rrrÚ test_reduceatys& 
 
 
 r cCs¦t gd¡}t gd¡}tj ||¡}t|j|jƒt|jdƒt d¡}tjj|gdd}t|j|jƒt|jdƒtjj|gdd}t|j|jƒt|jd    ƒd
S) z&Reduceat should work with empty arraysÚi4Zf8)r)r2r%rrmr÷r)r2rN)rrqrsrnrr)rªr-)r‘rPrƒrrrÚtest_reduceat_empty•s   
 r c    CsHttjdƒtdtjƒttjtjƒg}tddƒtddƒtddƒtddƒtddƒtddƒtddƒg}tjddÒ||D]Â}t |g¡}||D]¨}t |g¡}t |¡r´t |¡r´qŽt||kdd||fdt||kdd    ||fdt||kdd
||fdt||kdd ||fdt||kdd ||fdqŽqvW5QRXdS) Nrrr3rUrVFz%r < %rrz%r > %rz%r <= %rz%r >= %rz%r == %r)rrr·rürqrEr)ZnansZfinsrPržrrrÚtest_complex_nan_comparisons¥s$$ ÿ    rcCs*d}t|tt|ƒƒƒt|t |¡ƒdS)Nl*°n¶—)rr•r–rrT)ÚvalrrrÚtest_rint_big_intºsrÚftypecCsptjdddddg|d}tjdddddg|d}tjdddddg|d}ttj |¡|ƒttj |¡|ƒdS)Ng…ëQ¸…ã?g333333ã?g¤p=
×£è?g=
×£p=Ú?gR¸…ëQÈ?rp)rrqrr¬r&rÇ)rr‡Zout_maxZout_minrrrÚtest_memoverlap_accumulateÄs
rz ufunc, dtypecCs<g|]4}|jD](}|ddkr|ddkr||df‘qqS)r3rÒrZDFGMmOr#©rrrIrrrrÍs  ýcCsv|jrt d¡dD]\}tjdddg||d}|j|dd}| tj¡}tjtt     ||¡ƒtjd}t
||ƒqdS)NúFor generic signatures only©r%r¿rÁrÂrHrÃrrrprÒ) rÁrÈrrrqr&r„r©rLr6r)rr)r˜r‡ÚaccZacc_u8r™rrrÚtest_memoverlap_accumulate_cmpÍs
 rcCsPg|]H}|jD]<}|d|dkr|d|dkr|ddkr||df‘qqS)rrr3zDFGMmO?r#rrrrrÝs ýc    Cs‚|jrt d¡tjdd\dD]P}t dddg|¡ |¡}|j||d}tjtt     ||¡ƒ|d}t
||ƒq"W5QRXdS)    NrrUr&rrrr%rp) rÁrÈrrrürqr§r&rLr6r)rr)r˜r‡rr™rrrÚ$test_memoverlap_accumulate_symmetricÝs
rc    Cs0tƒ tjdddd}t |¡W5QRXdS)Nrrˆsà¿ÿ)rªr)Úbuffer)rrr‘rr(rrrÚtest_signaling_nan_exceptionsísrr‡r%r2cCs@Gdd„dtjƒ}tj | |¡| |¡¡}|jjdks<t‚dS)Nc@s eZdZdS)z)test_outer_subclass_preserve.<locals>.fooN)r]r^r_rrrrrüùsrü)rr‘r-ror„rr]rÂ)r‡rüÚactualrrrÚtest_outer_subclass_preserveòsrc
sžGdd„dtjƒ}G‡fdd„dtjƒ‰|ˆfD]h}t d¡ |¡}ttƒ}tj |ddg¡W5QRXt d¡ |¡}ttj ddg|¡ƒ|ks0t    ‚q0dS)Nc@seZdZdd„Zddd„ZdS)z(test_outer_bad_subclass.<locals>.BadArr1cSs|jdkr|jd|_dS)Nr0r)Úndimrªr<rrrÚ__array_finalize__ÿs
z;test_outer_bad_subclass.<locals>.BadArr1.__array_finalize__NcSs|Sr+rrrrrrsz:test_outer_bad_subclass.<locals>.BadArr1.__array_prepare__)N©r]r^r_rrrrrrÚBadArr1þsr cs"eZdZ‡fdd„Zddd„ZdS)z(test_outer_bad_subclass.<locals>.BadArr2cs.t|ˆƒr*|jddkr*|jddd…|_dS)Nr3r)rrªr<©ÚBadArr2rrrs
z;test_outer_bad_subclass.<locals>.BadArr2.__array_finalize__NcSs|Sr+rrrrrrsz:test_outer_bad_subclass.<locals>.BadArr2.__array_prepare__)Nrrr!rrr"s r")r%r0rr%)
rr‘r-r„r    rvrsrorŠrÂ)r r†r‡ryrr!rÚtest_outer_bad_subclassýs    
 
r#c    Cs0t d¡}ttƒtj ||¡W5QRXdS)N)rrrrrrrrrrrrrrrrr)rr-r    rwrsro)ÚdeeprrrÚtest_outer_exceeds_maxdimss
 
r%c    CsVt d¡ tj¡}tjtddt ||¡W5QRXtjtdd6|     d¡ 
dd¡dd…ddd…f}t ||¡W5QRXtjtddtj  ||¡W5QRXtjtddtj  |¡W5QRXtjtddtj  |dd    g¡W5QRXtjtddtj |¡W5QRXtjtddtj |dd    dg|¡W5QRXdS)
Nr0úHow unexpected :\)!rÄrhr3rÆr%rr)rrr§rØrÈrÉr9rqZ always_errorÚrepeatZreshaperorrnr&rp)r‡Z
non_contigrrrÚ#test_bad_legacy_ufunc_silent_errors s $r(Úx1rŽrŠc    Cs*tjtddt |d¡W5QRXdS)Nr&rÄr)rÈrÉr9rqZalways_error_gufunc)r)rrrÚ$test_bad_legacy_gufunc_silent_errors>sr*)™rFrÓr{r6rÈrerêrÌZ    fractionsrÚ    functoolsrÚ collectionsrZnumpy.core.umathÚcoreZumathrbZ
numpy.corerrqÚnumpyrZ numpy.testingrrr    r
r r r rrrrrrrZnumpy.testing._private.utilsrÚ__dict__ÚvaluesZUFUNCSZ UFUNCS_UNARYrCZ UFUNCS_BINARYZUFUNCS_BINARY_ACCrDrJrSrTr`rhr“rÖrÛr:r=r>rfr…rrºr½rÙrÞrôrr
rDrHrMrYrWrcrnrrrwryrr€rr‡r‰rŠrŒrrŽr¤rªrÆrÈrËrÍrÞrérìrîrórörúrÿr
r rr“r–rµr¾rárærërrÅrórôrõrörÍr5r[Údoubler\rdrHrIrùrürýrþrÿrrrrr r rrrÎrˆrØrrrrrZmatrixrr#r%r(r*rrrrÚ<module>sT    @ ÿÿÿÿ8 ~k {Q
   
0#
ù     1- E\\???T +*0c$Gÿ
= ÿÿ   ÿÿ 
 
þ
 
þ
 
 ý