L imddlZddlZddlmZmZmZddlmZddl m Z ddl m cmZddlmZmZmZmZmZmZmZmZmZddlmZddlmZmZmZddlm Z ddl!m"Z"ejFjHZ$Gd d Z%Gd d Z&Gd dZ'GddZ(GddZ)ddddddZ*GddZ+GddZ,y)N) assert_equalassert_almost_equalassert_allclose)given) romb newton_cotescumulative_trapezoid trapezoidquadsimpson fixed_quadqmc_quadcumulative_simpson)%_cumulative_simpson_unequal_intervals)statsspecial integrate)skip_xp_invalid_arg)xp_assert_closeceZdZdZdZy) TestFixedQuadc`dddzz }tfddd\}}t||dy) Nc|dzdz zS)Nrr)xns k/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/integrate/tests/test_quadrature.pyz+TestFixedQuad.test_scalar..sa!A#'lrr-q=rtol)r r)selfexpectedgot_rs @r test_scalarzTestFixedQuad.test_scalars6 ac72AqA>QXE2r"cd}tjdd|zddzz }tfddd|\}}t||dy) Nrrrc|dddfzSNr)rps r r!z+TestFixedQuad.test_vector.."sa1d7mr"rr#r$r%)nparanger r)r'rr(r)r*r/s @r test_vectorzTestFixedQuad.test_vectorsJ  IIa1 a!e93QQ?QXE2r"N)__name__ __module__ __qualname__r+r2rr"r rrs 33r"rcxeZdZdZdZdZdZdZdZe jjddd gd Z y ) TestQuadraturectr.)NotImplementedError)r'rabargss r r zTestQuadrature.quad's!!r"cTtttjddy)N)rrr0r1r's r test_rombzTestQuadrature.test_romb*sT"))B-(#.r"ctjd}tjd|z}t|}t d|j |j \}}t||ddy)Nr>皙?c2tjd|zS)NrC)r0cosrs r r!z2TestQuadrature.test_romb_gh_3731..2s266#a%=r"g:0yE>rr&atol)r0r1rErr minmaxr)r'ryvalval2errs r test_romb_gh_3731z TestQuadrature.test_romb_gh_3731-sW IIf  FF3q5M1g0!%%'1557C cT15r"cVd}t|d\}}t||tjddgzt ||dz dz d}t|d\}}t ||tjgdzdz t ||dz d z d}t|d\}}t ||tjgd zd z t ||dz d z d }t|d\}}t ||tjgdzdz t ||dz dz y)z5Test the first few degrees, for evenly spaced points.r?(@r)?@rT@g@)rT@rXrT @gP@r)@@@rSr[rZgV@g=AN)rrr0arrayr)r'rwtserrcoffs r test_newton_cotesz TestQuadrature.test_newton_cotes5s #Aq) WS!BHHc3Z001GadU4Z0 #Aq) WC288O#,n= HH) * qD#A W66#q>,n=r"c  tjd}tt|dtt|ddtt|tjdddd tjd dd}d }t t|||d tjd d d}t t||ddtjdj dd}tjdj ddd}||}tdD]}t|||}tj|dg}|D]z}t|j} | j|td|t| ddzdz |t| ddzdz z } t ||j| |tjdj dd}||}t||d}d|ddd f|dddfzz|ddd f|dddfz z} t || tjdj dd}tjdj ddd}||}tdD]}t|||}tj|dg}|D]z}t|j} | j|td|t| ddzdz |t| ddzdz z } t ||j| |tjdg}tj|d}t t||ddt t||ddtjgd}tj|d}t t||ddt t||ddtjgdgdgdg}tj|d}gd} d gdz} t t||d| t t||d| tjgdgdgd!g}tj|d}gd"} gd#} t t||d| t t||d| y)$Nr>r?rQdx@rrrF rc |dzS)NrrrFs r fz&TestQuadrature.test_simpson..fds a4Kr"5@r\rcrP@rRraxis multi_index)flagsrrW}rb)rRrRrRrR)rrrry)rbrbrbrb竪Je@)rryrrrm)rbga@g@g@)r|r|g*U@)r0r1rr linspacerreshaperangenditerlistrvinsertslicetupler]power) r'rKrror:iritr*idxintegral zero_axis default_axiss r test_simpsonzTestQuadrature.test_simpson\s. IIbMWQZ%WQ3',WQ"++aB"78"= KK1a   !*D1 KK1a !-s3 IIbM ! !!Q ' IIcN " "1a + aDq =AQQ'A1]O4B =2>>* 1eDk*U3Z=,a/!3ac mA6F6IA6MM".. 18<  = = IIbM ! !!Q ' aD A $!AqD'AadG+,!Q$!AqD'0AB8$ IIbM ! !!Q ' IIcN " "1a + aDq =AQQ'A1]O4B =2>>* 1eDk*U3Z=,a/!3ac mA6F6IA6MM".. 18<  = = HHaSM HHQNQQ/5QR0#6 HH\ " HHQNQQ/5QR0#6 HHlL,? @ HHQN( !{Q QQ/;QR0,? HHlL.A B HHQN0 > QQ/;QR0,?r"droplastFTctjgdgdg}|r |ddddf}t|d}ttj|tjd}t ||y)N)rrrrryryrW)rrrr rrxrudtype)r0r]r float64r)r'rrKresultr(s r test_simpson_2d_integer_no_xz+TestQuadrature.test_simpson_2d_integer_no_xsb HH/35 6 !SbS& A$288ARZZ8rBVX&r"N) r3r4r5r rArOr`rhrpytestmark parametrizerrr"r r7r7&sL"/66,>"K@\ [[Z%7 '8 'r"r7creZdZdZdZdZdZejjdddgdZ d Z y ) TestCumulative_trapezoidctjddd}|}t||d}gd}t||t||d}t||ddy) NrrrWnumrinitial)rbrrbrr0r}r r)r'rrKy_int y_expecteds r test_1dz TestCumulative_trapezoid.test_1dsT KKA1 % $Q15. z*$Q48z!"~.r"ctjdjddd}|}t||d}tjgdgdggd gd ggd gd gg}t ||gd }t gd|D]O\}}t||d|}t|jdt||d|}t|j|Qy)NrRrrrr)rbrQrc@)rbr$@0@)rb!@2@g<@)rb)@g:@@D@)rbrgA@g@J@)rb4@gE@g P@))rrr)rRrr)rRrrRrrr)rru)rRrr) r0r1r~r r]rziprshape)r'rrKrrshapesrurs r test_y_nd_x_ndz'TestCumulative_trapezoid.test_y_nd_x_nds IIi ( (Aq 1 $Q15XX 2 4 6 4 5 7 5 5 7 89  z*3y&1 -KD%(AqtDE i 0(At$GE e ,  -r"c tjdjddd}tjddz}tjgdgdggdgdggtjgd ggd ggd ggtjgd gd ggdgdggdgdggf}t gd|D]0\}}t ||d|j ||d}t||2y)NrrRrr)rU@rVrZ)rYrdr&@)gD@gF@gH@gJ@)gL@gN@rsgQ@)rcrXrUr)rrrS*@)rg3@4@rp)rQrg1@)rrpgJ@)rgB@g`V@)rgJ@g`_@)rg@Q@g0d@)rg@U@gh@r)rrur)r0r1r~r]rr rr)r'rKr ys_expectedrurrs r test_y_nd_x_1dz'TestCumulative_trapezoid.test_y_nd_x_1ds IIi ( (Aq 1 IIaL!O HH')+++-. / HH'(+,+,. / HH')')+))+ , - . !$I{ ; / D*(a.?d157E E: . /r"ctjddd}t|}gd}t||t|d}gd}t||t|d }gd }t||t|d d }gd }t||y)NrrrWr)rrrrbrr)rrrrrbrRrj)rrb)rkr)rrrrrbr)r'rKrrs r test_x_nonez$TestCumulative_trapezoid.test_x_nones KKA1 %$Q'* z*$Q2- z*$Q1-* z*$Q1a8- z*r"rrrQctjddd}tjtd5t ||dddy#1swYyxYw)z4If initial is not None or 0, a ValueError is raised.rrrz `initial`matchrN)r0r}rraises ValueErrorr )r'rrKs r test_initial_errorz+TestCumulative_trapezoid.test_initial_errorsC KK22 & ]]:[ 9 5 G 4 5 5 5s A  Ac|tjtd5tgdddy#1swYyxYw)NAt least one point is requiredrrK)rrrr r@s r test_zero_len_yz(TestCumulative_trapezoid.test_zero_len_y s. ]]:-M N ' 2 & ' ' 's 2;N) r3r4r5rrrrrrrrrrr"r rrsG/-*/0+& [[As855 'r"rceZdZdZedddZedddZedZedd d Z y ) TestTrapezoidc |jddd}t|jd|dzz|jd|j |j zz d}t ||j dy)Nrg?grrjrT)r1r expsqrtasarraypir)r'xprrs r test_simplezTestTrapezoid.test_simplesd IIc2r " bffS16\*RWWQBEE9J5J-KKPS T2::c?+r"z jax.numpyz)JAX arrays do not support item assignment)reasonc|jddd}|jddd}|jddd}|j||d|dz z}|dxxdzcc<|dxxdzcc<|j||d|dz z}|dxxdzcc<|dxxdzcc<|j||d|dz z}|dxxdzcc<|dxxdzcc<|ddddf|ddddfz|ddddfz}|j||ddddfzd} |j||ddddfzd} |j||ddddfzd} t||ddddfd } t | | t||ddddfd } t | | t||ddddfd } t | | t||d } t | | t||d } t | | t||d } t | | y) NrrrRrry rxrrt)r} ones_likesumr r) r'rrrKzwxwywzqqxqyqzrs r test_ndimzTestTrapezoid.test_ndims) KK1a  KK1a  KK1b ! \\!_!qt , 1  2!  \\!_!qt , 1  2!  \\!_!qt , 1  2!  atm qa .4a< @ VVA1dD=))V 2 VVA4D=))V 2 VVA4q=))V 2 a1Qd]+! 42 a1T!T\? 32 a1T4\? 32 a11 %2 a11 %2 a11 %2r"c |j|jdddd}|j|jdddd}|jddd}tt||d|tt||j gd d|tt||j gd dddfd|t j t5t||j gd dddfdddd|j gd }tt||d |tt||jdd dd |y#1swY^xYw) Nr)rRri|rrt)rrr)rgP`@gk@r )r~r}rr rrr Exception)r'rrrKout0out1s r test_gh21908zTestTrapezoid.test_gh21908>s5 JJr{{1b"-w 7 JJr{{1b"-w 7{{3R( !qq148 !rzz-'@qI4P a2::m4QW=A F  ]]9 % G a2::m4T1W=A F Gzz/0 !qq148 a2;;q!R0q 9   G Gs $'E((E1ctjd}||z}|dk(}tjj||}d}t t |||tjj||}t t |||tjj||}t t |||y)NrWr)maskr)r0r1mar]rr )r'rrrKrymrxms r test_maskedzTestTrapezoid.test_maskedXs IIaL EAv UU[[[ &  "a(!, UU[[[ & "b)1- UU[[[ & !R(!,r"Tz,array-likes only supported for NumPy backend)np_onlyrcttd}|Dcgc]}||z }}|j||j}|j||j}t ||}t ||}t ||ycc}w)NrWr)rrrrr r) r'rrtrKxarryarrresresarrs r test_array_likezTestTrapezoid.test_array_likeisz qN qQU  zz!2::z.zz!2::z.1o4&V$ s BN) r3r4r5rskip_xp_backendsrrrrrrr"r rrs|, kHJ#J#JkHJ J 0-- dKM%M%r"rceZdZejj dZddZejjdddgejjddd gd Z ejjd d d gd d gd d gd d ggdZ ejj ejjdddgdZ dZ y) TestQMCQuadc d}tjt|5tdddgddgdddd}tjt|5tdddgddgdddd}d }tj t |5t|ddgddgdddd }tjt|5td ddgddgd dddd}tjt|5tdddgddgddddd}tjt|5tdddgddgddddd}tjt|5tdddgddgtjjddddd}tjt|5tdddgddgddddy#1swYxYw#1swYxYw#1swYdxYw#1swY7xYw#1swY xYw#1swYxYw#1swYxYw#1swYyxYw)Nz`func` must be callable.rza duckrrz/`func` must evaluate the integrand at points...cyNrrrr"r r!z3TestQMCQuad.test_input_validation..~r"cN|jdk(sJtj|Sr)ndimr0rrFs r funcz/TestQMCQuad.test_input_validation..funcs 66Q; ;66!9 r"z8Exception encountered when attempting vectorized call...z`n_points` must be an integer.cyrrrFs r r!z3TestQMCQuad.test_input_validation..rr"g@)n_pointsz!`n_estimates` must be an integer.cyrrrFs r r!z3TestQMCQuad.test_input_validation..rr"r) n_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.cyrrrFs r r!z3TestQMCQuad.test_input_validation..rr")qrngz8`qrng` must be initialized with dimensionality equal to cyrrrFs r r!z3TestQMCQuad.test_input_validation..rr"z,`log` must be boolean \(`True` or `False`\).cyrrrFs r r!z3TestQMCQuad.test_input_validation..rr"rlog) rr TypeErrorrrwarns UserWarningrqmcSobol)r'messagers r test_input_validationz!TestQMCQuad.test_input_validationvs&, ]]9G 4 / X1v1v . /D ]]:W 5 0 YAA / 0 M \\+W 5 + TAq6Aq6 * +3 ]]9G 4 C [1a&1a&6 B C6 ]]9G 4 C [1a&1a&c B CM ]]9G 4 A [1a&1a&x @ AM ]]:W 5 K [1a&1a&uyyq7I J KB ]]9G 4 : [1a&1a&b 9 : :? / / 0 0 + + C C C C A A K K : :s_G*G7HHH;H+52H7 I*G47HHHH(+H47II ryNc  |tjd}d}tj|tj| fdtjj d}t jj||}tj|}tj||z}t|||||} t jj| |} tj|dz d| jz} t| j | | tj"|| j zd kDsJtjj d}t jj||}tfd ||||d | } ttj$| j | j dtj&| j tj"|d krtj(nd k(sJttj$| j| jddy)NrcZtjj|jSr.)rmultivariate_normalpdfT)rcovmeans r rz$TestQMCQuad.basic_test..funcs",,00dC@ @r"l^^@E9?)seed)rr r ) lower_limitrgףp= ?rHrc4tj|Sr.)r0r)r<rs r r!z(TestQMCQuad.basic_test..stT{(;r"T)rr rr +=r%缉ؗҜ.rr"rrr)rrrrrr0infr-)r'rrrs r test_zerozTestQMCQuad.test_zerosyB \\+W 5 A;AAC@C A||3A666!!Q&&& A As A11A:cd}t|dd}tjjddtjjddz }t |j |dy)NcDtjj|dS)Nrscale)rnormrrFs r rz-TestQMCQuad.test_flexible_input..funcs::>>!1>- -r"rrrr@g{Gz?)rrrBr+rr)r'rrr2s r test_flexible_inputzTestQMCQuad.test_flexible_inputsS .tQ"jjnnQan(5::>>!1>+EE c40r")rryN) r3r4r5rr thread_unsaferr4rr7r9r=rCrr"r rrus [[":":HD> [[Z$7 [[]QG4/58/ [[W1vBx"a1b'&JK%L% [[ [[UUDM2'3'1r"rrxrrkrruct |j|dkr%|t||||dS|t||||dzStj||d}tj|dkDrtj||dn|}tj|dkDrtj||dn|}tj|dkDrtj||dn|}|jd ||tj zn|}|du}|rdn|}tj ||j}tj ||jdddz}tj|||fd} fd}tj|d|}|r |d ddfn|}tj|d|}|S) NrR)rrkrurrrxr)rrc>t|d|dz|dzdS)Nr)rr)r)rrs r roz*cumulative_simpson_nd_reference..fs,!!BQ%1Qqs8QqstWEEr".) rr r0moveaxisrr1 broadcast_to concatenateapply_along_axis) rKrrkrruinitial_was_nonerrorrs @r cumulative_simpson_nd_referencerMswwt}q ?'Q2D$O O1!qRdTUVV V AtR A$&GGAJN AtR A&(ggbkAoRr "2B020@10Dbkk'4,'G  A^RYYq\A$#aG 177#Aoogqwws|d':;G 1gR0AF  aQ 'C+#c12g,C ++c2t $C Jr"cXeZdZejdZedzZejjddejjdddZ ejjdejdd ejjd d ejjd d ejjddejjdddZ ejjdde gdfde egdgeegfde eeegeeegdfde ggfde dfde ejdfd e ejd!fd"e d#ejd$fgd%Z d&Zd'Zejj!d(ejj"ejj$eej*ej,ej.dd d()ej2d*d(d+,j5d-./d0Zejj!d(ejj"ejj$eej*ej,ej.dd d()ej2d*d(d+,j5d1./d2Zy#)3TestCumulativeSimpsonrruse_dx)FT use_initialc*tjjd}d}|rdnd}|j}|dk(r$tj|j|n(tj||z|jz}tj|dzddtj f}|j|dzddtj f} tj | ||zzd} tj | ||dzzz|dzz d} |r| n | | dz dd} |r| dnd} |rd|ind |i}t| fi|d | i}|st|| d y|rdnd}t|| d t||dd| |ddd y)NF*BGrrRrrrrrkrrgV瞯!> ? @ @ @s AA(ctjjd}|jd}t|d}t |dy)NrSrrarrj)r0r)r*rr)r'r1rKrs r test_special_casesz(TestCumulativeSimpson.test_special_casesQs=ii##$89 JJBJ  q)S!r"crtj|d}t||}t|ddddf|ddddfddddf}g|jddd}tjtj ||dddf|dddfz tj |gd}d|ddddf<|S)aj`cumulative_simpson` and `simpson` can be tested against other to verify they give consistent results. `simpson` will iteratively be called with successively higher upper limits of integration. This function calculates the theoretical correction required to `simpson` at even intervals to match with `cumulative_simpson`. rxr.Nrrbr)r0diffrrrJr')r'rKrdsub_integrals_h1sub_integrals_h2 zeros_shapetheoretical_differences r 1_get_theoretical_diff_between_simps_and_cum_simpszGTestCumulativeSimpson._get_theoretical_diff_between_simps_and_cum_simps\s GGAB @AF@ c4R4iL!C2I, tt) ) (a( !#%!#qr'*-=c3B3h-GG%   " -0sADqDy)&%r"r)max_dimsmin_sidemax_siderF) allow_nanct|dkDSNgHz>absrFs r r!zTestCumulativeSimpson.#a&SW-r")elementsrcd}t|d}||}|j|tj|jd}tj j |dddf|dddf|dddfzd y) eTheoretically, the output of `cumulative_simpson` will be identical to `simpson` at all even indices and in the last index. The first index will not match as `simpson` uses the trapezoidal rule when there are only two data points. Odd indices after the first index are shown to match with a mathematically-derived correction.c tjtd|jddzDcgc]}t |dd|fdc}dScc}w)Nrrxr.rTrjrr0stackrrr )rKrs r simpson_referencezhTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx..simpson_referencesM886;Aqwwr{1}6MN37,NUW NsArTrjrxrF.rNr%r")rryr0r1rrer)r'rKrrr2rxs r 7test_cumulative_simpson_against_simpson_with_default_dxzMTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dxzs$  !s+"!%!W!W 1772;'"X"  "" QRL#c12g,)?QR)HHu # r"ct|dkDSrrrFs r r!zTestCumulativeSimpson.rr"c d|jddz z }tjdd|jd}|ddd|ztjj ddt |dz zz|ddd}t || }|||}|j||}tjj|d ddf|d ddf|d ddfzy) rrrxrrrNrCc tjtd|jddzDcgc]}t |dd|f|dd|fc}dScc}w)Nrrxr.rFrr)rKrrs r rzXTestCumulativeSimpson.test_cumulative_simpson_against_simpson..simpson_referencesZ88? ($"l1CBx*PQ ($"b""b"TU*VW )4"+;< 8$A,G 6yryy|8LM 2D14NO -tdyryy|/LM ; @ @ &< [[2 [[ [[ '.. JJ G !a" ERYYsB%8??@WX   , [[2 [[ [[ '.. JJ G !a" ERYYsB%8??@WX   r"rOc eZdZdZdZej jdee dddee ddd zd Z y ) TestLebedevcd}tjt|5tjddddy#1swYyxYw)NzOrder n=-1 not available...rrx)rrr9r lebedev_rule)r'rs r rz!TestLebedev.test_input_validations9/ ]].g > '  " "2 & ' ' 's =Acd}tjd\}}|||z}d}t||dttj|dtj zy)Nc2tj|dS)Nr)r0rrFs r roz&TestLebedev.test_quadrature..fs66!A$< r"g9-@r$r%r)rrrr0rr)r'rorwrr2s r test_quadraturezTestLebedev.test_quadraturesU %%b)1!A$hSu-q 1ruu9-r"rVrRrmr#r`c^tj|\}}tjdd5t j |j d}t|jdddddttj|dtjzy#1swY:xYw)Nignore)divideinvalidrrrcr"r) rrr0errstaterdirectional_statsrrmean_resultant_lengthrr)r'rVrrrs r test_propertieszTestLebedev.test_propertiess%%e,1 [[( ; F))!##A6C C55qu E F q 1RUU7+  F Fs :B##B,N) r3r4r5rrrrrrrrrr"r rrsS' . [[Wd5B?&;d5SRSCT>U&UV,W,r"r)-rnumpyr0 numpy.testingrrr hypothesisrhypothesis.strategies strategiesrhypothesis.extra.numpyextrarscipy.integraterrr r r r r rrscipy.integrate._quadraturerscipyrrrscipy.conftestrscipy._lib._array_api_no_0drrrrr7rrrrMrOrrr"r rs LL"((;;;N++.7;;// 3 3 N'N'bV'V'rb%b%J_1_1D-1T4b"JA A F,,r"