L i-zdZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddlm Z ddlZddlmZmZddlmZddlmZmZddlmZdd lmZmZmZdd lmZdd lm Z Gd d Z!dZ"dZ#dZ$dZ%dZ&GddZ'GddZ(GddZ)GddZ*GddZ+GddZ,Gdd Z-y)!z7 Unit tests for optimization routines from minpack.py. N)assert_assert_almost_equalassert_array_equalassert_array_almost_equalassert_allclose assert_warnssuppress_warnings)raises)arrayfloat64) ThreadPool)optimizelinalg)lambertw)leastsq curve_fit fixed_point)OptimizeWarning)BoundsceZdZdZdZdZy) ReturnShapezThis class exists to create a callable that does not have a '__name__' attribute. __init__ takes the argument 'shape', which should be a tuple of ints. When an instance is called with a single argument 'x', it returns numpy.ones(shape). c||_yN)shape)selfrs g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_minpack.py__init__zReturnShape.__init__s  c@tj|jSr)nponesr)rxs r__call__zReturnShape.__call__!swwtzz""rN)__name__ __module__ __qualname____doc__rr#rrrrs #rrc,tj|S)zUA function that returns an array of ones of the given shape. `x` is ignored. )r r!)r"rs r dummy_funcr*%s 775>rc|tt|5}|jd|cdddS#1swYyxYw)Nc|Srr()fs rz#sequence_parallel...s!#r)r lenmap)fspools rsequence_parallelr3,s3 CG +xx r*+++s2;cx||dzz}tj|dd|dz |j|z f}|S)aEvaluate non-linear equation system representing the pressures and flows in a system of n parallel pipes:: f_i = P_i - P_0, for i = 1..n f_0 = sum(Q_i) - Qtot where Q_i is the flow rate in pipe i and P_i the pressure in that pipe. Pressure is modeled as a P=kQ**2 where k is a valve coefficient and Q is the flow rate. Parameters ---------- flow_rates : float A 1-D array of n flow rates [kg/s]. k : float A 1-D array of n valve coefficients [1/kg m]. Qtot : float A scalar, the total input flow rate [kg/s]. Returns ------- F : float A 1-D array, F[i] == f_i. Nr)r hstacksum) flow_ratesQtotkPFs rpressure_networkr>5sD4 JMA 1QR51Q4<!1D!89:A Hrc.t|}tj|dddz|ddzd|dz|dzz }tj||f}|dz|d|dz d|dz f<d|d|dz |dz f<tj|||dz ddf<|S)aReturn the jacobian of the equation system F(flow_rates) computed by `pressure_network` with respect to *flow_rates*. See `pressure_network` for the detailed description of parameters. Returns ------- jac : float *n* by *n* matrix ``df_i/dQ_i`` where ``n = len(flow_rates)`` and *f_i* and *Q_i* are described in the doc for `pressure_network` r6Nr5r)r/r diagemptyr!)r9r:r;npdiffjacs rpressure_network_jacobianrETs JA GGJqrNQ&12.Z]1BQqT1II JE ((Aq6 CaiC1dqsd OC1ac N''!*C!QK Jrc6t|||t|||fSr)r>rE)r9r:r;s rpressure_network_fun_and_gradrGks$ Zq 1 %j$ : <rr!r)rr;r: initial_guess final_flowsinfoiermesgs r!test_pressure_network_no_gradientz,TestFSolve.test_pressure_network_no_gradientqsh GGAsO./ '/ m4)($ T3 "+rwwqz:q$rctjdd}d}tgd}tjt |||ft }t|tjdy)NrKrLrMrQfprime) r rSr rrTr>rErr!rr;r:rUrVs r#test_pressure_network_with_gradientz.TestFSolve.test_pressure_network_with_gradient|sQ GGAsO./ oo m4),.  "+rwwqz:rcbtd}ddg}tttj||yNr6?rNr assert_raises TypeErrorrrTrfuncx0s rtest_wrong_shape_func_callablez)TestFSolve.test_wrong_shape_func_callables(1~3Zi$;rcXddg}tttjt|dyNrbrN)r6rQ)rdrerrTr*rrhs rtest_wrong_shape_func_functionz)TestFSolve.test_wrong_shape_func_functions!3Zi*bwOrcxtd}td}tttj|ddg|y)Nr6r5r5rrhr]rcrrg deriv_funcs r test_wrong_shape_fprime_callablez+TestFSolve.test_wrong_shape_fprime_callables-1~ ' i$Aa5TrcXd}d}tttj|ddg|y)Nct|dSN)r5r*r"s rrgz9TestFSolve.test_wrong_shape_fprime_function..funca& &rct|dSN)r~ryrzs rrtz?TestFSolve.test_wrong_shape_fprime_function..deriv_funca( (rrr6rr)rdrerrTrss r test_wrong_shape_fprime_functionz+TestFSolve.test_wrong_shape_fprime_functions$ ' )i$Aa5Trcd}ttd5tj|dgdddy#1swYyxYw)NctdNI raised ValueErrorrms rrgz,TestFSolve.test_func_can_raise..func Z( (rrmatchrrhrdrrrTrrgs rtest_func_can_raisezTestFSolve.test_func_can_raises8 ):Z 8 * OODaS ) * * * 7Acd}d}ttd5tj|dg|dddy#1swYyxYw)Nc4|tjdgz SN r r rzs rrgz,TestFSolve.test_Dfun_can_raise..funcrxx~% %rctdrrrms rrtz2TestFSolve.test_Dfun_can_raise..deriv_funcrrrrrrrrrss rtest_Dfun_can_raisezTestFSolve.test_Dfun_can_raises? & ):Z 8 = OODaS < = = = ;Acd}tj|tjddgtj}t ||ddgdy)Ncntj|ddz |ddz gtjdzS)Nrdr6dtyper5)r r float32rzs rrgz%TestFSolve.test_float32..funcs188QqTCZ15RZZHAM Mrr6rMbP?atol)rrTr r rr)rrgps r test_float32zTestFSolve.test_float32s? N OOD"((Aq62::"> ?Q!Qd3rcfd}tjdd}d}tgd}tj||||fd\}}}}t |tj dt|dk(|y)Nc4jt|Sr)rZr>rQrs rrgz,TestFSolve.test_reentrant_func..funcs  2 2 4#T* *rrKrLrMTrPr6)r rSr rrTrr!r) rrgr;r:rUrVrWrXrYs ` rtest_reentrant_funczTestFSolve.test_reentrant_funcsp + GGAsO./ '/ -tQi($ T3 "+rwwqz:q$rcfd}tjdd}d}tgd}tjt |||f|}t |tjdy)Nc4jt|Sr)r_rErs rrtz3TestFSolve.test_reentrant_Dfunc..deriv_funcs  4 4 6,d3 3rrKrLrMr\)r rSr rrTr>rr!)rrtr;r:rUrVs` rtest_reentrant_DfunczTestFSolve.test_reentrant_DfuncsY 4 GGAsO./ oo m4)  "+rwwqz:rczt|jgdz}t|Dcgc]}|duc}sJycc}wr)r3rZallrvresults rtest_concurrent_no_gradientz&TestFSolve.test_concurrent_no_gradients: tEEFK L3vFdN34443 8czt|jgdz}t|Dcgc]}|duc}sJycc}wr)r3r_rrs rtest_concurrent_with_gradientz(TestFSolve.test_concurrent_with_gradients: tGGH2M N3vFdN34443rN)r$r%r&rZr_rirorurrrrrrrrr(rrrIrIpsF  ;<P U U*=4   ;55rrIceZdZdZdZdZy) TestRootHybrctjdd}d}tgd}tjt |d||fj }t|tjdy)NrKrLrMhybrmethodrQ r rSr rrootr>r"rr!r^s rrZz.TestRootHybr.test_pressure_network_no_gradientsX GGAsO./ mm$4m+1q CCD1 !+rwwqz:rctjdd}d}tgdg}tjt |||fdt j}t|tjdy)NrKrLrMrrQrrD) r rSr rrr>rEr"rr!r^s rr_z0TestRootHybr.test_pressure_network_with_gradients` GGAsO/01 mm$4m*.6(ACCD1  "+rwwqz:rctjdd}d}tgd}tjt |||fddj }t|tjdy)NrKrLrMrTr) r rSr rrrGr"rr!r^s r,test_pressure_network_with_gradient_combinedz9TestRootHybr.test_pressure_network_with_gradient_combineds^ GGAsO./ mm$A$1q +1t==>Q  "+rwwqz:rN)r$r%r&rZr_rr(rrrrs;; ;rrceZdZdZy) TestRootLMctjdd}d}tgd}tjt |d||fj }t|tjdy)NrKrLrMlmrrr^s rrZz,TestRootLM.test_pressure_network_no_gradientsX GGAsO./ mm$4m+/tQiAAB !+rwwqz:rN)r$r%r&rZr(rrrrs;rrcfeZdZdZdZej jdgddZdZ y)TestNfevc6tj|_yr) threadinglocalnfevrs r setup_methodzTestNfev.setup_methodsOO% rct|jdsd|j_|jxjdz c_|dzdz S)Ncrr6r5r~)hasattrrr)rys rzero_fzTestNfev.zero_f s:tyy#&DIIK q !tAv rr) rrbroyden1broyden2anderson linearmixing diagbroydenexcitingmixingkrylovzdf-sanecd|j_tj|jd|}|j|jjk(sJy)Nrrr)rrrrr)rrsolutions rtest_root_nfevzTestNfev.test_root_nfevs?  ==c&A}} +++rcd|j_tj|jdd\}}}}|d|jjk(sJy)NrrT)rRr)rrrrTr)rr"rWrXrYs rtest_fsolve_nfevzTestNfev.test_fsolve_nfevsF %__T[[#4P4dF|tyy{{***rN) r$r%r&rrpytestmark parametrizerrr(rrrrs;&  [[X(34 , 4 , +rrc~eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZy) TestLeastSqc(tjddd}d\}}}||_|||f|_||dzz||zz|z}tjj d|dtjj |jzz|_y)Nrr()g@*g33333sr5g{Gz?) r linspacer"abcrandomseedstandard_normalry_meas)rr"abry_trues rrzTestLeastSq.setup_method"s KK2r "!AQq51a4!A#! qtBII$=$=fll$KKK rc:|\}}}|||dzz||zz|zz }|SNr5r()rrrr"rrrerrs r residualszTestLeastSq.residuals+s1!A1a4!A#!" rcttj|dz|tj|gj Sr)r vstack ones_likeT)r_p_yr"s rresiduals_jacobianzTestLeastSq.residuals_jacobian0s- 1a4BLLO457777rctgd}t|j||j|jf\}}t |dvd|dt ||jdy)Nrrrrmr6r5r~rKsolution not found (ier=)r5decimalr rrrr"rrrrp0 params_fitrXs r test_basiczTestLeastSq.test_basic3sZ 7^!$.."(, TVV'<> C|#'?uA%FG!*dhhBrctgd}t|j||j|jf|j \}}t |dvd|dt||jdy)NrrQDfunrrrr5r) r rrrr"rrrrrs rtest_basic_with_gradientz$TestLeastSq.test_basic_with_gradient;sf 7^!$.."(, TVV'<'+'>'>@ C |#'?uA%FG!*dhhBrctgdg}t|j||j|jfd}|\}}}}}t |dvd|y)NrTrPrsolution not found: )r rrrr"r)rrrRrcov_xinfodictrYrXs rtest_full_outputzTestLeastSq.test_full_outputDs\ G9 dnnb$(KK#8*.0 2=. E8T3y $8"?@rctgdt}t|d}t|j||j|j fd}|\}}}}}t |dvd|t||y)NrrT)copyrPrr )r r rrrr"rr) rrp0_copyrRrr r rYrXs rtest_input_untouchedz TestLeastSq.test_input_untouchedLsr 7 )&dnnb$(KK#8*.0 2=. E8T3y $8"?@2w'rcbtd}ddg}tttj||yrarrdrerrrfs rriz*TestLeastSq.test_wrong_shape_func_callableVs*1~3Zi!1!14.funcir{rct|dSr}ryrzs rrtz>TestLeastSq.test_wrong_shape_Dfun_function..deriv_funckrrrr6rrdrerrrss rtest_wrong_shape_Dfun_functionz*TestLeastSq.test_wrong_shape_Dfun_functionhs& ' )i!1!14QqE Src d}tjgdtj}tjgdtj}tjgd}tj||||f\}}t |dvt ||||dzj d ||||dzj zky) Ncz|dtj||dz dz d|ddzzz z|dz}||z S)Nrr6r5rNr~r exp)rr"rqs rrgz&TestLeastSq.test_float32..funcqsJ!RVVa!fq[L#adAg+677!.funcrrrrrrrdrrrrs rrzTestLeastSq.test_func_can_raises: ):Z 8 +   Tqc * + + +rcd}d}ttd5tj|dg|dddy#1swYyxYw)Nc4|tjdgz Srrrzs rrgz-TestLeastSq.test_Dfun_can_raise..funcrrctdrrrms rrtz3TestLeastSq.test_Dfun_can_raise..deriv_funcrrrrrrr(rss rrzTestLeastSq.test_Dfun_can_raisesA & ):Z 8 <   Tqc ; < < .funcs OO !4>>4( (rrrmrrrr5r)r rrr"rrr)rrgrrrXs` rrzTestLeastSq.test_reentrant_funcs^ )7^!$(, TVV'<> C|#'?uA%FG!*dhhBrcfd}tgd}tj|jjf|\}}t |dvd|dt |jdy) NcBjj|Sr)rrrs rrtz3TestLeastSq.test_reentrant_Dfun..deriv_funcs OO *4**D1 1rrrrrrr5rr)rrtrrrXs` rtest_reentrant_DfunzTestLeastSq.test_reentrant_Dfunsg 27^!$.."(, TVV'<'13 C |#'?uA%FG!*dhhBrczt|jgdz}t|Dcgc]}|duc}sJycc}wr)r3rrrs rrz'TestLeastSq.test_concurrent_no_gradients8 t/"4 53vFdN34443rczt|jgdz}t|Dcgc]}|duc}sJycc}wr)r3r rrs rrz)TestLeastSq.test_concurrent_with_gradients: t<<=B C3vFdN34443rcd}ttd5tj|ddgdddy#1swYyxYw)Nc$d|ddz dzzdzS)Nr5rr~r6r(rzs rrgz=TestLeastSq.test_func_input_output_length_check..funcs!qQ&* *rz+Improper input: func input vector length N=rrr6rrrs r#test_func_input_output_length_checkz/TestLeastSq.test_func_input_output_length_checks@ +9!NP .   Tq!f - . . .s 8AN)r$r%r&rrrrr rrrirorrrrrrr0rrr5r(rrrr!skL 8CCA(=Q T TJ +< C C55.rrc$eZdZdZdZdZdZdZdZdZ e jjdZ d Zed Ze jj#d gd d Ze jj#d gd dZe jj#dddge jj#d gd dZdZdZdZdZdZdZdZdZdZe jj#dgddZdZd Z e jj#d!d"d#gd$Z!d%Z"d&Z#d'Z$d(Z%d)Z&e jjOd*d+Z(d,Z)d-Z*e jj#d d.d/gd0Z+y1)2 TestCurveFitcLtgd|_tgd|_y)N)r#g @#@gffffff+@)r#rN@g@)r rr"rs rrzTestCurveFit.setup_methods,-+,rcdd}t||j|j\}}tt |dk(t|j dk(t |dddt |dd dt||j|jdd }|\}}}}} t||y) Nc ||zSrr(r"rs rrgz,TestCurveFit.test_one_argument..func a4Krr6)r6r6rg3ı.n?rKr)rrg-C6Z?F)rR check_finite)rr"rrr/rrr) rrgpoptpcovrespopt2pcov2r errmsgrXs rtest_one_argumentzTestCurveFit.test_one_arguments tTVVTVV4 dD Q e#$DGVQ7DIvq9dffdff$%E;03-x!$.rcd}t||j|j\}}tt |dk(t|j dk(t |ddgdt |dd gd d ggdy) Nc|||zzSrr(r"rrs rrgz,TestCurveFit.test_two_argument..funcsQT6Mrr5rqc]K? -?rKr䃞ͪϵ?T㥛 b=y?)rr"rrr/rr)rrgr@rAs rtest_two_argumentzTestCurveFit.test_two_argumentsq tTVVTVV4 dD Q e#$!$(8!D!$&'):Wf.test_selfzThis class tests if curve_fit passes the correct number of arguments when the model function is a class instance method. c|||zzSrr()rr"rrs rrgz=TestCurveFit.test_func_is_classmethod..test_self.funcs1a4xrN)r$r%r&r'rgr(rr test_selfrRs   rrTrqrJrKrKrrLrMrN)rrgr"rrrr)rrTtest_self_instr@rAs rtest_func_is_classmethodz%TestCurveFit.test_func_is_classmethodsu  #~22DFFDFFC d e#$!$(8!D!$&'):Wf.f_double_gausssdrvv"qyj"UAX+677!B$ BuaxK 899:<=> ?ri'maxfevgh㈵>rtol)rr)rr"rguessgoodr_r@rAs rtest_regression_2639z!TestCurveFit.test_regression_2639sG  #// ?~q!U5I dd.rc tjgd}tjgd}tjgd}d}dD]C}t|||ddg||\}}tjtj|}t |d d gd t|||ddgd |z|\}}tjtj|}t |d d gd t|||ddg|d|\}}tjtj|} t | ddgd t|||ddgd |zd|\}}tjtj|} t | ddgd Fd} tjtj gdzjdd} t5} | jtdt| ||ddg|\}}t||dd|ddddg\} }dddtjdk(t|| tjdk(t|| y#1swYRxYw)N)rr6r5r~rK)r6r6rh )r6r5r6r5r6r5c||z|zSrr(rIs rr-z!TestCurveFit.test_pcov..fQ37Nrrtrfdogboxr5r)rr^rgN"q?g~uM/N?rrbr~T)rr^absolute_sigmargO=N?g5=`6?g[u|?g-/i@c ||zSrr(rIs rf_flatz&TestCurveFit.test_pcov..f_flats Q3JrrKz3Covariance of the parameters could not be estimatedrr^rrq)r r rsqrtr@rinfreshaper filterrrrr)rxdataydatar^r-rr@rA perr_scaledperrrs pcov_expectedsuppopt1pcov1s r test_pcovzTestCurveFit.test_pcovsB+,,-+, . KF"1eU1vU*02JD$''"''$-0K K*j)A M"1eU1vQuW*02JD$''"''$-0K K*j)A M"1eU1vU26vGJD$772774=)D D:z": F"1eU1vQuW26vGJD$772774=)D D<">T J' K. "&&!,44Q:   IC JJL N"65%QF%PJD$$Qbq 5!9!QHLE5  I  f$%4/ v%&5-0 I Is AI--I6cVd}gd}gd}tt|||dddgdy) Nc||z|zSrr(rIs rf_linearz.TestCurveFit.test_array_like..f_linear/rmrr)r~rhri rr5r6g|=r)rr)rrr"rs rtest_array_likezTestCurveFit.test_array_like-s1    (Aq1!4q!f5Irctjgd}tjgd}tttd||y)N)r6r5r~rKrh)r6r5r~rKg@rc ||zSrr(rIs rr.z.<s QqSr)r r rrrrrzr{s rtest_indeterminate_covariancez*TestCurveFit.test_indeterminate_covariance6s5+,-._i(% 8rctjdtjdg}tjgd}ttt d||ttt d||ttt d||fiddiy) Nr6r~r6r5r~c||z|zSrr(rIs rr.z0TestCurveFit.test_NaN_handling..FacAgrc||z|zSrr(rIs rr.z0TestCurveFit.test_NaN_handling..Hrrc||z|zSrr(rIs rr.z0TestCurveFit.test_NaN_handling..JsQqS1Wrr?T)r r nanrdrrrs rtest_NaN_handlingzTestCurveFit.test_NaN_handling>ss!RVVQ(#j)-ue =j)-ue = j)-DU >'5t&< >rc||||dd}d}tt|5tdi|ddddddttd5tdi|d d idddtdi|d d i\}} ||d <||d <tdi|\} } t|| d}tt|5tdi|d didddy#1swYxYw#1swYwxYw#1swYyxYw)NF)r-rzr{rr?z;`nan_policy='propagate'` is not supported by this function.r propagatei) nan_policyrazThe input contains nanrraiseomitrzr{zTnan_policy must be one of \{(?:'raise'|'omit'|None)(?:, ?(?:'raise'|'omit'|None))*\}hir()rdrrr) r-xdata_with_nanxdata_without_nanydata_with_nanydata_without_nanrkwargs error_msgresult_with_nan_result_without_nans r_check_nan_policyzTestCurveFit._check_nan_policyMs >N"E;) :Y 7 E  D D;t D E:-E F 4  3 37 3 4'CCFC+w+w ) 3F 3A);<: :Y 7 1  0 04 0 1 1% E E 4 4 1 1s#CC 'CC  CC!rrncRd}tjddtjddtjg}tjddddtjdg}tjgd}tjgd }|j||||||y) Nc||z|zSrr(rIs rr-z*TestCurveFit.test_nan_policy_1d..flrmrr5r~rKr6rhri)r5r~rKrr r rrrrr-rrrrs rtest_nan_policy_1dzTestCurveFit.test_nan_policy_1djs 1aArvv">?1aArvvq"9:HHY/HHY/ q.2C-/@& Jrc d}tjddtjddtjdgddtjtjdtjdgg}tjddddtjddg}tjgd gd g}tjgd }|j||||||y) Nc<|dddf}|dddf}||z|z|zSNrr6r(r"rrr[x2s rr-z*TestCurveFit.test_nan_policy_2d..fys.1a4B1a4BR4!8b= rr5r~rKrhrir6rr5r~rhr5r~rir6r5rrrs rtest_nan_policy_2dzTestCurveFit.test_nan_policy_2dws ! Aq"&&!Q#B$%q"&&"&&!RVVQ#G#IJ1aArvvq""=>HHi%;<HHZ0 q.2C-/@& JrrBr5r~c d}tjddtjddtjdgddtjtjdtjdggg}|dk(r|jn|}tjddddtjddg}tjgd gd gg}tjgd }|j ||||||y) Ncx|ddddfj}|ddddfj}||z|z|zS)N.rr6)squeezers rr-z,TestCurveFit.test_nan_policy_2_3d..fsD319%%'B319%%'BR4!8b= rr5r~rKrhrir6rrrr)r r rrr)rrBrr-rrrrs rtest_nan_policy_2_3dz!TestCurveFit.test_nan_policy_2_3ds ! Q2661a$C$%q"&&"&&!RVVQ#G$I#JK56!V//11aArvvq""=>HHy)&<%=>HHZ0 q.2C-/@& Jrctttdggtttdggdtttddggtttddggdy) Nc ||zSrr(r=s rr.z0TestCurveFit.test_empty_inputs.. !A#rc ||zSrr(r=s rr.z0TestCurveFit.test_empty_inputs..rr)r6r5)boundsc ||zSrr(r=s rr.z0TestCurveFit.test_empty_inputs..rrr6c ||zSrr(r=s rr.z0TestCurveFit.test_empty_inputs..rrr5rdrrrs rtest_empty_inputszTestCurveFit.test_empty_inputssTj)-=r2Fj)-=r2# %j)-=sBGj)-=sB# %rc<tttdddgddgy)Nc|Srr(rzs rr.z8TestCurveFit.test_function_zero_params..sqrr6r5r~rKrrs rtest_function_zero_paramsz&TestCurveFit.test_function_zero_paramssj)[1a&1a&Ircltdddtjdz\}}t|dgy)Nc2|tjdzSr)r arange)rrs rr.z*TestCurveFit.test_None_x..sA " ,=rr5rrN)rr rr)rr@rAs r test_None_xzTestCurveFit.test_None_xs1=#Q2%68 drd#rcd}tjddd}||dd}dD]"}t||||\}}t|ddg$t t t|||dy) Nc:|tj| |zzSrr rIs rr-z,TestCurveFit.test_method_argument..frvvqbd|# #rrr6 rNrorprNrunknown)r rrrrdr)rr-rzr{rr@rAs rtest_method_argumentz!TestCurveFit.test_method_argumentsn $ Aq"%%R 3 ,F"1eU6BJD$ D2r( + , j)QuYOrcd}tjddd}||dd}dD]c}t||||d\}}}}} t|ddgd |vsJd |vsJ|d k(s|d |vsJd |vsJd|vsJt |t sJ| dvrcJy)Nc:|tj| |zzSrr rIs rr-z(TestCurveFit.test_full_output..fsrvvqb1f~% %rrr6rrNrT)rrRrfvecrfjacipvtqtfr)r rrr isinstancestr) rr-rzr{rr@rAr rErXs rrzTestCurveFit.test_full_outputs & Aq"%%R 3 'F095%D1B -D$&# D2r( +X% %%X% %%~))))))(((fc* **,& && 'rc d}tjddd}||dd}ddg}ddg}||f}t||}d D]C}t||||| \} } t | ddt||||| \} } t | | Et|||d d dgd tj gf\} } t | dd t tt||||d y)Nc:|tj| |zzSrr rIs rr-z#TestCurveFit.test_bounds..frrrr6rrNr#rbr:)Nrorp)rrrorOg333333?)rrr)r rrrrrwrdr) rr-rzr{lbubr bounds_classrr@rA popt_class pcov_classs r test_boundszTestCurveFit.test_boundss $ Aq"%%R !W2Ybb"~ - .F"1eU6*02JD$ DGS )%.q%6B6<&> "J  J - .q%u(*Awbff &>@ dQ% j)QuV! #rc d}tjdtjzdtjzd}tj|}dtjzdtjzf}dD]V}t |||dtjz \}}t |||dtjz|| \}}t ||Xy) Nc2tj||zSr)r sinr=s rr-z&TestCurveFit.test_bounds_p0..fs66!a%= rr5rr~rorpg@rurrr)r rpirrr) rr-rzr{rrpopt_1rpopt_2s rtest_bounds_p0zTestCurveFit.test_bounds_p0s ! BruuHagr2u ruu*a"%%i(' ,F!!UEc"%%i@IFA!!UEc"%%i)/@IFA FF +  ,rc d}d}tjddd}||dd}dD]*}dD]#}t||||| \}}t|d d g%,d D]#}t||||| \}}t|d d g%d |d<tj|j d} d| d<d D]&}t|||| ||\}}t|d d gd(y)Nc:|tj| |zzSrr rIs rr-z TestCurveFit.test_jac..frrctj| |z}tj|| |z|zfjSrr r!rrr"rres rrDz"TestCurveFit.test_jac..jac8r!t A99a!a!_-// /rrr6rrNr)z2-pointz3-pointcs)rDrr5rnrrDrrh)r^rrDrrb)r rrrr!r) rr-rDrzr{rschemer@rAr^s rtest_jaczTestCurveFit.test_jacs $ 0 Aq"%%R ( .F6 .&q%F.46 dq!f- . .. *F"1eU6sKJD$ D1a& ) * a A'a- 5F"1eU%'*,JD$ D1a&t 4  5rctjdd}d|z}td||dd\}}td||dd \}}t|dd t|dd y) Nrrr5c ||zSrr(r"rs rr.z5TestCurveFit.test_maxfev_and_bounds..( 1r)rr~r)rrac ||zSrr(rs rr.z5TestCurveFit.test_maxfev_and_bounds..)rr)rmax_nfev+=r)r rrr)rr"rrrrCs rtest_maxfev_and_boundsz#TestCurveFit.test_maxfev_and_bounds#sa IIa  aC_a6#Nq_a6CPqqu-qu-r sigma_dim)rr6r5cd}tjjd}d}tjdd|}||dd}|dk(rd }||j d||z }nz|dk(r|d z}||j d||z }nY|d k(rM|j dd ||f}||j z}||j tj||z }nJd d d g} |j|d} |j|d} tj|| <tj|| <t|||| |d\} } tjtj| | f}tj||d}tj||d}tj|}|jdk(rtj||}n?|jd k(r0tj||d}tj||d}t|||| |\}}t!| |dt!| |dy)Nc8|tj||zzSrr rIs r exponentialz7TestCurveFit.test_curvefit_omitnan..exponential0srvva!e}$ $rllt*G7rr6r皙?rLrg?r5z1The sigma must be a scalar, 1D array or 2D array.g?r#rhsizer)rr^r)axisrtrr)r r default_rngrnormalrmultivariate_normal zeros_likeintegersrrunique concatenatedeleteasarrayndimr)rrrrngNr"rr^rri_xi_yres_optres_covi_deleteref_optref_covs rtest_curvefit_omitnanz"TestCurveFit.test_curvefit_omitnan.s %ii##O4  KK2q ! 3 $ NE Aua( (A1nHE Aua( (A1n 1a!Q(AGE ((q)95A AA MM M53Zll11l%ll11l%##$[!Q2U068 99R^^S#J78 IIa * IIa * 5! ::?IIeX.E ZZ1_IIeXA6EIIeXA6E$[!Q2UKu5u5rc d}d}tjjdtjddd}||dd}|dtjj t | zz}tj t |dz}tj|d z}||fd fD]P\}} d D]F} t|||||| \} } t||||| | \} }t| | dt| |dHRy)Nc:|tj| |zzSrr rIs rrgz9TestCurveFit.test_curvefit_simplecovariance..funcgrrctj| |z}tj|| |z|zfjSrrrs rrDz8TestCurveFit.test_curvefit_simplecovariance..jacjrrrrK2@?rrr5NNFTr^rDrqrr) r rrrrr/zerosr@rr)rrgrDrzrr{r^covarjac1jac2rqrrrCrDs rtest_curvefit_simplecovariancez+TestCurveFit.test_curvefit_simplecovariancees  $ 0 q Aq"% S !C"))**E *;;;U$s*q!:|4 :JD$"/ :(ue5  A u(ue5  A u u59u59 : :rc jd}d}d}d}tjjd}tjdd}||dd }|d |j t | zz}tj t |d z} tj| d z} tjd tjd z d tjd z dgd tjd z d tjd z dggdg} | j|} | j| j| j} ||fdfD]R\}}dD]H}t|||| ||\}}t||| | ||\}}t||ddt||ddJTy)NcHtjdtjdz dtjdz dgdtjdz dtjdz dggdg}|j|tj| |zzSNr#r5rrrr#)r r rvdotr!)r"rrrotns rfuncpz4TestCurveFit.test_curvefit_covariance..funcps88bmS^Q? mR ]A>(*+D88Ar!t ,- -rctjdtjdz dtjdz dgdtjdz dtjdz dggdg}tj| |z}|j tj || |z|zfj Sr))r r rvr!r,rr)r"rrr-rs rjacpz3TestCurveFit.test_curvefit_covariance..jacps88bmS^Q? mR ]A>(*+Dr!t A88BIIq1"q&1*o6889 9rc:|tj| |zzSrr rIs rrgz3TestCurveFit.test_curvefit_covariance..funcrrctj| |z}tj|| |z|zfjSrrrs rrDz2TestCurveFit.test_curvefit_covariance..jacrrrr6rKrr#rrr5r*r+rr r!g+i)+>r)rcr)r r RandomStaterrr/r"r@r rvr,rrr)rr.r0rgrDrrzrr{r^r#r-ydatapcovarpr$r%rqrrrCrDs rtest_curvefit_covariancez%TestCurveFit.test_curvefit_covariances .  : $ 0ii##A& !Q S !C#**#e**555U$s*q!xx"RWWQZ-RWWQZ;RWWQZ-BGGAJ:$&'%%$$TVV,; 5 GJD$"/ G(ue5  A u(vV  A u u6Fu6F G GrrqFTc d}|j|j}}t|||d|\}}t|||tj|d|\}}tj ||k(sJy)Nc||z|zSrr(rIs rrgz5TestCurveFit.test_curvefit_scalar_sigma..funcq519 rr5)r^rq)r"rrr full_liker)rrqrgr"rrrrDs rtest_curvefit_scalar_sigmaz'TestCurveFit.test_curvefit_scalar_sigmasl vvtvv1T1aqP5a",,q!"4^ 5vveun%%%rc tjdd}d|zdzdtj|zz}d}dD]}tjtjfD]}tjtjfD]$}|j |}|j |}&t j5t jdtt|||| \}}tj|jsJtj|d rJ dddy#1swYxYw) Nrrhrbr:rLc||z|zSrr(rIs rrgz&TestCurveFit.test_dtypes..funcrmrrnerrorrr6)r rrrr astypewarningscatch_warnings simplefilterrrisfiniterallclose) rr"rrgrdtxdtyrcovs r test_dtypeszTestCurveFit.test_dtypess IIb!  ECK#bffQi- ' . 1F BJJ/ 1JJ 3&C A A&,,.1))'?C&tQ&AFAs;;s+//111!{{1a0000 11 1 1 11s >A*D66D? cd}tjgd}tjgd}tjgd}gd}tjgd}||g|}t||||||f\}} |jtj}||g|}t||||||f\} } t | |d y) Nc||zdz }||z dz }||||z zz|tj||z dz|dzdz zzzS)Nr5rK)r rv)r"s_1s_2o_xo_yrb_2b_1s r hyperbolaz,TestCurveFit.test_dtypes2..hyperbolasW9/C9/Cae$s277AcEA:1Q3F+G'GG Gr)grOg$rO)rOr:r:rOg$@)ggUUUUUU?r#grL)rg?r9)iiirKrKrj )r-rzr{rrgh㈵>r)r r rr?rr) rrQmin_fitmax_fitrdparamsrzr{popt_64rpopt_32s r test_dtypes2zTestCurveFit.test_dtypes2s H ((89((56:;&89%)&)%u'.&8:  RZZ(%)&)%u'.&8:  t4rc<tjd}d|dzzd|zztjjt |zfd}dD]E}t ||tj ||\}}t ||d|\}}t||Gy) Nrg@r5g @c&||dzz||zzz Srr()r"rrtargets rfit_funcz/TestCurveFit.test_broadcast_y..fit_funcsqAv:A%. .rrn)rzr{rr)r rrrandr/rrr) rrzr`rpopt0pcov0rrr_s @rtest_broadcast_yzTestCurveFit.test_broadcast_ys " uz!C%K/"))..U2LL /- *F$X+0+-==+?,24LE5%X+0+,,24LE5 E5 ) *rc|d}tt5t|gdgddgddddy#1swYyxYw)Nc||z|zSrr(rIs rrgz.TestCurveFit.test_args_in_kwargs..funcr9rrrhr r6rl)rzr{rrQrrs rtest_args_in_kwargsz TestCurveFit.test_args_in_kwargss> : & ! d(*  ! ! ! !s2;czd}ttd5t|gdgddddy#1swYyxYw)NcL|tj| |zz|z|z|zSrr r"rrrdrs rrgz.funcs*rvvqb1f~%)A-1 1rzThe number of func parameters=rrrg)rzr{)rdrerrs r!test_data_point_number_validationz.TestCurveFit.test_data_point_number_validation s9 29,L M , d(* , , , ,s1:zignore::RuntimeWarningcd}tjjd}d}tj|}tjdd||j|z}t j |||d\}}tjtj|dkDsJtj|d}tj|d kDsJt||jy) Nc|tj|dz|zz|tj|dz|zzz|zSNr6r logrms rr-z#TestCurveFit.test_gh4555..fs>RVVAEAI&&266!a%!)+<)<.func/s rvvqb1f~%) )rrrKrrrrLrr)gt^G?d*.X|?T}H)r{g1x?u`v?)r|r}gon2f?gH׊>)r rrrrrrr) rrrgrzry_noiser{rrBrefs r test_gh4555bzTestCurveFit.test_gh4555b*sii##$67 * Aq"% S# &  33G 4.3MMMO S$'rc0tjjd}tjddd}d|zdz|j ddzz}fd fd d_d_tj d d g}t|||d y)NlFjGbrr~er5r6rrLcvtjj|k(rJ|_||dz|dzSr)r rlast_p)r"rlines rrz'TestCurveFit.test_gh13670..lineGs;vvdkkQ./ //DKqt8ad? "rctjj|k(rJ|_tj|tj|gj Sr)r rrr rr)r"rrDs rrDz&TestCurveFit.test_gh13670..jacLsFvvcjjAo. ..CJ88Q Q0133 3rr#g@rr)r rrrrrr r)rrr"rrrDrs @@r test_gh13670zTestCurveFit.test_gh13670>s ii##$78 KK1c " EAI  ,s2 2 #  4   XXsCj !$1b37rrorpc d}d}tjt|5t||j|j dgd|dddy#1swYyxYw)Nc ||zSrr(r=s rrgz9TestCurveFit.test_gh20155_error_mentions_x0..funcZr>rz+Initial guess is outside of provided boundsrr6)rir)rr rrr"r)rrrgmessages rtest_gh20155_error_mentions_x0z+TestCurveFit.test_gh20155_error_mentions_x0VsN ? ]]:W 5 % dDFFDFFs<# % % % %s 'AAN),r$r%r&rrFrOrVrfrrrr thread_unsaferr staticmethodrrrrrrrrrrrrrrrr&r6r;rHr\rdrjrofilterwarningsrxrrrr(rrr7r7s-/ -- /&.1`J [[88 >118 [[X'>? J@ J [[X'>? J@ J [[S1a&) [[X'>?J@*J %J$ P'( #D,""5H . [[[)446546l:60Gd [[-t}= &> &1*58* !, [[ 89$:$&((80 [[Xx'89%:%rr7c<eZdZdZdZdZdZdZdZdZ dZ y ) TestFixedPointc>d}d}t||}t|dy)Nc d|zSNrNr(rzs rrgz0TestFixedPoint.test_scalar_trivial..funcf q5Lrr#rOrrrrgrhr"s rtest_scalar_trivialz"TestFixedPoint.test_scalar_trivialds"   b !As#rc>d}d}t||}t|dy)Nc |dzSrr(rzs rrgz/TestFixedPoint.test_scalar_basic1..funcnr>r?r#rrs rtest_scalar_basic1z!TestFixedPoint.test_scalar_basic1ls"   b !As#rc>d}d}t||}t|dy)Nc |dzSNrLr(rzs rrgz/TestFixedPoint.test_scalar_basic2..funcvs c6Mrrr#rrs rtest_scalar_basic2z!TestFixedPoint.test_scalar_basic2ts"   b !As#rcd}ddg}tjd5t||}dddtddgy#1swYxYw)Nc d|zSrr(rzs rrgz/TestFixedPoint.test_array_trivial..func}rrg333333?g333333?ignorerrO)r errstaterrrs rtest_array_trivialz!TestFixedPoint.test_array_trivial|sK 4[ [[X & &D"%A &ASz* & &s AA cd}tgd}gd}tjd5t|||f}dddt d|z y#1swYxYw)Nc||dzzSrr(r"rs rrgz.TestFixedPoint.test_array_basic1..funcsq!t8Org?r#g?)皙?gffffff?g?rrrmr#)r r rrrrrgrrhr"s rtest_array_basic1z TestFixedPoint.test_array_basic1sV  # $  [[X & 1D"A40A 1As1u% 1 1s AAchd}tgd}gd}t|||f}t||dzy)Nc||dzzSrr(rs rrgz.TestFixedPoint.test_array_basic2..funcsq#v: rr)g?rrrmr5)r rrrs rtest_array_basic2z TestFixedPoint.test_array_basic2s5  # $  bt ,Aq!t$rctddddd}t|tjd|zdz t|t d d z y) Nc8tjd|zdz S)NrRrNr )xxs rr.z.TestFixedPoint.test_lambertw..stBw(;rr#r(g-q=i)rQxtolmaxiterrRrNr6r5)rrr r!r)rxxroots r test_lambertwzTestFixedPoint.test_lambertwsF;SeS2tF{ 3C 78 A .rcddd}d}|dz |z z |z d|dz z zzfd}t||d}t||y) Nr5rrgjt?r6c~tjz |z tj|z|dz z z dzSrrrs)rBi0klkss rrgz1TestFixedPoint.test_no_acceleration..funcs866"R%'?RVVBqD!a%L%99A= =r iterationr)rr)rmn0rgrBrrrs @@@rtest_no_accelerationz#TestFixedPoint.test_no_accelerations]    sAg2a1ac7+ + > b 51rN) r$r%r&rrrrrrrrr(rrrrbs*$$$+&%/ rr).r'r@rr numpy.testingrrrrrrr r rdnumpyr r r multiprocessing.poolr scipyrr scipy.specialrscipy.optimize._minpack_pyrrrscipy.optimizerscipy.optimize._minimizerrr*r3r>rErGrIrrrrr7rr(rrrs <<<+ +""FF*+ # #+ >.< i5i5X;;@;;++4W.W.td %d %NHHr