o 6aO @s0dZddlmZddlZddlmmZddlm Z m Z m Z m Z m Z mZmZddZdgZddgZgdZgd Zgd Zgd Zgd Zgd ZgdZgdZeeeeeeeeeeg ZGdddZGdddZGdddZGdddZGdddZ GdddZ!GdddZ"GdddZ#dS) zTests for polynomial module. )reduceN)assert_almost_equal assert_raises assert_equalassert_ assert_warnsassert_array_equalassert_raises_regexcCstj|ddS)Ngư>)tol)polypolytrimxrH/usr/lib/python3/dist-packages/numpy/polynomial/tests/test_polynomial.pytrim sr)r)rr)rrir)rrir)rrrir )rir8rir@) rrirrir) r riririrc@s,eZdZddZddZddZddZd S) TestConstantscCttjddgdS)Nrr)rr polydomainselfrrrtest_polydomain zTestConstants.test_polydomaincCttjdgdS)Nr)rr polyzeror%rrr test_polyzero#zTestConstants.test_polyzerocCr)Nr)rr polyoner%rrr test_polyone&r,zTestConstants.test_polyonecCr#)Nrr)rr polyxr%rrr test_polyx)r(zTestConstants.test_polyxN)__name__ __module__ __qualname__r'r+r/r1rrrrr"s  r"c@<eZdZddZddZddZddZd d Zd d Zd S)TestArithmeticcCstdD]H}tdD]A}d|d|}tt||d}||d7<||d7<tdg|dgdg|dg}tt|t||dq qdSNrAt i=, j=rrerr_msg)rangenpzerosmaxr polyaddrrr&ijmsgtgtresrrr test_polyadd/  $zTestArithmetic.test_polyaddcCstdD]H}tdD]A}d|d|}tt||d}||d7<||d8<tdg|dgdg|dg}tt|t||dq qdSr7)r<r=r>r?r polysubrrrArrr test_polysub9rHzTestArithmetic.test_polysubcCsrttdgdgttdgddgtddD]}dg|dg}dg|ddg}tt||qdS)Nrrr)rr polymulxr<)r&rBserrErrr test_polymulxCszTestArithmetic.test_polymulxcCstdD]A}tdD]:}d|d|}t||d}|||d7<tdg|dgdg|dg}tt|t||dq qdSr7)r<r=r>r polymulrrrArrr test_polymulKs  $zTestArithmetic.test_polymulc Cstttjdgdgtdgdg\}}t||fdtddgdg\}}t||fdtdD]B}tdD];}d|d|}dg|ddg}dg|ddg}t||}t||\}}tt|||} t| ||d q7q1dS) Nrrr)rr))rrrrr8r9r:)rZeroDivisionErrorr polydivrr<r@rN) r&quoremrBrCrDcicjrErFrrr test_polydivTs    zTestArithmetic.test_polydivcCs|tdD]7}tdD]0}d|d|}t|d}ttj|g|tdg}t||}tt |t ||dq qdS)Nrr8r9rr:) r<r=arangerr rNarraypolypowrr)r&rBrCrDcrErFrrr test_polypowis   zTestArithmetic.test_polypowN) r2r3r4rGrJrMrOrVr[rrrrr6-s   r6c@seZdZegdZedeeZedeeeZej dddZ e e gdZ ddZd d Zd d Zd dZddZddZdS)TestEvaluation)?g@g@i,j->ij i,j,k->ijkrrrc s~ttgdgjdtddfddtdD}tdD]}||}tdg|dg}t||q dd}tgd}t||td D]/}dg|}t|ttdgj |ttddgj |ttgd j |qQgd }tj j gd |d }tgd|}t |j |Gdddtj}t gd |} tttgd| |dS)Nrrrcg|]}|qSrr.0rBr rr z/TestEvaluation.test_polyval..rr)rrrrrarrr)FTFrrra)mask)rrac@s eZdZdS)z&TestEvaluation.test_polyval..CN)r2r3r4rrrrCsrkrrar)rr polyvalsizer=linspacer<rr>shapemarXrrindarrayviewtype) r&yrBrErFdimsrimxrkcxrr r test_polyval}s.        zTestEvaluation.test_polyvalc stttjdgdgddttgdgjdttgdgjdkttgdgdgjdttgdgdgjdkttdddttdt djd kt d dfd d t dD}t ddD]}||}tdg|}t ||qmdd}tgd }t ||t dD]/}dg|}t |ttdgj|ttddgj|ttgdj|qgd}t|}t d dt t|t|d}tddtjjdd|d}tj|dd}t|jdd}t |jD]} t| |dd| f|| <qt||tdgtj|dd}t|jddj}t |jdD]#} t jdD]} t| |dd| f|| | ddf<qXqOt||dS)NrF)tensorr)rr)rr)rara)rarcrbrrrcr rrrerfz8TestEvaluation.test_polyvalfromroots..)rrrrarrg)rirr`r)rnT)r ValueErrorr polyvalfromrootsrrnrrpr=onesror<rr> polyrootsrmrWrandomrandintemptyvstack) r&rurBrErFrvptestrrshapeiijjrr rtest_polyvalfromrootss\            $ .z$TestEvaluation.test_polyvalfromrootsc Cs|j\}}}|j\}}}ttdtj||dd|j||}t|||j}t||t d} t| | |j}t |j dkdSN incompatiblerrra) rrur r~r polyval2dc2drr=rrrp r&x1x2x3y1y2y3rErFzrrrtest_polyval2ds    zTestEvaluation.test_polyval2dc Cs|j\}}}|j\}}}ttdtj|||dd|j|||}t||||j}t||t d} t| | | |j}t |j dkdSr) rrur r~r polyval3dc3drr=rrrprrrrtest_polyval3ds     zTestEvaluation.test_polyval3dc Csl|j\}}}|j\}}}td||}t|||j}t||td} t| | |j}t |j dkdS)Nr^r)rrarra) rrur=einsumr polygrid2drrrrrprrrrtest_polygrid2ds    zTestEvaluation.test_polygrid2dc Csr|j\}}}|j\}}}td|||}t||||j}t||td} t| | | |j}t |j dkdS)Nr_r)rrarrarra) rrur=rr polygrid3drrrrrprrrrtest_polygrid3ds    zTestEvaluation.test_polygrid3dN)r2r3r4r=rXc1drrrrrr rmruryrrrrrrrrrr\ss$@ r\c@eZdZddZddZdS) TestIntegralc Cs4tttjdgdtttjdgdtttjdgdddgtttjdgdgdtttjdgdgdtttjdgddtttddgdWdn1sUwYtd d D]}dg|d dg}tjdg||d }t|ddgq_td D]-}|d}dg|dg}|gdg|d|g}tj|d|gd }tt |t |qtd D]!}|d}dg|dg}tj|d|gdd }tt d||qtd D].}|d}dg|dg}|gdg|d |g}tj|d|gd d }tt |t |qtd D]9}td d D]0}dg|dg}|dd}t|D] }tj|dd}q&tj||d}tt |t |qq td D]@}td d D]7}dg|dg}|dd}t|D] }tj|d|gd }qdtj||t t|d }tt |t |qPqItd D]B}td d D]9}dg|dg}|dd}t|D] }tj|d|gdd }qtj||t t|dd }tt |t |qqtd D]B}td d D]9}dg|dg}|dd}t|D] }tj|d|gd d }qtj||t t|d d }tt |t |qܐqdS)Nr?rr)lbnd)sclaxisr]rr)mk)rrr)rrrr) r TypeErrorr polyintr~rDeprecationWarningr<rrrmlist)r&rBrrFrpolrErCrrr test_polyint$s                zTestIntegral.test_polyintcCstjd}tdd|jDj}tj|dd}t||tdd|D}tj|dd}t||tdd|D}tj|d dd }t||dS) NrarcSg|]}t|qSrr rrdrZrrrrexz2TestIntegral.test_polyint_axis..rrcSrrrrrrrre|rrcSsg|] }tj|ddqS)ra)rrrrrrresra)rr)r=rrTr rrr&rrErFrrrtest_polyint_axists   zTestIntegral.test_polyint_axisN)r2r3r4rrrrrrr"s Prc@r)TestDerivativecCstttjdgdtttjdgdtdD]}dg|dg}tj|dd}tt|t|qtdD]'}tddD]}dg|dg}tjtj||d|d}t t|t|q.rrcSrrrrrrrrerr)r=rrrr rrrrrrtest_polyder_axiss  z TestDerivative.test_polyder_axisN)r2r3r4rrrrrrrs rc@s@eZdZejdddZddZddZdd Zd d Z d S) TestVanderr`rrcCstd}t|d}t|jdktdD]}dg|dg}t|d|ft||qt ddgddgdd gg}t|d}t|jd ktdD]}dg|dg}t|d|ft||qMdS) Nrarrrr.rr)rarr) r=rWr polyvanderrrpr<rrmrX)r&rvrBcoefrrrtest_polyvanders     zTestVander.test_polyvandercCsx|j\}}}tjd}t||ddg}t|||}t||j}t||t|g|gddg}t |j dkdS)Nrrr)rrr) rr=rr polyvander2drdotflatrrrpr&rrrrZvanrErFrrrtest_polyvander2ds   zTestVander.test_polyvander2dcCs|j\}}}tjd}t|||gd}t||||}t||j}t||t|g|g|ggd}t |j dkdS)Nrlrh)rr) rr=rr polyvander3drrrrrrprrrrtest_polyvander3ds   zTestVander.test_polyvander3dcCstd}tttj|ddS)Nrar)r=rWrr~r r)r&rrrrtest_polyvandernegdegs z TestVander.test_polyvandernegdegN) r2r3r4r=rrrrrrrrrrrs  rc@s$eZdZddZddZddZdS) TestCompanioncCs"tttjgtttjdgdSr-)rr~r polycompanionr%rrr test_raisesszTestCompanion.test_raisescCs<tddD]}dg|dg}tt|j||fkqdS)Nrrr)r<rr rrp)r&rBrrrrtest_dimensionsszTestCompanion.test_dimensionscCsttddgddkdS)Nrr)rr)rr rr%rrrtest_linear_rootszTestCompanion.test_linear_rootN)r2r3r4rrrrrrrrs rc@r5)TestMiscc Cstg}tt|dgtddD]/}tttj dd|dddd}t |}t|d|d}tt|t|qdS)Nrrrr) r polyfromrootsrrr<r=cosropiTlist)r&rFrBrootsrErrrtest_polyfromrootss *zTestMisc.test_polyfromrootscCslttdggttddgdgtddD]}tdd|}tt|}tt|t|qdS)Nrrrrr)rr rr<r=rorr)r&rBrErFrrrtest_polyrootsszTestMisc.test_polyrootscCsdd}dd}tttjdgdgdtttjdggdgdtttjgdgdtttjdgdgggdtttjddgdgdtttjdgddgdtttjdgdgddggd tttjdgdgdddgd tttjdgdgdgtttjdgdggd tttjdgdggtdd}||}t||d }tt|d t t |||t||gd }tt|d t t |||t||d }tt|dt t |||t||gd}tt|dt t |||t|t ||gj d }t |t ||gj t|t ||gj gd }t |t ||gj t |}|} d|ddd<d| ddd<tj|| d |d } t | |tj|| gd |d } t | |tj|t | | gj d |d } t | t ||gj tj|t | | gj gd |d } t | t ||gj gd}t t||dddgt t||ddgddgtdd}||}t||d } t t || |t||gd} t t || |t | | dS)NcSs||d|dS)Nrrrr rrrfr(z TestMisc.test_polyfit..fcSs|d|ddS)Nrrrrr rrrf2r(z!TestMisc.test_polyfit..f2rrrr)w)rrrrar)rrrrar)rrrrar)ry?ry)rrr)rr~r polyfitrr=rorlenrrmrXr zeros_likecopy)r&rrrrucoef3coef4coef2drywwcoef3wcoef2dcoef1coef2rrr test_polyfitsj    " zTestMisc.test_polyfitcCsbgd}tttj|dtt||ddtt|d|ddtt|ddgdS)N)rrrrrrrrr)rr~r r r)r&rrrr test_polytrimIs zTestMisc.test_polytrimcCsttddddgdS)Nrarrr polyliner%rrr test_polylineTszTestMisc.test_polylinecCsttdddgdS)Nrarrr%rrrtest_polyline_zeroWszTestMisc.test_polyline_zeroN) r2r3r4rrrrrrrrrrrs F r)$__doc__ functoolsrnumpyr=numpy.polynomial.polynomial polynomialr numpy.testingrrrrrrr rT0T1T2T3T4T5T6T7T8T9rr"r6r\rrrrrrrrrs4 $F0c(4