L impddlZddlZddlZddlmcmZddlmcm Z ddl m Z m Z mZddlmZmZddlmZmZmZddlmZmZmZddlmZdZej:j=de ej:j=d d Gd d ZGddZ ej:j=de ej:j=d d Gdde Z!ej:j=de ej:j=d d Gdde Z"y)N)xp_assert_closexp_assert_equalxp_assert_less)is_numpyis_torch)statsoptimizespecial) derivativejacobianhessian)_EERRORINCREASEz5Array API does not support fancy indexing assignment.array_api_strict)reasonz dask.arrayzboolean indexing assignmentc eZdZdZej j ddejdddgdZ ej jd ej j d e jjd Zej j d d dgej j dedddgdZdZdZdZdZdZdZdZdZdZej j ddej j dddd gfej j d!d"d#Zd$Zd%Zej jd ej j:ej j d d&d fd'd ffd(Zy))*TestDerivativec,tj|SNr ndtr)selfxs r/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/differentiate/tests/test_differentiate.pyfzTestDerivative.fs||Ar333333?皙? c|jdj}t|j|j||}|jt j j ||}t|j|t|s3t|j|j|z |jyy)N?dtype) asarrayr#r rrnormpdfrdfrrabserror)rrxp default_dtyperesrefs r test_basiczTestDerivative.test_basics 2,, A]!CDjj))!,MjB$| 266#&&3,/ ;rT)np_onlycasec|\}}tt||}|jdz}t|j|}|j |}t |j|dy)N皙?绽|=atol)getattrrmedianr cdfr&rr') rr0r*distnameparamsdistrr,r-s r test_accuracyzTestDerivative.test_accuracy%s^ &'wuh'0 KKMC 1%hhqk%0rordershape) )rCrEc,|r&tjdddj|nd}tj|itjfd}fd}dd<d d <t ||j ||j  }||j}|D cgc]} | j} } t|j|jd |j | |D cgc]} | j} } t|j|jd |j | |D cgc]} | j} } t|j|jd |j | d|D cgc]} t| j} } t|j|jd |j | |D cgc]!} tj | j"#}} t|j|j"d |j ||D cgc]!} tj | j$#}} t|j|j$d |j |t'|r#|j)|j$d k(sJ|D cgc]!} tj | j*#}} t|j|j*d |j |t'|r$|j)|j*dk(sJyycc} wcc} wcc} wcc} wcc} wcc} wcc} w)NrrrArc4tj|S)Nr=)r r)rr=rs r_derivative_singlez=TestDerivative.test_vectorization.._derivative_single8sdffau5 5rcdxxdz cc<dxx|jk(s|jdkrdn|jdz cc<j|g|i|S)Nnitr>feval)sizendimr@r)rargskwargsnrstates rrz,TestDerivative.test_vectorization..f<sX %LA L 'NAFFaK166A:aAGGBK ON466!-d-f- -rrMrKrrLr"rHrMg-q=r4)nplinspacereshaperN vectorizer r$float64ravelrrr'r)boolsuccessrint32statusnfevrmaxrK)rr=r@r*rrIrr,refsr-ref_xref_df ref_error ref_successref_flagref_nfevref_nitrRrSs`` @@rtest_vectorizationz!TestDerivative.test_vectorization/s c |dz SNg@rs rz6TestDerivative.test_flags..f..gs q3wrcHj|jzSr)exprandom)rrngr*s rrqz6TestDerivative.test_flags..f..hsrvvay5rc&j|Srrsrr*s rrqz6TestDerivative.test_flags..f..isrvvayrc<j|jSr) full_likenanrxs rrqz6TestDerivative.test_flags..f..jsr||Arvv6rrT)rKziprWintstack) xsjsfuncsrjr,rrur*s rrz$TestDerivative.test_flags..fesq EEQJE&5(68E14B 2u8M0NO1=5Q=#OCO88C= PsA9rrDr"+=rtolrE) tolerancesr=rP)rUrt default_rngrKarangeint64r onesrYdictr$eim _ECONVERGEDr _ECONVERR _EVALUEERRr]rr^)rr*rPr, ref_flagsrrus ` @@r test_flagszTestDerivative.test_flagsasii##$45 ! !288 ,.BGGARZZG8$(e$4 t-JJ / # # 08:xxA   I.rctjjdfd}t|j dj t ddd }j tjttjtjgj}t|j|y) Nrkc|dz j|jzj|j|jg}j |Srn)rsrtrzr{r~)routrur*s rrz3TestDerivative.test_flags_preserve_shape..f}sTs766!9SZZ\)66!9<<266*,C88C= rr>r"rrrET)rr=preserve_shape)rUrtrr r$rYrrrrrrr]rr^)rr*rr,rrus ` @rtest_flags_preserve_shapez(TestDerivative.test_flags_preserve_shapezsii##$45 !BJJq J;$(e$4 7JJ / # # 08:xxA   I.rc fd}jd}jjddjd|zzddjd|zzzdjd|zz|dz dzzdjd|zz|dz zzg}t||d }t |j |y) Nc|jd|z|jd|zzjd|z|dz dzzg}j|S)NrCrr>rE)sinr~)rrr*s rrz-TestDerivative.test_preserve_shape..fsTbffQqSk1RVVBqD\>266"Q$<1q3HIC88C= rr>rCrrrETr)r$cosrr rr')rr*rrr-r,s ` rtest_preserve_shapez"TestDerivative.test_preserve_shapes ! JJrNjj"**Q-266!A#;"RVVBqD\/8IRVVBqD\/1Q3(2Qrvvbd|^QqS5IIKLAd3$rch|jd|j}tj}t t j jd}tdd}|j}d|d<t|||d}t|j|z dksJd |d<t|||d}t|j|z d ksJt|j|z t|j|z ksJ|j}d|d <t|||d}t|j|z d|zksJd |d <t|||d}t|j|z d |zksJt|j|z t|j|z ksJy) Nr!r"r)r5rgMbP?r5rD)rr=gư>r) r$rYr rfloatrr%r&rcopyr r(r') rr*rrr- tolerances0rres1res2s rtest_convergencezTestDerivative.test_convergences JJrJ , LLEJJNN2&'*  %%' ! 6!Q:Q?477S=!D(((! 6!Q:Q?477S=!D(((477S=!C# $6666 %%' ! 6!Q:Q?477S=!D3J...! 6!Q:Q?477S=!D3J...477S=!C# $6666rc|jd|j}tj}t t j jd}t||dd}t||dd}t|j|z t|j|z ksJt||dd}t||d d}t|j|z t|j|z ksJtd dd }t||fddd |}t||fddd |}t|j|jdtddd }t||fddd |}t||fdtjdz dd |}t|j|jdd|d<t||fddd |}t||fdtjdz dd |}t|j|jdy)Nr!r"?r>) initial_stepmaxiterg?rE) step_factorrrrDr)r=rstep_direction)rrg+.fsCq Aq 1q5QU+,008AHrrrErrr>gffffff?rMr) rV zeros_likerrrr rr'rsallr\)rr*rrrr,s ` rtest_step_directionz"TestDerivative.test_step_directions  KK1b !q)/C8<.fs 6Mrc|||dz zzSNr>rors rr'z>TestDerivative.test_vectorized_step_direction_args..dfsqQU|# #r)r>rErCrD)rMr>r>rMrr>)r>rMr>rErC)r>r>rM)rrPr!r")rWr$r broadcast_tor'r@r#r) rr*rr'rhdirrr,r-s r#test_vectorized_step_direction_argsz2TestDerivative.test_vectorized_step_direction_argss  $ JJrzz,/ <zz"**Z0*= JJrzz1a&): 6Ad!>oobAh 5jjBJJrN$8$8j9$rc  fd}jdj}jgd}jjdddd}t |||d d | }j |j ||z }j|dd d f|d dd fksJt|jdD]A}t ||||dfd d | } t|j |ddf| j dCy)Nc&j|Srrwrxs rrz+TestDerivative.test_initial_step..fs66!9 rrr"rrr)rMr>rEr>)rr=rrrM.rr) r$rYrWlogspacer r(r'rranger@r) rr*rrrh0r,errir-s ` rtest_initial_stepz TestDerivative.test_initial_steps  JJrJ ,J/ ZZ B2. 8ABa(68ffSVVad]#vvc#2#s(mc!"c'l2333rxx{# >AQ1a41,:rc |jd|j}d d}d}t|| td}|j |j rJ|j |j|d z d z d zzk(sJ|j |j k(sJ fd d _ d_ t_ t||td }|jD][}|dk(r1||tjk(sJ||tj k(r7J||j|cxk(r ||k(rXJJy)Ng~,?r"rCc0tj|}|Srr)rr,s rrz/TestDerivative.test_maxiter_callback..f s,,q/CJrV瞯rEcdxjdz c_|_t|dsJt|jj vsJj j t|j|jtjk(sJjk(rty)Nr>r) iterr,hasattrrr'dfsaddr^r _EINPROGRESS StopIteration)r,callbackrs rrz6TestDerivative.test_maxiter_callback..callbacks MMQ MHL3$ $$= 4 44 LL  U366] +::!1!11 11}}'##(rrM)rrr^)r$rYr ranyr\rr_rKrr,rrkeysrr _ECALLBACK) rr*rr default_orderr,rkeyrrs @@rtest_maxiter_callbackz$TestDerivative.test_maxiter_callbacksF JJxrzzJ 2  Aw4U;KL66#++&&&vvchh-!"3w{Ao"EEFFFvvcgg())) $  u !Qd>NO88: BCh3x3==000CyCNN222CyHLL$5ASAAAAA  Brrrg?gffffff?r#)float16float32rYc0dk(r tstjdtj |}fd}fd}t ||d||}|j jk(sJ|jjk(sJ|jjk(sJjj}tr|dzd zn|dz} t|jj|j | y) Nrz+float16 not tested for alternative backendsr"cH|jk(sJj|Sr)r#rs)rr#r*s rrz$TestDerivative.test_dtype..f8s#77e# ##66!9 rc|jjk(sJ|jjk(sJ|jjk(sJyr)rr#r'r))r,r#s rrz+TestDerivative.test_dtype..callback<sE55;;%' ''66<<5( ((99??e+ ++rrD)r=rrr2r)rpytestskipr6r$r rr#r'r)finfoepsrrrs) rrrr#r*rrr,rrs `` r test_dtypezTestDerivative.test_dtype-s I hrl KKE FE" JJqJ &  , AQthOuu{{e###vv||u$$$yy%'''hhuo!! ( sCx"}#s(suu D9rc|jd}d}tjt|5t d|dddd}tjt|5t d|jddddd}tjt|5t d|jd d gdddd }tjt|5t d |t d dddtjt|5t d|t ddddtjt|5t d|t dddd}tjt|5t d|ddddtjt|5t d|ddddd}tjt|5t d|ddddtjt|5t d|ddddd}tjt|5t d |d!"dddd#}tjt|5t d$|d%&dddy#1swYxYw#1swYMxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swY^xYw#1swY8xYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)'Nr>z`f` must be callable.matchz3Abscissae and function output must be real numbers.c|Srrorps rrqz6TestDerivative.test_input_validation..Try?z6When `preserve_shape=False`, the shape of the array...c gdS)N)r>rErCrorps rrqz6TestDerivative.test_input_validation..Xsrrz6Tolerances and step parameters must be non-negative...c|Srrorps rrqz6TestDerivative.test_input_validation..\rrrMr4rc|Srrorps rrqz6TestDerivative.test_input_validation..^rrekkirc|Srrorps rrqz6TestDerivative.test_input_validation..`rrr%`maxiter` must be a positive integer.c|Srrorps rrqz6TestDerivative.test_input_validation..drr?rc|Srrorps rrqz6TestDerivative.test_input_validation..frrrz"`order` must be a positive integerc|Srrorps rrqz6TestDerivative.test_input_validation..jrrrHc|Srrorps rrqz6TestDerivative.test_input_validation..lrrz'`preserve_shape` must be True or False.c|Srrorps rrqz6TestDerivative.test_input_validation..prrherringrz`callback` must be callable.c|Srrorps rrqz6TestDerivative.test_input_validation..trr shrubbery)r)r$rraises ValueErrorr robject)rr*onemessages rtest_input_validationz$TestDerivative.test_input_validationJsjjm) ]]:W 5 " tS ! "H ]]:W 5 7 {BJJu$5 6 7K ]]:W 5 B *BJJBx,@ A BK ]]:W 5 C {CDbM B C ]]:W 5 G {CDf4E F G ]]:W 5 ? {CVX > ?: ]]:W 5 6 {C 5 6 ]]:W 5 4 {C 3 47 ]]:W 5 4 {Cs 3 4 ]]:W 5 2 {Cq 1 2< ]]:W 5 C {C B C1 ]]:W 5 ? {C+ > ? ?I " " 7 7 B B C C G G ? ? 6 6 4 4 4 4 2 2 C C ? ?s J<!K #K'K#$K0!K=L LL$9L1.L=#M <K KK #K-0K:=L LL!$L.1L:=M Mc fd}tsZt|jdtd}|jsJt |j jdtjjdj}t|j jjt|jjd j tjjdd }t|j jjt|jjd j td D]jdj }fd}dz|dz zz}t||dtd}t |j |dt|jjjj t||td}|jsJ|j dk(sJt |j |dd}t|jdjd}t |j jdy)NcPj|jdsJ|dzdz S)Nz real floatingcr>)isdtyper#rxs rrz,TestDerivative.test_special_cases..f{s)::agg7 777Q; rr3rrgl)~IQr>rrr"rrr?rcd|zzSNrEro)rrRs rrz,TestDerivative.test_special_cases..fsAv rrE)rr=rrHc||zdz Srro)rcs rrz,TestDerivative.test_special_cases..fsQ37NrrC)rPg@)rr r$rr\rr'rsr{rr^r]rrYr`r)rK)rr*rr,rr-rRs ` @rtest_special_casesz!TestDerivative.test_special_casesvs  |Q 1 $E:JKC;; ; CFFBJJy$9 :ArvvF 266 23 BJJrJ$BCAQ? 266 23 BJJrJ$BCq 5A 3bjj 1A A#a!A#h,CQ1C1I>C CFFCe 4 CIIrzz"&& z'K LQQ3C;; ;77a< < CFFCe 4 5" BJJqM 1 > 2/rc|dz dzS)Nr>rCrorps rrqzTestDerivative.sAEa<rcNtj|dkD|dz dz|dz dzS)Nr>rC)rUwhererps rrqzTestDerivative.s'288AEAEarcd}t|gd|d}tj|jsJt |j d|y)NgؗҜ #% >,$BL [[VZ0 [[S4$"56 [[W&GH:I71:4*?X30l [[!!$!/ [[ [[V # >B&. 0 .rrceZdZdZy)JacobianHessianTestc|jj}d}tjt|5||j dt dddd|jd}tj}d}tjt|5|||t ddddtjt|5|||t d dddtjt|5|||d dddd }tjt|5|||d dddd }tjt|5|||ddddy#1swY1xYw#1swYxYw#1swYxYw#1swYxYw#1swYlxYw#1swYyxYw)Nz"Argument `x` must be at least 1-D.rr>rMr4rrCzr#)rrYrN)ro)r?)rErCr(c|dk(rdnd}t|}tjjd}j\}}|j|f|z} t fdj | |} j tj j| |} t| j| |y) NrYr3ghUM`?6H2)rNc|Srro)rr(r*s rrqz,TestJacobian.test_examples..3s a"rr"r4) r6rUrtrmnr r$r-rr') rr#rNr(r*r5rumrRrr,r-s `` r test_exampleszTestJacobian.test_examples*s*uE"ii##L1ww1 JJQD4KJ (-rzz!5z/IJjjDHHQK0j>$/rc H jddgfd}fd fd t|d}tsHtj|j dk(sJtj|j dk(sJt fd d d d}t fd d d d}t fdd d d}t fdd d d}tj}dD]} jt|| t|| gt|| t|| gg} j| tdt| jD|| <|| jjk(rdnd} t!|| || | y)Nr?c|\}}jjd|zj|zjd|z|dzzgS)NrrEr4)r/rrr*s rr2z$TestJacobian.test_attrs..df1>sNDAq88RVVCE]RVVAY6qs ad8JKL LrcPjd|zj|zS)Nr)rrs rdf1_0xyz(TestJacobian.test_attrs..df1_0xyBs"66#a%=266!9, ,rc8jd|z|dzzSr)rrs rdf1_1xyz(TestJacobian.test_attrs..df1_1xyEs66!A#;A% %rrr rDc|dSrro)rr[r/s rrqz)TestJacobian.test_attrs..N71ad#3rrr>cd|SNrro)rr[r/s rrqz)TestJacobian.test_attrs..O71Q4#3rrEc|dSrro)rr]r/s rrqz)TestJacobian.test_attrs..Pr_rcd|Sraro)rr]r/s rrqz)TestJacobian.test_attrs..Qrbr)r\r^r'rKr_c32K|]\}}|dk(s |yw)r>Nro).0axrNs r z*TestJacobian.test_attrs..XsU("d4ST92Us )axisgiUMu>gt=r)r$r rrnuniquerKr_r OptimizeResultr6squeezer  enumerater@r#rr)rr*r2r,res00res01res10res11r-attrref_attrrr[r]r/s ` @@@r test_attrszTestJacobian.test_attrs8s JJT{ # M - &sAB/|;;sww'1, ,,;;sxx(A- --3QqV"M3QqV"M3QqV"M3QqV"M%%'> =DzzGE4$8'%:N#O$+E4$8'%:N#O#QRH Ui.GUU#CI!Y__ :6D CIs4yt < =rc tjjd}|jd d fd}gd}gd}ddi}t|j j ||| }j t j j }t|j|d jj|sJy) Nl]2ZVrCgHz>c"tj|d|ddkfjj}tj|d|dddzkDfjj}tj|d|ddkDfjj}tj|d|dddz z kfjj}tj |S)NrrXr>r2)rrrr{r+rL)rbrr*s rrz0TestJacobian.test_step_direction_size..fdsq !QqTAaD[.)--bff5Aq !QqTAaD4K//044RVVrMr)rXr2rr5:0yE>r")rrrr4) rUrtrr r$rYr+rNrr'risfinite) rr*rurdirrr5r,r-rwrs ` @@rtest_step_direction_sizez%TestJacobian.test_step_direction_size]sii##N3 JJqM * ~q"**Qbjj*9&)d<jj))!,BJJj?$/vvbkk#&'''rN)rrrr r%r0r2rTr-r7r9r<r>rErJrLrNr'r rosen_derrrrrVrtr{rorrr+r+sG 9F BE BF<0 BE BF+ C BE BFM8 BE BFN# BE BF-EH""EI [[W&<= [[V%78 [[Vb"b"b%%@A 0B9> 0#=J(rr+ceZdZeZej jdgddZdZ dZ ej jej jddd Z y ) TestHessianr@)ro)rD)rErDc8tjjd}d}|j|j|f|z|j}t t j|}|r{|j||df}|j|jDcgc]}t j|c}}|j|dd}|j|||f|z}nt j|}t|j|dycc}w)NrRrCr"rMrrxr4)rUrtrr$rYr r r'rWr~T rosen_hessmoveaxisrddf) rr@r*rurUrr,xir-s r test_examplezTestHessian.test_examplezsii##L1  JJszz1$,/rzzJ Bhnna(  1q"g&A((accBH//3BCC++c1b)C**S1a'E/2C%%a(C40 CsDctjjd}|j|jd|j}t t j|}t j|}|dk7}t|j|||d|j|j||z}t|j||||y)NrRrCr"rg{Gz?r4) rUrtrr$rr r r'rrrr(min)rr*rurr,r-maskr5s r test_float32zTestHessian.test_float32sii##L1 JJszz!}BJJJ 7hnna(!!!$q s4y1bffRVVCI.//TE >rcjddgfdd_td}d_tfdddd}|jd jcxk(r|jd k(sJJd_tfd dd d}|jd jcxk(r|jd k(sJJy) NrrXcj|\}}j|jdkDr"tj|j ddndz_j ||dzzS)NrEr>rC)broadcast_arraysr_rOmathprodr@r)r/rrr0r*s rr0z!TestHessian.test_nfev..f1s_&2&&*DAqgg166A:17712;!71MBG66!9qAv% %rrrr c$|ddgS)Nrr>ro)rr0r/s rrqz'TestHessian.test_nfev.."adAaD\"2rr>)rrc$d|dgSraro)rr0r/s rrqz'TestHessian.test_nfev..rrrE)r>r>)r$r_r )rr*r,rnrqr0r/s ` @@r test_nfevzTestHessian.test_nfevs JJT{ # &b!"-2AaFLxx~ ? ? ?s $A  AN)rrrr r%rrrrrr thread_unsaferrrorrr~r~usxG [[W&89 1: 1&?=0 [[ [[!!$)O"Q?Q?rr~)#rrnumpyrU(scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodrscipy._lib.array_api_extraarray_api_extrarscipy._lib._array_api_no_0drrrscipy._lib._array_apirrscipyrr r scipy.differentiater r r "scipy.differentiate._differentiaterarray_api_strict_skip_reasonrrrr#r+r~rorrrs: 66((XX4**==>V09UVl3PQe.e.RWe.P ))<09UVl3PQV(&V(RWV(r09UVl3PQ??%??RW??r