
    (ph)                     z   S r SSKrSSKrSSKrSSKJrJrJrJrJ	r	J
r
Jr  SSKJr  SSKrSSKJrJr  SSKJr  SSKJrJr  SSKJr  SS	KJrJrJr  SS
KJr  SSKJ r    " S S5      r!S r"S r#S r$S r%S r& " S S5      r' " S S5      r( " S S5      r) " S S5      r* " S S5      r+ " S S5      r, " S S 5      r-g)!z7
Unit tests for optimization routines from minpack.py.
    N)assert_assert_almost_equalassert_array_equalassert_array_almost_equalassert_allcloseassert_warnssuppress_warnings)raises)arrayfloat64)
ThreadPool)optimizelinalg)lambertw)leastsq	curve_fitfixed_point)OptimizeWarning)Boundsc                   $    \ rS rSrSrS rS rSrg)ReturnShape   zThis 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                     Xl         g Nshape)selfr   s     T/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_minpack.py__init__ReturnShape.__init__   s    
    c                 B    [         R                  " U R                  5      $ r   )nponesr   )r   xs     r   __call__ReturnShape.__call__!   s    wwtzz""r!   r   N)__name__
__module____qualname____firstlineno____doc__r   r&   __static_attributes__ r!   r   r   r      s    #r!   r   c                 .    [         R                  " U5      $ )zMA function that returns an array of ones of the given shape.
`x` is ignored.
)r#   r$   )r%   r   s     r   
dummy_funcr0   %   s     775>r!   c                     [        [        U 5      5       nUR                  S U 5      sS S S 5        $ ! , (       d  f       g = f)Nc                     U " 5       $ r   r.   )fs    r   <lambda>#sequence_parallel.<locals>.<lambda>.   s    !#r!   )r   lenmap)fspools     r   sequence_parallelr:   ,   s*    	CG	xxr* 
		s	   2
A c                 x    X S-  -  n[         R                  " USS US   -
  U R                  5       U-
  45      nU$ )aN  Evaluate 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#   hstacksum)
flow_ratesQtotkPFs        r   pressure_networkrE   5   sB    4 	
MA
		1QR51Q4<!1D!89:AHr!   c                 0   [        U 5      n[        R                  " U SS S-  USS -  SU S   -  US   -  -
  5      n[        R                  " X345      nUS-  USUS-
  2SUS-
  24'   SUSUS-
  2US-
  4'   [        R                  " U5      XSS-
  SS24'   U$ )a`  Return 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`
r=   Nr<   r   )r6   r#   diagemptyr$   )r@   rA   rB   npdiffjacs         r   pressure_network_jacobianrL   T   s     	JAGGJqrNQ&12.Z]1BQqT1IIJE
((A6
CaiC1dqsd
OC1ac	N''!*C!QKJr!   c                 2    [        XU5      [        XU5      4$ r   )rE   rL   )r@   rA   rB   s      r   pressure_network_fun_and_gradrN   k   s     Zq1%j:< <r!   c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)
TestFSolvep   c                     [         R                  " SS5      nSn[        / SQ5      n[        R                  " [
        X2U4SS9u  pEpg[        U[         R                  " S5      5        [        US:H  U5        g )N         ?       @        rV   rW   Targsfull_outputr=   )	r#   fullr   r   fsolverE   r   r$   r   )r   rB   rA   initial_guessfinal_flowsinfoiermesgs           r   !test_pressure_network_no_gradient,TestFSolve.test_pressure_network_no_gradientq   sb    GGAsO./'/m)($3 	"+rwwqz:q$r!   c                     [         R                  " SS5      nSn[        / SQ5      n[        R                  " [
        X2U4[        S9n[        U[         R                  " S5      5        g )NrS   rT   rU   rY   fprime)	r#   r[   r   r   r\   rE   rL   r   r$   r   rB   rA   r]   r^   s        r   #test_pressure_network_with_gradient.TestFSolve.test_pressure_network_with_gradient|   sO    GGAsO./oom),. 	"+rwwqz:r!   c                 `    [        S5      nSS/n[        [        [        R                  X5        g Nr=         ?rV   r   assert_raises	TypeErrorr   r\   r   funcx0s      r   test_wrong_shape_func_callable)TestFSolve.test_wrong_shape_func_callable   s&    1~ 3Zi$;r!   c                 R    SS/n[        [        [        R                  [        USS9  g Nrl   rV   )r=   rY   )rn   ro   r   r\   r0   r   rr   s     r   test_wrong_shape_func_function)TestFSolve.test_wrong_shape_func_function   s!     3Zi*bwOr!   c                 r    [        S5      n[        S5      n[        [        [        R                  USS/US9  g )Nr=   r<   r<   r   rr   rf   rm   r   rq   
deriv_funcs      r    test_wrong_shape_fprime_callable+TestFSolve.test_wrong_shape_fprime_callable   s-    1~ '
i$Aa5Tr!   c                 R    S nS n[        [        [        R                  USS/US9  g )Nc                     [        U S5      $ N)r<   r0   r%   s    r   rq   9TestFSolve.test_wrong_shape_fprime_function.<locals>.func       a&&r!   c                     [        U S5      $ N)   r   r   r   s    r   r   ?TestFSolve.test_wrong_shape_fprime_function.<locals>.deriv_func       a((r!   r   r=   r~   )rn   ro   r   r\   r   s      r    test_wrong_shape_fprime_function+TestFSolve.test_wrong_shape_fprime_function   s$    	'	)i$Aa5Tr!   c                     S n[        [        SS9   [        R                  " US/S9  S S S 5        g ! , (       d  f       g = f)Nc                      [        S5      eNI raised
ValueErrorrx   s    r   rq   ,TestFSolve.test_func_can_raise.<locals>.func       Z((r!   r   matchr   rr   rn   r   r   r\   r   rq   s     r   test_func_can_raiseTestFSolve.test_func_can_raise   s/    	) :Z8OODaS) 988	   2
A c                     S nS n[        [        SS9   [        R                  " US/US9  S S S 5        g ! , (       d  f       g = f)Nc                 6    U [         R                  " S/5      -
  $ N
   r#   r   r   s    r   rq   ,TestFSolve.test_Dfun_can_raise.<locals>.func       rxx~%%r!   c                      [        S5      er   r   rx   s    r   r   2TestFSolve.test_Dfun_can_raise.<locals>.deriv_func   r   r!   r   r   r   r~   r   r   s      r   test_Dfun_can_raiseTestFSolve.test_Dfun_can_raise   s6    	&	) :Z8OODaS< 988	   6
Ac                     S n[         R                  " U[        R                  " SS/[        R                  5      5      n[        U" U5      SS/SS9  g )Nc                 j    [         R                  " U S   S-
  U S   S-
  /[         R                  S9S-  $ )Nr   d   r=     dtyper<   )r#   r   float32r   s    r   rq   %TestFSolve.test_float32.<locals>.func   s1    88QqTCZ15RZZHAMMr!   r=   r   MbP?atol)r   r\   r#   r   r   r   )r   rq   ps      r   test_float32TestFSolve.test_float32   s?    	NOOD"((Aq62::">?Q!Qd3r!   c                    ^  U 4S jn[         R                  " SS5      nSn[        / SQ5      n[        R                  " XX24SS9u  pVpx[        U[         R                  " S5      5        [        US:H  U5        g )Nc                  4   > TR                  5         [        U 6 $ r   )rb   rE   rY   r   s    r   rq   ,TestFSolve.test_reentrant_func.<locals>.func   s    224#T**r!   rS   rT   rU   TrX   r=   )r#   r[   r   r   r\   r   r$   r   )	r   rq   rB   rA   r]   r^   r_   r`   ra   s	   `        r   test_reentrant_funcTestFSolve.test_reentrant_func   sh    	+
 GGAsO./'/ti($3 	"+rwwqz:q$r!   c                    ^  U 4S jn[         R                  " SS5      nSn[        / SQ5      n[        R                  " [
        XCU4US9n[        U[         R                  " S5      5        g )Nc                  4   > TR                  5         [        U 6 $ r   )rh   rL   r   s    r   r   3TestFSolve.test_reentrant_Dfunc.<locals>.deriv_func   s    446,d33r!   rS   rT   rU   re   )r#   r[   r   r   r\   rE   r   r$   )r   r   rB   rA   r]   r^   s   `     r   test_reentrant_DfuncTestFSolve.test_reentrant_Dfunc   sW    	4
 GGAsO./oom) 	"+rwwqz:r!   c                     [        U R                  /S-  5      n[        U Vs/ s H  o"S L PM     sn5      (       d   eg s  snf r   )r:   rb   allr   vresults      r   test_concurrent_no_gradient&TestFSolve.test_concurrent_no_gradient   s?    tEEFKL3vdN344443   ?c                     [        U R                  /S-  5      n[        U Vs/ s H  o"S L PM     sn5      (       d   eg s  snf r   )r:   rh   r   r   s      r   test_concurrent_with_gradient(TestFSolve.test_concurrent_with_gradient   s?    tGGH2MN3vdN344443r   r.   N)r(   r)   r*   r+   rb   rh   rs   rz   r   r   r   r   r   r   r   r   r   r-   r.   r!   r   rP   rP   p   sF    	 ;<PU
U*=4 ;55r!   rP   c                   &    \ rS rSrS rS rS rSrg)TestRootHybr   c                     [         R                  " SS5      nSn[        / SQ5      n[        R                  " [
        USX!4S9R                  n[        U[         R                  " S5      5        g )NrS   rT   rU   hybrmethodrY   	r#   r[   r   r   rootrE   r%   r   r$   rg   s        r   rb   .TestRootHybr.test_pressure_network_no_gradient   sV    GGAsO./mm$4m+1	CCD1 	!+rwwqz:r!   c                     [         R                  " SS5      nSn[        / SQ/5      n[        R                  " [
        UX!4S[        S9R                  n[        U[         R                  " S5      5        g )NrS   rT   rU   r   rY   r   rK   )
r#   r[   r   r   r   rE   rL   r%   r   r$   rg   s        r   rh   0TestRootHybr.test_pressure_network_with_gradient   s^    GGAsO/01mm$4m*.6(ACCD1 	 	"+rwwqz:r!   c                     [         R                  " SS5      nSn[        / SQ5      n[        R                  " [
        X2U4SSS9R                  n[        U[         R                  " S5      5        g )NrS   rT   rU   r   Tr   )	r#   r[   r   r   r   rN   r%   r   r$   rg   s        r   ,test_pressure_network_with_gradient_combined9TestRootHybr.test_pressure_network_with_gradient_combined   s\     GGAsO./mm$A$1q	+1t==>Q 	 	"+rwwqz:r!   r.   N)r(   r)   r*   r+   rb   rh   r   r-   r.   r!   r   r   r      s    ;;	;r!   r   c                       \ rS rSrS rSrg)
TestRootLM   c                     [         R                  " SS5      nSn[        / SQ5      n[        R                  " [
        USX!4S9R                  n[        U[         R                  " S5      5        g )NrS   rT   rU   lmr   r   rg   s        r   rb   ,TestRootLM.test_pressure_network_no_gradient   sV    GGAsO./mm$4m+/tiAAB 	!+rwwqz:r!   r.   N)r(   r)   r*   r+   rb   r-   r.   r!   r   r   r      s    ;r!   r   c                   n    \ rS rSrS rS r\R                  R                  S/ SQ5      S 5       r	S r
Srg	)
TestNfevi  c                 8    [         R                  " 5       U l        g r   )	threadinglocalnfevr   s    r   setup_methodTestNfev.setup_method  s    OO%	r!   c                     [        U R                  S5      (       d  SU R                  l        U R                  =R                  S-  sl        US-  S-
  $ )Ncr   r=   r<   r   )hasattrr   r   )r   ys     r   zero_fTestNfev.zero_f  s=    tyy#&&DIIK		q!tAvr!   r   )
r   r   broyden1broyden2andersonlinearmixingdiagbroydenexcitingmixingkrylovzdf-sanec                     SU R                   l        [        R                  " U R                  SUS9nUR                   U R                   R                  :X  d   eg )Nr   r   r   )r   r   r   r   r   )r   r   solutions      r   test_root_nfevTestNfev.test_root_nfev  s?     		==c&A}}		+++r!   c                     SU R                   l        [        R                  " U R                  SSS9u  pp4US   U R                   R                  :X  d   eg )Nr   r   T)rZ   r   )r   r   r   r\   r   )r   r%   r_   r`   ra   s        r   test_fsolve_nfevTestNfev.test_fsolve_nfev  sB    		%__T[[#4PF|tyy{{***r!   )r   N)r(   r)   r*   r+   r   r   pytestmarkparametrizer   r  r-   r.   r!   r   r   r     s;    & [[X (3 4
,4
,
+r!   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rSrg)TestLeastSqi!  c                     [         R                  " SSS5      nSu  p#nXl        X#U4U l        X!S-  -  X1-  -   U-   n[         R                  R                  S5        US[         R                  R                  UR                  5      -  -   U l        g )Nr   r   (   )g@*   g33333sr<   g{Gz?)	r#   linspacer%   abcrandomseedstandard_normalr   y_meas)r   r%   abr   y_trues         r   r   TestLeastSq.setup_method"  sw    KK2r"Aq5a4!#!
		qtBII$=$=fll$KKKr!   c                 4    Uu  pEnX$US-  -  XS-  -   U-   -
  nU$ Nr<   r.   )r   r   r   r%   r  r  r   errs           r   	residualsTestLeastSq.residuals+  s+    A1a4!#!"
r!   c                 x    [         R                  " US-  U[         R                  " U5      /5      R                  * $ r  )r#   vstack	ones_likeT)r   _p_yr%   s       r   residuals_jacobianTestLeastSq.residuals_jacobian0  s-    		1a4BLLO457777r!   c                     [        / SQ5      n[        U R                  UU R                  U R                  4S9u  p#[        US;   SU-  5        [        X R                  SS9  g )Nr   r   r   rx   r=   r<   r   rS   solution not found (ier=%d)r<   decimalr   r   r  r  r%   r   r   r  r   p0
params_fitr`   s       r   
test_basicTestLeastSq.test_basic3  sR    7^!$.."(,TVV'<>
y "?#"EF!*hhBr!   c                     [        / SQ5      n[        U R                  UU R                  U R                  4U R
                  S9u  p#[        US;   SU-  5        [        X R                  SS9  g )Nr%  rY   Dfunr&  r'  r<   r(  )	r   r   r  r  r%   r"  r   r   r  r+  s       r   test_basic_with_gradient$TestLeastSq.test_basic_with_gradient;  s^    7^!$.."(,TVV'<'+'>'>@
 	y "?#"EF!*hhBr!   c                     [        / SQ/5      n[        U R                  UU R                  U R                  4SS9nUu  p4pVn[        US;   SU 35        g )Nr%  TrX   r&  solution not found: )r   r   r  r  r%   r   )r   r,  rZ   r-  cov_xinfodictra   r`   s           r   test_full_outputTestLeastSq.test_full_outputD  sX    G9dnnb$(KK#8*.0 2=.
83y $8"?@r!   c                     [        / SQ[        S9n[        USS9n[        U R                  UU R                  U R
                  4SS9nUu  pEpgn[        US;   SU 35        [        X5        g )Nr%  r   T)copyrX   r&  r6  )r   r   r   r  r  r%   r   r   )	r   r,  p0_copyrZ   r-  r7  r8  ra   r`   s	            r   test_input_untouched TestLeastSq.test_input_untouchedL  sl    7)&dnnb$(KK#8*.0 2=.
83y $8"?@2'r!   c                 `    [        S5      nSS/n[        [        [        R                  X5        g rk   r   rn   ro   r   r   rp   s      r   rs   *TestLeastSq.test_wrong_shape_func_callableV  s(    1~ 3Zi!1!14<r!   c                 R    SS/n[        [        [        R                  [        USS9  g rv   )rn   ro   r   r   r0   ry   s     r   rz   *TestLeastSq.test_wrong_shape_func_function]  s#     3Zi!1!1:rPr!   c                 r    [        S5      n[        S5      n[        [        [        R                  USS/US9  g )Nr=   r}   r   rr   r2  rA  r   s      r   test_wrong_shape_Dfun_callable*TestLeastSq.test_wrong_shape_Dfun_callablec  s/    1~ '
i!1!14QqE
Sr!   c                 R    S nS n[        [        [        R                  USS/US9  g )Nc                     [        U S5      $ r   r   r   s    r   rq   8TestLeastSq.test_wrong_shape_Dfun_function.<locals>.funci  r   r!   c                     [        U S5      $ r   r   r   s    r   r   >TestLeastSq.test_wrong_shape_Dfun_function.<locals>.deriv_funck  r   r!   r   r=   rF  rn   ro   r   r   r   s      r   test_wrong_shape_Dfun_function*TestLeastSq.test_wrong_shape_Dfun_functionh  s&    	'	)i!1!14QqE
Sr!   c           	         S n[         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[         R                  " / SQ5      n[        R                  " XX#4S9u  pV[        US;   5        [        U" XRU5      S-  R                  5       S	U" XBU5      S-  R                  5       -  :  5        g )
Nc                 x    U S   [         R                  " XS   -
  S-  * SU S   S-  -  -  5      -  U S   -   nX2-
  $ )Nr   r=   r<   rV   r   r#   exp)r   r%   r   qs       r   rq   &TestLeastSq.test_float32.<locals>.funcq  sF    !RVVa!fq[L#adAg+677!<A5Lr!   )
g?gw/?g%C?gNbX9?gHzG?gM?gZd;O?gS?g~jt?gV-?r   )
gJ4?gN@aÓ?g^K=?gMO?g?g?W[?gl?g{Pk?g rh?gׁsF?)      ?rW  rW  rW  rx   r&  r<   g-C6?)r#   r   r   r   r   r   r?   )r   rq   r%   r   r,  p1successs          r   r   TestLeastSq.test_float32o  s    	 HH %'ZZ1HH $+-::7XX'(&&tqe<9$%b1q%%'$$rA,/1F1F1H*HHIr!   c                     S n[        [        SS9   [        R                  " US/S9  S S S 5        g ! , (       d  f       g = f)Nc                      [        S5      er   r   rx   s    r   rq   -TestLeastSq.test_func_can_raise.<locals>.func  r   r!   r   r   r   r   rn   r   r   r   r   s     r   r   TestLeastSq.test_func_can_raise  s1    	) :Z8Tqc* 988r   c                     S nS n[        [        SS9   [        R                  " US/US9  S S S 5        g ! , (       d  f       g = f)Nc                 6    U [         R                  " S/5      -
  $ r   r   r   s    r   rq   -TestLeastSq.test_Dfun_can_raise.<locals>.func  r   r!   c                      [        S5      er   r   rx   s    r   r   3TestLeastSq.test_Dfun_can_raise.<locals>.deriv_func  r   r!   r   r   r   rF  r^  r   s      r   r   TestLeastSq.test_Dfun_can_raise  s8    	&	) :Z8Tqc
; 988r   c                    ^  U 4S jn[        / SQ5      n[        XT R                  T R                  4S9u  p4[	        US;   SU-  5        [        UT R                  SS9  g )Nc                  B   > TR                  5         TR                  " U 6 $ r   )r.  r  r   s    r   rq   -TestLeastSq.test_reentrant_func.<locals>.func  s    OO>>4((r!   r%  rx   r&  r'  r<   r(  )r   r   r  r%   r   r   r  )r   rq   r,  r-  r`   s   `    r   r   TestLeastSq.test_reentrant_func  sV    	) 7^!$(,TVV'<>
y "?#"EF!*dhhBr!   c                    ^  U 4S jn[        / SQ5      n[        T R                  UT R                  T R                  4US9u  p4[        US;   SU-  5        [        UT R                  SS9  g )Nc                  B   > TR                  5         TR                  " U 6 $ r   )r.  r"  r   s    r   r   3TestLeastSq.test_reentrant_Dfun.<locals>.deriv_func  s    OO**D11r!   r%  r1  r&  r'  r<   r(  r*  )r   r   r,  r-  r`   s   `    r   test_reentrant_DfunTestLeastSq.test_reentrant_Dfun  sa    	2 7^!$.."(,TVV'<'13
 	y "?#"EF!*dhhBr!   c                     [        U R                  /S-  5      n[        U Vs/ s H  o"S L PM     sn5      (       d   eg s  snf r   )r:   r.  r   r   s      r   r   'TestLeastSq.test_concurrent_no_gradient  s=    t/"453vdN344443r   c                     [        U R                  /S-  5      n[        U Vs/ s H  o"S L PM     sn5      (       d   eg s  snf r   )r:   r3  r   r   s      r   r   )TestLeastSq.test_concurrent_with_gradient  s?    t<<=BC3vdN344443r   c                     S n[        [        SS9   [        R                  " USS/S9  S S S 5        g ! , (       d  f       g = f)Nc                 $    SU S   S-
  S-  -  S-   $ )Nr<   r   r   r=   r.   r   s    r   rq   =TestLeastSq.test_func_input_output_length_check.<locals>.func  s    !qQ&**r!   z+Improper input: func input vector length N=r   r   r=   r   rN  r   s     r   #test_func_input_output_length_check/TestLeastSq.test_func_input_output_length_check  s>    	+ 9!NPTq!f-P P Ps	   3
A)r  r%   r  N)r(   r)   r*   r+   r   r  r"  r.  r3  r9  r>  rs   rz   rG  rO  r   r   r   r   rm  r   r   rv  r-   r.   r!   r   r	  r	  !  sk    L
8CCA(=QT
TJ +<
CC55.r!   r	  c                   ,   \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	 5       rS
 r\S 5       r\R                  R%                  S/ SQ5      S 5       r\R                  R%                  S/ SQ5      S 5       r\R                  R%                  SSS/5      \R                  R%                  S/ SQ5      S 5       5       rS rS rS rS rS rS rS rS rS r\R                  R%                  S/ SQ5      S 5       rS  r S! r!\R                  R%                  S"S#S$/5      S% 5       r"S& r#S' r$S( r%S) r&S* r'\R                  RQ                  S+5      S, 5       r)S- r*S. r+\R                  R%                  SS/S0/5      S1 5       r,S2r-g3)4TestCurveFiti  c                 L    [        / SQ5      U l        [        / SQ5      U l        g )N)rW  g	@      #@gffffff+@)rW  rV         @g      @)r   r   r%   r   s    r   r   TestCurveFit.setup_method  s    ,-+,r!   c                 F   S n[        XR                  U R                  5      u  p#[        [	        U5      S:H  5        [        UR
                  S:H  5        [        US   SSS9  [        US   S	SS9  [        XR                  U R                  SS
S9nUu  pVpxn	[        X%5        g )Nc                 
    X-  $ r   r.   r%   r  s     r   rq   ,TestCurveFit.test_one_argument.<locals>.func  	    4Kr!   r=   )r=   r=   r   g3ı.n?rS   r(  )r   r   g-C6Z?F)rZ   check_finite)r   r%   r   r   r6   r   r   r   )
r   rq   poptpcovrespopt2pcov2r8  errmsgr`   s
             r   test_one_argumentTestCurveFit.test_one_argument  s    	tVVTVV4
D	Q

e#$DGVQ7DIvq9 ffdff$%E;03-x!$.r!   c                     S n[        XR                  U R                  5      u  p#[        [	        U5      S:H  5        [        UR
                  S:H  5        [        USS/SS9  [        USS	/S	S
//SS9  g )Nc                     X U-  -  $ r   r.   r%   r  r  s      r   rq   ,TestCurveFit.test_two_argument.<locals>.func  s    T6Mr!   r<   r}   c]K?-?rS   r(  䃞ͪϵ?T㥛 b=y?)r   r%   r   r   r6   r   r   )r   rq   r  r  s       r   test_two_argumentTestCurveFit.test_two_argument  sm    	tVVTVV4
D	Q

e#$!$(8!D!$&'):Wf<M(N*+	-r!   c                      " S S5      nU" 5       n[        UR                  U R                  U R                  5      u  p4[	        UR
                  S:H  5        [        USS/SS9  [        USS	/S	S
//SS9  g )Nc                       \ rS rSrSrS rSrg)8TestCurveFit.test_func_is_classmethod.<locals>.test_selfi  zyThis class tests if curve_fit passes the correct number of
arguments when the model function is a class instance method.
c                     X1U-  -  $ r   r.   )r   r%   r  r  s       r   rq   =TestCurveFit.test_func_is_classmethod.<locals>.test_self.func  s    a4xr!   r.   N)r(   r)   r*   r+   r,   rq   r-   r.   r!   r   	test_selfr    s     r!   r  r}   r  r  rS   r(  r  r  r  )r   rq   r%   r   r   r   r   )r   r  test_self_instr  r  s        r   test_func_is_classmethod%TestCurveFit.test_func_is_classmethod  ss    	  	  #~22DFFDFFC


e#$!$(8!D!$&'):Wf<M(N*+	-r!   c                 X    / SQn/ SQn/ SQn/ SQnS n[        XQX#SS9u  pg[        XdSS	9  g )
N)
gB`"@gZd;@gQ@g#~j@g/$@g;O@g @g@gZd;@g)\@)
     ؊@g     (@g     @g     X@g     t@g     @g     @g     8@g     @g     H@)g^w8}@gU]}@     X@r  g29l?r  )g䃞j@gj@gT{7@g|'fɘ@g ƞ?g'ˊ@c                     U[         R                  " X-
  S-  * SUS-  -  -  5      -  U[         R                  " X-
  S-  * SUS-  -  -  5      -  -   U-   $ )Nr<   rV   rS  )r%   rr   x1A0A1sigmar   s          r   f_double_gauss9TestCurveFit.test_regression_2639.<locals>.f_double_gauss  s`    rvvqyj"UAX+677!$
BuaxK 899:<=> ?r!   i'  maxfevgh㈵>rtol)r   r   )r   r%   r   guessgoodr  r  r  s           r   test_regression_2639!TestCurveFit.test_regression_2639  s?    #//	? ~!5I
.r!   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      nS nS GH,  n[        XAUSS/UUS9u  pg[         R                  " [         R                  " U5      5      n[        US	S
/SS9  [        XAUSS/SU-  US9u  pg[         R                  " [         R                  " U5      5      n[        US	S
/SS9  [        XAUSS/USUS9u  pg[         R                  " [         R                  " U5      5      n	[        U	SS/SS9  [        XAUSS/SU-  SUS9u  pg[         R                  " [         R                  " U5      5      n	[        U	SS/SS9  GM/     S n
[         R                  " [         R                  /S-  5      R                  SS5      n[        5        nUR                  [        S5        [        XUSS/US9u  pg[        XAS S US S SS/S9u  pS S S 5        [        WR                  S:H  5        [        X{5        [        WR                  S:H  5        [        X5        g ! , (       d  f       NU= f)N)r   r=   r<   r   rS      )r=   r=   r           )r=   r<   r=   r<   r=   r<   c                     X-  U-   $ r   r.   r  s      r   r3   !TestCurveFit.test_pcov.<locals>.f      37Nr!   r   trfdogboxr<   r   )r,  r  r   gN"q?g~uM/N?r   r  r   T)r,  r  absolute_sigmar   gO=N?g5=`6?g[u|?g-/i@c                 
    X-  $ r   r.   r  s      r   f_flat&TestCurveFit.test_pcov.<locals>.f_flat  s	    3Jr!   rS   z3Covariance of the parameters could not be estimatedr,  r  r,  r}   )r#   r   r   sqrtrG   r   infreshaper	   filterr   r   r   r   )r   xdataydatar  r3   r   r  r  perr_scaledperrr  pcov_expectedsuppopt1pcov1s                  r   	test_pcovTestCurveFit.test_pcov  s   +,,-+,	 .F"1U1vU*02JD''"''$-0KK*j)AM"1U1vQuW*02JD''"''$-0KK*j)AM"1U1vU26vGJD772774=)DD:z":F"1U1vQuW26vGJD772774=)DD<">TJ' ..	 "&&!,44Q: CJJLN"6%QF%PJD$Qbq	5!9!QHLE	 ! 	

f$%4/v%&50 ! s   <I
Ic                 N    S n/ SQn/ SQn[        [        XU5      S   SS/SS9  g )	Nc                     X-  U-   $ r   r.   r  s      r   f_linear.TestCurveFit.test_array_like.<locals>.f_linear/  r  r!   r&  )r   r  r  	   r   r<   r=   g|=r   )r   r   )r   r  r%   r   s       r   test_array_likeTestCurveFit.test_array_like-  s/    	 	(q1!4q!f5Ir!   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        [        [        S X5        g )N)r=   r<   r   rS   r     )r=   r<   r   rS   g      @r  c                 
    X-  $ r   r.   r  s      r   r4   <TestCurveFit.test_indeterminate_covariance.<locals>.<lambda><  s    QSr!   )r#   r   r   r   r   r   r  r  s      r   test_indeterminate_covariance*TestCurveFit.test_indeterminate_covariance6  s3     +,-._i(%	8r!   c                    [         R                  " S[         R                  S/5      n[         R                  " / SQ5      n[        [        [
        S X5        [        [        [
        S X!5        [        [        [
        S X40 SS0D6  g )	Nr=   r   r=   r<   r   c                     X-  U-   $ r   r.   r  s      r   r4   0TestCurveFit.test_NaN_handling.<locals>.<lambda>F  
    acAgr!   c                     X-  U-   $ r   r.   r  s      r   r4   r  H  r  r!   c                     X-  U-   $ r   r.   r  s      r   r4   r  J  s
    QS1Wr!   r  T)r#   r   nanrn   r   r   r  s      r   test_NaN_handlingTestCurveFit.test_NaN_handling>  sm     !RVVQ(#j)-u	=j)-u	= 	j)-D	>'5t&<	>r!   c                    XUUSS.nSn[        [        US9   [        S0 UDSSS.D6  S S S 5        [        [        SS9   [        S0 UDS	S
0D6  S S S 5        [        S0 UDS	S0D6u  pX&S'   XFS'   [        S0 UD6u  p[        X5        Sn[        [        US9   [        S0 UDS	S0D6  S S S 5        g ! , (       d  f       N= f! , (       d  f       Ny= f! , (       d  f       g = f)NF)r3   r  r  r   r  z;`nan_policy='propagate'` is not supported by this function.r   	propagatei  )
nan_policyr  zThe input contains nanr  raiseomitr  r  zTnan_policy must be one of \{(?:'raise'|'omit'|None)(?:, ?(?:'raise'|'omit'|None))*\}hir.   )rn   r   r   r   )r3   xdata_with_nanxdata_without_nanydata_with_nanydata_without_nanr   kwargs	error_msgresult_with_nan_result_without_nans              r   _check_nan_policyTestCurveFit._check_nan_policyM  s     N"E;)	:Y7DD;tD 8 :-EF3373 G 'CCFC+w+w ) 3F 3<:	:Y70040 87% 87 GF 87s"   B1CC1
B?
C
C!r   r  c                 V   S n[         R                  " SS[         R                  SS[         R                  /5      n[         R                  " SSSS[         R                  S/5      n[         R                  " / SQ5      n[         R                  " / S	Q5      nU R                  X#UXFU5        g )
Nc                     X-  U-   $ r   r.   r  s      r   r3   *TestCurveFit.test_nan_policy_1d.<locals>.fl  r  r!   r<   r   rS   r=   r  r  )r<   r   rS   r  r#   r   r  r  r   r   r3   r  r  r  r  s          r   test_nan_policy_1dTestCurveFit.test_nan_policy_1dj  s    	 1aArvv">?1aArvvq"9:HHY/HHY/q2C-&	Jr!   c           
         S n[         R                  " SS[         R                  SS[         R                  S/SS[         R                  [         R                  S[         R                  S//5      n[         R                  " SSSS[         R                  SS/5      n[         R                  " / S	Q/ S
Q/5      n[         R                  " / SQ5      nU R                  X#UXFU5        g )Nc                 :    U SS S 24   nU SS S 24   nX-  U-   U-   $ Nr   r=   r.   r%   r  r  r  x2s        r   r3   *TestCurveFit.test_nan_policy_2d.<locals>.fy  s,    1a4B1a4B4!8b= r!   r<   r   rS   r  r  r=   r   r<   r   r  r<   r   r  r=   r<   r   r  r  s          r   test_nan_policy_2dTestCurveFit.test_nan_policy_2dw  s    	!
 Aq"&&!Q#B$%q"&&"&&!RVVQ#G#I J1aArvvq""=>HHi%;<HHZ0q2C-&	Jr!   rI   r<   r   c           
         S n[         R                  " SS[         R                  SS[         R                  S/SS[         R                  [         R                  S[         R                  S///5      nUS:X  a  UR                  5       OUn[         R                  " SSSS[         R                  SS/5      n[         R                  " / S	Q/ S
Q//5      n[         R                  " / SQ5      nU R	                  X4UXWU5        g )Nc                 v    U SSS S 24   R                  5       nU SSS S 24   R                  5       nX-  U-   U-   $ )N.r   r=   )squeezer  s        r   r3   ,TestCurveFit.test_nan_policy_2_3d.<locals>.f  sB    319%%'B319%%'B4!8b= r!   r<   r   rS   r  r  r=   r   r  r  r	  )r#   r   r  r  r  )r   rI   r   r3   r  r  r  r  s           r   test_nan_policy_2_3d!TestCurveFit.test_nan_policy_2_3d  s    	!
 Q2661a$C$%q"&&"&&!RVVQ#G$I #J K56!V//11aArvvq""=>HHy)&<%=>HHZ0q2C-&	Jr!   c           	          [        [        [        S / / 5        [        [        [        S / / SS9  [        [        [        S S// 5        [        [        [        S S// SS9  g )	Nc                 
    X-  $ r   r.   r  s     r   r4   0TestCurveFit.test_empty_inputs.<locals>.<lambda>      !#r!   c                 
    X-  $ r   r.   r  s     r   r4   r    r  r!   )r=   r<   )boundsc                 
    X-  $ r   r.   r  s     r   r4   r    r  r!   r=   c                 
    X-  $ r   r.   r  s     r   r4   r    r  r!   r<   rn   r   r   r   s    r   test_empty_inputsTestCurveFit.test_empty_inputs  sT    j)-=r2Fj)-=r2#	%j)-=sBGj)-=sB#	%r!   c                 <    [        [        [        S SS/SS/5        g )Nc                     U $ r   r.   r   s    r   r4   8TestCurveFit.test_function_zero_params.<locals>.<lambda>  s    qr!   r=   r<   r   rS   r  r   s    r   test_function_zero_params&TestCurveFit.test_function_zero_params  s    j)[1a&1a&Ir!   c                 l    [        S S S[        R                  " S5      -  5      u  p[        US/5        g )Nc                 4    U[         R                  " S5      -  $ r   )r#   arange)r  r  s     r   r4   *TestCurveFit.test_None_x.<locals>.<lambda>  s    A		",=r!   r<   r   rV   )r   r#   r$  r   )r   r  r  s      r   test_None_xTestCurveFit.test_None_x  s/    =#Q2%68
rd#r!   c           	          S n[         R                  " SSS5      nU" USS5      nS H  n[        XX4S9u  pV[        USS/5        M     [	        [
        [        XUSS9  g )	Nc                 <    U[         R                  " U* U -  5      -  $ r   rS  r  s      r   r3   ,TestCurveFit.test_method_argument.<locals>.f      rvvqbd|##r!   r   r=      rV   r  r  r   Nr   unknown)r#   r  r   r   rn   r   )r   r3   r  r  r   r  r  s          r   test_method_argument!TestCurveFit.test_method_argument  sa    	$ Aq"%%R 3F"1UBJDD2r(+ 4 	j)QuYOr!   c           	      :   S n[         R                  " SSS5      nU" USS5      nS Hp  n[        XX4SS9u  pVpxn	[        USS/5        S	U;   d   eS
U;   d   eUS:X  d  Uc  SU;   d   eSU;   d   eSU;   d   e[	        U[
        5      (       d   eU	S;   a  Mp   e   g )Nc                 <    U[         R                  " U* U -  5      -  $ r   rS  r  s      r   r3   (TestCurveFit.test_full_output.<locals>.f  s    rvvqb1f~%%r!   r   r=   r,  rV   r-  T)r   rZ   r   fvecr   fjacipvtqtfr&  )r#   r  r   r   
isinstancestr)
r   r3   r  r  r   r  r  r8  r  r`   s
             r   r9  TestCurveFit.test_full_output  s    	& Aq"%%R 3F09%D1B-D#D2r(+X%%%X%%%~))))))(((fc****,&&& 4r!   c           
         S n[         R                  " SSS5      nU" USS5      nSS/nSS/nXE4n[        XE5      nS	 H8  n[        XX6US
9u  p[	        U	S   S5        [        XUUUS
9u  p[	        X5        M:     [        XUSSS/S[         R
                  /4S9u  p[	        U	S   S5        [        [        [        XX6SS
9  g )Nc                 <    U[         R                  " U* U -  5      -  $ r   rS  r  s      r   r3   #TestCurveFit.test_bounds.<locals>.f  r+  r!   r   r=   r,  rV   rW  rl   r|  )Nr  r  )r  r   r  rW   g333333?)r   r  r   )r#   r  r   r   r   r  rn   r   )r   r3   r  r  lbubr  bounds_classr   r  r  
popt_class
pcov_classs                r   test_boundsTestCurveFit.test_bounds  s    	$ Aq"%%R  !W2Y b~-F"1U*02JDDGS)%.q6B6<&>"J J- . qu(*Awbff&>@
Q% 	j)Qu!	#r!   c           
         S n[         R                  " S[         R                  -  S[         R                  -  S5      n[         R                  " U5      nS[         R                  -  S[         R                  -  4nS HK  n[	        XUS[         R                  -  S	9u  pg[	        XUS[         R                  -  XES
9u  p[        Xh5        MM     g )Nc                 2    [         R                  " X-   5      $ r   )r#   sinr  s     r   r3   &TestCurveFit.test_bounds_p0.<locals>.f  s    66!%= r!   r<   r  r   r  r  g @r  r,  r  r   )r#   r  pirG  r   r   )	r   r3   r  r  r  r   popt_1r  popt_2s	            r   test_bounds_p0TestCurveFit.test_bounds_p0  s    	! BruuHagr2uruu*a"%%i('F!!Ec"%%i@IF!!Ec"%%i)/@IF F+ (r!   c           
         S nS n[         R                  " SSS5      nU" USS5      nS H'  nS H  n[        XXFUS	9u  px[        US
S
/5        M      M)     S H  n[        XXEUS9u  px[        US
S
/5        M      SUS'   [         R                  " UR
                  S   5      n	SU	S'   S H  n[        XXIUUS9u  px[        US
S
/SS9  M      g )Nc                 <    U[         R                  " U* U -  5      -  $ r   rS  r  s      r   r3    TestCurveFit.test_jac.<locals>.f  r+  r!   c                     [         R                  " U* U -  5      n[         R                  " X1* U -  U-  45      R                  $ r   r#   rT  r  r  r%   r  r  es       r   rK   "TestCurveFit.test_jac.<locals>.jac  6    r!tA99aa!_-///r!   r   r=   r,  rV   rK  )z2-pointz3-pointcs)rK   r   r<   r  r   rK   r   r     )r  r   rK   r   r  )r#   r  r   r   r$   r   )
r   r3   rK   r  r  r   schemer  r  r  s
             r   test_jacTestCurveFit.test_jac  s    	$	0 Aq"%%R  (F6&q.46
q!f- 7 ( .F"1UsKJDD1a&) .
 aA'a-F"1U'*,JD D1a&t4 .r!   c                     [         R                  " SS5      nSU-  n[        S XSSS9u  p4[        S XSSS	9u  pT[        USS
S9  [        USS
S9  g )Nr   r   r<   c                 
    X-  $ r   r.   r%   r   s     r   r4   5TestCurveFit.test_maxfev_and_bounds.<locals>.<lambda>(      r!   )r   r   r   )r  r  c                 
    X-  $ r   r.   rc  s     r   r4   rd  )  re  r!   )r  max_nfev+=r   )r#   r$  r   r   )r   r%   r   r  r  r  s         r   test_maxfev_and_bounds#TestCurveFit.test_maxfev_and_bounds#  sY     IIaaC_a6#N_a6CPqu-qu-r!   	sigma_dim)r   r=   r<   c           	      D   S n[         R                  R                  S5      nSn[         R                  " SSU5      nU" USS5      nUS:X  a  S	nXcR	                  SXt5      -  nOxUS:X  a  US	-  nXcR	                  SXt5      -  nOXUS
:X  aK  UR	                  SS
XD45      nXR
                  -  nXcR                  [         R                  " U5      U5      -  nO S5       eSS/n	UR                  USS9n
UR                  USS9n[         R                  XZ'   [         R                  Xk'   [        X%XiUSS9u  p[         R                  " [         R                  " X45      5      n[         R                  " X^SS9n[         R                  " XnSS9n[         R                  " U5      nUR                  S:X  a  [         R                  " X~5      nO:UR                  S
:X  a*  [         R                  " X~SS9n[         R                  " X~SS9n[        X%XiUS9u  nn[!        XSS9  [!        UUSS9  g )Nc                 8    U[         R                  " X-  5      -  $ r   rS  r  s      r   exponential7TestCurveFit.test_curvefit_omitnan.<locals>.exponential0  s    rvvae}$$r!   l   lt*G7 r   r=   r   皙?rT   r   g?r<   z1The sigma must be a scalar, 1D array or 2D array.g?rW  r  sizer  )r,  r  r  )axisr  rh  r   )r#   r  default_rngr  normalr  multivariate_normal
zeros_likeintegersr  r   uniqueconcatenatedeleteasarrayndimr   )r   rk  rn  rngNr%   r   r  r  r,  i_xi_yres_optres_covi_deleteref_optref_covs                    r   test_curvefit_omitnan"TestCurveFit.test_curvefit_omitnan.  s   	% ii##O4KK2q!3$NEAu((A1nHEAu((A1n

1a!(AGE((q)95AAAMMM53Z ll11l%ll11l% $[QU068
 99R^^SJ78IIa*IIa*

5!::?IIe.EZZ1_IIeA6EIIeA6E$[QUKu5u5r!   c                    S nS n[         R                  R                  S5        [         R                  " SSS5      nU" USS5      nUS[         R                  R	                  [        U5      S	9-  -   n[         R                  " [        U5      5      S-   n[         R                  " US
-  5      nX"4S4 H<  u  pS H1  n
[        XXVXS9u  p[        XXWXS9u  p[        XSS9  [        XSS9  M3     M>     g )Nc                 <    U[         R                  " U* U -  5      -  $ r   rS  r  s      r   rq   9TestCurveFit.test_curvefit_simplecovariance.<locals>.funcg  r+  r!   c                     [         R                  " U* U -  5      n[         R                  " X1* U -  U-  45      R                  $ r   rV  rW  s       r   rK   8TestCurveFit.test_curvefit_simplecovariance.<locals>.jacj  rZ  r!   r   rS   2         @?rp  rq  r<   NNFTr  rK   r  rh  r   )
r#   r  r  r  ru  r6   zerosrG   r   r   )r   rq   rK   r  r   r  r  covarjac1jac2r  r  r  r  r  s                  r   test_curvefit_simplecovariance+TestCurveFit.test_curvefit_simplecovariancee  s    	$	0 			qAq"%S!C"))**E
*;;;U$s*q!:|4JD"/(e  A(e  A  5959 #0 5r!   c                 X   S nS nS nS n[         R                  R                  S5      n[         R                  " SS5      nU" USS	5      nUS
UR	                  [        U5      S9-  -   n[         R                  " [        U5      5      S
-   n	[         R                  " U	S-  5      n
[         R                  " S	[         R                  " S5      -  S[         R                  " S5      -  S/S	[         R                  " S5      -  S	[         R                  " S5      -  S// SQ/5      nUR                  U5      nUR                  U
5      R                  UR                  5      nXB4S4 HD  u  pS H9  n[        X6XUUS9u  nn[        XXUUS9u  nn[        UUSSS9  [        UUSSS9  M;     MF     g )Nc                 T   [         R                  " S[         R                  " S5      -  S[         R                  " S5      -  S/S[         R                  " S5      -  S[         R                  " S5      -  S// SQ/5      nUR                  U[         R                  " U* U -  5      -  5      $ NrW  r<         r   r   r   rW  )r#   r   r  dotrT  )r%   r  r  rotns       r   funcp4TestCurveFit.test_curvefit_covariance.<locals>.funcp  s    88bmS^Q? mR
]A>(* +D 88Ar!t,--r!   c                    [         R                  " S[         R                  " S5      -  S[         R                  " S5      -  S/S[         R                  " S5      -  S[         R                  " S5      -  S// SQ/5      n[         R                  " U* U -  5      nUR	                  [         R
                  " XA* U -  U-  45      R                  5      $ r  )r#   r   r  rT  r  r  r  )r%   r  r  r  rX  s        r   jacp3TestCurveFit.test_curvefit_covariance.<locals>.jacp  s    88bmS^Q? mR
]A>(* +D r!tA88BIIq"q&1*o68899r!   c                 <    U[         R                  " U* U -  5      -  $ r   rS  r  s      r   rq   3TestCurveFit.test_curvefit_covariance.<locals>.func  r+  r!   c                     [         R                  " U* U -  5      n[         R                  " X1* U -  U-  45      R                  $ r   rV  rW  s       r   rK   2TestCurveFit.test_curvefit_covariance.<locals>.jac  rZ  r!   r   r=   rS   r  rW  rp  rq  r<   r  r  r  r  r  g+i)+>rh  )r  r   )r#   r  RandomStater$  ru  r6   r  rG   r   r  r  r  r   r   )r   r  r  rq   rK   r~  r  r   r  r  r  r  ydatapcovarpr  r  r  r  r  r  r  s                        r   test_curvefit_covariance%TestCurveFit.test_curvefit_covariance  s   	.	:	$	0 ii##A&		!QS!C#**#e**555U$s*q! xx"RWWQZ-RWWQZ;RWWQZ-BGGAJ:$& ' %%$$TVV,;5JD"/(e  Au(v  Au  u6Fu6F #0 6r!   r  FTc           	          S nU R                   U R                  pC[        X#USUS9u  pV[        X#U[        R                  " US5      US9u  pW[        R
                  " Xg:H  5      (       d   eg )Nc                     X-  U-   $ r   r.   r  s      r   rq   5TestCurveFit.test_curvefit_scalar_sigma.<locals>.func      519r!   r<   )r  r  )r%   r   r   r#   	full_liker   )r   r  rq   r%   r   r  r  r  s           r   test_curvefit_scalar_sigma'TestCurveFit.test_curvefit_scalar_sigma  sc    	 vvtvv1TaqP",,q!"4^
 vven%%%%r!   c           
         [         R                  " SS5      nSU-  S-   S[         R                  " U5      -  -   nS nS GH  n[         R                  [         R                  4 H  n[         R                  [         R                  4 H%  nUR                  U5      nUR                  U5      nM'     [        R                  " 5          [        R                  " S[        5        [        X1X$S	9u  px[         R                  " U5      R                  5       (       d   e[         R                  " US
5      (       a   e S S S 5        M     GM     g ! , (       d  f       M  = f)NrJ  r  rl   r|  rT   c                     X-  U-   $ r   r.   r  s      r   rq   &TestCurveFit.test_dtypes.<locals>.func  r  r!   r  errorr   r=   )r#   r$  rG  r   r   astypewarningscatch_warningssimplefilterr   r   isfiniter   allclose)	r   r%   r   rq   r   dtxdtyr   covs	            r   test_dtypesTestCurveFit.test_dtypes  s    IIb!ECK#bffQi-'	 .F

BJJ/JJ

3CAA 4 ,,.))'?C&tAFA;;s+//1111!{{1a00000 /. 0 . /.s   A1E
Ec                    S n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n/ SQn[         R                  " / SQ5      nU" U/UQ76 n[        XXtX#4S9u  pUR                  [         R                  5      nU" U/UQ76 n[        XXtX#4S9u  p[        XSS	9  g )
Nc                     X-   S-  nX!-
  S-  nXGX-
  -  -   U[         R                  " X-
  S-  US-  S-  -   5      -  -   $ )Nr<   rS   )r#   r  )r%   s_1s_2o_xo_yr   b_2b_1s           r   	hyperbola,TestCurveFit.test_dtypes2.<locals>.hyperbola  sM    9/C9/Cae$s277AEA:1Q3F+G'GGGr!   )g      rW          g      $rW   )rW   r|  r|  rW   g      $@)ggUUUUUU?rW  g      rT   )rI  g?r{  )iiirS   rS   r         )r3   r  r  r,  r  gh㈵>r   )r#   r   r   r  r   r   )r   r  min_fitmax_fitr  paramsr  r  popt_64r  popt_32s              r   test_dtypes2TestCurveFit.test_dtypes2  s    	H
 ((89((56:;&89%)&) u'.&8:
 RZZ(%)&)u'.&8:
 	t4r!   c                 4  ^ [         R                  " S5      nSUS-  -  SU-  -   [         R                  R                  [	        U5      5      -   mU4S jnS H>  n[        UU[         R                  " U5      US9u  pE[        UUSUS9u  pg[        XW5        M@     g )	Nr   g@r<   g      @c                 "   > XS-  -  X -  -   T-
  $ r  r.   )r%   r  r  targets      r   fit_func/TestCurveFit.test_broadcast_y.<locals>.fit_func  s    Av:%..r!   r  )r  r  r   r   )r#   r$  r  randr6   r   rw  r   )	r   r  r  r   popt0pcov0r  r  r  s	           @r   test_broadcast_yTestCurveFit.test_broadcast_y  s    		"uz!C%K/"))..U2LL	/-F$X+0+-==+?,24LE %X+0+,,24LE E) .r!   c           	          S n[        [        5         [        U/ SQ/ SQS/SS9  S S S 5        g ! , (       d  f       g = f)Nc                     X-  U-   $ r   r.   r  s      r   rq   .TestCurveFit.test_args_in_kwargs.<locals>.func  r  r!   r&  r  r        r=   rw   )r  r  r,  rY   r  r   s     r   test_args_in_kwargs TestCurveFit.test_args_in_kwargs   s5    	 :&d(*	! '&&s   /
=c                 x    S n[        [        SS9   [        U/ SQ/ SQS9  S S S 5        g ! , (       d  f       g = f)Nc                 N    U[         R                  " U* U -  5      -  U-   U-   U-   $ r   rS  r%   r  r  r   drX  s         r   rq   <TestCurveFit.test_data_point_number_validation.<locals>.func  s*    rvvqb1f~%)A-11r!   zThe number of func parameters=r   r&  r  )r  r  )rn   ro   r   r   s     r   !test_data_point_number_validation.TestCurveFit.test_data_point_number_validation  s1    	2 9,LMd(*, NMMs   +
9zignore::RuntimeWarningc                     S n[         R                  R                  S5      nSn[         R                  " U5      n[         R                  " SSU5      UR                  U5      -   n[
        R                  " XUSS9u  pg[         R                  " [         R                  " U5      S:  5      (       d   e[        R                  " U5      S   n[         R                  " US	:  5      (       d   e[        XwR                  5        g )
Nc                     U[         R                  " U S-   U-   5      -  U[         R                  " U S-   U-   5      -  -   U-   $ Nr=   r#   logr  s         r   r3   #TestCurveFit.test_gh4555.<locals>.f  s>    RVVAEAI&&266!a%!)+<)<<q@@r!      MI9V$O-r   r<   r  i r  r   g{Gz)r#   r  rt  r$  r  r   r   r   rG   r   eighr   r  )	r   r3   r~  rI   r%   r   r   r  eigss	            r   test_gh4555TestCurveFit.test_gh4555  s    	A ii##$67IIaLKK1a 3::a=0##A!F;vvbggclQ&''''{{3"vvdUl####UU#r!   c                    [         R                  R                  S5      nS n[         R                  " SSS5      nU" USSS5      nS	UR	                  UR
                  S
9-  nXE-   n[        X#U5      u  px/ SQ/ SQ/ SQ/n	[        XS5        g )Nr  c                 B    U[         R                  " U* U -  5      -  U-   $ r   rS  )r%   r  r  r   s       r   rq   'TestCurveFit.test_gh4555b.<locals>.func/  s     rvvqb1f~%))r!   r   rS   r  r  r  rT   rp  rq  )gt^G?d*.X|?T}H)r  g1x?u`v?)r  r  gon2f?gH׊>)r#   r  rt  r  ru  rr  r   r   )
r   r~  rq   r  r   y_noiser  r  r  refs
             r   test_gh4555bTestCurveFit.test_gh4555b*  s     ii##$67	* Aq"%S#&




334.MMMO 	$'r!   c           	      *  ^^ [         R                  R                  S5      n[         R                  " SSS5      nSU-  S-   UR	                  SS9S-  -   nU4S	 jmU4S
 jmS Tl        S Tl        [         R                  " SS/5      n[        TX#USTS9  g )Nl   FjGb r   r   e   r<   r=   rq  rT   c                    > [         R                  " TR                  U:H  5      (       a   eUTl        XS   -  US   -   $ r  )r#   r   last_p)r%   r   lines     r   r  'TestCurveFit.test_gh13670.<locals>.lineG  s<    vvdkkQ.////DKt8ad?"r!   c                    > [         R                  " TR                  U:H  5      (       a   eUTl        [         R                  " U [         R                  " U 5      /5      R
                  $ r   )r#   r   r  r   r  r  )r%   r   rK   s     r   rK   &TestCurveFit.test_gh13670.<locals>.jacL  sI    vvcjjAo....CJ88QQ01333r!   rW  g      @r   r\  )r#   r  rt  r  ru  r  r   r   )r   r~  r%   r   r,  rK   r  s        @@r   test_gh13670TestCurveFit.test_gh13670>  s    
 ii##$78KK1c"EAI


,s22	#
	4
 
XXsCj!$b37r!   r  r  c           
          S nSn[         R                  " [        US9   [        X R                  U R
                  S/SUS9  S S S 5        g ! , (       d  f       g = f)Nc                 
    X-  $ r   r.   r  s     r   rq   9TestCurveFit.test_gh20155_error_mentions_x0.<locals>.funcZ  r  r!   z+Initial guess is outside of provided boundsr   r=   )r   i  rL  )r  r
   r   r   r%   r   )r   r   rq   messages       r   test_gh20155_error_mentions_x0+TestCurveFit.test_gh20155_error_mentions_x0V  sC    	?]]:W5dFFDFFs<#% 655s   #A
A)r%   r   N).r(   r)   r*   r+   r   r  r  r  r  r  r  r  r  thread_unsafer  r  staticmethodr  r  r  r
  r  r  r   r&  r/  r9  rC  rP  r_  ri  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r-   r.   r!   r   ry  ry    s   -/ -- /&.1`J [[8 8> 1 18 [[X'>?
J @
J [[X'>?J @J [[S1a&)[[X'>?J @ *J %J$
P'( #D,""5H	. [[[)446 546l:60Gd [[-t}=
& >
&1*58* !, [[ 89$ :$&((80 [[Xx'89% :%r!   ry  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestFixedPointib  c                 <    S nSn[        X5      n[        US5        g )Nc                     SU -  $ NrV   r.   r   s    r   rq   0TestFixedPoint.test_scalar_trivial.<locals>.funcf      q5Lr!   rW  rW   r   r   r   rq   rr   r%   s       r   test_scalar_trivial"TestFixedPoint.test_scalar_triviald  s     	!As#r!   c                 <    S nSn[        X5      n[        US5        g )Nc                     U S-  $ r  r.   r   s    r   rq   /TestFixedPoint.test_scalar_basic1.<locals>.funcn  s    a4Kr!   ?rW  r#  r$  s       r   test_scalar_basic1!TestFixedPoint.test_scalar_basic1l  s     	!As#r!   c                 <    S nSn[        X5      n[        US5        g )Nc                     U S-  $ NrT   r.   r   s    r   rq   /TestFixedPoint.test_scalar_basic2.<locals>.funcv  s    c6Mr!   r*  rW  r#  r$  s       r   test_scalar_basic2!TestFixedPoint.test_scalar_basic2t  s     	!As#r!   c                     S nSS/n[         R                  " SS9   [        X5      nS S S 5        [        WSS/5        g ! , (       d  f       N= f)Nc                     SU -  $ r   r.   r   s    r   rq   /TestFixedPoint.test_array_trivial.<locals>.func}  r"  r!   g333333?g333333?ignorer   rW   )r#   errstater   r   r$  s       r   test_array_trivial!TestFixedPoint.test_array_trivial|  sB    	4[[[X&D%A 'ASz* '&s	   ?
Ac                     S n[        / SQ5      n/ SQn[        R                  " SS9   [        XU4S9nS S S 5        [	        WSU-  5        g ! , (       d  f       N= f)Nc                     XS-  -  $ r  r.   r%   r   s     r   rq   .TestFixedPoint.test_array_basic1.<locals>.func  s    !t8Or!   g      ?rW  g      ?)皙?gffffff?g?r6  r7  rx   rW  )r   r#   r8  r   r   r   rq   r   rr   r%   s        r   test_array_basic1 TestFixedPoint.test_array_basic1  sM    	#$[[X&DA40A 'As1u% '&s   A
Ac                 ^    S n[        / SQ5      n/ SQn[        XU4S9n[        XBS-  5        g )Nc                     XS-  -  $ r/  r.   r=  s     r   rq   .TestFixedPoint.test_array_basic2.<locals>.func  s    #v:r!   r?  )g?r@  r@  rx   r<   )r   r   r   rA  s        r   test_array_basic2 TestFixedPoint.test_array_basic2  s1    	#$t,A!t$r!   c                     [        S SSSSS9n[        U[        R                  " SU-  5      S-  5        [        U[	        S	5      S
-  5        g )Nc                 :    [         R                  " SU -  5      S-  $ )Nr  rV   rS  )xxs    r   r4   .TestFixedPoint.test_lambertw.<locals>.<lambda>  s    tBw(;r!   rW  r.   g-q=i  )rY   xtolmaxiterr  rV   r=   r<   )r   r   r#   rT  r   )r   xxroots     r   test_lambertwTestFixedPoint.test_lambertw  sF    ;SeS2tF{ 3C 78A.r!   c                    ^^^ SmSmSnSnUS-
  U-  TT-  U-  SUS-
  -  -  -  mUUU4S jn[        X2SS9n[        XA5        g )	Nr<   r  r  gjt?r=   c                    > [         R                  " TT-  U -  5      [         R                  " TU -  U S-
  -  5      -  S-   $ r  r  )rI   i0klkss    r   rq   1TestFixedPoint.test_no_acceleration.<locals>.func  s8    66"R%'?RVVBqD!a%L%99A==r!   	iterationr   )r   r   )r   mn0rq   rI   rT  rU  rV  s        @@@r   test_no_acceleration#TestFixedPoint.test_no_acceleration  sY    sAg2a1ac7++	> 5r!   r.   N)r(   r)   r*   r+   r%  r+  r1  r9  rB  rG  rP  r[  r-   r.   r!   r   r  r  b  s*    $$$+&%/r!   r  ).r,   r  r  r   numpy.testingr   r   r   r   r   r   r	   r
   rn   numpyr#   r   r   multiprocessing.poolr   scipyr   r   scipy.specialr   scipy.optimize._minpack_pyr   r   r   scipy.optimizer   scipy.optimize._minimizer   r   r0   r:   rE   rL   rN   rP   r   r   r   r	  ry  r  r.   r!   r   <module>re     s      < < < +    + " " F F * +# #+>.<
i5 i5X; ;@; ;+ +4W. W.td
% d
%NH Hr!   