o 6a% @sddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m m ZddlmZddlZddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"ddZ#e#Z$ej%j&e$dkole$d kd d Z'd d Z(ddZ)e*dkre)rdZ+ndZ+GdddZ,GdddZ-GdddZ.GdddZ/GdddZ0GdddZ1dd Z2d!d"Z3Gd#d$d$Z4Gd%d&d&Z5Gd'd(d(Z6Gd)d*d*Z7Gd+d,d,Z8Gd-d.d.Z9Gd/d0d0e,Z:Gd1d2d2Z;Gd3d4d4ZGd9d:d:Z?Gd;d<d<Z@gd=gd>gd?gd@gd>gd>gd>gd>dAZAGdBdCdCZBGdDdEdEZCGdFdGdGe,ZDGdHdIdIZEGdJdKdKZFGdLdMdMZGdNdOZHdPdQZIGdRdSdSZJdTdUZKdVdWZLdXdYZMdZd[ZNd\d]ZOGd^d_d_ZPGd`dadaZQGdbdcdce,ZRGdddedee,ZSGdfdgdge,ZTGdhdidie,ZUGdjdkdkZVGdldmdmZWGdndodoZXGdpdqdqZYGdrdsdsZZGdtduduZ[GdvdwdwZ\GdxdydyZ]Gdzd{d{Z^Gd|d}d}Z_Gd~ddZ`GdddZaGdddZbGdddZcGdddZdGdddZeGdddZfGdddZgGdddZhdddeifddZjddZkddZlddZmddZnej%joepejqepejrkdd ej%j&e*sdddddZtddZuddZvddZwddZxej%joepejqepejrkdd ej%j&e*sdddddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZej%dejejgddZddZej%dededdgeddgddgggddĄZddƄZddȄZdS)N)Fractionreduce) _umath_tests)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_nulp assert_warnsc CsFz tddd}W|Sty"}z d}WYd}~|Sd}~ww)NCS_GNU_LIBC_VERSION 0.0)osconfstrrsplit Exception)verinstr=/usr/lib/python3/dist-packages/numpy/core/tests/test_umath.pyget_glibc_versionsr rz2.17z2.17c@eZdZddZddZdS)_FilterInvalidscCstjdd|_dS)Nignoreinvalidr+seterrolderrselfrrrsetup?z_FilterInvalids.setupcCstjdi|jdSNrr<r?rrrteardownBz_FilterInvalids.teardownN)__name__ __module__ __qualname__rArDrrrrr8> r8c@$eZdZddZddZddZdS) TestConstantscCttjdddS)Ng-DT! @V瞯<)rncupir?rrrtest_piGrBzTestConstants.test_picCrL)NgiW @rM)rrNer?rrrtest_eJrBzTestConstants.test_ecCrL)Ngox?rM)rrN euler_gammar?rrrtest_euler_gammaMrBzTestConstants.test_euler_gammaN)rFrGrHrPrRrTrrrrrKFs rKc@r7)TestOutc CsdD]c}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| |utttj|||d\}} Wdn1swYtttj|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?rsubokoutrZ@dtypeF) r+arrayemptyaddrint32frexpr TypeError ValueErrorflags writeable) r@rZaordo1o2r1r2rrrtest_out_subokRsT                 zTestOut.test_out_subokc CsGdddtj}dD]@}|dg}tj|d|d}|r%tt||n tt|tjktj|dd|d}|rAtt||n tt|tjktj|dd|d}|r]tt||n tt|tjktj|dd|d}|rytt||n tt|tjk|d g}td }tjd tjd }tj|||d\}} |rtt| |n tt| tjktj||d|d\}} |rtt| |n tt| tjktj|d||d\}} |rtt||n tt|tjktj||df|d\}} |rtt| |n tt| tjktj|d|f|d\}} |r$tt||n tt|tjkt t tj|||d\}} Wdn 1sGwYq dS) Nc@ eZdZdZddZddZdS)z.TestOut.test_out_wrap_subok..ArrayWrap cSst||SNr+asarrayviewcopy)clsarrrrr__new__z6TestOut.test_out_wrap_subok..ArrayWrap.__new__cS|t|Srtrwtyper@rzcontextrrr__array_wrap__z=TestOut.test_out_wrap_subok..ArrayWrap.__array_wrap__NrFrGrH__array_priority__r{rrrrr ArrayWrap rrVrWrXrYr[rtr]rr^) r+ndarrayrbr isinstancerrarcrdrre) r@rrZrirkrlrmrnrorprrrtest_out_wrap_suboks^    zTestOut.test_out_wrap_subokN)rFrGrHrqrrrrrrUQs 1rUc@r7)TestComparisonscCtjtgddgtd}tttj||Gddd}t|g}tttj||tjtjgtd}tt||dgdS)NrrXr^c@eZdZddZdS)zGTestComparisons.test_ignore_object_identity_in_equal..FunkyTypecStdNzI won't comparerer@otherrrr__eq__zNTestComparisons.test_ignore_object_identity_in_equal..FunkyType.__eq__N)rFrGrHrrrrr FunkyType rF) r+r`objectrrfequalrenanrr@rirrrr$test_ignore_object_identity_in_equalz4TestComparisons.test_ignore_object_identity_in_equalcCr)Nrr^c@r)zKTestComparisons.test_ignore_object_identity_in_not_equal..FunkyTypecSrrrrrrr__ne__rzRTestComparisons.test_ignore_object_identity_in_not_equal..FunkyType.__ne__N)rFrGrHrrrrrrrrT) r+r`rrrf not_equalrerrrrrr(test_ignore_object_identity_in_not_equalrz8TestComparisons.test_ignore_object_identity_in_not_equalN)rFrGrHrrrrrrrs rc@r)TestAddcCs<tjddtjfdtjfgd}d|d<t|dddS)NrXribr^r)r+zerosrcfloat64rsumr@rirrrtest_reduce_alignmentszTestAdd.test_reduce_alignmentN)rFrGrHrrrrrrrrc@seZdZddZejdee j de j ddddZ ejdee j de j dd d d Z ejd e d de d ddfe d de dddfe dde d ddfe dde dddfe d de dddfe d de dddfe d dd e ddfe d dde ddfe ddd e ddfe ddde ddfe ddde ddfe ddde ddfe ddde ddfg ddZddZddZddZd d!Zejd"e jd#d$d%Zejd"e jd#d&d'Zd(S)) TestDivisioncCsdtgd}ddkrt|dgdn t|dgdt|dgdt|dgddS)N) rsZdiirWr) g?皙?g?rg皙grg333333) rrrrrrrr) rrsrr_rrsrP)r+r`rr@r1rrrtest_division_ints zTestDivision.test_division_intz dtype,ex_valintuint)zTnp.arange(fo.max-lsize, fo.max, dtype=dtype),np.arange(lsize, dtype=dtype),range(15)zsnp.arange(fo.min, fo.min+lsize, dtype=dtype),np.arange(lsize//-2, lsize//2, dtype=dtype),range(fo.min, fo.min + 15)znp.arange(fo.max-lsize, fo.max, dtype=dtype),np.arange(lsize, dtype=dtype),[1,3,9,13,neg, fo.min+1, fo.min//2, fo.max//3, fo.max//4]c st|jdkr dnd}d}t|\}}}||}} fddtjdd|} | |} ||} Wdn1sCwYfd d t|| D} d } t| | ks`J| d }t| | kslJ||D]B|} tjdd|}| } Wdn1swYfd d |D} t|| ksJ| t| | ksJ|qntjddd|vsȈjrd|vrj|vrt t  ||Wdn1swYn||jr j|vr t t  |dWdn 1swYnjr|dt t  |dWdn 1s(wYt t |} | d} Wdn 1sFwYtj g|ddWddS1s`wYdS)Nrrric*|dks|r|jkr|dkrdS||SNrrminnrlforr/*z9TestDivision.test_division_int_boundary..r9dividecsg|] \}}||qSrr).0r1y)c_divrr 6sz;TestDivision.test_division_int_boundary..z(Integer arrays floor division check (//)z)Integer arrays floor division check (//=)csg|]}|qSrrri)rdivisorrrrBraiser^) r+iinforevaltolisterrstaterxzipallpytestraisesFloatingPointErrorr`)r@r_ex_valneglsizerirdivisorsa_lstb_lstacdiv_abdiv_lstmsgmsg_eqdiv_ar)rrrrtest_division_int_boundary s`             $z'TestDivision.test_division_int_boundary)z1np.array([fo.max, 1, 2, 1, 1, 2, 3], dtype=dtype)z3np.array([fo.min, 1, -2, 1, 1, 2, -3], dtype=dtype)z3np.arange(fo.min, fo.min+(100*10), 10, dtype=dtype)z1np.arange(fo.max-(100*7), fo.max, 7, dtype=dtype)c s^t|t|}|}fdd}tjddtj|}Wdn1s*wYt||}d}||ks>J|tjddatt tjtj dd|d Wdn1sawYj rtt tjtj j d d g|d Wdn1swYWddSWddSWddS1swYdS) Ncrrrrrrrrgrz7TestDivision.test_division_int_reduce..r9rz#Reduce floor integer division checkrrrr^rr) r+rrrr floor_dividerrrrarangerr`) r@r_rrilstrrrrrrrtest_division_int_reduce[s2     "z%TestDivision.test_division_int_reducezdividend,divisor,quotientrXYM rrrrNatc Cs|r8t|ts t|s8d}|||ksJ|d}t|gd}t|gd}t|||ks6J|dStjddd*tt  ||Wdn1sTwYWddSWddS1slwYdS)NzTimedelta floor division checkz%Timedelta arrays floor division checkrrrr;) rrr+isnatr`rrrrr)r@dividendrquotientrdividend_arrayquotient_arrayrrrtest_division_int_timedeltazs  "z(TestDivision.test_division_int_timedeltacCsld}tjgdtjd}t|d|||dd}tjddgtjd}|d|}t||d d g|ddS) Nz%Complex division implementation check)??y???@r^rXerr_msgz)Complex division overflow/underflow checkG0JVys? )r)r+r` complex128r r@rr1rrrrtest_division_complexs z"TestDivision.test_division_complexcCstjdddbtjdgtjd}d|}tt|dttjtj|}tt|dttjtj|}tt|dttjtj|}tt|dd|}tt |dWddS1slwYdS)Nr9r;rr^r*r) r+rr`rrisinfcomplexinfrisnan)r@r1rrrrtest_zero_division_complexs"z'TestDivision.test_zero_division_complexcCsd}tjgdtjd}tjgdtjd}tt|d|||dd}tjdd gtjd}t|d|}t|dd g|ddS) Nz+Complex floor division implementation check)y??y?y??y?@r^)rrrrXrz/Complex floor division overflow/underflow checkrrr)r+r`rrrrrrrtest_floor_division_complexsz(TestDivision.test_floor_division_complexcCs8td}tt|ddtt| dddS)Nrsrr)r+rrsignbitrrrrtest_floor_division_signed_zeros z,TestDivision.test_floor_division_signed_zeror_FloatcCstjtj|d}tjd|d}tjd|d}tjtj|d}tjdddtttj||Wdn1s8wYtjdd!tttj||tttj||tttj||WddS1sgwYdS)Nr^r*rrr9rr:)r+r`rrrrrr)r@r_fnanfonefzerfinfrrrtest_floor_division_errorss"z'TestDivision.test_floor_division_errorsc CsLtjd|d}tjd|d}tjtj|d}tjd|d}tjd|d}tjtj|d}tG}|tdt ||} t | sIJdt | ft ||} t | s\Jdt | ft ||} t | soJdt | fWdn1sywYtj ddt ||} t t| WddS1swYdS) Nrsr^r*rz)invalid value encountered in floor_dividedt: %s, div: %sr9r)r+ronesr`rrrfilterRuntimeWarningrrdtrrrr) r@r_r1rr r rrsupdivzrrr test_floor_division_corner_casess&     "z-TestDivision.test_floor_division_corner_casesN)rFrGrHrrmark parametrize itertoolsproductr+sctypesrr timedelta64rrrrr  typecodesrrrrrrrsH   4      rcCst||t||fSrt)r+r remainderr1rrrrfloor_divide_and_remaindersr#cCs|tjdvr dSdS)NUnsignedIntegerrrr)r+r )rrrr_signssr&c@seZdZddZddZddZejde j dd d Z ejde j dejd e j e j gd d ZddZddZddZdS) TestRemainderc Cstjdtjd}ttjfD]o}t||D]f\}}tt|t|D]W\}}d}||j||||f}tj|d|d} tj|d|d} || | \} } t | | | | |d|dkrmt | | kogd kn|q%t | | kowd kn|q%qqdS) N AllIntegerr *op: %s, dt1: %s, dt2: %s, sg1: %s, sg2: %sGr^rrr) r+r r#divmodrrr&rFr`rr r@ropdt1dt2sg1sg2fmtrrirrremrrrtest_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]0} tj d D](} d | j | f} || }|| }| ||\}}t|| | d t|| | d qhqadS) Nirrcss|]}t|VqdSrt)r,)rtrrr sz;TestRemainder.test_float_remainder_exact..r^rr zop: %s, dtype: %sr)listrangerrr+r`rTfloatwherer#r,r rFastyper)r@nlstplstrrargtgtrirtgtdivtgtremr.rrfafbrr4rrrtest_float_remainder_exacts("  z(TestRemainder.test_float_remainder_exactc Cstjd}ttjfD]m}t||D]d\}}tddD]Y\}}d}||j||||f}tj|dd|d} tj|d|d} || | \} } t| | | | |d|dkrft | | ko`d kn|qt | | kopd kn|qqq dS) Nr r%r)Ng+i)+p>r^rrr) r+r r#r,rrrFr`rrr-rrrtest_float_remainder_roundoff!s   z+TestRemainder.test_float_remainder_roundoffr_r cCstjd|d}tjd|d}tjtj|d}tjtj|d}tjdddtttj||Wdn1s8wYtjdddtttj||Wdn1sWwYtjddtttj||Wdn1suwYtjddtttj||Wdn1swYtjdddtttj||Wdn1swYtjdddtttj||WddS1swYdS)Nrr^r*rr9rr:)r+r`rrrrrr,)r@r_fzeror rr rrrtest_float_divmod_errors3s,"z&TestRemainder.test_float_divmod_errorsfncCstjd|d}tjd|d}tjtj|d}tjtj|d}tjdd%tt|||tt|||tt|||tt|||WddS1sLwYdS)Nrr^r*rr:)r+r`rrrrr)r@r_rMrKr rr rrrtest_float_remainder_errorsIs"z)TestRemainder.test_float_remainder_errorscCsttjj}tjdddtd|\}}t|t|dkWdn1s,wYtjdddtt tjd|Wdn1sKwYtjdddtt tjd|WddS1skwYdS)Nr9)overr;rr)r;rO) r+finfortinyrr,rrrr)r@rirmodrrrtest_float_remainder_overflowVs "z+TestRemainder.test_float_remainder_overflowc CsvtjdD]2}tjtj|d}tjd|d}tjd|d}tjtj|d}t}|td|tdt||\}}t |sLJd||ft |sYJd||ft||\}}t |snJd||ft t |d||fft||\}}t |sJd||ft |sJd||ft||\}}t |sJd||ft |sJd||ft||\}}t |sJd||ft |sJd||ft||\}}t |sJd||ft |sJd||ft||\}}t |sJd||ft |s(Jd||fWdn 1s3wYqdS) Nr r^r*rz#invalid value encountered in divmodz$divide by zero encountered in divmodrdt: %s, rem: %s) r+r r`rrrrrr,rrr) r@rr r rrrrr4rrrtest_float_divmod_corner_casesas@   z,TestRemainder.test_float_divmod_corner_casesc CstjdD]L}tjd|d}tjd|d}tjtj|d}tjd|d}ttjd|d| }t||}t||kd|t| | }t|| kd|qt&}|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 ||fqhWddS1swYdS) Nr r*r^rzdt: %sz&invalid value encountered in remainderz!invalid value encountered in fmodrUzdt: %s, fmod: %s) r+r r`r nextafterr!rrrrrrfmod) r@rr rr rrir4rrrXrrr!test_float_remainder_corner_casess\                 $z/TestRemainder.test_float_remainder_corner_casesN)rFrGrHr5rHrJrrrr+r rLrXr!rNrTrVrYrrrrr's    r'c@r7)TestCbrtcCstttddddS)Nr)r r+cbrtfloat32r?rrrtest_cbrt_scalarszTestCbrt.test_cbrt_scalarcCsttdddtjtj g}tt|d|ttttjtttjtjtttj tj dS)Nr*@r) r+r`rr r\rrrrrrrr test_cbrts zTestCbrt.test_cbrtN)rFrGrHr^rarrrrrZrIrZc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS) TestPowercCsDtgd}t|dgdt|d|t|dgd|}|dC}t|gdt|dgdt|d d tdtd gttjd d dD]#\}}}dd|D}t|d ||dtj||dt|||dqPttj d ddD]#\}}}dd|D}t|d ||dtj||dt|||dq|dS)N)r*r_@rr*r*r*rrX)r*@"@r)r*rWgUUUUUU?rWr*runary r_rmax_sizecSg|]}t|qSrrNsqrtrrrrrrz.TestPower.test_power_float..rr\cSrkrrlrrrrrr) r+r`rrxr rNrmrr]r)r@r1rr\inprexprrrtest_power_floats4 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 dd#||d|||d||||d|||Wdn1swYqdS)N)r@@@@rrdrrX)y@y(@y8@r)y&yG"@y@]F@rP)y8y]^yxur)y?ٿy;;?؉؉ͿyQ?{GzĿr)yQ{GzĿyn_YK&q-yǺa2U0*r)yI +Mb?y:бbpԗ|pyF̱~&|grWrrsrtr*csg|]}|qSrrrnormrrrz0TestPower.test_power_complex..)y~@y0vA΋AyA]AcSs t|j|jt|j|jdSrt)r r/imagr"rrrassert_complex_equalsz:TestPower.test_power_complex..assert_complex_equalr^r9r:) r+r`rr rNrmrrcomplex_r)r@r1rzrrrvrtest_power_complexs4 zTestPower.test_power_complexcCstdg}tdg}tttjtjg}dd}dD] }|t|||q|t|d|tjdd*|t|d |dD] }|t|| |qD|t|d |WddS1sewYdS) Nyy?cSs6t|t|}}t|j|jt|j|jdSrt)r+rvr r/ryr"rrrrzsz7TestPower.test_power_zero..assert_complex_equal) gQ?rWr?rXrrPrgffffff@rr9r:?y𿚙?)r+r`rrpowerr)r@zeroonecnanrzprrrtest_power_zeros  "zTestPower.test_power_zerocCstgdtj}|d}t|dj|jut|gdtt|| t|gd|tdggg}t|jddS)Nrr_g9b->@)rrP rX)rrr) r+r`int16rr_r may_share_memoryrshape)r@r1resrrrtest_fast_powerszTestPower.test_fast_powercCs.tddgd}t||}t|ddgdS)Ni8l2X0)r+r`rrr@rirrrrtest_integer_power%s zTestPower.test_integer_powercCsztjd}|D]}tjdd|d}tt|dt|qtjd}|D]}tjd|d}tt|dt|q%dS)NIntegerrrsr^rr$r+r rrr ones_liker@dtypesrrzrrr-test_integer_power_with_integer_zero_exponent*s  z7TestPower.test_integer_power_with_integer_zero_exponentcCs>tjd}|D]}tjd|d}ttd|t|qdS)Nr(rsr^rrrrrrtest_integer_power_of_15s z!TestPower.test_integer_power_of_1cCs@tjd}|D]}tjdd|d}ttd|t|qdS)Nr(rrsr^r)r+r rrr zeros_likerrrrtest_integer_power_of_zero;s z$TestPower.test_integer_power_of_zerocCstjd}|D]B}tjgd|d}tjgd|d}tjd|d}tjd|d}tttj||tttj||tttj||tttj||qdS)Nr)rrrXrr^)rrrXrrr)r+r r`rrfr)r@rrrirrminusonerrrtest_integer_to_negative_powerAs z(TestPower.test_integer_to_negative_powerN) rFrGrHrrr|rrrrrrrrrrrrbs   rbc@r)TestFloat_powercCs`d}d}t||D]$\}}d||f}tjd|d}t||}t|jjt|jk|q dS)Nz?bhilBHILefdgFDGddddddddddddgDDGzdtin: %s, dtout: %srr^)rr+r float_powerrr_name)r@arg_typeres_typedtindtoutrrBrrrrtest_type_conversionOs  z$TestFloat_power.test_type_conversionN)rFrGrHrrrrrrNrrc@rJ)TestLog2cCsJgd}gd}dD]}tj||d}tj||d}tt||q dSN rrXrP @r6ii rrrXrrPrrorrrsfrlgr^)r+r`r log2r@r1rrxfyfrrrtest_log2_valuesZzTestLog2.test_log2_valuescCs8tddD]}td|}t|t|d|dqdS)NrAr_zat exponent %dr)r;r+rrr=)r@rvrrrtest_log2_intsbszTestLog2.test_log2_intscCsttddtttjtjttttjtjddK}t ddt tttdttttj ttdtj t|dj t ut|d j t ut|d j t uWddS1sqwYdS) Nr*rT)recordalwaysr6rrrrX) rr+rrrrrwarningscatch_warningsfilterwarningsrcategory)r@wrrrtest_log2_specialis"zTestLog2.test_log2_specialN)rFrGrHrrrrrrrrYs rc@r)TestExp2cCsJgd}gd}dD]}tj||d}tj||d}tt||q dSr)r+r`r exp2rrrrtest_exp2_valuesyrzTestExp2.test_exp2_valuesN)rFrGrHrrrrrrxrrc@4eZdZddZddZddZddZd d Zd S) TestLogAddExp2c Cgd}gd}gd}tgdgdD]-\}}ttj||d}ttj||d}ttj||d}tt||||dqdSN)rrXrrPr)rrPrrXr)rrrrrr)rrrr^decimal)rr+rr`r logaddexp2 r@r1rrrdec_rrzfrrrtest_logaddexp2_valuesz%TestLogAddExp2.test_logaddexp2_valuescCbgd}gd}gd}dD] }tj||d}tj||d}tj||d}tt|||qdSN)@BC)rrrr)rrrrrr^)r+r`r rr@r1rrrlogxflogyflogzfrrrtest_logaddexp2_rangez$TestLogAddExp2.test_logaddexp2_rangec Ctj}|| || |d| dg}||| | d|d| g}|||| ||ddg}tjdd,dD] }tj||d}tj||d}tj||d}tt|||q1WddS1s]wYdSNrrr:rr^)r+rrr`rr r@rr1rrrrrrrrrtest_inf"zTestLogAddExp2.test_infcCttttjtjttttjtjttttjdtttdtjttttjtjdSNr)rr+rrrrr?rrrtest_nan zTestLogAddExp2.test_nancCsbttjjtj ttjgtj ttjtj gtj ttjtj dgddSr)rr+ridentityrrr?rrr test_reduceszTestLogAddExp2.test_reduceN)rFrGrHrrrrrrrrrrs    rc@r7)TestLogcCs~gd}gd}dD]}d}tj||d}tj||d|}tt||q tgd}t|}ttj||d|dS)Nrrr9B.?r^)rXg?rgRQ?gl# ?rn)r+r`r logr@r1rrlog2_rrrrrtest_log_valuess zTestLog.test_log_valuesc Cstjdtgd}tdd}|D]P}ttjjdd|d}|}d|d d d <t|}t|}|D]*}t t|dd||dd|dd t t|dd||dd|dd q:qdS) N*rrrrrXrrPrXr{Gz?Y@lowhighsizer*rrrPnulp) r+randomseedr`rruniformrxrr) r@stridessizesiix_f64 x_specialy_true y_specialjjrrrtest_log_stridess    (*zTestLog.test_log_stridesN)rFrGrHrrrrrrrs rc@r7)TestExpcCsRgd}gd}dD]}d}tj||d}tj||d|}tt||q dS)Nrrrrr^)r+r`r rqrrrrtest_exp_valuesszTestExp.test_exp_valuesc Cstjdtgd}tdd}|D],}ttjjdd|d}t|}|D]}tt|dd||dd|ddq*qdS) NrrrXrrg(@rr) r+rrr`rrrrqr)r@rrrrrrrrrtest_exp_stridess   *zTestExp.test_exp_stridesN)rFrGrHrrrrrrr rc@sPeZdZddZeddZddZddZd d Zd d Z d dZ ddZ dS)TestSpecialFloatscCsdtjtjtjdg}tjtj tjtj g}dD]}tj||d}tj||d}tt||qdS)Nrrr^)r+rrr`rrqrrrrrsz!TestSpecialFloats.test_exp_valuescCstjdd0tttjtdtttjtdtttjtdtttjtdWdn1s9wYtjdd1tttjtdtttjtdtttjtdtttjtdWddS1sxwYdS) NrrOrg=`XCg@)underg@g=`X)r+rrrrqr]rr?rrrtest_exp_exceptionss"z%TestSpecialFloats.test_exp_exceptionscCsxtjdd@tjtjtjtjtj tjg}tjtj tjtj ddg}dD]}tj||d}tj||d}tt||q&Wdn1sIwYtjddtttjt dWdn1siwYtjdd tttjt tj tttjt dWdn1swYt tjd d d}t|WddS1swYdS) Nr9rrrrr^rrr:geAr]) r+rrrr`rrrrr]r)r@r1rrrrrirrrrs( "z!TestSpecialFloats.test_log_valuescCs,tjddAtjtjtjtjg}tjtj tjtj g}dD] }tj||d}tj||d}tt||tt||qWdn1sJwYtjdd7tt tjt tj tt tjt tjtt tjt tj tt tjt tjWddS1swYdS)Nr9r rr^rr:) r+rrrr`rsincosrrr]rrrrtest_sincos_valuess  "z$TestSpecialFloats.test_sincos_valuescCstjdd<tjtjtjtjdg}tjtj tjtj dg}dD]}tj||d}tj||d}tt||q!WddS1sEwYdS)Nr9r rrr^)r+rrrr`rrmrrrrtest_sqrt_values!s"z"TestSpecialFloats.test_sqrt_valuescCsvtjtjtjtjddddg}tjtj tjtj ddddg}dD]}tj||d}tj||d}tt||q dS)Nrr*r9rrr^)r+rrr`rr0rrrrtest_abs_values.s z!TestSpecialFloats.test_abs_valuescCstjtjtjtjg}tjtj tjtj g}tjdd#dD]}tj||d}tj||d}tt||qWdn1sBwYtjdd!tttjtjdddtttjtjd d dWddS1sqwYdS) Nr9r rr^rr gnFrgZbtirl) r+rrrr`rsquarerrrrrrtest_square_values6s"z$TestSpecialFloats.test_square_valuesc Cstjdd>tjtjddtjtj g}tjtj tjtj ddg}dD]}tj||d}tj||d}tt||q$Wdn1sGwYtjdddD]}tttjtjd|dqUWddS1sowYdS) Nr9r rr9rr^rr) r+rrrr`r reciprocalrrrrrrtest_reciprocal_valuesCs"z(TestSpecialFloats.test_reciprocal_valuesN) rFrGrHrglibc_newerthan_2_17r rrrrrrrrrrrs    rc@s&eZdZejdgdddZdS) TestFPClassstriderrrrrXrPc Cstjtjtj 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|tt|dd||dd|tt|dd||dd|tt|dd||dd|tt|dd||dd|dS)Nrr*r9rgiVQ giVQ rlr^gJ-&6gJ-&r) TTFFFFFFFF) FFTTFFFFFF) FTFTTFTFFT) FFFFTTTTTT) r+r`rrrrrr isfinite)r@rarr_f64arr_f32rrsignfiniterrr test_fpclassQs..$$$$$$$(zTestFPClass.test_fpclassN)rFrGrHrrrrrrrrrPsrc@s8eZdZejdgdejdddgddZdS) TestLDExprrr_rrlcCstjgd|d}tjgddd}tjd|d}ttj|dd||dd||dd|dtjd|ddd|t|dd|tjd|ddd|dS)N)g??rWr*r*r_reg @r^)rrXrrrrrrrrrn)r+r`rrldexpr)r@r_rmantrqr\rrr test_ldexpcs H,zTestLDExp.test_ldexpN)rFrGrHrrrr$rrrrr bsr c@sReZdZejdgdejdddgejjej d ddd d Z d S) TestFRExprrr_rrllinuxzAnp.frexp gives different answers for NAN/INF on windows and linuxr!c 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) Nrr9r*rr^rW)rrrrrrrrrrrXrn)r+r`rrrrdr) r@r_rrz mant_trueexp_trueout_mantout_expr#rqrrr test_frexpms((4"zTestFRExp.test_frexpN) rFrGrHrrrskipifsysr%r(r,rrrrr%lsr%)rrr)rYr)rr*r)rr/r)rmabsoluterrrintfloorceiltruncc@r) TestAVXUfuncsc Cs^tgd}tjdtD]\}}|d}|d}|d}tddD]}tt|}ttjj |||d} t | } t | } || } |dkr`t || t| t || t | nt || t| |dt || t | |d|dkr|| } || }|D]$}t || dd||dd|t || dd|| dd|qq&qdS) NrrrrrXrrmaxulp)r+r`rr avx_ufuncsitemsr;getattrr]rr longdoublerr )r@rfuncprop maxulperrminvalmaxvalrmyfuncx_f32rx_f128 y_true128y_true32y_true64rrrrtest_avx_based_ufuncs@    "$z"TestAVXUfuncs.test_avx_based_ufuncN)rFrGrHrGrrrrr5rr5c@,eZdZddZddZddZddZd S) TestAVXFloat32TranscendentalcCRtjdttjjdddd}t|}tt|tt|dddS)NrrfffffV@rrrr6)r+rrr]rrr rqr@rBrrrrtest_exp_float32  $z-TestAVXFloat32Transcendental.test_exp_float32cCrJ)NrrrrrPr6)r+rrr]rrr rrLrrrtest_log_float32rNz-TestAVXFloat32Transcendental.test_log_float32cCstjdd}t|d}tjjd||d}ttjjdd|d}tdtj|||<t|}t t |tt |d d t t |tt |d d | }t tj ||d tt |d d t tj ||d tt |d d dS) Nrrrrr/rgvH7BrXr6rn) r+rrint_randintr]rrandrr r rrx)r@NrindexrBrtx_f32rrrtest_sincos_float32s    $(z0TestAVXFloat32Transcendental.test_sincos_float32c Cs4tjdtgd}tdd}|D]}ttjjdd|d}|}d|d d d <t|}t |}t |}t |} |D]R} t t|dd| |dd| dd t t |dd| |dd| dd t t |dd| |dd| dd t t |dd| | dd| dd qDqdS) NrrrXrrrKrgL@rrrPr) r+rrr`rr]rrxrqrr rr) r@rrrrB x_f32_larger)log_truesin_truecos_truerrrrtest_strided_float32s$      (((*z1TestAVXFloat32Transcendental.test_strided_float32N)rFrGrHrMrPrXr]rrrrrIs  rIc@r) TestLogAddExpc Crr)rr+rr`r logaddexprrrrtest_logaddexp_valuesrz#TestLogAddExp.test_logaddexp_valuescCrr)r+r`r r_rrrrtest_logaddexp_rangerz"TestLogAddExp.test_logaddexp_rangec Crr)r+rrr`rr_rrrrrrzTestLogAddExp.test_infcCrr)rr+rr_rrr?rrrrrzTestLogAddExp.test_nancCs,ttjjtj ttjgtj dSrt)rr+r_rrrr?rrrrzTestLogAddExp.test_reduceN)rFrGrHr`rarrrrrrrr^s    r^c@r7) TestLog1pcCs0ttdtdttdtddS)N皙?g333333?ư>g zo ?)r rNlog1prr?rrr test_log1pzTestLog1p.test_log1pcCstjddd;tttjtjtttjtjttdtj ttdtjtttj tjWddS1sEwYdS)Nr9rr)r+rrrNrfrrr?rrr test_specials"zTestLog1p.test_specialN)rFrGrHrgrjrrrrrc rcc@rJ) TestExpm1cCs8ttdtddttdtdddS)Nrdrre)r rNexpm1rqr?rrr test_expm1szTestExpm1.test_expm1cCs`tttjtjttddttddtttjtjtttj ddS)Nrr9r)rrNrmr+rr?rrrrjs zTestExpm1.test_specialcCs:td}t|t||tj}t|t|dS)Ng-q=)r+rvrrNrmr?rrrrr test_complexs  zTestExpm1.test_complexN)rFrGrHrnrjrorrrrrls rlc@r7) TestHypotcCs.ttddtdttddddSNrrXr)r rNhypotrmr?rrr test_simple%szTestHypot.test_simplecCsXttjddgdttjgddttjgddttjgddS)Nrcre@)rcrer)rfg(@4@g9@r)r rNrrrrr?rrrr)szTestHypot.test_reduceN)rFrGrHrsrrrrrrp$rkrpc C\tjddttt||d||t||fWddS1s'wYdS)Nr9r:zhypot(%s, %s) is %s, not nan)r+rrrrNrrr"rrrassert_hypot_isnan0 "rwc Crv)Nr9r:zhypot(%s, %s) is %s, not inf)r+rrrrNrrr"rrrassert_hypot_isinf6rxryc@rJ)TestHypotSpecialValuescCsttjtjttjddSNr)rwr+rr?rrrtest_nan_outputs=z'TestHypotSpecialValues.test_nan_outputscCsRttjtjttjtjttjdtdtjttjtjttjddS)Nrg7@)ryr+rrr?rrrtest_nan_outputs2As   z(TestHypotSpecialValues.test_nan_outputs2cCsttjtjddSr)rrNrrr+rr?rrr test_no_fpeIr|z"TestHypotSpecialValues.test_no_fpeN)rFrGrHr|r~rrrrrrz<s rzc Cs.ttt||d||t||fdS)Nzarctan(%s, %s) is %s, not nan)rr+rrNarctan2r"rrrassert_arctan2_isnanMs.rc Cs>ttt||ot||dkd||t||fdS)Nrzarctan(%s, %s) is %s, not +infrr+rrNrr"rrrassert_arctan2_ispinfQ>rc Cs>ttt||ot||dkd||t||fdS)Nrzarctan(%s, %s) is %s, not -infrr"rrrassert_arctan2_isninfUrrc Cs@tt||dkott|| d||t||fdS)Nrzarctan(%s, %s) is %s, not +0rrNrr+r r"rrrassert_arctan2_ispzeroYs@rc Cs>tt||dkott||d||t||fdS)Nrzarctan(%s, %s) is %s, not -0rr"rrrassert_arctan2_isnzero]rrc@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)TestArctan2SpecialValuescCsLttdddtjttdddtjttdddtjdS)Nrr!rп?)r rNrr+rOr?rrr test_one_onebsz%TestArctan2SpecialValues.test_one_onecCs6tttjtjtjtttjtjtj dSrt)r rNrr+PZERONZEROrOr?rrrtest_zero_nzerohsz(TestArctan2SpecialValues.test_zero_nzerocCs ttjtjttjtjdSrtrr+rrrr?rrrtest_zero_pzeromsz(TestArctan2SpecialValues.test_zero_pzerocCs2tttjdtjtttjdtj dS)Nrr rNrr+rrOrr?rrrtest_zero_negativerz+TestArctan2SpecialValues.test_zero_negativecCsttjdttjddSr{rr?rrrtest_zero_positivew z+TestArctan2SpecialValues.test_zero_positivecC8ttdtjdtjttdtjdtjdS)NrrWrr?rrrtest_positive_zero|z+TestArctan2SpecialValues.test_positive_zerocCr)Nrr'rr?rrrtest_negative_zerorz+TestArctan2SpecialValues.test_negative_zerocCs2ttdtjtjttdtjtj dSNrr)r rNrr+NINFrOr?rrr test_any_ninfrz&TestArctan2SpecialValues.test_any_ninfcCstdtjtdtjdSr)rr+rrr?rrr test_any_pinfrz&TestArctan2SpecialValues.test_any_pinfcCs:tttjddtjtttj ddtjdS)NrrWr'r rNrr+rrOr?rrr test_inf_anys z%TestArctan2SpecialValues.test_inf_anycCsBtttjtj dtjtttj tj dtjdS)Nrgrr?rrr test_inf_ninfs$z&TestArctan2SpecialValues.test_inf_ninfcCs>tttjtjdtjtttj tjdtjdS)Nr!rrr?rrr test_inf_pinfs"z&TestArctan2SpecialValues.test_inf_pinfcCs.ttjtjttjtjttjtjdSrt)rr+rrr?rrr test_nan_anysz%TestArctan2SpecialValues.test_nan_anyN)rFrGrHrrrrrrrrrrrrrrrrrras rc@rJ) TestLdexpcCsptttdtjtd|dtttdtjtd|dtttdtjtd|ddS)Nr_r0@)r rNr"r+r`r]rr;)r@tprrr _check_ldexps   zTestLdexp._check_ldexpcCsNttddd|tj|tj|tj|d|ddS)Nr_rrrl)r rNr"rr+int8rrcr?rrrr$s     zTestLdexp.test_ldexpcCs|tjdd.ttdj}ttdj}ttd|tj ttd|dWddS1s7wYdS)Nr9r rr_r) r+rrr_maxrrrNr"r)r@imaximinrrrtest_ldexp_overflows "zTestLdexp.test_ldexp_overflowN)rFrGrHrr$rrrrrrs rc@DeZdZddZddZddZddZd d Zd d Zd dZ dS) TestMaximumc Ctjd}tjd}td}|ddd}tjj}|D]}||}||}t||dt||dq|D]:}||}||}t||dt||dtj|ddd<tj|ddd<t||tjt||tjq9dS)NAllFloatr(rhrrsrX)r+r rmaximumrr?rr r@dfltdintseq1seq2r<rtmp1tmp2rrrr(       zTestMaximum.test_reducecC0ttjddgdttjddgddSNr@y?@)rr+rrr?rrrtest_reduce_complexrhzTestMaximum.test_reduce_complexcCLtj}td||g}t|d|g}t|||g}tt|||dSr)r+rr`rrr@rarg1arg2r\rrrtest_float_nans zTestMaximum.test_float_nanscC^tdD](}ttdt}d}ttdt}tt||dktt||dkqdSNrrr*)r;r+r`r=rrrr@rr1rrrrrtest_object_nans zTestMaximum.test_object_nanscCztj}t|dtd|t||fD])}tjd||gtd}tj|d|gtd}tj|||gtd}tt|||qdSNrr^)r+rrr`rrr@rrrrr\rrrtest_complex_nans zTestMaximum.test_complex_nanscCs,tjdtd}|d}tt|||dSNrr^r)r+rrrrr@rrrrrtest_object_arrayzTestMaximum.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||dSNgr*g$@rrirr`rrXrPrrrn)r+r`rrrrr)r@arr1arr2maxtruer\ out_maxtruerrrtest_strided_arrays&" 042BzTestMaximum.test_strided_arrayN rFrGrHrrrrrrrrrrrr  rc@r) TestMinimumc Cr)Nrr(rhrrrX)r+r rminimumrr?rrrrrrr rzTestMinimum.test_reducecC0ttjddgdttjddgddSr)rr+rrr?rrrrrhzTestMinimum.test_reduce_complexcCrr)r+rr`rrrrrrr#rzTestMinimum.test_float_nanscCrr)r;r+r`r=rrrrrrrr*rzTestMinimum.test_object_nanscCrr)r+rrr`rrrrrrr5rzTestMinimum.test_complex_nanscCs,tjdtd}|d}tt|||dSr)r+rrrrrrrrr=rzTestMinimum.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)r+r`rrrrr)r@rrmintruer\ out_mintruerrrrBs&$ 042BzTestMinimum.test_strided_arrayNrrrrrr rrc@rH) TestFmaxc Ctjd}tjd}td}|ddd}tjj}|D]}||}||}t||dt||dq|D]8}||}||}t||dt||dtj|ddd<tj|ddd<t||dt||dq9dS)Nrr(rhrrsrXr)r+r rfmaxrr?rrrrrrrP(       zTestFmax.test_reducecCrr)rr+rrr?rrrrerhzTestFmax.test_reduce_complexcCLtj}td||g}t|d|g}tdd|g}tt|||dSr)r+rr`rrrrrrrirzTestFmax.test_float_nanscCztj}t|dtd|t||fD])}tjd||gtd}tj|d|gtd}tjdd|gtd}tt|||qdSr)r+rrr`rrrrrrrprzTestFmax.test_complex_nansNrFrGrHrrrrrrrrrO  rc@rH) TestFminc Cr)Nrr(rhrrrXr)r+r rfminrr?rrrrrrrzrzTestFmin.test_reducecCrr)rr+rrr?rrrrrhzTestFmin.test_reduce_complexcCrr)r+rr`rrrrrrrrzTestFmin.test_float_nanscCrr)r+rrr`rrrrrrrrzTestFmin.test_complex_nansNrrrrrryrrc@rH) TestBoolcCs@tjdtjd}tttj|tttj|tttj||dS)Nrr^)r+rbool_rrenegativepositivesubtractrrrrtest_exceptionsszTestBool.test_exceptionsc Csgd}gd}tjdtjdd}ttj|D]X}tj||d}tj||d}gd}tjtjfD] }t|||t |q4gd}tj tj fD] }t|||t |qLgd }tj tj fD] }t|||t |qdqdS) N)rrrrX)rrPrrXrr(?r^FTTTFFFTFTTF)r+r mapr_rv logical_orrrr?bool logical_andr logical_xorr) r@input1input2r r_rrr\r<rrrtest_truth_table_logicals*z!TestBool.test_truth_table_logicalcCsbgd}gd}gd}tt|||gd}tt|||gd}tt|||dS)N)FFTT)FTFTrrr)rr+ bitwise_or bitwise_and bitwise_xor)r@rrr\rrrtest_truth_table_bitwisesz!TestBool.test_truth_table_bitwisecCstgdt}tgdt}tgdt}tgt}||||g}|D] }ttj|t|q&|D] }ttj|t|q6|D]}ttj || ddkqFdS)N)rrrr)rrrr)rrrrrXr) r+r`rrrrrranyrr)r@nonesomeeveryraarrsrzrrrrs   zTestBool.test_reduceN)rFrGrHrrrrrrrrrs  rc@s:eZdZdddDZddZddZdd Zd d Zd S) TestBitwiseUFuncscCrkr)r+r_)rcrrrrrzTestBitwiseUFuncs.z ?bBhHiIlLqQOcCsj|jD]}tjdg|d}tjdg|d}d|j}tt|||dtt|||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dtt||||dqdS)Nrr^r dt = '%s'r) bitwise_typesr+r`charr bitwise_notrrrr@rrrrrrr test_valuess&  zTestBitwiseUFuncs.test_valuescCs|jD]F}tjdg|d}tjdg|d}d|j}tt|j|k|tt||j|k|tt||j|k|tt ||j|k|qdS)Nrr^rr) rr+r`r rr r_rrrr rrr test_typess  zTestBitwiseUFuncs.test_typescCs:ttjjdkdttjjdkdttjjdkddS)Nrrrrr)rr+rrrrr?rrr test_identity szTestBitwiseUFuncs.test_identityc Csltjtjtjf}|jD]1}tjdg|d}tjdg|d}|D]}d||f}t||||dt||||dqq |jddD]1}tjg|d}|D]%}d||f}tj|j|d}||} t| ||dt | j |j k|qOqD|D]}d|f}tjgt d}|j}||} t| ||dqx|D]}d|f}tjdgt d} t t || t u|qdS)Nrr^rzdt: '%s', f: '%s'rzdt: '%s'T)r+rrrrr`rrrrr_rrr) r@ binary_funcsrrrrrrarCrbtyperrrtest_reductions:       z TestBitwiseUFuncs.test_reductionN)rFrGrHrr r rrrrrrrs  rc@r)TestIntcCsdtjdtjd}tjdtd}|}d|ddd<|ddd}ttj||ddt||dS)Nrsr^rQFrXrn)r+rrrrxr logical_not)r@r1rjrCrrrrtest_logical_not7szTestInt.test_logical_notN)rFrGrHrrrrrr6rrc@r)TestFloatingPointcCsttjddSr{)rrNFLOATING_POINT_SUPPORTr?rrrtest_floating_pointBz%TestFloatingPoint.test_floating_pointN)rFrGrHrrrrrrArrc@r) TestDegreescCs,tttjdttdtjddS)Nf@r'V)r rNdegreesr+rOr?rrr test_degreesGrbzTestDegrees.test_degreesN)rFrGrHrrrrrrFrrc@r) TestRadianscCs,ttdtjttddtjdS)Nrrr')r rNradiansr+rOr?rrr test_radiansMrbzTestRadians.test_radiansN)rFrGrHr rrrrrLrrc@r) 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>rrrdg@)rrrWr*r*rrrrXrW) r+r`rrrxrN heavisiderr?r])r@r1 expectedhalf expected1hrrrtest_heavisideSs"     zTestHeavside.test_heavisideN)rFrGrHr'rrrrr!Rrr!c@rJ)TestSigncCsttjtj tjdddg}t|j}tddtjdddg}tjdd#t|}t ||t||}t ||t ||WddS1sMwYdS)Nrrcr`r*rr9r:) r+r`rrrrrrNrr)r@rir\rCrrrr test_signis      "zTestSign.test_signcCs6tgd}t|t}t|}t||dS)N)rrr)r+r`rr?rr )r@foorirrrrtest_sign_dtype_objectus zTestSign.test_sign_dtype_objectcCsdd}tt|dS)NcSs"ttjg}t|t}dSrt)r+r`rrr?r)r*rirrrrsz5TestSign.test_sign_dtype_nan_object..test_nan)rre)r@rrrrtest_sign_dtype_nan_object~sz#TestSign.test_sign_dtype_nan_objectN)rFrGrHr)r+r,rrrrr(hs r(c@rH) TestMinMaxc stjdftjdffD]z\}}t|d|dD]n\}tjD]c}tjj|ddd<tj|<fdd}t$}| t dt t |d t t |d Wdn1scwYd |<t d d d |<td d qqq dS) Nrrorgrir^cs dfS)Nz%r %srrrprrrr z0TestMinMax.test_minmax_blocked..z#invalid value encountered in reduce)rg _Brg _)r+r]rrr;rrrrrrrrrrr)r@rszr\remsgrrr.rtest_minmax_blockeds, zTestMinMax.test_minmax_blockedcCsHtjdtjdddtj}t||dt||ddS)Nr^rPrr)r+rrrwrrrrr@rlrrrtest_lower_aligns zTestMinMax.test_lower_aligncCsXdD]'}tjtjtjfD]}ttjtjg||dD] }tt|tjqq qdS)N)rXrPrrrr^) r+r]float16 complex64diagflatr`rrr)r@rrrkrrrtest_reduce_reorders zTestMinMax.test_reduce_reordercCsttjd}t|tjdSr{)r+rrrrrrrtest_minimize_no_warnsr}z!TestMinMax.test_minimize_no_warnsN)rFrGrHr2r5r9r:rrrrr-s  r-c@r7)TestAbsoluteNegativec CsptjdftjdffD]\}}t|d|dD]\}}}dd|D}tj||dt|||dt|d kd d|D}tj||dt|||dtj tj tj fD]^}t |j D]V}tj |j |d } | |dd<|||<|tj krz| n|| |<tt|| |dtj||dt|| |dt| d ||dd |} tj||dt|| |dq\qUqq dS) NrhrrgricSrkr)rNr0rrrrrrz=TestAbsoluteNegative.test_abs_neg_blocked..rnrrcSsg|]}d|qS)rrrrrrrrxr^r)r+r]rrr0rrrrrrr;rrr r0) r@rr0r\rprrCrrrlrrrtest_abs_neg_blockeds8z)TestAbsoluteNegative.test_abs_neg_blockedcCstjdtjdddtj}tt||tt|| tj||dtjt||dtj||dtjt||ddS)Nr3r^rPrrn) r+rrrwrrr0rrr4rrrr5s z%TestAbsoluteNegative.test_lower_alignN)rFrGrHr<r5rrrrr;s r;c@r7) TestPositivecCsDttttg}|D]}tjd|d}t|}t||t|dqdS)Nrr^r) rr=rrr+rrrstr)r@ valid_dtypesr_r1resultrrr test_valids  zTestPositive.test_validcCstt tdWdn1swYttttdWdn1s0wYttttjdgtdWdn1sOwYttttjdgtdWddS1sowYdS)NTz 2000-01-01r*r^bar)rrer+r datetime64r`r>rr?rrr test_invalids     "zTestPositive.test_invalidN)rFrGrHrArDrrrrr=s r=c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/S)0TestSpecialMethodscsGfddd}t||}t|jtd|j\}}}t|tjutt|dt|d|t|d|t|ddS)Nc eZdZddZfddZdS)z/TestSpecialMethods.test_wrap..with_wrapcS tdSr{r+rr?rrr __array__ z9TestSpecialMethods.test_wrap..with_wrap.__array__cs}||_||_|Srt)rzrr@rzrrk with_wraprrrsz>TestSpecialMethods.test_wrap..with_wrap.__array_wrap__NrFrGrHrIrrrLrrrMrMrrXr) rNrrrzr+rrrlen)r@rir1r<argsrrrLr test_wraps  zTestSpecialMethods.test_wrapcsGdddtjfdd}|dddd|ddd d|d dd d|d dd d|dddd|dddd|dddddS)Nc@s@eZdZdZdZddZddZddZedd Z d d Z dS) zKTestSpecialMethods.test_wrap_and_prepare_out..StoreArrayPrepareWrapNcSstd|SrC)r+rrwryrrrr{ rzSTestSpecialMethods.test_wrap_and_prepare_out..StoreArrayPrepareWrap.__new__cS|d|_|Sr{) _wrap_argsr@objrrrrr zZTestSpecialMethods.test_wrap_and_prepare_out..StoreArrayPrepareWrap.__array_wrap__cSrTr{) _prepare_argsrVrrr__array_prepare__rXz]TestSpecialMethods.test_wrap_and_prepare_out..StoreArrayPrepareWrap.__array_prepare__cSs |j|jfSrt)rYrUr?rrrrQs zPTestSpecialMethods.test_wrap_and_prepare_out..StoreArrayPrepareWrap.argscSdS)Nrirr?rrr__repr__zTTestSpecialMethods.test_wrap_and_prepare_out..StoreArrayPrepareWrap.__repr__) rFrGrHrUrYr{rrZpropertyrQr\rrrrStoreArrayPrepareWrap s  r_c s|}|||j\}}||}z t||t||WdSty=}ztddd|d|d|gd}~ww)N z"Bad arguments passed in ufunc callz expected: {}z __array_prepare__ got: {}z __array_wrap__ got: {})rQrAssertionErrorjoinformat)f_call f_expectedrirrexpectedrQr_rrdo_tests   z=TestSpecialMethods.test_wrap_and_prepare_out..do_testcSs t|dSrr+rbrirrrr/r/z>TestSpecialMethods.test_wrap_and_prepare_out..cS|dfSrrrjrrrr/cSst|ddSrrirjrrrr0cSrkrrrjrrrr0rlcSstj|dddSNrrnrirjrrrr1cSrkrrrjrrrr1rlcSstj|dddS)Nrrtrnrirjrrrr2rocSrkrrrjrrrr2rlcSstdd|Srrirjrrrr5rmcS dd|fSrrrjrrrr5 cSstjdd|dSrnrirjrrrr6rocSrprrrjrrrr6rqcSstjdd|fdSrnrirjrrrr7scSrprrrjrrrr7rq)r+r)r@rhrrgrtest_wrap_and_prepare_outs z,TestSpecialMethods.test_wrap_and_prepare_outcCsFGdddtj}|}t|d}tt||t|tddS)Nc@rr)z=TestSpecialMethods.test_wrap_with_iterable..with_wraprscSstd|Sr{rurSrrrr{?r|zETestSpecialMethods.test_wrap_with_iterable..with_wrap.__new__cSr}rtr~rrrrrBrzLTestSpecialMethods.test_wrap_with_iterable..with_wrap.__array_wrap__NrrrrrrM<rrMr)r+rrNmultiplyrrr r`r@rMrir1rrrtest_wrap_with_iterable9s  z*TestSpecialMethods.test_wrap_with_iterablecCsHGdddtj}|}td|}tt||t|tddS)Nc@seZdZdZddZdS)z7TestSpecialMethods.test_priority_with_scalar..ArscSstdd|S)Nr*rrurSrrrr{PrEz?TestSpecialMethods.test_priority_with_scalar..A.__new__N)rFrGrHrr{rrrrAMs rvr)r+rrrrr r`)r@rvrir1rrrtest_priority_with_scalarJs z,TestSpecialMethods.test_priority_with_scalarcs:Gfddd}t||}t|jtddS)NcrF)z3TestSpecialMethods.test_old_wrap..with_wrapcSrGr{rHr?rrrrI[rJz=TestSpecialMethods.test_old_wrap..with_wrap.__array__cs}||_|Srt)rz)r@rzrkrLrrr^szBTestSpecialMethods.test_old_wrap..with_wrap.__array_wrap__NrNrrLrrrMZrOrMr)rNrrrzr+rr@rir1rrLr test_old_wrapXs z TestSpecialMethods.test_old_wrapc CsGddd}Gddd|}Gddd|}td}|}|}|}tj}tt|||tjutt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||utt||||uttt||uttt||uttt||udS)Nc@r7)z+TestSpecialMethods.test_priority..AcSrGr{rHr?rrrrIjrJz5TestSpecialMethods.test_priority..A.__array__cSst|}||_||_|Srt)rrzrrKrrrrms z:TestSpecialMethods.test_priority..A.__array_wrap__NrNrrrrrvirIrvc@eZdZdZdS)z+TestSpecialMethods.test_priority..BruNrFrGrHrrrrrBsr|c@rz)z+TestSpecialMethods.test_priority..CgD@Nr{rrrrCvr}r~r)r+rrNrrrrrq) r@rvr|r~r1rirrrrrr test_prioritygs2  z TestSpecialMethods.test_prioritycCs8Gddd}|}tttj||tttjj|dS)Nc@r7)z/TestSpecialMethods.test_failing_wrap..AcSrGNrXrHr?rrrrIrJz9TestSpecialMethods.test_failing_wrap..A.__array__cStrt RuntimeErrorrrrrrr]z>TestSpecialMethods.test_failing_wrap..A.__array_wrap__NrNrrrrrvrIrv)rrrNrrr@rvrirrrtest_failing_wrapsz$TestSpecialMethods.test_failing_wrapcsxtdgGfdddtj}Gdddtj}td|}td|}tdD] }tttj d||q.dS)Nr*ceZdZfddZdS)z4TestSpecialMethods.test_failing_out_wrap..OkcsSrtrr@rW singletonrrrr]zCTestSpecialMethods.test_failing_out_wrap..Ok.__array_wrap__NrFrGrHrrrrrOkrc@r)z5TestSpecialMethods.test_failing_out_wrap..BadcSrrtrrrrrrr]zDTestSpecialMethods.test_failing_out_wrap..Bad.__array_wrap__NrrrrrBadrrrrs) r+r`rrarwr;rrrNrd)r@rrokbadrrrrtest_failing_out_wraps  z(TestSpecialMethods.test_failing_out_wrapcCs*Gddd}|}tt||ddS)Nc@eZdZddZdddZdS)z,TestSpecialMethods.test_none_wrap..AcSrGr{rHr?rrrrIrJz6TestSpecialMethods.test_none_wrap..A.__array__NcSsdSrtrrrrrrr]z;TestSpecialMethods.test_none_wrap..A.__array_wrap__rtrNrrrrrvrv)rrNrrrrrtest_none_wrapsz!TestSpecialMethods.test_none_wrapcCsDGddd}|}t||}t|tdtt|tjdS)Nc@rr)z:TestSpecialMethods.test_default_prepare..with_wraprscSrGr{rHr?rrrrIrJzDTestSpecialMethods.test_default_prepare..with_wrap.__array__cS|Srtrrrrrrr]zITestSpecialMethods.test_default_prepare..with_wrap.__array_wrap__N)rFrGrHrrIrrrrrrMrrMr)rNrrr+rrrrtrrrtest_default_prepares  z'TestSpecialMethods.test_default_preparecsVGfdddtjtdjd}t||}t|tdtt|dS)NceZdZdZfddZdS)z5TestSpecialMethods.test_prepare..with_preparersct|jdSNrr+r`rwr with_preparerrrZszGTestSpecialMethods.test_prepare..with_prepare.__array_prepare__NrFrGrHrrZrrrrrrrrrX)r+rr`rwrbrrrxrrr test_prepares  zTestSpecialMethods.test_preparecsnGfdddtjtdgjd}t|||}tt|| t|tdgtt|dS)Ncr)z9TestSpecialMethods.test_prepare_out..with_preparerscrrrrrrrrZrBzKTestSpecialMethods.test_prepare_out..with_prepare.__array_prepare__NrrrrrrrrrrrX) r+rr`rwrbr shares_memoryrrrxrrrtest_prepare_outs z#TestSpecialMethods.test_prepare_outcCs(Gddd}|}tttj||dS)Nc@r)z2TestSpecialMethods.test_failing_prepare..AcSrGr{rHr?rrrrIrJz.A.__array__NcSrrtrrrrrrZr]zDTestSpecialMethods.test_failing_prepare..A.__array_prepare__rt)rFrGrHrIrZrrrrrvrrv)rrrNrrrrrtest_failing_preparesz'TestSpecialMethods.test_failing_preparecCs(Gddd}|}ttdtj|dS)Nc@r)z6TestSpecialMethods.test_array_too_many_args..AcSrGr{rH)r@r_rrrrrIrJz@TestSpecialMethods.test_array_too_many_args..A.__array__N)rFrGrHrIrrrrrvrrvz2 required positional)r rer+rrrrrtest_array_too_many_argssz+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@r)z1TestSpecialMethods.test_ufunc_override..Ac_|||||fSrtrr@r<methodinputskwargsrrr__array_ufunc__ rzATestSpecialMethods.test_ufunc_override..A.__array_ufunc__NrFrGrHrrrrrrv rrvc@rz)z9TestSpecialMethods.test_ufunc_override..MyNDArrayrNr{rrrr MyNDArray r}rrrnrrX__call__rrPr\)r+rr`rwrsr)r@rvrrirres0res1rrrtest_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 |||Srtr)rirrrrrtres_mul s z.tres_mulcSs||||Srtr)rirrrlrrr quatro_mul! rz>TestSpecialMethods.test_ufunc_override_mro..quatro_mulrrrPc@r)z5TestSpecialMethods.test_ufunc_override_mro..Ac_r[)Nrvrrrrrr) r]zETestSpecialMethods.test_ufunc_override_mro..A.__array_ufunc__Nrrrrrrv( rrvc@r)z8TestSpecialMethods.test_ufunc_override_mro..ASubc_r[)NASubrrrrrr- r]zHTestSpecialMethods.test_ufunc_override_mro..ASub.__array_ufunc__Nrrrrrr, rrc@r)z5TestSpecialMethods.test_ufunc_override_mro..Bc_r[)Nr|rrrrrr1 r]zETestSpecialMethods.test_ufunc_override_mro..B.__array_ufunc__Nrrrrrr|0 rr|c@r7)z5TestSpecialMethods.test_ufunc_override_mro..CcSs d|_dSr)countr?rrr__init__5 rJz>TestSpecialMethods.test_ufunc_override_mro..C.__init__c_|jd7_tSr{rNotImplementedrrrrr8 zETestSpecialMethods.test_ufunc_override_mro..C.__array_ufunc__N)rFrGrHrrrrrrr~4 rIr~c@r)z8TestSpecialMethods.test_ufunc_override_mro..CSubc_rr{rrrrrr= rzHTestSpecialMethods.test_ufunc_override_mro..CSub.__array_ufunc__NrrrrrCSub< rrrXrr)r+ frompyfuncrsrrrre)r@rrthree_mul_ufuncfour_mul_ufuncrvrr|r~rria_subrrrc_subc2rrrtest_ufunc_override_mro s                             z*TestSpecialMethods.test_ufunc_override_mroc CsGddd}|}tttjjd|dddWdn1s#wYtjjd|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@r)z9TestSpecialMethods.test_ufunc_override_methods..Ac_rrtrr@ufuncrrrrrrr rzITestSpecialMethods.test_ufunc_override_methods..A.__array_ufunc__Nrrrrrrv rrvrrBr)r*answer)rZr>rrXrrrPri)sig signature)axisaxesaxis0dtype0out0keep0r)r)r_r\keepdimsrinit0where0)rr_r\rinitialr>)r_r\rrrr>F)rr_rT)r\rr)rrrt)r\r_)rr_)rr_rrr>)rr_rr>rrn)rout1r accumulate)r_r\r)rr_r\dtype1)r\rr_reduceatr)rr\r_outerb0at)rrer+rsrr ncu_testsinner1dr_NoValuerfrrrr)r@rvrirrrrtest_ufunc_override_methods s"           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|ddWdn1swYtttj||dddtttj||ddtt tj||ddtttj|ddtttj|dddtttj|dddtt tj|ddtt tj|dddS)Nc@r)z5TestSpecialMethods.test_ufunc_override_out..Ac_|SrtrrrrrrP r]zETestSpecialMethods.test_ufunc_override_out..A.__array_ufunc__NrrrrrrvO rrvc@r)z5TestSpecialMethods.test_ufunc_override_out..Bc_rrtrrrrrrT r]zETestSpecialMethods.test_ufunc_override_out..B.__array_ufunc__Nrrrrrr|S rr|out_argrnrXrrPrr\rrrrrt)NNrtworrr)rthreer)rrr)r) r+rsrmodfrdrr rrerf) r@rvr|rirrrres2res3res4res5res6res7rrrtest_ufunc_override_outM sN z*TestSpecialMethods.test_ufunc_override_outcCsHGddd}|}tttjd|dtttj|tttjd|dS)Nc@r)z;TestSpecialMethods.test_ufunc_override_exception..Ac_r)Noops)rf)r@rirrrrr rzKTestSpecialMethods.test_ufunc_override_exception..A.__array_ufunc__Nrrrrrrv rrvrrnr*)rrfr+rrrrrrtest_ufunc_override_exception s z0TestSpecialMethods.test_ufunc_override_exceptioncCsGddd}d}ttt|t|Wdn1s"wYd}ttt|tj|tddWddS1sGwYdS)Nc@r)zATestSpecialMethods.test_ufunc_override_not_implemented..Ac_stSrt)rr@rQrrrrr r]zQTestSpecialMethods.test_ufunc_override_not_implemented..A.__array_ufunc__Nrrrrrrv rrvzjoperand 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'rrn)r refnmatch translater+rrbr)r@rvrrrr#test_ufunc_override_not_implemented s"z6TestSpecialMethods.test_ufunc_override_not_implementedcCsTGddd}|}d}tt|t|dWdn1s"wYtt|td|Wdn1s=wYtt| t|Wdn1sWwYGddd}|}tt||utt|t||Wdn1swYtt|tj|d|dWddS1swYdS)Nc@seZdZdZdS)z?TestSpecialMethods.test_ufunc_override_disabled..OptOutNrrrrrOptOut r}rz(operand 'OptOut' does not support ufuncsrc@r)zDTestSpecialMethods.test_ufunc_override_disabled..GreedyArrayc_s|Srtrrrrrr r]zTTestSpecialMethods.test_ufunc_override_disabled..GreedyArray.__array_ufunc__Nrrrrr GreedyArray rrrn)r rer+rbrr)r@ropt_outrrgreedyrrrtest_ufunc_override_disabled s*      "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@r)z2TestSpecialMethods.test_gufunc_override..Ac_rrtrrrrrr rzBTestSpecialMethods.test_gufunc_override..A.__array_ufunc__Nrrrrrrv rrvrrrXrrrPrn)rrr\rrrr)rrrrrerf)r@rvrrirrrrtest_gufunc_override s( 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.ANrncsg}g}t|D]\}} t| r |||| tjq|| q|} g} | rWg} t| D]\} }t|rJ| | | |tjq2| |q2t| |d<nd|j} i}|rd||d<| rj| |d<tj ||g|Ri|}|t ur~t S|dkrt|dr||d_ dS|jdkr|f}tfdd t || D}|rt|dr||d_ t |dkr|dS|S) Nr\rtroutputsrrrc3s0|]\}}|durt|n|VqdSrt)r+rvrw)rr@outputrvrrr8 s z_TestSpecialMethods.test_ufunc_override_with_super..A.__array_ufunc__..) enumeraterappendrwr+rtuplenoutsuperrrinforrP)r@rrr\rrrQin_norinput_rout_noout_argsjrrresults)rv __class__rrr sT            zLTestSpecialMethods.test_ufunc_override_with_super..A.__array_ufunc__)rFrGrHr __classcell__rr)rrrv srvcr)z.Bcstfdd|Dr dStS)Nc3s|]}t|VqdSrt)r)rrrrrr8 sz_TestSpecialMethods.test_ufunc_override_with_super..B.__array_ufunc__..A!)rrrrrrr szLTestSpecialMethods.test_ufunc_override_with_super..B.__array_ufunc__Nrrrrrr| rr|rtrrrnr)rrrrrrr)rr\)rrXrrXr*)r+rrrwr rrrrrrbrrrrer`rrrrrrrxr) r@r|rlrircheckb1b2c1rrindicesrrrtest_ufunc_override_with_super s4                                 z1TestSpecialMethods.test_ufunc_override_with_superN)rFrGrHrRrrrurwryrrrrrrrrrrrrrrrrrr rrrrrEs43+    ,8  rEc@r) TestChoosecCs@tddg}tddg}tt||dftddgdS)NTr)r+r`rchoose)r@rrirrr test_mixed s$zTestChoose.test_mixedN)rFrGrHrrrrrr  rr c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)TestRationalFunctionscCs|tj|tjdSrt)_test_lcm_innerr+ruint16r?rrrtest_lcm  zTestRationalFunctions.test_lcmcC|tjdSrt)rr+object_r?rrrtest_lcm_object rz%TestRationalFunctions.test_lcm_objectcCs|tj|tjdSrt)_test_gcd_innerr+rrrr?rrrtest_gcd rzTestRationalFunctions.test_gcdcCrrt)rr+rr?rrrtest_gcd_object rz%TestRationalFunctions.test_gcd_objectcCstjddg|d}tjddg|d}tt||ddgt|tjsAtjgd|d}tjgd |d}tt||dgd tjgd |d}ttjgd dtd |}d}tt||gd dS)Nrxr^rQ<iXrrrrrQrQr rP)rrrQr)rrQrQrrQrQ) r+r`rlcm issubclassunsignedintegerrrr?r@r_rirrrrr s z%TestRationalFunctions._test_lcm_innercCstjddg|d}tjddg|d}tt||ddgt|tjsAtjgd|d}tjgd |d}tt||dgdtjgd |d}ttj|d td |}d}tt||gd dS)Nrrr^rQrrP(rr)r#rr)rQrrXrrPr) r+r`rgcdr"r#rrr?r$rrrr s z%TestRationalFunctions._test_gcd_innercCsBtttjjd}d|}d|}tt||d|dS)NrhrXrrs)r+rcrrrr!)r@bigrirrrrtest_lcm_overflow sz'TestRationalFunctions.test_lcm_overflowcCs^tjtjfD]&}|t|j}|d }tt||d|tt|| d|qdS)NrPr)r+rcint64rrrr()r@r_riqrrrtest_gcd_overflow s  z'TestRationalFunctions.test_gcd_overflowcCstddlm}tgd|d}tgd|d}tt||d|dgtt||d|d gdS) Nr)Decimal)rrrrz0.20)rrrrz0.12rPz0.04z0.60)rr.r+r`rr(r!)r@r.rirrrr test_decimal s  z"TestRationalFunctions.test_decimalcCs$tttjddtttjdddS)Ng333333?g?)rrer+r(r!r?rrr test_float sz TestRationalFunctions.test_floatcCsttddddtddd}tddddg}tt||dddgtt||dddddddgttddd dd dS) NrXrri-1l U9l`irr)rr+r`itemr(r!rrrrtest_builtin_long s *z'TestRationalFunctions.test_builtin_longN)rFrGrHrrrrrrr*r-r/r0r3rrrrr s  rc@rJ)TestRoundingFunctionscCs`Gddd}t||g}tt|ddgtt|ddgtt|ddgdS)z3 test direct implementation of these magic methods c@rJ)z3TestRoundingFunctions.test_object_direct..CcSr[r{rr?rrr __floor__ r]z=TestRoundingFunctions.test_object_direct..C.__floor__cSr[rrr?rrr__ceil__ r]z.C.__ceil__cSr[)Nrrr?rrr __trunc__ r]z=TestRoundingFunctions.test_object_direct..C.__trunc__N)rFrGrHr5r6r7rrrrr~ s r~rrXrN)r+r`rr2r3r4r@r~rzrrrtest_object_direct s z(TestRoundingFunctions.test_object_directcCsGddd}t||g}tt|ddgtt|ddgttt|WddS1s:wYdS)z$ test implementations via __float__ c@r)z5TestRoundingFunctions.test_object_indirect..CcSr[)Nr[rr?rrr __float__ r]z?TestRoundingFunctions.test_object_indirect..C.__float__N)rFrGrHr:rrrrr~ rr~rrN) r+r`rr2r3rrrer4r8rrrtest_object_indirect s  "z*TestRoundingFunctions.test_object_indirectcCs>tdd}tt|dtt|dtt|ddS)Nrrrr)rrr+r2r3r4)r@rrrr test_fraction s z#TestRoundingFunctions.test_fractionN)rFrGrHr9r;r<rrrrr4 s r4c@seZdZejejejejejej ej ej ej ej ejejejejejejgZddZddZddZddZd d Zejd ejejejgd d Z dS)TestComplexFunctionscCs`|jD]*}|tjur d}nd}||}|t|}t|j|d|dt|jdd|dqdS)Nr}rWz real part %srrz imag part %s)funcsr+arccoshrr r/ry)r@rr1frfzrrrtest_it s   zTestComplexFunctions.test_itcCsfd}|jD]+}|t|}|t|}|t|}t||dd|dt||dd|dqdS)Nrrz fch-fcd %s)rrrz fch-fcl %s)r>r+csinglecdouble clongdoubler )r@rrfcffcdfclrrrtest_precisions_consistent* s z/TestComplexFunctions.test_precisions_consistentcCsttjdddddttjdddddttjdddddttjdddddttjdddddttjddgddgdddttjddgddgdddttj d d gddgdddttj d d gddgdddttj dd gddgdddttj ddgddgdddttjd d gddgddttjd d gddgddttj ddgddgddttj gd gd ddttj gdgdddttj gdgddddS)Nr'r~rrTrrXrrWrrXrr~r~rrKrrXrrr~rKrr) _check_branch_cutr+rrlog10rfrmarcsinarccosarctanr,r?arctanhr?rrrtest_branch_cuts3 s"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)Nr'r~rrTrJrrXrKrrWFrLrMrNrOrP)rQr+rr7rrRrfrmrSrTrUr,r?rVr?rrrtest_branch_cuts_complex64L s"           $z/TestComplexFunctions.test_branch_cuts_complex64c Csddl}gd}ddddddd }d ttj}|jD]D}|jd d }|||}zt ||}Wn t y<Yqw|D] } t|t | } || } t t | | |kd || | | fq?qdS)Nr)yy?y?rasinacosatanasinhacoshatanh)rSrTrUr,r?rVrP.rz%s %s: %s; cmath: %s)cmathr+rQrepsr>rFsplitgetr:AttributeErrorr{rr0) r@r`pointsname_mapatolr<fnamecnamecfuncrrirrrrtest_against_cmathe s(   $z'TestComplexFunctions.test_against_cmathr_c st}djj|jfdd}tddd}tjddd d d }tjur9tr1t t||d n||d ||ddtj dgd}d}t dt ||}t t|dkd}t dt||}t t|dkd}t dt||}t t|dkd}t dt||}t t|dkdfdd }tjtjtjtj tjfD]} dddD} || | d|| | d|| | dqdS) z1Check loss of precision in complex arc* functionsrcs~|}|}tt|t|jd}tt||kt||t||dfd|}tt|t |j d}tt||kt||t||df|}tt |t |jd}tt||kt||t||dfd|}tt |t |j d}tt||kt||t||dfdS)Nrr,r~rSrVrU) r?r+r0r,r/rrargmaxrrSryrVrU)r1rtolrrl)r_ real_dtyperrr s*   ( (  ( ( z:TestComplexFunctions.test_loss_of_precision..checkr g5^I rgˡErrsF)endpointgI@@r_MbP?yh㈵>h㈵>r^yg݈>+j鈵>rrMyi戵>Sh>y+j鈵>g݈>ySh>i戵>cstj|d}|t||d}|t||d}tt||k||ft||||dk}tt||||fdS)Nr^rX)r+rvr0rr)r<z0rlzpzmgood)r_rarrr s cSs2g|]}dD]}|dks|dkr|d|qqS)gMbPrrqrr~r)rrpiprrrr s z?TestComplexFunctions.test_loss_of_precision..rvr~rNr)r+rQr/r_ralogspace longcomplexskip_longcomplex_msgrskipr`r0rVrrr,rUrS) r@r_rrx_seriesx_basicrrrlr<ptsr)r_rarnrtest_loss_of_precisionx s@       z+TestComplexFunctions.test_loss_of_precisionN)!rFrGrHr+rSrTrUr,r?rVr rtanrqrrrmrRrrfr>rBrIrWrXrkrrrr7r{rzrrrrrr= s  r=c@r7)TestAttributescCsVtj}t|jdt|jdktd|jvt|jdt|jdt|j ddS)Nrbzii->irXrr) rNrbrrFrntypestypesninrr)r@rbrrrtest_attributes s   zTestAttributes.test_attributescCs(ttjjdttjjddS)Nz&add(x1, x2, /, out=None, *, where=Truez.simplecSs tjj||td}|d|S)Nr^r)r+rr{rfill)subtyperr@rrrr{ s z5TestSubclass.test_subclass_op..simple.__new__N)rFrGrHr{rrrrsimple rr)rrP)r+rr)r@rrirrrtest_subclass_op szTestSubclass.test_subclass_opN)rFrGrHrrrrrr  rc@r)TestFrompyfunccsdd}tj|ddddtgddtjtdd d dtgdtj|ddddtgddtjtdd d dttfd d tj|ddd tgddttfdd ttfdd dS)NcSs||Srtr)rirrrrmul rz)TestFrompyfunc.test_identity..mulrXr)rrr)rXrrPrXrXrrrc gSrtrr mul_ufuncrrr rqz.TestFrompyfunc.test_identity..)rrcsjtdddS)Nrrr)rr+rrrrrr rxcrrtrrrrrr rq)r+rrrrrrf)r@rrrrr szTestFrompyfunc.test_identityN)rFrGrHrrrrrr rrrrFcCst||}t||}t|jdkr&t|jd}td}n t|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|rI|j dk|j dk@} |j dk|j dk@} t | r|| }tj|_ ||} t t t| | j | j ||k| | | ft t t| | j | j ||k| | | ft | rK|| }tj|_ ||} t t t| | j | j ||k| | | ft t t| | j | j ||k| | | fdSdSdS)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) Frrg@@g-C6?rN)r+ atleast_1dr?r_r rQrar]r0rrr/ryrr)rx0dxre_signim_sign sig_zero_okr_scalergy0ypymjrjir1rrrrQ s> $$&&** 22 26 rQcCsttdddktjdd tdtdddktdtdddkWdn1s3wYttttjdttttjd dS)Nrrr9rr)rr+copysignrr rrrrr test_copysignI srcCs|d}|d}|d}t|j}tt||||ktt|||dkttttj|ttt|tjtt|||kdSrq)r+rQrarrWrr)r7rrrrarrr_test_nextafterQ s rcC ttjSrt)rr+rrrrrtest_nextafter\ rJrcCrrt)rr+r]rrrrtest_nextafterf` rJrzlong double is same as doubleppc64zIBM double double) conditionr"cCrrt)rr+r;rrrrtest_nextafterld  rc CsttjddD]5\}}t|j}td|t|d||ko'|kntt|d|||d|dq dS)Nr=r%rrrp) rrr+rrQrRrrWr)r7 directionrRrrrtest_nextafter_0l s  0(rcCs|d}t|j}|tj}|tj}tjdd<tt||kttt|ttt|ttt| tt|ddkWddS1sYwYdS)Nrr9r:gꌠ9Y>)Fr) r+rQrarrrrspacingr)r7rrarrrrr _test_spacingr s   "rcCrrt)rr+rrrrr test_spacing~ rJrcCrrt)rr+r]rrrr test_spacingf rJrcCrrt)rr+r;rrrr test_spacingl rrcCsbtjgdtjgdi}ttjtjgdD]\}}tjgd|d}tt||||dqdS)N)g;ggK8?gP?)rsrQ)h㈵>rrOi)r^r)r+rr]rr`r r)refrrr1rrrtest_spacing_gfortran s   rcCsRtjtjfD] }dD]}||}||d}tt|||t|kq qdS)N)rrrOr)r+r]rrrWr)r7_frf1rrrtest_nextafter_vs_spacing s  rcCstttjdkdS)zCheck np.nan is a positive nan.rN)rr+r rrrrr test_pos_nan srcCstddtjfdtjfg}tjdg|d}d|d<d|d<d|d<gd }g}|d }|d d D]}|tj|d|||}q2|tj|d|d t|}tj |d|}t ||t d tj |d|}t tj t ||d S)z;Test bug in reduceat when structured arrays are not copied.)rS11timevaluerr^Simplerrs)rrorr&rrNr) r+r_r+r]rarrbrr`rr setbufsizeUFUNC_BUFSIZE_DEFAULT)dbriindxh2val1val2h1rrr test_reduceat s&    rcCstgd}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 arraysi4f8)r)rrXrrr"r)rrN)r+r`rbrrr_rr)r r1r@rrrtest_reduceat_empty s     rc Cs^ttjdtdtjttjtjg}tddtddtddtddtddtddtddg}tjddo||D]a}t|g}||D]T}t|g}t|rZt|rZqGt||kdd||fdt||kdd ||fdt||kdd ||fdt||kdd ||fdt||kdd ||fdqGq;WddS1swYdS) Nrrrr9r:Fz%r < %rrz%r > %rz%r <= %rz%r >= %rz%r == %r)rr+rrr`rr)nansfinsr1rrrrtest_complex_nan_comparisons s&$     "rcCs*d}t|tt|t|t|dS)Nl*n)rrr=r+r1)valrrrtest_rint_big_int srftypecCs^tjgd|d}tjgd|d}tjgd|d}ttj||ttj||dS)N)Q?333333?p= ף?= ףp=?RQ?r^)rrrrr)rrrrr)r+r`rrrr)rrzout_maxout_minrrrtest_memoverlap_accumulates rcCsFttjdddd}t|WddS1swYdS)Nrr]s)rr_buffer)rr+rrrjrrrtest_signaling_nan_exceptions s "rrzrXrcCs@Gdddtj}tj||||}|jjdksJdS)Nc@s eZdZdS)z)test_outer_subclass_preserve..fooN)rFrGrHrrrrr*r/r*)r+rrsrrwrrF)rzr*actualrrrtest_outer_subclass_preservesrc sGdddtj}Gfdddtj|fD]>}td|}tt}tj|ddgWdn1s:wYtd|}ttjddg||usVJqdS)Nc@r)z(test_outer_bad_subclass..BadArr1cSs|jdkr |jd|_dSdS)Nrr)ndimrrrrr__array_finalize__s z;test_outer_bad_subclass..BadArr1.__array_finalize__NcSrrtrrVrrrrZ r]z:test_outer_bad_subclass..BadArr1.__array_prepare__rtrFrGrHrrZrrrrBadArr1srcs"eZdZfddZdddZdS)z(test_outer_bad_subclass..BadArr2cs6t|r|jddkr|jddd|_dSdSdS)Nrr)rrrBadArr2rrr$s z;test_outer_bad_subclass..BadArr2.__array_finalize__NcSrrtrrVrrrrZ*r]z:test_outer_bad_subclass..BadArr2.__array_prepare__rtrrrrrr#s r)rXrrrX) r+rrrwrrerbrr)rryrzrirrrtest_outer_bad_subclasss   rcCsFtd}tttj||WddS1swYdS)N)rrrrrrrrrrrrrrrrr)r+rrrfrbr)deeprrrtest_outer_exceeds_maxdims7s  "r)r%rrrrr.r fractionsr functoolsrnumpy.core.umathcoreumathrN numpy.corerrnumpyr+ numpy.testingrrrr r r r r rrrrrrr glibcverrxfailrr)r4r'r{r8rKrUrrrr#r&r'rZrbrrrrrrrrr r%r8r5rIr^rcrlrprwryrzrrrrrrrrrrrrrrrrrr!r(r-r;r=rEr rr4r=rrrrrQrrrrr-rQdoubler;r(rrrrrrrrrrrrrrr]rrrrmatrixrrrrrrrs&   @   ~& kB    0m   /- EGF**?T +*#c$: =