o 6a*P @shdZddlmZddlZddlmmZddl m Z ddl m Z m Z mZmZddZdgZddgZgd Zgd Zgd Zgd Zgd ZgdZgdZgdZeeeeeeeeeeg ZGdddZGdddZGdddZGdddZGdddZ GdddZ!GdddZ"Gdd d Z#Gd!d"d"Z$Gd#d$d$Z%Gd%d&d&Z&Gd'd(d(Z'dS))zTests for chebyshev module. )reduceNpolyval)assert_almost_equal assert_raises assert_equalassert_cCstj|ddS)Ngư>)tol)chebchebtrimxrG/usr/lib/python3/dist-packages/numpy/polynomial/tests/test_chebyshev.pytrimsr)r)rr)rrir)rrir)rrrir )rir8rir@) rrirrir) r riririrc@eZdZddZddZdS) TestPrivatecCsdtdD]+}tdgdg|tj}tdg|dgdg|tj}t|}t||qdS)Nrrr?)rangenparraydoubler _cseries_to_zseriesrselfiinptgtresrrrtest__cseries_to_zseries!s $  z$TestPrivate.test__cseries_to_zseriescCsdtdD]+}tdg|dgdg|tj}tdgdg|tj}t|}t||qdS)Nrr#rr)r$r%r&r'r _zseries_to_cseriesrr)rrrtest__zseries_to_cseries(s $  z$TestPrivate.test__zseries_to_cseriesN)__name__ __module__ __qualname__r/r1rrrrr"s r"c@,eZdZddZddZddZddZd S) TestConstantscCttjddgdS)Nrr)rr chebdomainr*rrrtest_chebdomain2zTestConstants.test_chebdomaincCttjdgdS)Nr)rr chebzeror9rrr test_chebzero5zTestConstants.test_chebzerocCr<Nr)rr cheboner9rrr test_chebone8r?zTestConstants.test_chebonecCr7)Nrr)rr chebxr9rrr test_chebx;r;zTestConstants.test_chebxN)r2r3r4r:r>rBrDrrrrr60s  r6c@s<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)r$r%zerosmaxr chebaddrrr*r+jmsgr-r.rrr test_chebaddA  $zTestArithmetic.test_chebaddcCstdD]H}tdD]A}d|d|}tt||d}||d7<||d8<tdg|dgdg|dg}tt|t||dq qdSrF)r$r%rKrLr chebsubrrrNrrr test_chebsubKrRzTestArithmetic.test_chebsubcCstttdgdgttdgddgtddD]}dg|dg}dg|dgd}tt||qdS)Nrrr)r#rr#)rr chebmulxr$)r*r+serr-rrr test_chebmulxUszTestArithmetic.test_chebmulxcCstdD]M}tdD]F}d|d|}t||d}|||d7<|t||d7<tdg|dgdg|dg}tt|t||dq qdS)NrrGrHrr#rrI)r$r%rKabsr chebmulrrrNrrr test_chebmul]s  $zTestArithmetic.test_chebmulc CstdD]D}tdD]=}d|d|}dg|dg}dg|dg}t||}t||\}}tt|||} tt| t||dq qdS)NrrGrHrrrI)r$r rMchebdivrYrr) r*r+rOrPcicjr-quoremr.rrr test_chebdivgs   zTestArithmetic.test_chebdivcCs|tdD]7}tdD]0}d|d|}t|d}ttj|g|tdg}t||}tt |t ||dq qdS)NrrGrHrrI) r$r%arangerr rYr&chebpowrr)r*r+rOrPcr-r.rrr test_chebpowrs   zTestArithmetic.test_chebpowN) r2r3r4rQrTrWrZr`rdrrrrrE?s   rEc@seZdZegdZedeeZedeeeZej dddZ e e gdZ dd Z d d Zd d ZddZddZdS)TestEvaluation)g@@?i,j->ij i,j,k->ijkrrr)?rfg@csttgdgjdtddfddtD}tdD]}d|}||}tdg|dg}t|||dqtd D]/}d g|}t |ttdgj |ttddgj |ttgd j |qAdS) Nrrrcsg|]}t|qSrr.0rcr rr z/TestEvaluation.test_chebval.. rGrIrkr)rrr) rr chebvalsizer%linspaceTlistr$rrKshape)r*yr+rPr-r.dimsrr r test_chebvals      zTestEvaluation.test_chebvalc Cs|j\}}}|j\}}}tttj||dd|j||}t|||j}t||t d} t| | |j}t |j dkdSNrrrk) r rwr ValueErrorr chebval2dc2drr%onesrrv r*x1x2x3y1y2y3r-r.zrrrtest_chebval2ds    zTestEvaluation.test_chebval2dc Cs|j\}}}|j\}}}tttj|||dd|j|||}t||||j}t||t d} t| | | |j}t |j dkdSrz) r rwrr|r chebval3dc3drr%rrrvrrrrtest_chebval3ds     zTestEvaluation.test_chebval3dc Csl|j\}}}|j\}}}td||}t|||j}t||td} t| | |j}t |j dkdS)Nrhr{)rrkrrk) r rwr%einsumr chebgrid2dr~rrrrvrrrrtest_chebgrid2ds    zTestEvaluation.test_chebgrid2dc Csr|j\}}}|j\}}}td|||}t||||j}t||td} t| | | |j}t |j dkdS)Nrir{)rrkrrkrrk) r rwr%rr chebgrid3drrrrrvrrrrtest_chebgrid3ds    zTestEvaluation.test_chebgrid3dN)r2r3r4r%r&c1drr~rrandomr rrwryrrrrrrrrre|s rec@r!) 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)Nrr#rr)lbnd)sclaxisrr)mk)rrr)rrrr) r TypeErrorr chebintr|r$r poly2cheb cheb2polyrrrlist) r*r+rr.rpolr-chebpolrrOrrr test_chebints                    zTestIntegral.test_chebintcCstjd}tdd|jDj}tj|dd}t||tdd|D}tj|dd}t||tdd|D}tj|d dd }t||dS) NrkrcSg|]}t|qSrr rrmrrrro3rpz2TestIntegral.test_chebint_axis..rrcSrrrrmrrrro7rprcSsg|] }tj|ddqS)rk)rrrmrrrro;srk)rr)r%rvstackTr rrr*r~r-r.rrrtest_chebint_axis/s   zTestIntegral.test_chebint_axisN)r2r3r4rrrrrrrs Src@r!)TestDerivativecCstttjdgdtttjdgdtdD]}dg|dg}tj|dd}tt|t|qtdD]'}tddD]}dg|dg}tjtj||d|d}t t|t|q.rrcSrrrrmrrrrocrpr)r%rrrr rrrrrrtest_chebder_axis[s  z TestDerivative.test_chebder_axisN)r2r3r4rrrrrrr@s rc@s8eZdZejdddZddZddZdd Zd S) TestVanderrjrrcCstd}t|d}t|jdktdD]}dg|dg}t|d|ft||qt ddgddgdd gg}t|d}t|jd ktdD]}dg|dg}t|d|ft||qMdS) Nrkrrrr.rr)rkrr) r%rar chebvanderrrvr$rrrr&)r*r vr+coefrrrtest_chebvanderls     zTestVander.test_chebvandercCsx|j\}}}tjd}t||ddg}t|||}t||j}t||t|g|gddg}t |j dkdS)Nr{rr)rrr) r r%rr chebvander2dr}dotflatrrrvr*rrrrcvanr-r.rrrtest_chebvander2d}s   zTestVander.test_chebvander2dcCs|j\}}}tjd}t|||gd}t||||}t||j}t||t|g|g|ggd}t |j dkdS)N)rrkr)rrrk)rr) r r%rr chebvander3drrrrrrvrrrrtest_chebvander3ds   zTestVander.test_chebvander3dN) r2r3r4r%rr rrrrrrrrhs  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|dSNrrrr rrrfr;z#TestFitting.test_chebfit..fcSs|d|ddS)Nrrrrr rrrf2r;z$TestFitting.test_chebfit..f2rrrr)w)rrrrkr)rrrrkr)rrrrkr)rrkrrr)ry?ry)rrr)rr|r chebfitrr%rtrlenrrrr&r zeros_likecopy)r*rrr rwcoef3coef4coef2drywwcoef3wcoef2dcoef1coef2rrr test_chebfitsp    " zTestFitting.test_chebfitN)r2r3r4rrrrrr rc@r5) TestInterpolatecCs||d|dSrr)r*r rrrrr;zTestInterpolate.fcCs(tttj|jdtttj|jddS)Nrg$@)rr|r chebinterpolaterrr9rrr test_raisesszTestInterpolate.test_raisescCs2tddD]}tt|j|j|dfkqdS)Nrr)r$rr rrrv)r*degrrrtest_dimensionss zTestInterpolate.test_dimensionscCsjdd}tddd}tddD]"}td|dD]}t|||f}tt|||||ddqqdS) NcSs||S)Nr)r prrrpowxsz0TestInterpolate.test_approximation..powxrrrqr )decimal)r%rtr$r rrrr)r*rr rrrcrrrtest_approximationsz"TestInterpolate.test_approximationN)r2r3r4rrrrrrrrrs  rc@s$eZdZddZddZddZdS) TestCompanioncCs"tttjgtttjdgdSr@)rr|r chebcompanionr9rrrrszTestCompanion.test_raisescCs<tddD]}dg|dg}tt|j||fkqdS)Nrrr)r$rr rrv)r*r+rrrrrszTestCompanion.test_dimensionscCsttddgddkdS)Nrr)rr)rr rr9rrrtest_linear_root szTestCompanion.test_linear_rootN)r2r3r4rrrrrrrrs rc@r) TestGausscCs~td\}}t|d}t|j||}dt|}|dddf||}t|t dtj }t| |dS)Ndcr) r chebgaussrr%rrsqrtdiagonalreyepisum)r*r rrvvvdr-rrrtest_100s zTestGauss.test_100N)r2r3r4rrrrrr rrc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)TestMiscc Cstg}tt|dgtddD]3}tttj dd|dddd}dg|dg}t|d|d}tt|t|qdS)Nrrrr) r chebfromrootsrrr$r%cosrtr)r*r.r+rootsr-rrrtest_chebfromroots"s *zTestMisc.test_chebfromrootscCslttdggttddgdgtddD]}tdd|}tt|}tt|t|qdS)Nrrrrr)rr chebrootsr$r%rtrr)r*r+r-r.rrrtest_chebroots+szTestMisc.test_chebrootscCsbgd}tttj|dtt||ddtt|d|ddtt|ddgdS)N)rrrrrrrrr)rr|r r r)r*rrrr test_chebtrim3s zTestMisc.test_chebtrimcCsttddddgdS)Nrkr)rr chebliner9rrr test_chebline>szTestMisc.test_cheblinecCs2tdD]}ttdg|dgt|qdSNrqrr)r$rr rrur*r+rrrtest_cheb2polyA "zTestMisc.test_cheb2polycCs2tdD]}ttt|dg|dgqdSr)r$rr rrurrrrtest_poly2chebErzTestMisc.test_poly2chebcCsNtddddd}dtd|td|}t|}t||dS)Nrr rl)r%rtrr chebweightr)r*r r-r.rrr test_weightIs  zTestMisc.test_weightcCs~tttjdtttjddg}ttd|ddg}ttd|gd}ttd|gd }ttd |dS) Nrgrrg;fg;f?r)gLXzrgLXz?rk)g(1kgŜ}ؿgŜ}?g(1k?r)rr|r chebpts1rr*r-rrr test_chebpts1OszTestMisc.test_chebpts1cCstttjdtttjdddg}ttd|gd}ttd|gd}ttd|gd }ttd |dS) Nrgrrr)rrrrk)rrr#rr)ggKfrgKf?rlr)rr|r chebpts2rrrrr test_chebpts2^szTestMisc.test_chebpts2N) r2r3r4rrrrrrrrrrrrrr s   r)(__doc__ functoolsrnumpyr%numpy.polynomial.chebyshev polynomial chebyshevr numpy.polynomial.polynomialr numpy.testingrrrrrT0T1T2T3T4T5T6T7T8T9rur"r6rErerrrrrrrrrrrrs<  =^f(0M