o 6aH @sdZddlmZddlZddlmmZddl m Z ddl m Z m Z mZmZedgZeddgZegddZegd dZegd d Zegd d Zegd dZegddZegddZegddZeeeeeeeeeeg ZddZGdddZGdddZGdddZGdddZ GdddZ!Gdd d Z"Gd!d"d"Z#Gd#d$d$Z$Gd%d&d&Z%Gd'd(d(Z&dS))zTests for legendre module. )reduceNpolyval)assert_almost_equal assert_raises assert_equalassert_)r)rr)r rir#)rrir?)ririr)rir;riKri) rriririri#) rrriribFritri{/cCstj|ddS)Ngư>)tol)leglegtrimxrF/usr/lib/python3/dist-packages/numpy/polynomial/tests/test_legendre.pytrimsr c@s,eZdZddZddZddZddZd S) TestConstantscCttjddgdS)Nr r )rr legdomainselfrrrtest_legdomain!zTestConstants.test_legdomaincCttjdgdS)Nr)rrlegzeror$rrr test_legzero$zTestConstants.test_legzerocCr(Nr )rrlegoner$rrr test_legone'r+zTestConstants.test_legonecCr")Nrr )rrlegxr$rrr test_legx*r'zTestConstants.test_legxN)__name__ __module__ __qualname__r&r*r.r0rrrrr!s  r!c@sJeZdZedddZddZddZdd Zd d Z d d Z ddZ dS)TestArithmeticr r dcCstdD]H}tdD]A}d|d|}tt||d}||d7<||d7<tdg|dgdg|dg}tt|t||dq qdSNrAt i=, j=r rerr_msg)rangenpzerosmaxrlegaddrr r%ijmsgtgtresrrr test_legadd1  $zTestArithmetic.test_legaddcCstdD]H}tdD]A}d|d|}tt||d}||d7<||d8<tdg|dgdg|dg}tt|t||dq qdSr6)r;r<r=r>rlegsubrr r@rrr test_legsub;rGzTestArithmetic.test_legsubcCsttdgdgttdgddgtddD]*}d|d}dg|dg}dg|d||d|d|g}tt||qdS)Nrr rr )rrlegmulxr;)r%rAtmpserrDrrr test_legmulxEs $zTestArithmetic.test_legmulxc CstdD]R}dg|dg}t|j|}tdD]<}d|d|}dg|dg}t|j|}t||}t|j|} tt|||dk|t| |||dqqdS)Nrrr r7r8r9)r;rlegvalrlegmulrlenr) r%rApol1val1rBrCpol2val2pol3val3rrr test_legmulNs   zTestArithmetic.test_legmulc CstdD]D}tdD]=}d|d|}dg|dg}dg|dg}t||}t||\}}tt|||} tt| t||dq qdS)Nrr7r8rr r9)r;rr?legdivrOrr ) r%rArBrCcicjrDquoremrErrr test_legdiv\s   zTestArithmetic.test_legdivcCs|tdD]7}tdD]0}d|d|}t|d}ttj|g|tdg}t||}tt |t ||dq qdS)Nrr7r8r r9) r;r<arangerrrOarraylegpowrr )r%rArBrCcrDrErrr test_legpowgs   zTestArithmetic.test_legpowN) r1r2r3r<linspacerrFrIrMrWr]rbrrrrr4.s    r4c@seZdZegdZedeeZedeeeZej dddZ e e gdZ dd Z d d Zd d ZddZddZdS)TestEvaluation)@rerei,j->ij i,j,k->ijkr rr r )?reg@csttgdgjdtddfddtD}tdD]}d|}||}tdg|dg}t|||dqtd D]/}d g|}t |ttdgj |ttddgj |ttgd j |qAdS) Nr rr csg|]}t|qSrr.0rarrr z.TestEvaluation.test_legval.. r7r9r r )r rr) rrrNsizer<rcLlistr;rr=shape)r%yrArCrDrEdimsrrr test_legval{s      zTestEvaluation.test_legvalc Cs|j\}}}|j\}}}tttj||dd|j||}t|||j}t||t d} t| | |j}t |j dkdSNr r r ) rrrr ValueErrorrlegval2dc2drr<onesrrq r%x1x2x3y1y2y3rDrEzrrr test_legval2ds    zTestEvaluation.test_legval2dc Cs|j\}}}|j\}}}tttj|||dd|j|||}t||||j}t||t d} t| | | |j}t |j dkdSru) rrrrrwrlegval3dc3drr<rzrrqr{rrr test_legval3ds     zTestEvaluation.test_legval3dc Csl|j\}}}|j\}}}td||}t|||j}t||td} t| | |j}t |j dkdS)Nrfrv)r r r r ) rrrr<einsumr leggrid2dryrrzrrqr{rrrtest_leggrid2ds    zTestEvaluation.test_leggrid2dc Csr|j\}}}|j\}}}td|||}t||||j}t||td} t| | | |j}t |j dkdS)Nrgrv)r r r r r r ) rrrr<rr leggrid3drrrzrrqr{rrrtest_leggrid3ds    zTestEvaluation.test_leggrid3dN)r1r2r3r<r_c1drryrrandomrrrrrtrrrrrrrrrdqs rdc@$eZdZddZddZddZdS) TestIntegralc Cs.tttjdgdtttjdgdtttjdgdddgtttjdgdgdtttjdgdgdtttjdgddtdd D]}dg|ddg}tjdg||d }t|ddgqCtd D]7}|d}dg|dg}|gdg|d|g}t|}tj|d|gd }t|}tt |t |qdtd D]&}|d}dg|dg}t|}tj|d|gdd }tt d||qtd D]8}|d}dg|dg}|gdg|d|g}t|}tj|d|gdd }t|}tt |t |qtd D]9}tdd D]0} dg|dg}|dd}t| D] }tj|dd }q#tj|| d }tt |t |qqtd D]@}tdd D]7} dg|dg}|dd}t| D] }tj|d|gd }qatj|| t t| d }tt |t |qMqFtd D]B}tdd D]9} dg|dg}|dd}t| D] }tj|d|gdd }qtj|| t t| dd }tt |t |qqtd D]B}tdd D]9} dg|dg}|dd}t| D] }tj|d|gdd }qtj|| t t| dd }tt |t |qِqdS)Nr?r r )lbnd)sclaxisr r)mk)rrr)rrrr) r TypeErrorrlegintrwr;rpoly2legleg2polyr rNlist) r%rArrErpolrDlegpolrrBrrr test_legints                    zTestIntegral.test_legintcCstjd}tdd|jDj}tj|dd}t||tdd|D}tj|dd}t||tdd|D}tj|d dd }t||dS) Nr cSg|]}t|qSrrrrjrrrrl(rmz1TestIntegral.test_legint_axis..rrcSrrrrjrrrrl,rmr cSsg|] }tj|ddqS)r )rrrjrrrrl0sr )rr)r<rvstackTrrrr%ryrDrErrrtest_legint_axis$s   zTestIntegral.test_legint_axiscCsttddddS)Nr r r r)rrrr$rrrtest_legint_zerointord4sz#TestIntegral.test_legint_zerointordN)r1r2r3rrrrrrrrsS rc@r)TestDerivativecCstttjdgdtttjdgdtdD]}dg|dg}tj|dd}tt|t|qtdD]'}tddD]}dg|dg}tjtj||d|d}t t|t|q.rrcSrrrrjrrrrl[rmr )r<rrrrrrrrrrtest_legder_axisSs  zTestDerivative.test_legder_axiscCsd}tt|ddgdS)N)r r r rrr)rrr)r%rarrr test_legder_orderhigherthancoeff_sz/TestDerivative.test_legder_orderhigherthancoeffN)r1r2r3rrrrrrrr8s rc@s@eZdZejdddZddZddZdd Zd d Z d S) TestVanderrhr r cCstd}t|d}t|jdktdD]}dg|dg}t|d|ft||qt ddgddgdd gg}t|d}t|jd ktdD]}dg|dg}t|d|ft||qMdS) Nr rrrr .r r)r r r) r<r^r legvanderrrqr;rrNr_)r%rvrAcoefrrrtest_legvandergs     zTestVander.test_legvandercCsx|j\}}}tjd}t||ddg}t|||}t||j}t||t|g|gddg}t |j dkdS)Nrvr r )r rr) rr<rr legvander2drxdotflatrrrqr%r|r}r~ravanrDrErrrtest_legvander2dxs   zTestVander.test_legvander2dcCs|j\}}}tjd}t|||gd}t||||}t||j}t||t|g|g|ggd}t |j dkdS)N)r r rr)r r) rr<rr legvander3drrrrrrqrrrrtest_legvander3ds   zTestVander.test_legvander3dcCstttjdddS)Nrr )rrwrrr$rrrtest_legvander_negdegr'z TestVander.test_legvander_negdegN) r1r2r3r<rrrrrrrrrrrcs  rc@eZdZddZdS) TestFittingcCsdd}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||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)Nr r rrrrrfr'z"TestFitting.test_legfit..fcSs|d|ddS)Nrr r rrrrrf2r'z#TestFitting.test_legfit..f2r r rr )w)r r rr r)rr r r r)rr r r r)r r rr r)r y?r y)rr r)rrwrlegfitrr<rcrrPrrNr_r zeros_likecopy)r%rrrrrcoef3coef4coef2drywwcoef3wcoef2dcoef1coef2rrr test_legfitsp    " zTestFitting.test_legfitN)r1r2r3rrrrrr rc@r) TestCompanioncCs"tttjgtttjdgdSr,)rrwr legcompanionr$rrr test_raisesszTestCompanion.test_raisescCs<tddD]}dg|dg}tt|j||fkqdS)Nr rr)r;rrrrq)r%rArrrrtest_dimensionsszTestCompanion.test_dimensionscCsttddgddkdS)Nr r )rr)rrrr$rrrtest_linear_rootszTestCompanion.test_linear_rootN)r1r2r3rrrrrrrrs rc@r) TestGausscCs|td\}}t|d}t|j||}dt|}|dddf||}t|t dd}t| |dS)Nr5cr re) rleggaussrr<rrsqrtdiagonalreyesum)r%rrrvvvdrDrrrtest_100s zTestGauss.test_100N)r1r2r3rrrrrrrrc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)TestMiscc Cstg}tt|dgtddD]=}tttj dd|dddd}t|}t ||}d}t t ||dktt |ddt||qdS)Nr rrr r ) r legfromrootsrr r;r<cosrcpirNrrPr)r%rErArootsrrDrrrtest_legfromrootss *   zTestMisc.test_legfromrootscCslttdggttddgdgtddD]}tdd|}tt|}tt|t|qdS)Nr r rrr )rrlegrootsr;r<rcrr )r%rArDrErrr test_legrootsszTestMisc.test_legrootscCsbgd}tttj|dtt||ddtt|d|ddtt|ddgdS)N)r r r rr r r r r)rrwrrr)r%rrrr test_legtrims zTestMisc.test_legtrimcCsttddddgdS)Nr rrrlegliner$rrr test_legline&szTestMisc.test_leglinecCsttdddgdS)Nr rrr$rrrtest_legline_zeroscl)szTestMisc.test_legline_zerosclcCs2tdD]}ttdg|dgt|qdSNrnrr )r;rrrrpr%rArrr test_leg2poly, "zTestMisc.test_leg2polycCs2tdD]}ttt|dg|dgqdSr)r;rrrrprrrr test_poly2leg0rzTestMisc.test_poly2legcCs*tddd}d}t|}t||dS)Nr r ri)r<rcr legweightr)r%rrDrErrr test_weight4s zTestMisc.test_weightN) r1r2r3rrrrrrrrrrrrrs   r)'__doc__ functoolsrnumpyr<numpy.polynomial.legendre polynomiallegendrernumpy.polynomial.polynomialr numpy.testingrrrrr_L0L1L2L3L4L5L6L7L8L9rpr r!r4rdrrrrrrrrrrrs8   C^i+3M