K iddlmZddlmZmZmZddlmZddlm Z ddl m Z m Z ddl mZddlmZmZmZmZddlmZdd lmZdd lmZdd lmZe d \ZZZed ZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&y))Add)Rationaloopi)S)symbols)explog) Piecewise)cossinsinctan)fourier_series) FourierSeries)raises) lru_cachezx y zctttt tf}ttdzt tf}ttdtdkftdftt tf}|||fS)NrT)rxrr fofefps e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/series/tests/test_fourier.py _get_examplesrs_ AsB< (B 1sBi (B  1a!e*r4j9AsB< HB r2:ct\}}}tdt tfdk(sJtdtdkftdfjtt tfj |j k(sJt |tsJ|jtk(sJ|jtk(sJ|jt tfk(sJ|jddtdtzzdz k(sJ|jddtdtzzdz k(sJ|jddtdtzzdz k(sJ|jtdttzk(sJ|jttdzdz k(sJ|jttdz k(sJ|j dttztdtzz dtdtzzdz zk(sJ|j dttztdtzztdzdz zk(sJ|j dttzdtdtzzdz ztdz zk(sJ|j d}ddttztdtz g}t|D]\}}|dk(rn |||k(rJd }||d||d||d|jttdz|k(sJt!t"d t!t"d t!t"d y) NrTr )ncLt|D]\}}|||k(sJ||k(syyN) enumerate)fiindts r _check_iterz'test_FourierSeries.._check_iter6s3l FC#; ;ax rc"ttdS)N)rrrrrrrz$test_FourierSeries..Bs ~a;rc8tttdtfSNr)rrrr.rrr/z$test_FourierSeries..Cs~a!Q<rc<tttzdtfSr1)rryrr.rrr/z$test_FourierSeries..Ds~acAr7;r)rrrr rtruncate isinstancerfunctionperiodtermr r as_leading_termr&subsr ValueError)rrrfotsr(r*r+s rtest_FourierSeriesr>sJBB !rc2Y '1 ,, , q!a%j2t* - NAsB< (  FF F b- (( ( ;;!   44199 99"b !! ! 771:3qs8a '' ' 771:C!Hq (( ( 771:3qs8a '' '  a Ac!fH ,, ,  a BEAI -- -  a BF ** * ;;=Ac!fHs1Q3x/1S1X:>B BB B ;;=Bs1vIAaC02q519< << < ;;=Ac!fH#ac( Q7"q&@ @@ @ +++ C Ac!fHs1Q3xi A#1 6 tqyy  AAA 771ad r !! ! :;< :<= :;Ac"Q$(mOb!e3467ff= >> >rc0tdttkfd}t|tddtzf}|j ddtz t tzddtzz t dtzzzddtzz t dtzzzk(sJ|j ddtz t tzttdz zddtzz t dtzztdtzdz zzk(sJy) zETest if fourier_series approximates discontinuous function correctly.r)Trrr rAN)r rrrr4r sigma_approximationr) square_waver=s rtest_square_waverJQsQBK4K{Q1R4L1A ::a=AFSVOa1r6lSQZ.GG QV s1q5z!" "" "  #q2vAb1f'E QV s1q5z!DR!$44(5 55 5rc:tttdtf}|jdtdz t dtzz t dtzdz z t dtzdz z k(sJtttddf}|jdt j t dtztztz z t dtztzdtzz z t dtztzdtzz z k(sJy)NrrArr r)rrrr4r rrB)r=s rtest_sawtooth_waverM\sq1a*%A ::a= 1s1Q3x#ac(1*$s1Q3xz1 22 2q1a)$A ::a= QrT!VR#ad1f+qt"44s1R46{AbD7II JJ Jrctt\}}|jdjtdz}|j dt t zt dt zz dtdzzdz zk(sJ|jt dz j dtt zdtdt zzdz zdtdt zzdz zk(sJjd}|j dtt zdtdt zzz dtdt zzzk(sJ|jdjd}|j dt dt zdzzt dt zdzztdzdz zk(sJ|jdjt jdjdjd}|j d t dt zdzzdt d t zd zzzdtzz dtdzzdz zk(sJttfd ttfd ttfd ttfdy)NrFrrAr rGrLrr!i c.jtSr%)shiftrrsrr/z0test_FourierSeries__operations..xsrxx{rc@jttSr%)shiftxr rrRsrr/z0test_FourierSeries__operations..ysryyQ0rc<jttzSr%)scalerr3rRsrr/z0test_FourierSeries__operations..zsrxx!}rc4jtdzS)Nr)scalexrrRsrr/z0test_FourierSeries__operations..{sryyAr) rrVrQrr4r rr rXrTrr;)rrfesfosfxflrs @rtest_FourierSeries__operationsr]es7JBB ((2,  RU #C <<>Qs1vXAaC01RU7Q;> >> > 88RCE? # # %!CF(aAaCj1n*E+,S1X:>+; << < ((1+C <<>Qs1vX#ac( 2Qs1Q3xZ? ?? ? 1  Q B ;;=Bs1Q37|Oc!A#'l:RUQYF FF F 1  RC ' ' * 1 1! 4 : :1 =B ;;=SQqS1W-#bdRi.0@@rT"$%b!eGaK0 11 1 :*+ :01 :,- :./rcPt\}}}| jdttztdtzzdtdtzzdz z k(sJ| jdt tzt dtzz t dzdz z k(sJy)Nr@rr rA)rr4r rr rrs rtest_FourierSeries__negr_~sJBB C>> r#a&y3qs83qQqSzA~F FF F C>> r#a&y3qs83b!eai? ?? ?rct\}}zjdk(sJz dk(sJ| |z |jdk(sJ|zjdttztdtzz dt tzz t dtzzt dzdz zk(sJ|z jdttztdtzz dt tzzt dtzz t dzdz z k(sJtdztsJttfdy)Nrrr@rAr rc8tttddfzS)Nrrr-rRsrr/z.test_FourierSeries__add__sub..srN1q!Qi$@@r) rrVr4r rr rr5rrr;)rrrs @rtest_FourierSeries__add__subrbs7JBB 7bhhqk !! ! 7a<< 38rxx| ## # G   1SV8c!A#h#63q6#AC!H#L a%!)$   G   1SV8c!A#h#63q6#AC!H#L a%!)$   b1fc "" " :@Arc:tttjdttk(sJtttt t zt tzttt fjttt t zt tzk(sJtttdzjtdtdtzzdz dtdtzzdz ztdtzdz z td dzk(sJtttdzjdtdtzzdz dtdtzzdz ztd dzk(sJttdtzdztdtzdzzjttd tdtzztdtztdzztdtdtzzztdtdtzzzk(sJtttttttzzjtdttzk(sJttttztd dfjttttzk(sJttdtztzdztdtztzt tt zzz td dfjtt tt z tdtztzztdtdtztzzz tdtdtztzzzk(sJy) NrrLir r rArGrF) rr rr4r r3r zrrr rrr.rrtest_FourierSeries_finitergs5 #a& ! * *1 -Q 77 7 #a&Q-A."bSz : C C EQPSTUPVWZ[\W]I] ]] ] #a&!) $ - -b 1SQqS\"_qQqSzRT}5TWZ[\]^[^W_`bWb5b a_6   #a&A+ & / / 1S3q1u:5E5JQQTUVYZUZQ[^^`M`5` a_6   #ac!e*s1Q3q5z1 2 ; ;B ?SVGCPQRSPSHDTWZ[\]^[^W_`cde`fWfDf VC!H_E"1vc!A#hE/ // / #a&QA. / 8 8 <#a& HH H #bd)aQZ 0 9 9" =RT JJ J #ad1fqj/C"QKBqD ,AAAr1: N W WXZ [`cdfghdh`i_ijmnoprnrstntju_u VC"QK ` "%a&QrT!V"4`5 55 5rN)'sympy.core.addrsympy.core.numbersrrrsympy.core.singletonrsympy.core.symbolr&sympy.functions.elementary.exponentialr r $sympy.functions.elementary.piecewiser (sympy.functions.elementary.trigonometricr r rrsympy.series.fourierrrsympy.testing.pytestr functoolsrrr3rfrr>rDrJrMr]r_rbrgr.rrrrs~11"%=:JJ/.' ' 1a  ,=^>5J02@B"5r