a :jgu @sddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmmZddlmZmZddlZddlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)ddl*m+Z+dd ejjj,-DZ.d d e.DZ/d d e/DZ0d d e.DZ1d d e1DZ2ddZ3ddZ4ddZ5GdddZ6GdddZ7GdddZ8GdddZ9GdddZ:GdddZ;d d!ZGd&d'd'Z?Gd(d)d)Z@Gd*d+d+ZAGd,d-d-ZBGd.d/d/ZCGd0d1d1ZDGd2d3d3e6ZEGd4d5d5ZFGd6d7d7ZGGd8d9d9ZHGd:d;d;ZIGdd?d?ZKgd@gdAgdBgdCgdAgdAgdAgdAdDZLGdEdFdFZMGdGdHdHZNGdIdJdJe6ZOGdKdLdLZPGdMdNdNZQGdOdPdPZRdQdRZSdSdTZTGdUdVdVZUdWdXZVdYdZZWd[d\ZXd]d^ZYd_d`ZZGdadbdbZ[GdcddddZ\Gdedfdfe6Z]Gdgdhdhe6Z^Gdidjdje6Z_Gdkdldle6Z`GdmdndnZaGdodpdpZbGdqdrdrZcGdsdtdtZdGdudvdvZeGdwdxdxZfGdydzdzZgGd{d|d|ZhGd}d~d~ZiGdddZjGdddZkGdddZlGdddZmGdddZnGdddZoGdddZpGdddZqGdddZrGdddZsdddetfddZuddZvddZwddZxddZyejzj{e|ej}e|ej~kddejzjedddddZddZddZddZddZejzj{e|ej}e|ej~kddejzjedddddZddZddZddZddZddZddZddZejzdejejgddZejzddd e2DddńZejzddd e2DddȄZddʄZejzded̡eddgeddgddgggddτZddфZddӄZddՄZejzdedסgdآgddڄZGdd܄d܃ZGddބdރZdS)N)Fractionreduce) namedtuple) _umath_testssctypes)assert_ assert_equal assert_raisesassert_raises_regexassert_array_equalassert_almost_equalassert_array_almost_equalassert_array_max_ulpassert_allcloseassert_no_warningssuppress_warnings_gen_alignment_dataassert_array_almost_equal_nulpIS_WASMIS_MUSLIS_PYPY HAS_REFCOUNT)_glibc_older_thancCsg|]}t|tjr|qS) isinstancenpufunc).0objrrF/usr/local/lib/python3.9/site-packages/numpy/_core/tests/test_umath.py s r!cCsg|]}|jdkr|qSninrZufrrr r!scCsg|]}d|jvr|qS)zf->ftypesr&rrr r!scCsg|]}|jdkr|qS)r$r&rrr r!#scCs$g|]}t|dr|jdkr|qS) accumulater#)hasattrnoutr&rrr r!&sc #sJd}tjd||d}tjd||d}||d<||d<dd}|d|d|dfVdd}|d |d |d fV||d<||d<d D]^||<||<fd d}|||d fV|||d dfV||<||<qdD]\}|dd|}|dd|} ||d<|| d<dd}|| |d|fV||d<|| d<qdS)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? r#i')dtype fill_valuercSs|SNrresrrr @z,interesting_binop_operands..ZscalarscSs|Sr/rr0rrr r2Cr3)r.z scalar-arrays) rr#r)cs|Sr/rr0posrr r2Nr3zoff-z -with-scalar)r7qN cSs|dS)Nr>rr0rrr r2[r3zstride-)rfull) val1val2r-r.arr1arr2 extractorstrideop1op2rr;r interesting_binop_operands*s8  rHcCstdkptdS)z/ True if we are running on a Power PC platform.Zpowerpcppc)platform processormachine startswithrrrr on_powerpcbs  rNcCsXtdkrd}ntrd}ndStt|}tt|j}t||ddkS)zThe 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٣wv=gz ӯ=F?gQ@-(;) rJrLrNrarcsinhZfloat128Z complex256realabs)xv1v2rrr bad_arcsinhhs rWc@seZdZddZddZdS)_FilterInvalidscCstjdd|_dS)NignoreinvalidrZseterrZolderrselfrrr setup_method{sz_FilterInvalids.setup_methodcCstjfi|jdSr/r\r]rrr teardown_method~sz_FilterInvalids.teardown_methodN)__name__ __module__ __qualname__r_r`rrrr rXzsrXc@s$eZdZddZddZddZdS) TestConstantscCsttjdddS)Ng-DT! @V瞯<)rncupir]rrr test_piszTestConstants.test_picCsttjdddS)NgiW @re)rrfer]rrr test_eszTestConstants.test_ecCsttjdddS)Ngox?re)rrfZ euler_gammar]rrr test_euler_gammaszTestConstants.test_euler_gammaN)rarbrcrhrjrkrrrr rdsrdc@s6eZdZddZddZejje ddddZ d S) TestOutc CsdD]}td}td}tj|d||d}t||utj|d||d}t||utj|d|f|d}t||utd}td}tjdtjd}tj||d|d\}} t||utj|d||d\}} t| |utj||||d\}} t||ut| |utj||df|d\}} t||utj|d|f|d\}} t| |utj|||f|d\}} t||ut| |utt$tj|||d\}} Wdn1s0Ytttj|d|||dtttj|d|||dtttj|dd||dtt tj|d||f|dtt tj|dd|dtttj|dg|dtttj|dg|dtttj|dgf|dd |j _ tt tj|d||dtt tj|d||dtt tj|d|f|dqdS) NTF?rr)subokoutrp@r-F) rarrayemptyaddrint32frexpr TypeError ValueErrorflagsZ writeable) r^rpaordo1o2r1r2rrr test_out_suboksP                 4zTestOut.test_out_subokc CsGdddtj}dD]}|dg}tj|d|d}|rJtt||ntt|tjktj|dd|d}|rtt||ntt|tjktj|dd|d}|rtt||ntt|tjktj|dd|d}|rtt||ntt|tjk|d g}td }tjd tjd }tj|||d\}} |rRtt| |ntt| tjktj||d|d\}} |rtt| |ntt| tjktj|d||d\}} |rtt||ntt|tjktj||df|d\}} |rtt| |ntt| tjktj|d|f|d\}} |rNtt||ntt|tjkt t $tj|||d\}} Wdq1s0YqdS) Nc@s"eZdZdZddZdddZdS) z.TestOut.test_out_wrap_subok..ArrayWrapr>cSst||Sr/rasarrayviewcopy)clsarrrrr __new__sz6TestOut.test_out_wrap_subok..ArrayWrap.__new__NFcSs|t|Sr/rtyper^rcontext return_scalarrrr __array_wrap__sz=TestOut.test_out_wrap_subok..ArrayWrap.__array_wrap__)NFrarbrc__array_priority__rrrrrr ArrayWrapsrrmrnr)rorqr/rsr"rt) rndarrayrwrrrrvrxryr rz) r^rrpr}rrrrrrrrr test_out_wrap_suboksX     zTestOut.test_out_wrap_subokzPython lacks refcountsreasoncCs@Gdddtj}td|}|d9}t|dks.ArrSubclassNrarbrcrrrr ArrSubclass srr>r#r))rrarangersys getrefcount)r^rrrrr test_out_wrap_no_leak szTestOut.test_out_wrap_no_leakN) rarbrcrrpytestmarkskipifrrrrrr rls1Krlc @seZdZddlZejdedededej gejdej ej fej ej fejejfejejfejejfejejfgdd Zd d Zd d ZddZddZddZejdddgejdej ej fej ej fejejfejejfejejfejejfgejdddgddZejdejdejdej ej fej ej fejejfejejfejejfejejfgejdd d!gd"d#ZdS)$TestComparisonsrNr-uintintfloatzpy_comp,np_compcsZ|tjkr8tjjddgdd}tjjddgdd}dn4tjjdddd|}tjjdddd|}dt|}|}|}||| tj } fd d t ||D} ||| tj } fd d |D} ||| tj } fd d |D}t | | kd j dt | | kd j dt | |kd j ddS)NFT)r}sizer#r>lowhighrr6csg|]\}}t||qSrrrrTy)py_comprr r!3r3z=TestComparisons.test_comparison_functions..csg|]}t|qSrrrrTrscalarrr r!7r3csg|]}t|qSrrrrrr r!;r3zFailed comparison ())rboolrandomchoicerandintastyper-rtolistruint8ziprra)r^r-rnp_compr}bZ np_scalara_lstb_lstZcomp_bZ comp_b_listZcomp_s1Z comp_s1_listZcomp_s2Z comp_s2_listrrr test_comparison_functionss2       z)TestComparisons.test_comparison_functionscCstjtgddgtd}tttj||Gddd}t|g}tttj||tjtjgtd}tt||dgdS)Nr#r)r4rtc@seZdZddZdS)zGTestComparisons.test_ignore_object_identity_in_equal..FunkyTypecSs tddSNzI won't comparerzr^otherrrr __eq__MszNTestComparisons.test_ignore_object_identity_in_equal..FunkyType.__eq__N)rarbrcrrrrr FunkyTypeLsrF) rruobjectr r{equalrznanr r^r}rrrr $test_ignore_object_identity_in_equalEsz4TestComparisons.test_ignore_object_identity_in_equalcCstjtgddgtd}tttj||Gddd}t|g}tttj||tjtjgtd}tt||dgdS)Nrrtc@seZdZddZdS)zKTestComparisons.test_ignore_object_identity_in_not_equal..FunkyTypecSs tddSrrrrrr __ne___szRTestComparisons.test_ignore_object_identity_in_not_equal..FunkyType.__ne__N)rarbrcrrrrr r^srT) rrurr r{ not_equalrzrr rrrr (test_ignore_object_identity_in_not_equalWsz8TestComparisons.test_ignore_object_identity_in_not_equalcCs8tddg}ttjj|tddtttjj|dS)NrrtT)rrur rrrr rzr^r}rrr test_error_in_equal_reduceisz*TestComparisons.test_error_in_equal_reducecCs<tjddgtdjtksJtjddgddjtks8JdS)Nr#rt)NNO) signature)rrrr-r]rrr test_object_dtypeqsz!TestComparisons.test_object_dtypecCstjddgtdjtksJtjtdd"tjddtjdWdn1sR0Ytjtdd tjddddWdn1s0YdS)Nr#rtzNo loop matchingmatch)NNl)sig)rrrr-rraisesrzint64r]rrr test_object_nonbool_dtype_errorus 0z/TestComparisons.test_object_nonbool_dtype_errordtypesZqQZQqzpy_comp, np_compvals))rrc Cstjdg|dd}tjdg|dd}|dd}||||ksDJ||||ksVJ|d}|d} t|tjsvJt| tjsJ||| |ksJ||| |ksJdS)Nrrrtrr#)rrurinteger) r^rrrrZa1Za2expecteds1s2rrr $test_large_integer_direct_comparisons  z4TestComparisons.test_large_integer_direct_comparisonUnsignedIntegerzpy_comp_func, np_comp_funcflipTFc s|rfdd}fdd}n}}tjt|jg|d}|t|dd}||d|ksbJ||d|kstJ|d} t| tjsJ|| d|ksJ|| d|ksJdS)Ncs ||Sr/rrTr) py_comp_funcrr r2r3zHTestComparisons.test_unsigned_signed_direct_comparison..cs ||Sr/rr) np_comp_funcrr r2r3rtrr7)rruiinfomaxrrr) r^r-rrrrrrrrr)rrr &test_unsigned_signed_direct_comparisons  z6TestComparisons.test_unsigned_signed_direct_comparison)rarbrcoperatorrr parametrizerrrltlessleZ less_equalgtZgreatergeZ greater_equaleqrnerrrrrrrr typecodesrrrrr rsT       "             rc@seZdZddZdS)TestAddcCs<tjddtjfdtjfgd}d|d<t|dddS)Nr)r}rrtr7r)rzerosrxfloat64r sumrrrr test_reduce_alignmentszTestAdd.test_reduce_alignmentN)rarbrcrrrrr rsrc@sVeZdZddZejjeddejde e de ddd d Z ejjeddejde e de dd d d Z ejdeddedddfeddedddfeddedddfeddedddfeddedddfeddedddfedddeddfedddeddfedddeddfedddeddfedddeddfedddeddfedddeddfg ddZddZddZd d!Zd"d#Zejjeejd$d%dejjeddejd&ejd'd(d)Zejd&ejd'd*d+Zd,S)- TestDivisioncCsdtgd}ddkr*t|dgdnt|dgdt|dgdt|dgddS)N) r6r>Zdiirnr) g?皙?g?r#g皙gr7g333333) rrrr#r7r7r7r7r8) r6r>rr_rr>rP)rrur r^rTrrr test_division_ints zTestDivision.test_division_intfp errors don't work in wasmrz dtype,ex_valrr)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)znp.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 st|jdkrdnd}d}t|\}}}||}} fddtjdd(|} | |} ||} Wdn1s0Yfd d t|| D} d } t| | ksJ| d }t| | ksJ||D]|} tjddd  |}| } Wdn1s0Yfdd |D} t|| ksRJ| t| | ksJ|qtjddd Dd|vrt j t dd||Wdn1s0Yn||jrj|vrt j t dd|dWdn1s0Ynjr$|dt j t dd|dWdn1sR0Yt j t dd |} | d} Wdn1s0Ytj g|ddWdn1s0YdS)Nrr7r#ics0|dkr dS|r(|jkr(|dkr(jS||SNrr7minnrforr r2s z9TestDivision.test_division_int_boundary..rYdividecsg|]\}}||qSrrr)c_divrr r!r3z;TestDivision.test_division_int_boundary..z(Integer arrays floor division check (//)z)Integer arrays floor division check (//=)rovercsg|]}|qSrrri)rdivisorrr r! r3raisez*divide by zero encountered in floor_dividerz$overflow encountered in floor_dividert) rrr evalrerrstaterrallrrFloatingPointErrorru)r^r-ex_valnegZlsizer}rZdivisorsrracZdiv_abdiv_lstmsgZmsg_eqdiv_ar)rrrr test_division_int_boundarys^  &( **((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 sNt|t|}|}fdd}tjddtj|}Wdn1sT0Yt||}d}||ks|J|tjdddtjt dd *tjt d d  |Wdn1s0Yj r*tjt d d .tjtj j d dg|dWdn1s 0YWdn1s@0YdS)Ncs*|dks|r"|jkr"|dkr"dS||Sr r r rrr r26sz7TestDivision.test_division_int_reduce..rYrz#Reduce floor integer division checkrrz$divide by zero encountered in reducerrrzoverflow encountered in reducer#r7rt)rrrrr floor_dividerrrrrrr ru) r^r-rr}lstrr"r r!rrr test_division_int_reduce)s*  * 8z%TestDivision.test_division_int_reducezdividend,divisor,quotientr)YM r8r7rr#r9ZNatc Cs|rnt|tst|snd}|||ks0J|d}t|gd}t|gd}t|||ksJ|nntr|tdtj dddBt t ||Wdn1s0YWdn1s0YdS)NzTimedelta floor division checkz%Timedelta arrays floor division checkr6rrrr[) rrrZisnatrurrrskiprrr)r^dividendrZquotientr!Zdividend_arrayZquotient_arrayrrr test_division_int_timedeltaKs  z(TestDivision.test_division_int_timedeltacCsld}tjgdtjd}t|d|||dd}tjddgtjd}|d|}t||d d g|ddS) Nz%Complex division implementation check)??y???@rtr)err_msgz)Complex division overflow/underflow checkgG0JVgys? )r#)rru complex128r )r^r!rTrrrr test_division_complexms z"TestDivision.test_division_complexcCstjdddtjdgtjd}d|}tt|dttjtj|}tt|dttjtj|}tt|dttjtj|}tt|dd|}tt |dWdn1s0YdS)NrYr[rrtrPr) rrrur3risinfcomplexinfrisnan)r^rTrrrr test_zero_division_complexxsz'TestDivision.test_zero_division_complexcCstjgdtjd}tt|dWdn1s<0Yttt|dWdn1sr0Yttt|dWdn1s0YdS)N)y??y?y??y?@rt)rrur3rrrzdivmod remainderrrrr test_floor_division_complexs & * z(TestDivision.test_floor_division_complexcCs8td}tt|ddtt| dddS)Nr>r#r)rrr signbitrrrr test_floor_division_signed_zeros z,TestDivision.test_floor_division_signed_zeroblas_ssl2_infogh-22982r-FloatcCstjtj|d}tjd|d}tjd|d}tjtj|d}tjddd tttj||Wdn1sp0Ytjdddt||Wdn1s0Ytjdd@t||t||t||t||Wdn1s0YdS)NrtrPr6rrYr+r)rrurr9rr rr$)r^r-fnanfonefzerfinfrrr test_floor_division_errorss.*   z'TestDivision.test_floor_division_errorsc CsLtjd|d}tjd|d}tjtj|d}tjd|d}tjd|d}tjtj|d}t}|tdt ||} t | sJdt | ft ||} t | sJdt | ft ||} t | sJdt | fWdn1s0Ytj dd.t ||} t t| Wdn1s>0YdS) Nr>rtrPr6z)invalid value encountered in floor_dividedt: %s, div: %srYr)rronesrurr9rfilterRuntimeWarningr$r:dtrrr7r) r^r-rTrrFrGrHrIsupdivzrrr test_floor_division_corner_casess"    8 z-TestDivision.test_floor_division_corner_casesN)rarbrcrrrrrr itertoolsproductrr#r&rZ timedelta64r.r4r;r?rAr+ __config__rrJrSrrrr rsR   :     rcCst||t||fSr/)rr$r>rrrr floor_divide_and_remaindersrWcCs|tjdvrdSdSdS)Nrr"r#r7)rr)rOrrr _signssrYc @seZdZddZddZddZejje ddejj e j d d dejd ejd d dZejjeejdddejje ddejj e j d d dejd ejd ejdejejgddZejje ddddZddZddZdS) TestRemainderc Cstjdtjd}ttjfD]}t||D]\}}tt|t|D]\}}d}||j||||f}tj|d|d} tj|d|d} || | \} } t | | | | |d|dkrt | | kod kn|qJt | | kod kn|qJq.qdS) N AllIntegerrD*op: %s, dt1: %s, dt2: %s, sg1: %s, sg2: %sGrtr1r7r) rrrWr=rTrUrYrarur r r^rOopZdt1Zdt2Zsg1Zsg2fmtr!r}rrQremrrr test_remainder_basics z"TestRemainder.test_remainder_basiccCs(ttdd}ttdd}|dg|}||}tt||}tdd|D}tj|tdj\}}tj|tdj\} } t | dk|dk|dkA@d | } t | dk|dk@d | } t tj fD]`} tj d D]P} d | j | f} || }|| }| ||\}}t|| | d t|| | d qqdS) Nirr#css|]}t|VqdSr/)r=)rtrrr r3z;TestRemainder.test_float_remainder_exact..rtr6rDzop: %s, dtype: %sr1)listrangerTrUrrurTrwhererWr=rrarr )r^ZnlstZplstr-rargtgtr}rZtgtdivZtgtremr`rOr!faZfbrQrbrrr test_float_remainder_exacts$"  z(TestRemainder.test_float_remainder_exactc Cstjd}ttjfD]}t||D]\}}tddD]\}}d}||j||||f}tj|dd|d} tj|d|d} || | \} } t| | | | |d|dkrt | | kod kn|q8t | | kod kn|q8q$qdS) NrDrXr\Ng+i)+p>rtr1r7r) rrrWr=rTrUrarur rr_rrr test_float_remainder_roundoffs  z+TestRemainder.test_float_remainder_roundoffrrdarwinz_MacOS seems to not give the correct 'invalid' warning for `fmod`. Hopefully, others always do.r-rDcCstjd|d}tjd|d}tjtj|d}tjtj|d}tjddd tttj||Wdn1sp0Ytjddd tttj||Wdn1s0Ytjdd tttj||Wdn1s0Ytjdd tttj||Wdn1s(0Ytjddd tttj||Wdn1sh0Ytjdddt||Wdn1s0YdS)Nr6rtrPrrYr+rZ)rrur9rrr rr=)r^r-fzerorGrIrFrrr test_float_divmod_errors s ...00z&TestRemainder.test_float_divmod_errorsrBrCfnc Cstjd|d}tjd|d}tjtj|d}tjtj|d}tjddptjtdd|||Wdn1sx0Y||||||||||||Wdn1s0YdS)Nr6rtrPrrEz invalid valuer)rrur9rrrrr)r^r-rursrGrIrFrrr test_float_remainder_errors's (   z)TestRemainder.test_float_remainder_errorscCsttjj}tjddd6td|\}}t|t|dkWdn1sX0Ytjddd tt tjd|Wdn1s0Ytjddd tt tjd|Wdn1s0YdS)NrY)rr[r5rr)r[r) rfinfortinyrr=r7rr r)r^r}rQmodrrr test_float_remainder_overflow?s *.z+TestRemainder.test_float_remainder_overflowc CstjdD]r}tjtj|d}tjd|d}tjd|d}tjtj|d}t}|td|tdt||\}}t |sJd||ft |sJd||ft||\}}t |sJd||ft t |d||fft||\}}t |s"Jd||ft |s>Jd||ft||\}}t |sjJd||ft |sJd||ft||\}}t |sJd||ft |sJd||ft||\}}t |sJd||ft |sJd||ft||\}}t |sBJd||ft |s^Jd||fWdq 1st0Yq dS) NrDrtrPr6z#invalid value encountered in divmodz$divide by zero encountered in divmodrKdt: %s, rem: %s) rrrurr9rrMrNr=r7r:r) r^rOrFrGrHrIrPrQrbrrr test_float_divmod_corner_casesKs:   z,TestRemainder.test_float_divmod_corner_casesc Cs tjdD]}tjd|d}tjd|d}tjtj|d}tjd|d}ttjd|d| }t||}t||kd|t| | }t|| kd|q tJ}|t d|t dtjdD]}tjd|d}tjd|d}tjtj |d} tjtj|d}t||}tt |d||ft| |}t | |} tt | d || ftt |d||ft| | }t | |} tt |d||ftt | d || ft| |}t | |} tt |d||ftt | d || ft||}t ||} tt |d||ftt | d || ft||}t ||} tt |d||ftt | d ||ft||}t ||} tt |d||ftt | d ||fqWdn1s0YdS) NrDrPrtr6zdt: %sz&invalid value encountered in remainderz!invalid value encountered in fmodr{zdt: %s, fmod: %s) rrrur nextafterr>rrrMrNr9r:fmod) r^rOrGrHrFrr}rbrPrIr~rrr !test_float_remainder_corner_casesksX                 z/TestRemainder.test_float_remainder_corner_casesN)rarbrcrcrorqrrrrxfailrrJrMrrrrtr+rVr~r>rvrzr|rrrrr rZs.  rZc@seZdZedddgZddddddddd dd Zejeed ed ejeed ed e j eed ed e j eed ed ej eed ed ej eedediZejjeddejdejdddZejjeddejdejdddZejjeddejdedejdedejdejejej ej e j e j gejddddd Zd!S)"+TestDivisionIntegerOverflowsAndDivideByZero result_typenocastcastedcCsdSNrrrtrrr r2r3z4TestDivisionIntegerOverflowsAndDivideByZero.cCs t|jSr/rrr rtrrr r2r3cCst|j Sr/rrtrrr r2r3cCst|jdfSrrrtrrr r2r3cCst|j dfSrrrtrrr r2r3)zeror neg_minmin-zero neg_min-zerorr rrrrrr-Integerc Cs^tt|jd|}|D]>\}}}}tjtdd||}Wdn1sR0Y|j|jkslJ||t|jjksJ||}|j|jksJ||dksJt||}||dksJtjtdd t ||\}} Wdn1s0Y|j| jkr&|jks,nJ||t|jjksHJ|| dksJqdS)Nr7zoverflow encounteredrr) rHrrr rwarnsrNr-r~r= r^r-Zto_checkrFrGrDZoperand_identifierr1res1res2rrr test_signed_division_overflows & .$zITestDivisionIntegerOverflowsAndDivideByZero.test_signed_division_overflowr[c Cstdd|}|D]\}}}}tjtdd||}Wdn1sH0Y|j|jksbJ||dksrJtjtdd t||\}} Wdn1s0Y|j| jkr|jksnJ||dksJ|| dksJqdS)Nr#rzdivide by zeror)rHrrrNr-rr=rrrr test_divide_by_zeros &. z?TestDivisionIntegerOverflowsAndDivideByZero.test_divide_by_zerodividend_dtyper divisor_dtype operationwarnrc sfddtddD}tjdg|d}tjt|jkr8|tjtjtjfvr8t j t ddB|t j |d}||j|ksJWdn1s0Y|D]x}t j t ddTt|||d }t|j|gt|}t||Wdq1s*0Yqn|t j |d}||j|kslJ|D]J}t|||d }t|j|gt|}t||qpdS) Ncs(g|] }tjtjg|dqS)rt)rrurr rrrr r!szNTestDivisionIntegerOverflowsAndDivideByZero.test_overflows..r#r7rtzoverflow encountered inrf)rirrur-itemsizer=r$rfloordivrrrNrr overflow_resultsrflattenlenr r) r^rrrZarraysrresultr}Zexpected_arrayrrr test_overflowssj    ( .   z:TestDivisionIntegerOverflowsAndDivideByZero.test_overflowsN)rarbrcrrZhelper_lambdasrr>r~rryrr$r=rrrrrrrrrrrrrrrr rsX         rc@seZdZddZddZdS)TestCbrtcCstttddddS)Nr4)r rcbrtfloat32r]rrr test_cbrt_scalar(szTestCbrt.test_cbrt_scalarcCsttdddtjtj g}tt|d|ttttjtttjtjtttj tj dS)NrP@r4) rrur9r rrr:rr rrrr test_cbrt+s zTestCbrt.test_cbrtN)rarbrcrrrrrr r'src@steZdZddZddZddZejje ddd d Z d d Z d dZ ddZ ddZddZddZddZdS) TestPowercCsDtgd}t|dgdt|d|t|dgd|}|dC}t|gdt|dgdt|d d tdtd gttjd d dD]F\}}}dd|D}t|d ||dtj||dt|||dqttj d ddD]F\}}}dd|D}t|d ||dtj||dt|||dqdS)N)rPr@rrPrPrPr#r))rP@"@r7)rPrngUUUUUU?rnrPr4unary r-rmax_sizecSsg|]}t|qSrrfsqrtrrrr r!Cr3z.TestPower.test_power_float..r1rrr<cSsg|]}t|qSrrrrrr r!Kr3) rrur rr rfrrrr)r^rTrrrinpr!exprrr test_power_float5s2 zTestPower.test_power_floatc stgd}t|dgdt|d|t|dgdt|dgdt|d gd t|d gd t|d gdt|dgdt|dtdtdtdgd|ddt|dfdddDdd}tdtjtdtjfD]|}tj|gtjd}tj ddF||d|||d||||d|||Wdn1s0YqdS)N)r0@@@@rrr#r))y@y(@y8@r4)y&yG"@y@]F@r5)y8y]^yxur7)y?ٿy;;?؉؉ͿyQ?{GzĿr8)yQ{GzĿyn_YK&q-yǺa2U0*r9)yI +Mb?y:бbpԗ|pyF̱~&|grnr0rrrPcsg|] }|qSrrrZnormrr r!_r3z0TestPower.test_power_complex..)y~@y0vA΋AyA]AcSs t|j|jt|j|jdSr/r rRimagrrrr assert_complex_equalcsz:TestPower.test_power_complex..assert_complex_equalrtrYrZ) rrur r rfrr8r9r3r)r^rTrrRrrr test_power_complexPs. zTestPower.test_power_complexcCstdg}tdg}tttjtjg}dd}dD]}|t|||q:|t|d|tjddR|t|d |dD]}|t|| |q|t|d |Wdn1s0YdS) N?cSs6t|t|}}t|j|jt|j|jdSr/)rrr rRrrrrr rvsz7TestPower.test_power_zero..assert_complex_equal) gQ?rnr#?r)r4r5r6gffffff@rrYrZ?y𿚙?)rrur8rpowerr)r^ronecnanrprrr test_power_zerons  zTestPower.test_power_zerorrcCs"tdg}tttjtjg}dd}|t|d||t|d||t|d||t|d||t|d|tjtd j}|t|d ||t|d ||t|d ||t|d ||t|d|Wdn1s0Yt|dksJdS)NrcSs t|j|jt|j|jdSr/rrrrr rsz?TestPower.test_zero_power_nonzero..assert_complex_equaly?@y@r/r?)Zexpected_warning?yyryr6) rrur8rrrrrNr)r^rrrrrrr test_zero_power_nonzeros 2z!TestPower.test_zero_power_nonzerocCstgdtj}|d}t|dj|jut|gdtt|| t|gd|tdggg}t|jddS)Nrrg9b->@)r#r5 r))r#r#r4) rruint16rr-r Zmay_share_memoryr shape)r^rTr1rrr test_fast_powerszTestPower.test_fast_powercCs.tddgd}t||}t|ddgdS)Ni8l2X0)rrurr r^r}rrrr test_integer_powers zTestPower.test_integer_powercCsztjd}|D],}tjdd|d}tt|dt|qtjd}|D]*}tjd|d}tt|dt|qJdS)Nrrr>rtrrrrrr r ones_liker^rrOrrrr -test_integer_power_with_integer_zero_exponents  z7TestPower.test_integer_power_with_integer_zero_exponentcCs>tjd}|D]*}tjd|d}ttd|t|qdS)Nr[r>rtr#rrrrr test_integer_power_of_1s z!TestPower.test_integer_power_of_1cCs@tjd}|D],}tjdd|d}ttd|t|qdS)Nr[r#r>rtr)rrrr r zeros_likerrrr test_integer_power_of_zeros z$TestPower.test_integer_power_of_zerocCstjd}|D]}tjgd|d}tjgd|d}tjd|d}tjd|d}tttj||tttj||tttj||tttj||qdS)Nr)rr#r)r4rt)rr#r)r9r#r7)rrrur r{r)r^rrOr}rrZminusonerrr test_integer_to_negative_powers z(TestPower.test_integer_to_negative_powerc CstjtjfD]}tddddddtjtj g|}ttjtj tjtj tjtj tjtj g|}tddtjdtjdtjdg|}tt|||q dS)Nr#r)r8r)rrrrur9r r)r^rOr}rrrrr test_float_to_inf_powers""z!TestPower.test_float_to_inf_powerN)rarbrcrrrrrrrrrrrrrrrrrrr r4s    rc@seZdZddZdS)TestFloat_powercCs`d}d}t||D]H\}}d||f}tjd|d}t||}t|jjt|jk|qdS)Nz?bhilBHILefdgFDGZddddddddddddgDDGzdtin: %s, dtout: %sr#rt)rrrLZ float_powerrr-name)r^Zarg_typeZres_typeZdtinZdtoutr!rlr1rrr test_type_conversions  z$TestFloat_power.test_type_conversionN)rarbrcrrrrr rsrc@sZeZdZejdgdddZejdedddd Zejj e d d d d Z dS)TestLog2rOrrgcCs@gd}gd}tj||d}tj||d}tt||dS)N r#r)r5 @rdii rr#r)r4r5r6r<rrr>rt)rrur log2r^rOrTrxfyfrrr test_log2_valuess zTestLog2.test_log2_valuesrr#AcCs(td|}t|t|d|ddS)Nrzat exponent %dr1)rrr r)r^rvrrr test_log2_intsszTestLog2.test_log2_intsrrcCsttddtttjtjttttjtjdd}t ddt tttdttttj ttdtj t|dj t ut|d j t ut|d j t uWdn1s0YdS) NrPr6T)recordalwaysrr#r)) r rrr9rr:rwarningscatch_warningsfilterwarningsrNcategory)r^wrrr test_log2_specialszTestLog2.test_log2_specialN) rarbrcrrrrrirrrrrrrr rs   rc@seZdZddZdS)TestExp2cCsJgd}gd}dD]0}tj||d}tj||d}tt||qdS)Nrrrrt)rrur exp2r^rTrrOrrrrr test_exp2_valuess zTestExp2.test_exp2_valuesN)rarbrcrrrrr r src@s4eZdZddZddZddZddZd d Zd S) TestLogAddExp2c Csgd}gd}gd}tgdgdD]Z\}}ttj||d}ttj||d}ttj||d}tt||||dq*dSN)r#r)r4r5r6)r6r5r4r)r#)rrrrrr)rrrrtdecimal)rrrrur logaddexp2 r^rTrrRrOdec_rrzfrrr test_logaddexp2_valuessz%TestLogAddExp2.test_logaddexp2_valuescCsbgd}gd}gd}dD]@}tj||d}tj||d}tj||d}tt|||qdSN)@BC)r r r r )r r r r rrt)rrur rr^rTrrRrOlogxflogyflogzfrrr test_logaddexp2_range#sz$TestLogAddExp2.test_logaddexp2_rangec Cstj}|| || |d| dg}||| | d|d| g}|||| ||ddg}tjddVdD]@}tj||d}tj||d}tj||d}tt|||qbWdn1s0YdSNr#rrZrrt)rr9rrur r r^r9rTrrRrOrrrrrr test_inf-szTestLogAddExp2.test_infcCsttttjtjttttjtjttttjdtttdtjttttjtjdSr)rrr:rrr9r]rrr test_nan9s zTestLogAddExp2.test_nancCsbttjjtj ttjgtj ttjtj gtj ttjtj dgddSr)r rridentityr9rr]rrr test_reduce@szTestLogAddExp2.test_reduceN)rarbrcrrrrrrrrr rs    rc@s$eZdZddZddZddZdS)TestLogcCs~gd}gd}dD]8}d}tj||d}tj||d|}tt||qtgd}t|}ttj||d|dS)Nrrr9B.?rt)r)g?r4gRQ?gl# ?r)rrur logr^rTrrOZlog2_rrrrr test_log_valuesHs zTestLog.test_log_valuesc Csttjtjg}tdkr$|tjg7}|D]F}tjdd&t|j}t |Wdq(1sd0Yq(dS)Nx86_64rrE) rrrrJrL longdoublerrwrr)r^rrOrTrrr test_log_values_maxofdtypeVs    z"TestLog.test_log_values_maxofdtypec Cstjdtgd}tdd}|D]}ttjjdd|d}|}d|d d d <t|}t|}|D]T}t t|dd||dd|dd t t|dd||dd|dd qtq*dS) N*r:r9r8r7r#r)r4r5r)r{Gz?Y@rrPr4r7r5Znulp) rrseedrurruniformrrr) r^stridessizesiix_f64Z x_specialy_trueZ y_specialjjrrr test_log_stridesds    (zTestLog.test_log_stridesN)rarbrcrr r.rrrr rGsrc@seZdZddZddZdS)TestExpcCsRgd}gd}dD]8}d}tj||d}tj||d|}tt||qdS)Nrrrrrt)rrur rrrrr test_exp_valuessszTestExp.test_exp_valuesc Cstjdtgd}tdd}|D]X}ttjjdd|d}t|}|D],}tt|dd||dd|ddqTq*dS) Nr!r"r)rr#g(@rr%) rrr&rurrr'rr)r^r(r)r*r+r,r-rrr test_exp_strides|s   zTestExp.test_exp_stridesN)rarbrcr0r1rrrr r/rs r/c#@seZdZddZejjedddddZejj e ddd d Z ejj e ddej d gd d dZ ejj e ddejjejdddddZejj e ddej dejejgej d gdej dejej gddZej dejejgej d ddgej dgdddZej dgd dd Zd!d"Zejj e ddd#d$Zejj e ddd%d&Zejj e ddd'd(Zejj e ddd)d*Zd+d,Zejj e ddd-d.Zejj e ddejj d/ejvd0dd1d2Z d3d4Z!d5d6Z"ejj e ddd7d8Z#ejj e ddd9d:Z$ejjedddd;d<Z%ejj e ddd=d>Z&ejejej'ej(ej)ej*ej+gZ,ej-ej.ej/ej0ej1ej2ej+gZ3ej+gZ4ej2gZ5ej-ej.ej/ej6ej2gZ7ej d?e8ej d dej d@dAge5fdAgdBe5fdCge3fdCgdBe3fdDge4fdDgdBe4fdEge7fdEgdBe7fdFge7fdFgdBe7fdGdGdGej9ge5fdGdGdGej9gdBe5fej9dDdDdDge4fej9dDdDdDgdBe4fej9ggfej9gdBgfdGdGdGejge,e5fdGdGdGejgdBe,e5fejdDdDdDge,fejdDdDdDgdBe,fejge,fejgdBe,fdGdGdGej ge3e,e5fdGdGdGej gdBe3e,e5fej dDdDdDge3e,fej dDdDdDgdBe3e,fej ge3e,fej gdBe3e,ffdHdIZ:ej d ddJdKZ;dLS)MTestSpecialFloatscCstjdddptjtjtjdg}tjtj tjtj g}dD]0}tj||d}tj||d}tt||q>Wdn1s0YdS)Nr)underrr6rirrrrt)rrrr9rur rrrrr r0sz!TestSpecialFloats.test_exp_values2.17zr?)r^Zunderflow_triggerrrr test_sincos_underflows z'TestSpecialFloats.test_sincos_underflowcallabler;valuecCsHtjdd(tt|tj|g|dWdn1s:0YdS)NrrZrt)rrr rru)r^rCr-rDrrr test_sincos_errorssz$TestSpecialFloats.test_sincos_errorsrrrE)r7r#r)r5r6c Csnd}|t|}tjd}|||}||dd|}||dd||d|dt|d||dS)Nrr!r)rSrrZ default_rngZstandard_normalr ) r^rCr-rENr(rngrTrrrr test_sincos_overlapss   z&TestSpecialFloats.test_sincos_overlapsrOcCstjddltjtjtjtjdg}tjtj tjtj dg}tj||d}tj||d}tt||Wdn1s~0YdS)NrYrEr6rt)rrrr9rur rrrrr test_sqrt_valuess z"TestSpecialFloats.test_sqrt_valuescCsvtjtjtjtjddddg}tjtj tjtj ddddg}dD]0}tj||d}tj||d}tt||q@dS)Nr6rPrgrr4rt)rrr9rur rSrrrr test_abs_valuess  z!TestSpecialFloats.test_abs_valuescCstjtjtjtjg}tjtj tjtj g}tjddFdD]0}tj||d}tj||d}tt||q>Wdn1s0YtjddXtttjtjdddtttjtjd d dtttjtjd d dWdn1s0YdS) NrYrEr4rtrr6@@rignFrgZbtir) rrr9rrur squarer rrrrr test_square_valuess"0   z$TestSpecialFloats.test_square_valuesc Cstjdd|tjtjddtjtj g}tjtj tjtj ddg}dD]0}tj||d}tj||d}tt||qHWdn1s0Ytjdd2dD]}tttjtjd|dqWdn1s0YdS) NrYrEr6rgr4rtrr) rrrr9rur reciprocalr rrrrr test_reciprocal_values,s0 z(TestSpecialFloats.test_reciprocal_valuesc Cstjddztjtj ddtjtj g}tjtjddtjtjg}dD]0}tj||d}tj||d}tt||qFWdn1s0YtjddPdD]:}tttjtjtj|dtttjtjtj |dqWdn1s0YdS) NrYrEr6rgr;rtrrZ) rrrr9rur tanr rr^in_rrrOin_arrout_arrrrr test_tan;s0zTestSpecialFloats.test_tanc Cstjddtjtj tjtj g}tjtjtjtjg}dD]@}tj||d}tj||d}tt||tt||q>Wdn1s0YtjtjfD]j}tjtj ddfD]R}dD]H}tjdd&tt |tj||dWdq1s0YqqqdS) NrYrEr;rtrr:rrZ) rrrr9rur arcsinarccosr r)r^rRrrrOrSrTrCrDrrr test_arcsincosLs0 z TestSpecialFloats.test_arcsincoscCstjdd`tjtj g}tjtjg}dD]0}tj||d}tj||d}tt||q,Wdn1sr0YdS)NrYrEr;rt)rrrrur arctanrQrrr test_arctan^s zTestSpecialFloats.test_arctancCstjtj tjtj g}tjtjtjtj g}dD]0}tj||d}tj||d}tt||q2tjddXtttjtjdddtttjtjdddtttjtjd d dWdn1s0YdS Nr;rtrr6(@rig^@rg@r) rrr9rur sinhrr rrQrrr test_sinhgs    zTestSpecialFloats.test_sinhZbsdz2fallback implementation may not raise, see gh-2487cCstjtj tjtj g}tjtjtjtjg}dD]0}tj||d}tj||d}tt||q0tjddXtttjtjdddtttjtjdddtttjtjd d dWdn1s0YdSr[) rrr9rur coshrr rrQrrr test_coshxs    zTestSpecialFloats.test_coshcCsdtjtj tjtj g}tjtjddg}dD]2}tj||d}tj||d}tt||dq,dS)NrPrr;rtr4)rrr9rurtanhrQrrr test_tanhs zTestSpecialFloats.test_tanhcCshtjtj tjtj g}tjtjtjtj g}dD]0}tj||d}tj||d}tt||q2dS)Nr;rt)rrr9rur rQrQrrr test_arcsinhs zTestSpecialFloats.test_arcsinhc Cstjdd|tjtj tjtj ddg}tjtjtjtjdtjg}dD]0}tj||d}tj||d}tt||qHWdn1s0Ydtj fD]R}tjdd2dD]}tttjtj||dqWdq1s0YqdS) NrYrErPr6r;rtrrZ) rrrr9rur arccoshr rr^rRrrrOrSrTrDrrr test_arccoshs0 zTestSpecialFloats.test_arccoshc Cs*tjddtjtj tjtj dddg}tjtjtjtjtjtj tjg}dD]0}tj||d}tj||d}tt||qRWdn1s0Ydtjtj ddfD]V}tjd d d 2dD]}tttjtj||dqWdq1s0Yqt td j s&JdS) NrYrErPrrr;rtg)\(?rr5) rrrr9rur arctanhr rr@rRrerrr test_arctanhs"0 (zTestSpecialFloats.test_arctanhc Cstjddptjtj tjtj g}tjtjtjdg}dD]0}tj||d}tj||d}tt||qr?r9rErHrIrJrMrOrUrXrZr^r`rbrcrfrirkrmrPrWrVrnrhZINF_INVALID_ERRrrr<r=rrdZNEG_INVALID_ERRZONE_INVALID_ERRZLTONE_INVALID_ERRrNZ BYZERO_ERRUFUNCS_UNARY_FPrrrrsrrrr r2s   1                           & r2c@s@eZdZejdgdddZejdddgdd Zd S) TestFPClassrE)rr:r9r8r7r#r)r5r6rr<rrr>c Cs4tjtjtj tjtj ddddddg dd}tjtjtj tjtj ddddd d g d d}tgd }tgd }tgd}tgd}tt|dd||dd|tt|dd||dd|tt|dd||dd|tt|dd||dd|tdkrt |}t |} d|d<d| d<tt | dd||dd|tt |dd||dd|nHtt |dd||dd|tt |dd||dd|tt |dd||dd|tt |dd||dd|dS)NrrPrgr6iVQ iVQ rrtgJ-&6gJ-&r TTFFFFFFFF FFTTFFFFFF FTFTTFTFFT FFFFTTTTTTriscv64r#) rrurr9r r:r7rJrKrr@isfinite) r^rEZarr_f64Zarr_f32rr9signfiniteZ arr_f64_rvZ arr_f32_rvrrr test_fpclass5s*..$$$$  $&$$$zTestFPClass.test_fpclassr-rrc CsJtjtjtj tjtj ddddddg |d}tgd}tgd }tgd }tgd }tj|jd d}|d dd}|d dd} t|} tdkrt|} d| d <| d dd} t| } n|} | } t |j j dt | j j dt | j j dt | j j dt | j j dt tj || d|d ddt tj || d|d ddt tj| | d|d ddt tj|| d|d ddt tj | | d|d ddt tj | | d|d ddt tj| | d|d ddt tj| | d|d ddt t ||d ddt t ||d ddt t| |d ddt t||d ddtt|d}tt|d}tt|d}tt|d}tt|d}t t ||t t ||tdkr&tt| d}t t||nt t||t t||dS)NrrPrgr6rvrwrtrxryrzr{rr#r4r|FTrr))rrurr9rrrJrKrr r| c_contiguousr:r7r@r} array_split)r^r-rprr9r~rrr ncontig_in ncontig_out contig_inZdata_rvZncontig_sign_inZcontig_sign_in data_splitZ nan_splitZ inf_splitZ sign_splitZ finite_splitZ data_split_rvrrr test_fp_noncontiguousUsd    z!TestFPClass.test_fp_noncontiguousN)rarbrcrrrrrrrrr ru4s ruc@s8eZdZejdgdejdddgddZdS) TestLDExprEr:r8r7r#r)r5r-rrcCstjgd|d}tjgddd}tjd|d}ttj|dd||dd||dd|dtjd|ddd|t|dd|tjd|ddd|dS)N)g??rnrPrPrrg @rt)r4r)r#rrr7r8r9rrr)rrurr ldexprL)r^r-rEmantrrrrrr test_ldexps HzTestLDExp.test_ldexpN)rarbrcrrrrrrrr rsrc@sbeZdZejdgdejdddgejjej d ddejj e d dd d Z d S) TestFRExprErr-rrlinuxzAnp.frexp gives different answers for NAN/INF on windows and linuxrZgh23049c Cstjtjtjtjtj ddddg|d}tjtjtjtjtj ddddg|d}tjgdd d}tjd |d}d tjd d d}tj|dd||dd||dd|fd \}} t|dd||t|dd|| t|dd||dd|t|dd||dd|dS) Nr6rgrPrrtrn)rrrrrrr#r#rrr)r)rrurr9rLryr ) r^r-rErZ mant_trueexp_trueZout_mantZout_exprrrrr test_frexps((4zTestFRExp.test_frexpN) rarbrcrrrrrrJrMrrrrrrr rsr)r#r6r$)rYr$)r#rPr$)r#rr$)rabsoluterNrLrintfloorrotruncc@seZdZddZdS) TestAVXUfuncsc Csrtgd}tjdtD]H\}}|d}|d}|d}tddD]}tt|}tjj|||d tj } | tj } | tj } || } |dkrt || | tj t || | tj n4t|| | tj |dt|| | tj |d|dkrN|| } || }|D]J}t || dd||dd|t || dd|| dd|qqNq"dS) Nr"r!rr#r)rrZmaxulp)rrurr& avx_ufuncsitemsrigetattrr'rrrrr r)r^r(funcpropZ maxulperrminvalmaxvalrZmyfuncx_f32r+Zx_f128Z y_true128Zy_true32Zy_true64r-rrr test_avx_based_ufuncsB       "z"TestAVXUfuncs.test_avx_based_ufuncN)rarbrcrrrrr rsrc@s,eZdZddZddZddZddZd S) TestAVXFloat32TranscendentalcCsRtjdttjjdddd}t|}tt|tt|dddS)Nr!r6fffffV@r rr4r)rrr&rr'rrrr^rr+rrr test_exp_float32s  z-TestAVXFloat32Transcendental.test_exp_float32cCsRtjdttjjdddd}t|}tt|tt|dddS)Nr!r6rr rr5r)rrr&rr'rrrrrrr test_log_float32s  z-TestAVXFloat32Transcendental.test_log_float32cCstjdd}t|d}tjjd||d}ttjjdd|d}tdsjtd tj|||<t |}t t |tt |d d t t |tt |d d | }t tj ||d tt |d d t tj ||d tt |d d dS) Nr!r rrrr$r5gvH7Br)rr)rrr&int_rrr'rZrandrrr>r?r)r^rFr(indexrr+Ztx_f32rrr test_sincos_float32s    $z0TestAVXFloat32Transcendental.test_sincos_float32c Cs6tjdtgd}tdd}|D]}ttjjdd|d}|}d|d d d <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 qq*dS) Nr!r"r)rr#rrgL@r4r7r5r%) rrr&rurrr'rrrr>r?r) r^r(r)r*rZ x_f32_largerZlog_trueZsin_trueZcos_truer-rrr test_strided_float32s        (((z1TestAVXFloat32Transcendental.test_strided_float32N)rarbrcrrrrrrrr rsrc@s4eZdZddZddZddZddZd d Zd S) TestLogAddExpc Csgd}gd}gd}tgdgdD]Z\}}ttj||d}ttj||d}ttj||d}tt||||dq*dSr)rrrrur logaddexprrrr test_logaddexp_valuessz#TestLogAddExp.test_logaddexp_valuescCsbgd}gd}gd}dD]@}tj||d}tj||d}tj||d}tt|||qdSr )rrur rrrrr test_logaddexp_rangesz"TestLogAddExp.test_logaddexp_rangec Cstj}|| || |d| dg}||| | d|d| g}|||| ||ddg}tjddVdD]@}tj||d}tj||d}tj||d}tt|||qbWdn1s0YdSr)rr9rrur rrrrr r#szTestLogAddExp.test_infcCsttttjtjttttjtjttttjdtttdtjttttjtjdSr)rrr:rrr9r]rrr r/s zTestLogAddExp.test_nancCs,ttjjtj ttjgtj dSr/)r rrrr9rr]rrr r6szTestLogAddExp.test_reduceN)rarbrcrrrrrrrrr rs    rc@seZdZddZddZdS) TestLog1pcCs0ttdtdttdtddS)N皙?g333333?ư>g zo ?)r rfr=rr]rrr test_log1p<szTestLog1p.test_log1pcCstjdddttttjtjtttjtjttdtj ttdtjtttj tjWdn1s0YdS)NrYr5rr:)rrr rfr=rr9r]rrr test_special@s zTestLog1p.test_specialN)rarbrcrrrrrr r;src@s$eZdZddZddZddZdS) TestExpm1cCs8ttdtddttdtdddS)Nrr#r)r rfrlrr]rrr rmJszTestExpm1.test_expm1cCs`tttjtjttddttddtttjtjtttj ddS)Nr6rgr)r rfrlrr9r]rrr rNs zTestExpm1.test_specialcCs:td}t|t||tj}t|t|dS)Ng-q=)rrrrfrlrr3rrrr test_complexUs  zTestExpm1.test_complexN)rarbrcrmrrrrrr rIsrc@seZdZddZddZdS) TestHypotcCs.ttddtdttddddSNr#r)r)r rfhypotrr]rrr test_simple]szTestHypot.test_simplecCsXttjddgdttjgddttjgddttjgddS)Nrr@)rrr)rr\4@g9@r6)r rfrrr r]rrr raszTestHypot.test_reduceN)rarbrcrrrrrr r\src CsZtjdd:ttt||d||t||fWdn1sL0YdS)NrYrZzhypot(%s, %s) is %s, not nan)rrrr:rfrrrrr assert_hypot_isnanhsrc CsZtjdd:ttt||d||t||fWdn1sL0YdS)NrYrZzhypot(%s, %s) is %s, not inf)rrrr7rfrrrrr assert_hypot_isinfnsrc@s$eZdZddZddZddZdS)TestHypotSpecialValuescCsttjtjttjddSNr#)rrrr]rrr test_nan_outputsusz'TestHypotSpecialValues.test_nan_outputscCsRttjtjttjtjttjdtdtjttjtjttjddS)Nrg7@)rrrr9r]rrr test_nan_outputs2ys   z(TestHypotSpecialValues.test_nan_outputs2cCsttjtjddSr)rrfrrr9r]rrr test_no_fpesz"TestHypotSpecialValues.test_no_fpeN)rarbrcrrrrrrr rtsrc Cs.ttt||d||t||fdS)Nzarctan(%s, %s) is %s, not nan)rrr:rfarctan2rrrr assert_arctan2_isnansrc Cs>ttt||o"t||dkd||t||fdS)Nrzarctan(%s, %s) is %s, not +infrrr7rfrrrrr assert_arctan2_ispinfsrc Cs>ttt||o"t||dkd||t||fdS)Nrzarctan(%s, %s) is %s, not -infrrrrr assert_arctan2_isninfsrc Cs@tt||dko$tt|| d||t||fdS)Nrzarctan(%s, %s) is %s, not +0rrfrrr@rrrr assert_arctan2_ispzerosrc Cs>tt||dko"tt||d||t||fdS)Nrzarctan(%s, %s) is %s, not -0rrrrr assert_arctan2_isnzerosrc@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)TestArctan2SpecialValuescCsLttdddtjttdddtjttdddtjdS)Nr#rr7п?)r rfrrrgr]rrr test_one_onesz%TestArctan2SpecialValues.test_one_onecCs6tttjtjtjtttjtjtj dSr/)r rfrPZERONZEROrrgr]rrr test_zero_nzerosz(TestArctan2SpecialValues.test_zero_nzerocCs ttjtjttjtjdSr/rrfrrrr]rrr test_zero_pzerosz(TestArctan2SpecialValues.test_zero_pzerocCs2tttjdtjtttjdtj dS)Nr7r rfrrrrgrr]rrr test_zero_negativesz+TestArctan2SpecialValues.test_zero_negativecCsttjdttjddSrrr]rrr test_zero_positives z+TestArctan2SpecialValues.test_zero_positivecCs8ttdtjdtjttdtjdtjdS)Nr#rnrr]rrr test_positive_zerosz+TestArctan2SpecialValues.test_positive_zerocCs8ttdtjdtjttdtjdtjdS)Nr7rrr]rrr test_negative_zerosz+TestArctan2SpecialValues.test_negative_zerocCs6ttdtj tjttdtj tj dSNr#r7r rfrrr9rgr]rrr test_any_ninfsz&TestArctan2SpecialValues.test_any_ninfcCstdtjtdtjdSr)rrr9rr]rrr test_any_pinfs z&TestArctan2SpecialValues.test_any_pinfcCs:tttjddtjtttj ddtjdS)Nr#rnrrr]rrr test_inf_anysz%TestArctan2SpecialValues.test_inf_anycCsBtttjtj dtjtttj tj dtjdS)Nrgrr]rrr test_inf_ninfsz&TestArctan2SpecialValues.test_inf_ninfcCs>tttjtjdtjtttj tjdtjdS)Nrrrr]rrr test_inf_pinfsz&TestArctan2SpecialValues.test_inf_pinfcCs.ttjtjttjtjttjtjdSr/)rrrr9r]rrr test_nan_anysz%TestArctan2SpecialValues.test_nan_anyN)rarbrcrrrrrrrrrrrrrrrrr rsrc@s$eZdZddZddZddZdS) TestLdexpcCsptttdtjtd|dtttdtjtd|dtttdtjtd|ddS)Nrr40@)r rfrrrurrr)r^tprrr _check_ldexps   zTestLdexp._check_ldexpcCsNttddd|tj|tj|tj|d|ddS)Nrr4rrr)r rfrrrint8rrxr]rrr rs     zTestLdexp.test_ldexpcCsztjddZttdj}ttdj}ttd|tj ttd|dWdn1sl0YdS)NrYr6rrr) rrrr-rr r rfrr9)r^ZimaxZiminrrr test_ldexp_overflows zTestLdexp.test_ldexp_overflowN)rarbrcrrrrrrr rs rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) TestMaximumc Cstjd}tjd}td}|ddd}tjj}|D]4}||}||}t||dt||dq8|D]t}||}||}t||dt||dtj|ddd<tj|ddd<t||tjt||tjqrdS)NAllFloatr[rr7r>r))rrrmaximumrrr r r^ZdfltZdintZseq1Zseq2rrOZtmp1Ztmp2rrr rs&       zTestMaximum.test_reducecCs0ttjddgdttjddgddSNr#@y?@)r rrrr]rrr test_reduce_complex szTestMaximum.test_reduce_complexcCsLtj}td||g}t|d|g}t|||g}tt|||dSr)rrrur rr^rarg1arg2rrrrr test_float_nans s zTestMaximum.test_float_nanscCs^tdD]P}ttdt}d}ttdt}tt||dktt||dkqdSNr#rrP)rirrurrrrr^rrTrrRrrr test_object_nans s  zTestMaximum.test_object_nanscCsztj}t|dtd|t||fD]R}tjd||gtd}tj|d|gtd}tj|||gtd}tt|||q"dSNrrt)rrr8rur rr^rrrrrrrrr test_complex_nans& s  zTestMaximum.test_complex_nanscCs,tjdtd}|d}tt|||dSNr6rtr#)rrrr rr^rrrrr test_object_array. szTestMaximum.test_object_arrayc Cstddddtjtj tjtj g}tddtjddtjddg}tddtjdtjtjtjdg}td}tddddddtjdg}tt|||tt|ddd |ddd |ddd tt|dd |ddd tdtjddgtt|ddd |dd tddtjgttj|dd d |ddd |ddd d tddtjgt||dSNgrPg$@r6r:rrrr)r5r4rr)rrurr9rLr r)r^rBrCZmaxtruerrZ out_maxtruerrr test_strided_array3 s&" 042BzTestMaximum.test_strided_arrayc Cstjtjtjtjg}|D]}t|j}t|j}|d}t|tj }|tj |f|tj |f|||f|tj tj fg}|D]8\}} } t t |g| g| gt tj || g| q~qdSNr)rr8rrrrwr rr}r9rr rr r^rrOZdtminZdtmaxZd1Zd1_nextZ test_casesrUrVrrrr test_precision@ s     zTestMaximum.test_precisionN rarbrcrrrrrrrrrrrr rs  rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) TestMinimumc Cstjd}tjd}td}|ddd}tjj}|D]4}||}||}t||dt||dq8|D]t}||}||}t||dt||dtj|ddd<tj|ddd<t||tjt||tjqrdS)Nrr[rr7rr))rrrminimumrrr rrrrr rW s&       zTestMinimum.test_reducecCs0ttjddgdttjddgddSr)r rrrr]rrr rl szTestMinimum.test_reduce_complexcCsLtj}td||g}t|d|g}t|||g}tt|||dSr)rrrur rrrrr rp s zTestMinimum.test_float_nanscCs^tdD]P}ttdt}d}ttdt}tt||dktt||dkqdSr)rirrurrrrrrrr rw s  zTestMinimum.test_object_nanscCsztj}t|dtd|t||fD]R}tjd||gtd}tj|d|gtd}tj|||gtd}tt|||q"dSr)rrr8rur rrrrr r s  zTestMinimum.test_complex_nanscCs,tjdtd}|d}tt|||dSr)rrrr rrrrr r szTestMinimum.test_object_arrayc Cstddddtjtj tjtj g}tddtjddtjddg}tddtjdtjtjdtj g}td}tddddddtjdg}tt|||tt|ddd |ddd |ddd tt|dd |ddd tdtjddgtt|ddd |dd tddtjgttj|dd d |ddd |ddd d tddtjgt||dSr)rrurr9rLr r)r^rBrCZmintruerrZ out_mintruerrr r s&$ 042BzTestMinimum.test_strided_arrayc Cstjtjtjtjg}|D]}t|j}t|j}|d}t|tj }|tj |f|tj |f|||f|tj tj fg}|D]8\}} } t t |g| g| gt tj || g| qzqdSr)rr8rrrrwr rr}r9rr rrrrrr r s     zTestMinimum.test_precisionNrrrrr rV s  rc@s4eZdZddZddZddZddZd d Zd S) TestFmaxc Cstjd}tjd}td}|ddd}tjj}|D]4}||}||}t||dt||dq8|D]p}||}||}t||dt||dtj|ddd<tj|ddd<t||dt||dqrdS)Nrr[rr7r>r)r)rrrfmaxrrr rrrrr r s&       zTestFmax.test_reducecCs0ttjddgdttjddgddSr)r rrrr]rrr r szTestFmax.test_reduce_complexcCsLtj}td||g}t|d|g}tdd|g}tt|||dSr)rrrur rrrrr r s zTestFmax.test_float_nanscCsztj}t|dtd|t||fD]R}tjd||gtd}tj|d|gtd}tjdd|gtd}tt|||q"dSr)rrr8rur rrrrr r s  zTestFmax.test_complex_nansc Cstjtjtjtjg}|D]}t|j}t|j}|d}t|tj }|tj |f|tj |f|||f|tj |fg}|D]8\}} } t t |g| g| gt tj || g| q|qdSr)rr8rrrrwr rr}r9rr rrrrrr r s     zTestFmax.test_precisionNrarbrcrrrrrrrrr r s rc@s4eZdZddZddZddZddZd d Zd S) TestFminc Cstjd}tjd}td}|ddd}tjj}|D]4}||}||}t||dt||dq8|D]p}||}||}t||dt||dtj|ddd<tj|ddd<t||dt||dqrdS)Nrr[rr7rr)r#)rrrfminrrr rrrrr r s&       zTestFmin.test_reducecCs0ttjddgdttjddgddSr)r rr rr]rrr r szTestFmin.test_reduce_complexcCsLtj}td||g}t|d|g}tdd|g}tt|||dSr)rrrur r rrrr r s zTestFmin.test_float_nanscCsztj}t|dtd|t||fD]R}tjd||gtd}tj|d|gtd}tjdd|gtd}tt|||q"dSr)rrr8rur r rrrr r s  zTestFmin.test_complex_nansc Cstjtjtjtjg}|D]}t|j}t|j}|d}t|tj }|tj |f|tj |f|||f|tj |fg}|D]8\}} } t t |g| g| gt tj || g| qxqdSr)rr8rrrrwr rr}r9rr r rrrrr r s     zTestFmin.test_precisionNrrrrr r s rc@s,eZdZddZddZddZddZd S) TestBoolcCs@tjdtjd}tttj|tttj|tttj||dS)Nr#rt)rrLrr rznegativepositivesubtractrrrr test_exceptions1 szTestBool.test_exceptionsc Csgd}gd}tjdtjdd}ttj|D]}tj||d}tj||d}gd}tjtjfD]}t|||t |qhgd}tj tj fD]}t|||t |qgd }tj tj fD]}t|||t |qq4dS) N)rrr4r))rr5rr)rr[?rtFTTTFFFTFTTF)rrmapr-r logical_orrr rr logical_andr logical_xorr) r^Zinput1Zinput2rr-rrrrrrrr test_truth_table_logical7 s&z!TestBool.test_truth_table_logicalcCsbgd}gd}gd}tt|||gd}tt|||gd}tt|||dS)N)FFTT)FTFTrrr)r r bitwise_or bitwise_and bitwise_xor)r^rrrrrrr test_truth_table_bitwiseP sz!TestBool.test_truth_table_bitwisecCstgdt}tgdt}tgdt}tgt}||||g}|D]}ttj|t|qL|D]}ttj|t|ql|D]"}ttj || ddkqdS)N)rrrr)r#rr#r#)r#r#r#r#r)r#) rrurr rrrranyrr)r^noneZsomeZeveryrvZarrsrrrr r] s  zTestBool.test_reduceN)rarbrcrrrrrrrr r 0 s r c@seZdZddejdDZdddejddDZdgeeedZd d Z d d Z d dZ ddZ e jdeeeddZdS)TestBitwiseUFuncscCsg|]}t|jdqS)r)rr-rrcrrr r!q szTestBitwiseUFuncs.r[cCsg|]}t|qSr)rr-rrrr r!s srrr)r#cCsn|jD]`}tjdg|d}tdg|}d|j}tt|||dtt|||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt ||||dtt ||||dtt ||||dtt ||||dqdS)Nrrtr7 dt = '%s'r1) bitwise_typesrrurcharr bitwise_notrrrr^rOrrLr!rrr test_values{ s$  zTestBitwiseUFuncs.test_valuescCs|jD]}tjdg|d}tdg|}d|j}tt|j|k|tt||j|k|tt ||j|k|tt ||j|k|qdS)Nrrtr7r!) r"rrurr#rr$r-rrrr%rrr test_types s  zTestBitwiseUFuncs.test_typescCs:ttjjdkdttjjdkdttjjdkddS)Nrrrr7r)rrrrrrr]rrr test_identity szTestBitwiseUFuncs.test_identityc Csrtjtjtjf}|jD]d}tjdg|d}tdg|}|D]8}d||f}t||||dt||||dq@q|jddD]d}tjg|d}|D]L}d||f}t|j |}||} t| ||dt | j |j k|qq|D]:}d|f}tjgt d}|j }||} t| ||dq|D]8}d|f}tjdgt d} t t || tu|q4dS)Nrrtr7zdt: '%s', f: '%s'r1zdt: '%s'T)rrrrr"rurr rrrr-rrr) r^Z binary_funcsrOrrLrr!rvrmr1Zbtyperrr test_reduction s4       z TestBitwiseUFuncs.test_reductionzinput_dtype_obj, bitsizec Cs|j}tjdkr$|tjkr$tdtd|D]h}d|d}d|}|t||ksbJ|t |tj sz|tjkr.|t|| ks.J|q.tj ddtd|D|d}t|}tj d||d} d |}t || ksJ|dS) N)r4r>zRequired Python >=3.10r#r)zbitwise_count for cSsg|]}d|dqS)r)r#rrrrr r! r3z8TestBitwiseUFuncs.test_bitwise_count..rtzarray bitwise_count for )rr version_inforobject_rr,riZ bitwise_countZ issubdtypeZ signedintegerrurr) r^Zinput_dtype_objZbitsizeZ input_dtypernumr!r}Zbitwise_count_arrrr test_bitwise_count s$     z$TestBitwiseUFuncs.test_bitwise_countN)rarbrcrrZ_all_ints_bitsr"rZ bitwise_bitsr&r'r(r)rrrrr-rrrr ro s(  'rc@seZdZddZdS)TestIntcCsdtjdtjd}tjdtd}|}d|ddd<|ddd}ttj||ddt||dS)Nr>rtrFr)r)rrLrrrr Z logical_not)r^rTr~rmosrrr test_logical_not szTestInt.test_logical_notN)rarbrcr0rrrr r. sr.c@seZdZddZdS)TestFloatingPointcCsttjddSr)r rfZFLOATING_POINT_SUPPORTr]rrr test_floating_point sz%TestFloatingPoint.test_floating_pointN)rarbrcr2rrrr r1 sr1c@seZdZddZdS) TestDegreescCs,tttjdttdtjddS)Nf@rV)r rfdegreesrrgr]rrr test_degrees szTestDegrees.test_degreesN)rarbrcr7rrrr r3 sr3c@seZdZddZdS) TestRadianscCs,ttdtjttddtjdS)Nr4r5r)r rfradiansrrgr]rrr test_radians szTestRadians.test_radiansN)rarbrcr:rrrr r8 sr8c@seZdZddZdS) TestHeavsidecCstgddtjtjtj gg}tgddtjddgg}|}d|d<t|d}t||t|d}t|||tj }t|t d}t||tj t|t d}t||tj dS) N)g>rr6rg@)r6r6rnrPrPr6r#rr)rn) rrurr9rrfZ heavisider rr)r^rTZ expectedhalfZ expected1hrrr test_heaviside s"     zTestHeavside.test_heavisideN)rarbrcr>rrrr r; sr;c@s,eZdZddZddZddZddZd S) TestSigncCsttjtj tjdddg}t|j}tddtjdddg}tjddDt|}t ||t||}t ||t ||Wdn1s0YdS)Nr6rrrPrrYrZ) rrur9rrrrrfr~r r^r}rrrmr1rrr test_sign s     zTestSign.test_signcCs ttjtj tdtjtdtj ttjtjttjtj tjtdtjttjtjddddddg}t|j|j}tgdttjtjgd gd }tjd d Ft |}t ||t ||}t ||ut ||Wdn1s0YdS) Nrr6rryry @)rPrrrgr6)r6rPrrgy333333??y333333?rYrZ) rrur9r8rrrr-rrfr~r rr@rrr test_sign_complex" s&       zTestSign.test_sign_complexcCs6tgd}t|t}t|}t||dS)N)rrr)rrur~rrr )r^foor}rrrr test_sign_dtype_object8 s zTestSign.test_sign_dtype_objectcCsdd}tt|dS)NcSs"ttjg}t|t}dSr/)rrurr~rr)rCr}rrr rC sz5TestSign.test_sign_dtype_nan_object..test_nan)r rz)r^rrrr test_sign_dtype_nan_objectA sz#TestSign.test_sign_dtype_nan_objectN)rarbrcrArBrDrErrrr r? s  r?c@s,eZdZddZddZddZddZd S) TestMinMaxc stjdftjdffD]\}}t|d|dD]\}tjD]}tjj|ddd<tj|<fdd}tH}| t dt t |d t t |d Wdn1s0Yd |<t d d d |<td d q>q*qdS) Nrr<rrrtcs dfS)Nz%r %srrrr!rr r2T r3z0TestMinMax.test_minmax_blocked..z#invalid value encountered in reduce)r!g _Br1g _)rrrrrirrrrrMrNrr:rr r )r^rOszrrrZemsgrPrrGr test_minmax_blockedK s$ 4zTestMinMax.test_minmax_blockedcCsHtjdtjdddtj}t||dt||ddS)Nrtr5r:r)rrrrrr rr r^rrrr test_lower_align` s zTestMinMax.test_lower_aligncCsXdD]N}tjtjtjfD]8}ttjtjg||dD]}tt|tjq8qqdS)N)r)r5rrrrt) rrr8 complex64Zdiagflatrurr r )r^r rOrrrr test_reduce_reorderg s zTestMinMax.test_reduce_reordercCsttjd}t|tjdSr)rrrr rrrr test_minimize_no_warnsp sz!TestMinMax.test_minimize_no_warnsN)rarbrcrIrLrNrOrrrr rFJ s rFc@sHeZdZddZddZejdgdejddd gd d Zd S) TestAbsoluteNegativec CsttjdftjdffD]X\}}t|d|dD]>\}}}dd|D}tj||dt|||dt|d kd d|D}tj||dt|||dtj tj tj fD]}t |j D]}tj |j |d } | |dd<|||<|tj kr| n|| |<tt|| |dtj||dt|| |dt| d ||dd |} tj||dt|| |dqqq,qdS) Nrr6rrcSsg|]}t|qSr)rfrrrrr r!{ r3z=TestAbsoluteNegative.test_abs_neg_blocked..rr1rcSsg|] }d|qS)r7rrrrr r! r3rtr7)rrrrrr rrr rr9rirrr rS) r^rOrHrrrr!rmrrrrrr test_abs_neg_blockedv s0z)TestAbsoluteNegative.test_abs_neg_blockedcCstjdtjdddtj}tt||tt|| tj||dtjt||dtj||dtjt||ddS)NrJrtr5r:r) rrrrrr rSr rrKrrr rL s z%TestAbsoluteNegative.test_lower_alignr-)rrrxrbigTFc Cstjgd|d}tjgd|d}|r@t|d}t|d}tj|j|d}|ddd}|ddd}t|}tt||dddttj||d|dddtt||dddttj||d|dddtt|d} tt|d} tt| | dS)N) rrPrgr6rvr@rrwir>rt) rPrr6rgrwrSrrrTrvrrr>r#r)r) rrurepeatrrr r rr ) r^r-rRrpexpectrrrrrrZ expect_splitrrr test_noncontiguous s0       z'TestAbsoluteNegative.test_noncontiguousN) rarbrcrQrLrrrrWrrrr rPu s  rPc@seZdZddZddZdS) TestPositivecCsDttttg}|D].}tjd|d}t|}t||t|dqdS)Nr6rtr1) rrr8rrrr r str)r^Z valid_dtypesr-rTrrrr test_valid s   zTestPositive.test_validcCstttdWdn1s(0Ytt ttdWdn1s`0Ytt&ttjdgtdWdn1s0Ytt&ttjdgtdWdn1s0YdS)NTz 2000-01-01rCrtbar)r rzrr Z datetime64rurYrr]rrr test_invalid s ( . 4 zTestPositive.test_invalidN)rarbrcrZr\rrrr rX srXc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+S),TestSpecialMethodscsGfddd}t||}t|jtd|j\}}}t|tjutt|dt|d|t|d|t|ddS)Ncs"eZdZdddZfddZdS)z/TestSpecialMethods.test_wrap..with_wrapNcSs tdSrrrr^r-rrrr __array__ sz9TestSpecialMethods.test_wrap..with_wrap.__array__cs}||_||_|Sr/)rrr^rrrr with_wraprr r sz>TestSpecialMethods.test_wrap..with_wrap.__array_wrap__)NNrarbrcr`rrrbrr rc s rcr#r)r) rfrr rrrrrr)r^r}rTrargsrrrbr test_wrap s   zTestSpecialMethods.test_wrapcsGdddtjfdd}|dddd|ddd d|d dd d|d dd d|dddd|dddd|dddd|dddd|dddddS)Nc@s8eZdZdZdZddZddZeddZdd Z dS) z?TestSpecialMethods.test_wrap_out..StoreArrayPrepareWrapNcSstd|S)Nr)rrrrrrr r szGTestSpecialMethods.test_wrap_out..StoreArrayPrepareWrap.__new__cSs|d|_|Sr _wrap_argsr^rrrrrr r s zNTestSpecialMethods.test_wrap_out..StoreArrayPrepareWrap.__array_wrap__cSs|jSr/rhr]rrr re szDTestSpecialMethods.test_wrap_out..StoreArrayPrepareWrap.argscSsdS)Nr}rr]rrr __repr__ szHTestSpecialMethods.test_wrap_out..StoreArrayPrepareWrap.__repr__) rarbrcriZ _prepare_argsrrpropertyrerkrrrr StoreArrayPrepareWrap s rmc sv}|||j}||}z||ks*JWnDtyp}z,tddd|d|gWYd}~n d}~00dS)N z"Bad arguments passed in ufunc callz expected: {}z __array_wrap__ got: {})reAssertionErrorjoinformat)Zf_callZ f_expectedr}rrrirmrr do_test sz1TestSpecialMethods.test_wrap_out..do_testcSs t|dSrrrwr}rrr r2 r3z2TestSpecialMethods.test_wrap_out..cSs|dfSrrrurrr r2 r3cSst|ddSrrtrurrr r2 r3cSs|dfSrrrurrr r2 r3cSstj|dddSNrrrtrurrr r2 r3cSs|dfSrrrurrr r2 r3cSstj|dddS)Nrr/rrtrurrr r2 r3cSs|dfSrrrurrr r2 r3cSstdd|Srrtrurrr r2 r3cSs dd|fSrrrurrr r2 r3cSstjdd|dSrvrtrurrr r2 r3cSs dd|fSrrrurrr r2 r3cSstjdd|fdSrvrtrurrr r2 r3cSs dd|fSrrrurrr r2 r3cSstj|dddSNrFrkrtrurrr r2 r3cSs|dfSrrrurrr r2 r3cSstjdd|ddSrwrtrurrr r2 r3cSs dd|fSrrrurrr r2 r3)rr)r^rsrrrr test_wrap_out s z TestSpecialMethods.test_wrap_outcCsFGdddtj}|}t|d}tt||t|tddS)Nc@s eZdZdZddZddZdS)z=TestSpecialMethods.test_wrap_with_iterable..with_wrapr>cSstd|Srrrgrrr r$ szETestSpecialMethods.test_wrap_with_iterable..with_wrap.__new__cSs|t|Sr/rrrrr r' szLTestSpecialMethods.test_wrap_with_iterable..with_wrap.__array_wrap__Nrrrrr rc! srcr)rrrfmultiplyrrr rur^rcr}rTrrr test_wrap_with_iterable s   z*TestSpecialMethods.test_wrap_with_iterablecCsHGdddtj}|}td|}tt||t|tddS)Nc@seZdZdZddZdS)z7TestSpecialMethods.test_priority_with_scalar..Ar>cSstdd|S)NrPrrrgrrr r5 sz?TestSpecialMethods.test_priority_with_scalar..A.__new__N)rarbrcrrrrrr A2 sr}r#)rrrrrr ru)r^r}r}rTrrr test_priority_with_scalar/ s z,TestSpecialMethods.test_priority_with_scalarc CsGddd}Gddd|}Gddd|}td}|}|}|}tj}tt|||tjutt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||uttt||uttt||uttt||udS)Nc@seZdZdddZddZdS)z+TestSpecialMethods.test_priority..ANcSs tdSrr^r_rrr r`@ sz5TestSpecialMethods.test_priority..A.__array__cSst|}||_||_|Sr/)rrrrarrr rC s z:TestSpecialMethods.test_priority..A.__array_wrap__)NNrdrrrr r}? s r}c@seZdZdZdS)z+TestSpecialMethods.test_priority..BrNrarbrcrrrrr BI src@seZdZdZdS)z+TestSpecialMethods.test_priority..CgD@Nrrrrr CL srr#)rrrfrrrrr) r^r}rrrTr}rr rrrr test_priority= s2  z TestSpecialMethods.test_prioritycCs8Gddd}|}tttj||tttjj|dS)Nc@seZdZdddZddZdS)z/TestSpecialMethods.test_failing_wrap..ANcSs tdSNr)r^r_rrr r`k sz9TestSpecialMethods.test_failing_wrap..A.__array__cSstdSr/ RuntimeErrorrrrr rn sz>TestSpecialMethods.test_failing_wrap..A.__array_wrap__)NNrdrrrr r}j s r})r rrfrrr^r}r}rrr test_failing_wraph sz$TestSpecialMethods.test_failing_wrapcsxtdgGfdddtj}Gdddtj}td|}td|}tdD]}tttj d||q\dS)NrPcseZdZfddZdS)z4TestSpecialMethods.test_failing_out_wrap..OkcsSr/rrjZ singletonrr rz szCTestSpecialMethods.test_failing_out_wrap..Ok.__array_wrap__Nrarbrcrrrrr Oky src@seZdZddZdS)z5TestSpecialMethods.test_failing_out_wrap..BadcSstdSr/rrjrrr r~ szDTestSpecialMethods.test_failing_out_wrap..Bad.__array_wrap__Nrrrrr Bad} srr#r>) rrurrvrrir rrfry)r^rrokbadrrrr test_failing_out_wrapu s  z(TestSpecialMethods.test_failing_out_wrapcCs*Gddd}|}tt||ddS)Nc@s eZdZdddZdddZdS) z,TestSpecialMethods.test_none_wrap..ANcSs tdSrr^r_rrr r` sz6TestSpecialMethods.test_none_wrap..A.__array__FcSsdSr/rrrrr r sz;TestSpecialMethods.test_none_wrap..A.__array_wrap__)NN)NFrdrrrr r} s r})r rfrrrrr test_none_wrap sz!TestSpecialMethods.test_none_wrapcCsDGddd}|}t||}t|tdtt|tjdS)Nc@s"eZdZdZdddZddZdS)z:TestSpecialMethods.test_default_prepare..with_wrapr>NcSs tdSrr^r_rrr r` szDTestSpecialMethods.test_default_prepare..with_wrap.__array__cSs|Sr/rrrrr r szITestSpecialMethods.test_default_prepare..with_wrap.__array_wrap__)NN)rarbrcrr`rrrrr rc s rcr#)rfrr rrrrr{rrr test_default_prepare s   z'TestSpecialMethods.test_default_preparecCs(Gddd}|}ttdtj|dS)Nc@seZdZdddZdS)z6TestSpecialMethods.test_array_too_many_args..ANcSs tdSrr^)r^r-rrrrr r` sz@TestSpecialMethods.test_array_too_many_args..A.__array__)N)rarbrcr`rrrr r} sr}z2 required positional)r rzrrrrrr test_array_too_many_args sz+TestSpecialMethods.test_array_too_many_argscCsGddd}Gdddtj}|}tdg|}t||}tj|||d}t|d|t|d|t|dtjt|dtjt|dd t|dd t|d ||ft|d ||ft|d it|d d |fidS) Nc@seZdZddZdS)z1TestSpecialMethods.test_ufunc_override..Ac_s|||||fSr/rr^rmethodinputskwargsrrr __array_ufunc__ szATestSpecialMethods.test_ufunc_override..A.__array_ufunc__Nrarbrcrrrrr r} sr}c@seZdZdZdS)z9TestSpecialMethods.test_ufunc_override..MyNDArrayrNrrrrr MyNDArray srr#rrr)__call__r4r5rr)rrrurrzr )r^r}rr}rres0rrrr test_ufunc_override s  z&TestSpecialMethods.test_ufunc_overridecCsdd}dd}t|dd}t|dd}Gdd d }Gd d d |}Gd d d }Gddd}Gddd|} |} |} |} |} t| | }t|d t| | }t|d t| | }t|d t| jdt| | }t| jd|} | }tttj| |t| jdt|jdd| _|_tttj|| t| jdt|jdd| _tttj| | t| jdd| _tttjd| t| jdt|| ddd t|d| dd t|dd| d t|| | dd t|| d| d t|| d| d t|| d| d t|| | dd d| _t|| | dd t| jdd| _t|d| | d t| jdd| _t|| | | d t| jdd|_t|| | |d t|jdt|dd| d tt|dd| tt||d| tt||ddt|| dddd t|d| ddd t|dd| dd t|ddd| d t|| | ddd t|d| d| d t|| d| dd t|| dd| d t|| dd| d |} | }tt|ddd| t| jdd| _tt|dd|| t|jdt| jd|}d| _|_tt|d| ||t|jdt| jdt|jdd| _|_|_tt||| || t|jdt| jdt|jddS)NcSs |||Sr/r)r}rr rrr tres_mul sz.tres_mulcSs||||Sr/r)r}rr rrrr quatro_mul sz>TestSpecialMethods.test_ufunc_override_mro..quatro_mulr4r#r5c@seZdZddZdS)z5TestSpecialMethods.test_ufunc_override_mro..Ac_sdS)Nr}rrrrr r szETestSpecialMethods.test_ufunc_override_mro..A.__array_ufunc__Nrrrrr r} sr}c@seZdZddZdS)z8TestSpecialMethods.test_ufunc_override_mro..ASubc_sdS)NASubrrrrr r szHTestSpecialMethods.test_ufunc_override_mro..ASub.__array_ufunc__Nrrrrr r src@seZdZddZdS)z5TestSpecialMethods.test_ufunc_override_mro..Bc_sdS)Nrrrrrr r szETestSpecialMethods.test_ufunc_override_mro..B.__array_ufunc__Nrrrrr r src@seZdZddZddZdS)z5TestSpecialMethods.test_ufunc_override_mro..CcSs d|_dSr)countr]rrr __init__ sz>TestSpecialMethods.test_ufunc_override_mro..C.__init__c_s|jd7_tSrrNotImplementedrrrr r szETestSpecialMethods.test_ufunc_override_mro..C.__array_ufunc__N)rarbrcrrrrrr r src@seZdZddZdS)z8TestSpecialMethods.test_ufunc_override_mro..CSubc_s|jd7_tSrrrrrr r szHTestSpecialMethods.test_ufunc_override_mro..CSub.__array_ufunc__Nrrrrr CSub srr)rr)r frompyfuncrzr rr rz)r^rrZthree_mul_ufuncZfour_mul_ufuncr}rrrrr}Za_subrr r1Zc_subc2rrr test_ufunc_override_mro s                             z*TestSpecialMethods.test_ufunc_override_mroc CsGddd}|}tt$tjjd|dddWdn1sF0Ytjjd|ddd}t|d|t|dtjt|d d t|d d|ft|d dddtttj|tttj||||tttj||d d dtttj||dddgdtj|dddd}t|d|t|dtjt|d dt|d |ft|d dddddtjj|ddddddd}t|d|t|dtjt|d dt|d |ft|d dddddddtj|dddd}t|d ddddtjj|dddd}t|d dddtjj|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|dtjt|d d)t|d |ft|d dddd*tjj |dddd+}t|d|t|dtjt|d d)t|d |ft|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|dtjt|d d.t|d |d d gft|d dddd*tjj |d d gdddd+}t|d|t|dtjt|d d.t|d |d d gft|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|dtjt|d d1t|d |dft|d itttjj |tttjj ||||tttjj ||d d dtj|d d gd2}t|d|t|dtjt|d d3t|d |d d gd2ftttjj|tttjj||||dS)4Nc@seZdZddZdS)z9TestSpecialMethods.test_ufunc_override_methods..Ac_s|||||fSr/rr^rrrrrrr rQ szITestSpecialMethods.test_ufunc_override_methods..A.__array_ufunc__Nrrrrr r}P sr}r#r[r!)rCZanswer)rprkrr)rr4r5r})rr)axisZaxesZaxis0Zdtype0out0Zkeep0r)r)r-rrkeepdimsrZinit0Zwhere0)rr-rrrinitialrk)r-rrrrrrkF)rr-rT)rrrr)rrr/)rrr-)rr-)rr-rrrk)rr-rrkrr)rout1rr*)r-rrr)rr-rrZdtype1)rrrr-reduceatrO)rrrr-outerZb0at)r rzrrzrr ncu_testsinner1drZ_NoValuer{r*rrr)r^r}r}r1rrr test_ufunc_override_methodsN s  2          z.TestSpecialMethods.test_ufunc_override_methodsc CsGddd}Gddd}|}|}t||d}tj||dd}td|d}tjd|dd}t|d d} tj|d dd} t|d d dt|d d dt|d d dt|d d dt| d d dt| d d dt|d d} t|d d} t| d d d t| d ddt| d d d t| d ddtt|dikttj|ddikttj|ddiktt|diktt|ddikttj|ddiktttj|ddWdn1s0Ytttj||dddtttj||ddtt tj||ddtttj|ddtttj|dddtttj|dddtt tj|ddtt tj|dddS)Nc@seZdZddZdS)z5TestSpecialMethods.test_ufunc_override_out..Ac_s|Sr/rrrrr r szETestSpecialMethods.test_ufunc_override_out..A.__array_ufunc__Nrrrrr r} sr}c@seZdZddZdS)z5TestSpecialMethods.test_ufunc_override_out..Bc_s|Sr/rrrrr rszETestSpecialMethods.test_ufunc_override_out..B.__array_ufunc__Nrrrrr r srZout_argrr)r4r5r6rrrrrr#r/)NNrtworrr)rthreer)rrr)r) rrzr modfryrr>r rzr{) r^r}rr}rrrrZres3Zres4Zres5Zres6Zres7rrr test_ufunc_override_out sL .z*TestSpecialMethods.test_ufunc_override_outc CsGdddtj}Gddd|}tj}tgd}tgd}|||d}tt"||||dWdn1s0Y||||d}t||sJtj t||k|dsJ|||||d}t||sJtj t||k|ds JdS)Ncs$eZdZddZfddZZS)zHTestSpecialMethods.test_ufunc_override_where..OverriddenArrayOldcSsPt|}g}|D]:}t||r*t|}nt|tjkr@tS||q|Sr/)rrrrurrappend)r^Zobjsrrrrrr _unwrap5s   zPTestSpecialMethods.test_ufunc_override_where..OverriddenArrayOld._unwrapcs~||}|turtS|}d|vrH||d|d<|dturHtStj||g|Ri|}|turz|t|}|S)Nrr)rrrsuperrrrr^rrrrr __class__rr r@s  zXTestSpecialMethods.test_ufunc_override_where..OverriddenArrayOld.__array_ufunc__)rarbrcrr __classcell__rrrr OverriddenArrayOld3s rcseZdZfddZZS)zHTestSpecialMethods.test_ufunc_override_where..OverriddenArrayNewcsz|}d|vrD||df|d<|dtur4tS|dd|d<tj||g|Ri|}|turv|t|}|S)Nrkr)rrrrrrrrrrr rSs zXTestSpecialMethods.test_ufunc_override_where..OverriddenArrayNew.__array_ufunc__rarbrcrrrrrr OverriddenArrayNewRsrr)TFTrx) rrr rurrrzrrr) r^rrrrurkrZresult_1Zresult_2rrr test_ufunc_override_where1s(  0z,TestSpecialMethods.test_ufunc_override_wherecCsHGddd}|}tttjd|dtttj|tttjd|dS)Nc@seZdZddZdS)z;TestSpecialMethods.test_ufunc_override_exception..Ac_s tddS)NZoops)r{)r^r}rrrr r}szKTestSpecialMethods.test_ufunc_override_exception..A.__array_ufunc__Nrrrrr r}|sr}r#rrP)r r{rr rrrrr test_ufunc_override_exceptionzs z0TestSpecialMethods.test_ufunc_override_exceptioncCsGddd}d}ttt|t|Wdn1sD0Yd}ttt|$tj|tddWdn1s0YdS)Nc@seZdZddZdS)zATestSpecialMethods.test_ufunc_override_not_implemented..Ac_stSr/)rr^rerrrr rszQTestSpecialMethods.test_ufunc_override_not_implemented..A.__array_ufunc__Nrrrrr r}sr}zjoperand type(s) all returned NotImplemented from __array_ufunc__(, '__call__', <*>): 'A'zoperand type(s) all returned NotImplemented from __array_ufunc__(, '__call__', <*>, , out=(1,)): 'A', 'object', 'int'r#r)r rzfnmatch translaterr rwr)r^r}r!rrr #test_ufunc_override_not_implementeds*z6TestSpecialMethods.test_ufunc_override_not_implementedcCsVGddd}|}d}tt|t|dWdn1sD0Ytt|td|Wdn1sz0Ytt|t|Wdn1s0YGddd}|}tt||utt|t||Wdn1s 0Ytt| tj|d|dWdn1sH0YdS)Nc@seZdZdZdS)z?TestSpecialMethods.test_ufunc_override_disabled..OptOutNrrrrr OptOutsrz(operand 'OptOut' does not support ufuncsr#c@seZdZddZdS)zDTestSpecialMethods.test_ufunc_override_disabled..GreedyArrayc_s|Sr/rrrrr rszTTestSpecialMethods.test_ufunc_override_disabled..GreedyArray.__array_ufunc__Nrrrrr GreedyArraysrr)r rzrrwr r)r^rZopt_outr!rZgreedyrrr test_ufunc_override_disableds  * * ( , z/TestSpecialMethods.test_ufunc_override_disabledcCs&Gddd}tj}|}|||}t|d|t|d|t|ddt|d||ft|di|dd|d }t|d|t|d|t|ddt|dd t|dd |fitt||d d tt|||d d d tt|||d d tt|||dd tt|||dd dS)Nc@seZdZddZdS)z2TestSpecialMethods.test_gufunc_override..Ac_s|||||fSr/rrrrr rszBTestSpecialMethods.test_gufunc_override..A.__array_ufunc__Nrrrrr r}sr}rr#r)rr4r5r)r#r#rrrrrr)rrr r rzr{)r^r}rr}r1rrr test_gufunc_overrides( z'TestSpecialMethods.test_gufunc_overridec sPGfdddtjGfddd}td}td}t|}t|}tt||kt|jddgitj||fd}tt||kt|jd dgit||utd}tj||d}tt||kt|jdgdgd td}t |\}}t|jddgitj |d|fd\}}t||ut|jd d gitd}td}tj |||fd\}} t||ut| |ut|jdgdd gd td}td}tj |||d} t| |ut| jdd gdgd td}|}t| tj d ||t ut| tj d ||t ut ttj |||}t| tj d ||t ut| tj d ||d ktt ||d ktgdgdg}|}|} |}t| |t| jddgi|} |}t| |t| jddgitd}|j|d} t| |t| |ut| jdgdgd |jdd}t|}|jd|d} t| |t| |ut| jdgdgd tj j|d d}tj j|d d} t| |t| jddgit| }tj |d d|} t| |t| |ut| jdgdgd tj j|dd}tj j|dd} t| |t| jddgit| }tj |dd|} t| |t| |ut| jdgdgd gd} tj j|| d d}tj j|| d d} t| |t| jddgit| }tj || d d|} t| |t| |ut| jdgdgd tgdgdg}|}|}tj |dd gddgfdtj |dd gddgfdt||t|jddgitd}|}tj |dd gddgf|t||t|jdddgidS)Ncs$eZdZddfdd ZZS)z.ANrcsg}g}t|D]:\}} t| r@|||| tjq|| q|} g} | rg} t| D]:\} }t|r| | | |tjqd| |qdt| |d<n d|j} i}|r||d<| r| |d<tj ||g|Ri|}|t urt S|dkr$t|dr ||d_ dS|jdkr6|f}tfdd t || D}|rrt|drr||d_ t |dkr|dS|S) Nrrr/routputsrrr#c3s.|]&\}}|dur"t|n|VqdSr/)rrr)rroutputr}rr rfsz_TestSpecialMethods.test_ufunc_override_with_super..A.__array_ufunc__..) enumeraterrrrrtupler,rrrinforr)r^rrrrrrreZin_norinput_rZout_noZout_argsjrrresults)r}rrr rsT             zLTestSpecialMethods.test_ufunc_override_with_super..A.__array_ufunc__rrrrr r}sr}cseZdZfddZdS)z.Bcs"tfdd|DrdStSdS)Nc3s|]}t|VqdSr/)r)rrrrr rf r3z_TestSpecialMethods.test_ufunc_override_with_super..B.__array_ufunc__..A!)rrrrrr r szLTestSpecialMethods.test_ufunc_override_with_super..B.__array_ufunc__Nrrrrr r srrrrrr)rrr#rrrr)rrr)rr)r#r)rP)rrrrr>rrr rrrwrrr rzrurrrrr*rrr) r^rrr}rcheckb1b2c1rr indicesrrr test_ufunc_override_with_supers4                                 z1TestSpecialMethods.test_ufunc_override_with_supercCstd}tt|Wdn1s20Ytt|ddWdn1sh0Y|tjd||}t|||dS)Nr#r)r)rrurrrzrrwr )r^r}r1rrr test_array_ufunc_direct_calls  & *z/TestSpecialMethods.test_array_ufunc_direct_callN)rarbrcrfryr|r~rrrrrrrrrrrrrrrrrrrrr r] s08+   ,8I .r]c@seZdZddZdS) TestChoosecCs@tddg}tddg}tt||dftddgdS)NTr#)rrur choose)r^r r}rrr test_mixedszTestChoose.test_mixedN)rarbrcrrrrr rsrc@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)TestRationalFunctionscCs|tj|tjdSr/)_test_lcm_innerrruint16r]rrr test_lcms zTestRationalFunctions.test_lcmcCs|tjdSr/)rrr+r]rrr test_lcm_objectsz%TestRationalFunctions.test_lcm_objectcCs|tj|tjdSr/)_test_gcd_innerrrrrr]rrr test_gcds zTestRationalFunctions.test_gcdcCs|tjdSr/)rrr+r]rrr test_gcd_objectsz%TestRationalFunctions.test_gcd_objectcCstjddg|d}tjddg|d}tt||ddgt|tjstjgd|d}tjgd |d}tt||dgd tjgd |d}ttjgd dtd |}d}tt||gd dS)Nr)xrtr<iXr)r*r)r*rrrr5)r4r)rr)rrrrrr) rrur lcm issubclassunsignedintegerrrrr^r-r}rrrr rs z%TestRationalFunctions._test_lcm_innercCstjddg|d}tjddg|d}tt||ddgt|tjstjgd|d}tjgd |d}tt||dgdtjgd |d}ttj|d td |}d}tt||gd dS)Nr)rrtrrr5(rr)r#r6r)rr#r)r#r5r6) rrur gcdrrrrrrrrr rs z%TestRationalFunctions._test_gcd_innercCsBtttjjd}d|}d|}tt||d|dS)Nrr)r6r>)rrxrrr r)r^rRr}rrrr test_lcm_overflowsz'TestRationalFunctions.test_lcm_overflowcCs^tjtjfD]L}|t|j}|d }tt||d|tt|| d|q dS)Nr5r4)rrxrrr r r)r^r-r}qrrr test_gcd_overflows  z'TestRationalFunctions.test_gcd_overflowcCstddlm}tgd|d}tgd|d}tt||d|dgtt||d|d gdS) Nr)Decimal)r#r#r7r7z0.20)r#r7r#r7z0.12r5z0.04z0.60)rrrrur rr)r^rr}rrrr test_decimals  z"TestRationalFunctions.test_decimalcCs$tttjddtttjdddS)Ng333333?g?)r rzrrrr]rrr test_floatsz TestRationalFunctions.test_floatcCsttddddtddddtt$tddddWdn1s`0YtjddddtddksJtddd}tdddd g}tt||ddd gtt ||ddddddd gdS) Nr)rrr4rtr#i-1l U9l`i) r rrurrr OverflowErrorrrrrrrr test_huge_integerss 2 z(TestRationalFunctions.test_huge_integersN)rarbrcrrrrrrrrrrrrrrr rs rc@s$eZdZddZddZddZdS)TestRoundingFunctionscCs`Gddd}t||g}tt|ddgtt|ddgtt|ddgdS)z3 test direct implementation of these magic methods c@s$eZdZddZddZddZdS)z3TestRoundingFunctions.test_object_direct..CcSsdSrrr]rrr __floor__sz=TestRoundingFunctions.test_object_direct..C.__floor__cSsdSrrr]rrr __ceil__ sz.C.__ceil__cSsdSNr4rr]rrr __trunc__ sz=TestRoundingFunctions.test_object_direct..C.__trunc__N)rarbrcrrrrrrr rsrr#r)r4N)rrur rrorr^rrrrr test_object_directs z(TestRoundingFunctions.test_object_directcCsGddd}t||g}tt|ddgtt|ddgttt|Wdn1sr0YdS)z$ test implementations via __float__ c@seZdZddZdS)z5TestRoundingFunctions.test_object_indirect..CcSsdS)Nrrr]rrr __float__sz?TestRoundingFunctions.test_object_indirect..C.__float__N)rarbrcrrrrr rsrr9r8N) rrur rrorrrzrrrrr test_object_indirects  z*TestRoundingFunctions.test_object_indirectcCs>tdd}tt|dtt|dtt|ddS)Nr:r4r8r7)rr rrror)r^rrrr test_fraction s z#TestRoundingFunctions.test_fractionN)rarbrcrrr rrrr rs rc@seZdZejejejejejej ej ej ej ej ejejejejejejgZddZejjeddddZejjeddddZejjeddd d Zd d Zejjed ddejjeddejdej ej!ej"gddZ#ej$ddddZ%dS)TestComplexFunctionscCs`|jD]T}|tjurd}nd}||}|t|}t|j|d|dt|jdd|dqdS)Nrrnz real part %sr1r6z imag part %s)funcsrrdr8r rRr)r^rrTfrZfzrrr test_it-s   zTestComplexFunctions.test_itz doesn't workrcCsfd}|jD]V}|t|}|t|}|t|}t||dd|dt||dd|dq dS)Nr/rz fch-fcd %s)rr2rz fch-fcl %s)r rZcsingleZcdouble clongdoubler )r^rRrZfcfZfcdZfclrrr test_precisions_consistent8s z/TestComplexFunctions.test_precisions_consistentcCsttjdddddttjdddddttjdddddttjdddddttjdddddttjddgddgdddttjddgddgdddttj d d gddgdddttj d d gddgdddttj dd gddgdddttj ddgddgdddttjd d gddgddttjd d gddgddttj ddgddgddttj gd gd ddttj gdgdddttj gdgddddS)Nrrr#r7Tr8r)rrnr8r)rrrr#rrr)r#r#rrrr) _check_branch_cutrrrr<r=rrVrWrYrQrdrhr]rrr test_branch_cutsBs"z%TestComplexFunctions.test_branch_cutscCsttjdddddtjttjdddddtjttjdddddtjttjdddddtjttjdddddtjttjddgddgdddtjttj ddgddgdddtjttj d d gddgdddtjttj d d gddgdddtjttj dd gddgdddtjttj ddgddgdddtjttjd d gddgddd tjttj d d gddgddd tjttj ddgddgddd tjttj gd gdddd tjttj gdgdddd tjttj gdgdddd tjdS)Nrrr#r7Trr8r)rrrnFrrrrr)rrrrMrr<r=rrVrWrYrQrdrhr]rrr test_branch_cuts_complex64\s"           z/TestComplexFunctions.test_branch_cuts_complex64c Csddl}gd}ddddddd }d ttj}|jD]}|jd d }|||}zt ||}Wnt y|Yq8Yn0|D]@} t|t | } || } t t | | |kd || | | fqq8dS)Nr)yrrr/asinacosatanasinhacoshatanh)rVrWrYrQrdrhr5.r7z%s %s: %s; cmath: %s)cmathrrwr8epsr rasplitgetrAttributeErrorr3rrS) r^r!ZpointsZname_mapatolrfnamecnameZcfuncrr}rrrr test_against_cmathvs(    z'TestComplexFunctions.test_against_cmathz2.18z.checkrg5^I rgˡErr>F)ZendpointzvTrig functions of np.clongdouble values known to be inaccurate on aarch64 and PPC for some compilation configurations.gI@@rMbP?yh㈵>h㈵>rtyg݈>+j鈵>r#reyi戵>Sh>y+j鈵>g݈>ySh>i戵>cstj|d}|t||d}|t||d}tt||k||ft||||dk}tt||||fdS)Nrtr))rrrSrr)rZz0rZzpZzmZgood)r-r"rr rs cSs2g|]*}dD] }|dks |dkr |d|q qS)gMbPrr,rrr)rrpiprrr r!sz?TestComplexFunctions.test_loss_of_precision..r-rr/N)r#)rrrJrLrr,rwrRr-r"ZlogspacerWrurrhrrrQrYrV) r^r-rrZx_seriesZx_basicrRrrrZptsr)r-r"r*r test_loss_of_precisionsB         z+TestComplexFunctions.test_loss_of_precisionrYrEcCs^|jD]R}|tdjtjks$J|tdjtjks>J|tdjtjksJqdSr)r rr8r-rrrr^rrrr test_promotion_corner_casess z0TestComplexFunctions.test_promotion_corner_casesN)&rarbrcrrVrWrYrQrdrhr>r?rPrrrrr<rr=r r rrrrrrrr)rrrMr3rr0rr2rrrr r 's0     \ r c@seZdZddZddZdS)TestAttributescCsVtj}t|jdt|jdktd|jvt|jdt|jdt|j ddS)Nrwzii->ir)r#r) rfrwr rarZntypesr(r%r,r)r^rwrrr test_attributess   zTestAttributes.test_attributescCs(ttjjdttjjddS)Nz&add(x1, x2, /, out=None, *, where=Truez.simplecSs tjj||td}|d|S)Nrtr)rrrrfill)subtyperr^rrr rs z5TestSubclass.test_subclass_op..simple.__new__N)rarbrcrrrrr simplesr;)r4r5)rrr )r^r;r}rrr test_subclass_opszTestSubclass.test_subclass_opN)rarbrcr<rrrr r8 sr8c@seZdZddZdS)TestFrompyfunccsdd}tj|ddddtgddtjtdd d dtgdtj|ddddtgddtjtdd d dttfd d tj|ddd tgddttfdd ttfdd dS)NcSs||Sr/r)r}rrrr mulsz)TestFrompyfunc.test_identity..mulr)r#)r%r,r)r)r4r5r)r)rr#rcs gSr/rrZ mul_ufuncrr r2+r3z.TestFrompyfunc.test_identity..)r%r,csjtdddS)Nr@rAr)rrrLrrBrr r20r3cs gSr/rrrBrr r21r3)rrr rrLr r{)r^r>rrBr r(szTestFrompyfunc.test_identityN)rarbrcr(rrrr r=sr=r#r7FcCst||}t||}t|jdkrLt|jd}td}nt|jd}d}||} ||||t|t|} ||||t|t|} t t t| j | j |k| | ft t t| j | j |k| | ft t t| j | j ||k| | ft t t| j | j ||k| | f|r|j dk|j dk@} |j dk|j dk@} t | r|| }tj|_ ||} t t t| | j | j ||k| | | ft t t| | j | j ||k| | | ft | r|| }tj|_ ||} t t t| | j | j ||k| | | ft t t| | j | j ||k| | | fdS)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#rKg-C6?rN)rZ atleast_1drr-r#rwr"rrrrrRrrrfr)rZx0ZdxZre_signZim_signZ sig_zero_okr-scaler&Zy0ZypZymZjrZjirTrrr r4s: $$&&** 22 2rcCsttdddktjdd@tdtdddktdtdddkWdn1sf0Yttttjdttttjd dS)Nr#r7rYrr)rrcopysignrr@rrrrr test_copysignqs 6rFcCs|d}|d}|d}t|j}tt||||ktt|||dkttttj|ttt|tjtt|||kdSr)rrwr"rr}r:r)rerrrr"rrr _test_nextafterys rGcCs ttjSr/)rGrrrrrr test_nextaftersrHcCs ttjSr/)rGrrrrrr test_nextafterfsrIzlong double is same as doublerppc64zIBM double double) conditionrcCs ttjSr/)rGrrrrrr test_nextafterlsrLc CsttjjddD]\}}th}|ttt |j s|t |j }t d|t |d||kot|knWdn1s0Yt t |d|||d|dqdS)NrrXr6rr+)rTrUr_corerrrM UserWarningr:rwrxrr}r )re directionrPrxrrr test_nextafter_0s  *"rPcCs|d}t|j}|tj}|tj}tjddttt||tt t|tt t|tt t| tt|ddkWdn1s0YdS)Nr#rYrZgꌠ9Y>)Fr) rrwr"rr9rr rnrr:)rerr"rr9rrr _test_spacings   rQcCs ttjSr/)rQrrrrrr test_spacingsrRcCs ttjSr/)rQrrrrrr test_spacingfsrScCs ttjSr/)rQrrrrrr test_spacinglsrTcCsbtjgdtjgdi}ttjtjgdD]2\}}tjgd|d}tt||||dq*dS)N)g;ggK8?gP?)r>r)h㈵>r#ri)rtr)rrrrrurrn)refrOrrTrrr test_spacing_gfortrans    rWcCsRtjtjfD]@}dD]6}||}||d}tt|||t|kqq dS)N)r#rUrr#)rrrrr}rn)re_frf1rrr test_nextafter_vs_spacings  rZcCstttjdkdS)zCheck np.nan is a positive nan.rN)rrr@rrrrr test_pos_nansr[cCstddtjfdtjfg}tjdg|d}d|d<d|d<d|d<gd }g}|d }|d d D]&}|tj|d|||}qd|tj|d|d t|}tj |d|}t ||t d tj |d|}t t j t ||d S)z;Test bug in reduceat when structured arrays are not copied.)rZS11timerDrrtZSimplerr>)rr<rrrr#Nr)rr-rrrvrrwrrurrZ setbufsizerfZUFUNC_BUFSIZE_DEFAULT)dbr}ZindxZh2r@rAZh1rrr test_reduceats&    r^cCstgd}tgd}tj||}t|j|jt|jdtd}tjj|gdd}t|j|jt|jdtjj|gdd}t|j|jt|jd d S) z&Reduceat should work with empty arraysi4Zf8)r)r6r)rrr<r#)r6rN)rrurwrr r-rrL)rrTrrrr test_reduceat_emptys     r`c Cs^ttjdtdtjttjtjg}tddtddtddtddtddtddtddg}tjdd||D]}t|g}||D]}t|g}t|rt|rqt||kdd||fdt||kdd ||fdt||kdd ||fdt||kdd ||fdt||kdd ||fdqqvWdn1sP0YdS) Nrr#r7rYrZFz%r < %rr1z%r > %rz%r <= %rz%r >= %rz%r == %r)r8rrrrur}r )ZnansZfinsrTrrrr test_complex_nan_comparisonss $     racCs*d}t|tt|t|t|dS)Nl*n)r rrrr)valrrr test_rint_big_int%srcftypecCs^tjgd|d}tjgd|d}tjgd|d}ttj||ttj||dS)N)Q?333333?p= ף?= ףp=?RQ?rt)rerergrgrg)rerfrfrhri)rrur rr*r)rdrZout_maxZout_minrrr test_memoverlap_accumulate/s rjz ufunc, dtypecCs<g|]4}|jD](}|ddkr|ddvr||dfqqS)r7rrZDFGMmOr'rrrerrr r!8s cCst|jrtddD]Z}tjgd||d}|j|dd}|tj}tjtt ||tjd}t ||qdS)NFor generic signatures onlyr)rrrrdr)rr#r#rtr) rrr,rrur*rrrhrTr )rr-rraccZacc_u8rrrr test_memoverlap_accumulate_cmp8s  rocCsPg|]H}|jD]<}|d|dkr|d|dkr|ddvr||dfqqS)rr#r7zDFGMmO?r'rkrrr r!Hs ,cCs|jrtdtjddddD]N}tgd||}|j||d}tjtt |||d}t ||q"Wdn1s0YdS)NrlrYrErmrr#r)rt) rrr,rrrurr*rhrTr )rr-rrrnrrrr $test_memoverlap_accumulate_symmetricHs rqcCsDt*tjdddd}t|Wdn1s60YdS)Nrrs)rr-buffer)rrrr:rurrr test_signaling_nan_exceptionsXsrsrr)r6cCs@Gdddtj}tj||||}|jjdks.fooNrrrrr rCdr3rC)rrrzrrrra)rrCactualrrr test_outer_subclass_preserve]sruc sGdddtj}Gfdddtj|fD]|}td|}tt"}tj|ddgWdn1st0Ytd|}ttjddg||us0Jq0dS)Nc@seZdZddZdS)z(test_outer_bad_subclass..BadArr1cSs|jdkr|jd|_dS)Nr4r")ndimrr^rrrr __array_finalize__js z;test_outer_bad_subclass..BadArr1.__array_finalize__Nrarbrcrxrrrr BadArr1isrzcseZdZfddZdS)z(test_outer_bad_subclass..BadArr2cs.t|r*|jddkr*|jddd|_dS)Nr7r#)rrrwBadArr2rr rxps z;test_outer_bad_subclass..BadArr2.__array_finalize__Nryrr{rr r|osr|)r)r4r#r)) rrrLrr rzrwrr)rzrrr}rr{r test_outer_bad_subclasshs  0r}cCsDtd}tttj||Wdn1s60YdS)N)!r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#)rrLr r{rwr)deeprrr test_outer_exceeds_maxdimss  rcCstdtj}tjtddt||Wdn1sB0Ytjtdd@| d dddddddf}t||Wdn1s0Ytjtddtj ||Wdn1s0Ytjtddtj |Wdn1s0Ytjtdd"tj |dd gWdn1sZ0Ytjtddtj|Wdn1s0Ytjtdd$tj|gd |Wdn1s0YdS) Nr4How unexpected :\)!rrr7rr)rr#rp)rrrrrrrrZ always_errorrUZreshaperrrr*r)rZ non_contigrrr #test_bad_legacy_ufunc_silent_errorss *$*,,2,rx1r)r6rPrcCs>tjtddt|dWdn1s00YdS)Nrrr6)rrrrZalways_error_gufunc)rrrr $test_bad_legacy_gufunc_silent_errorssrc@s\eZdZejjejjdkddejje ddddZ ejjejjdkddddZ d S) TestAddDocstringr)zPython running -OOrzPyPy does not modify tp_doccCs0ttjjtjjjdd}t||jdS)NcSsdS docstringNrrrrr rsz6TestAddDocstring.test_add_same_docstring..func)rf add_docstringrrflatr6r1rrr test_add_same_docstringsz(TestAddDocstring.test_add_same_docstringcCsxtt ttjjdWdn1s.0Ydd}ttt|dWdn1sj0YdS)Nzdifferent docstringcSsdSrrrrrr rsz=TestAddDocstring.test_different_docstring_fails..func)r rrfrrrrr1rrr test_different_docstring_failss  . z/TestAddDocstring.test_different_docstring_failsN) rarbrcrrrrr|optimizerrrrrrr rs  rc@seZdZddZddZdS)TestAdd_newdoc_ufunccCs&tttjddtttjtjddS)Nr)Zblah)r rzrf_add_newdoc_ufuncr{rrwr]rrr test_ufunc_argsz#TestAdd_newdoc_ufunc.test_ufunc_argcCstttjtjddSr)r rzrfrrrwr]rrr test_string_argsz$TestAdd_newdoc_ufunc.test_string_argN)rarbrcrrrrrr rsr)rJrrrTrrr/r fractionsr functoolsr collectionsrZnumpy._core.umathrMZumathrfZ numpy._corerrrnumpyrZ numpy.testingrr r r r r rrrrrrrrrrrZnumpy.testing._private.utilsr__dict__valuesZUFUNCSZ UFUNCS_UNARYrtZ UFUNCS_BINARYZUFUNCS_BINARY_ACCrHrNrWrXrdrlrrrrWrYrZrrrrrrrrr/r2rurrrrrrrrrrrrrrrrrrrrrrrr rr.r1r3r8r;r?rFrPrXr]rrrr r3r8r=r8rrFrGrHrIrrrwdoublerrrLrMrLrPrQrRrSrTrWrZr[r^r`rarcrrrrjrorqrsrmatrixrur}rrrrrrrrr s\   L 8  ' }S /   0+1a  "1- E\\???t 5+GEo$T =