
    doiO                     r   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	  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)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     ]/var/www/html/land-ocr/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_funcr.   $   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_parallelr8   +   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_networkrC   4   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   )r4   r!   diagemptyr"   )r>   r?   r@   npdiffjacs         r   pressure_network_jacobianrJ   S   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   )rC   rJ   )r>   r?   r@   s      r   pressure_network_fun_and_gradrL   j   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)
TestFSolveo   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         ?       @        rT   rU   Targsfull_outputr;   )	r!   fullr	   r   fsolverC   r   r"   r   )r   r@   r?   initial_guessfinal_flowsinfoiermesgs           r   !test_pressure_network_no_gradient,TestFSolve.test_pressure_network_no_gradientp   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 )NrQ   rR   rS   rW   fprime)	r!   rY   r	   r   rZ   rC   rJ   r   r"   r   r@   r?   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;         ?rT   r   assert_raises	TypeErrorr   rZ   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 Nrj   rT   )r;   rW   )rl   rm   r   rZ   r.   r   rp   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   rp   rd   rk   r   ro   
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:   r.   r#   s    r   ro   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|   )rl   rm   r   rZ   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
ValueErrorrv   s    r   ro   ,TestFSolve.test_func_can_raise.<locals>.func       Z((r   r   matchr   rp   rl   r   r   rZ   r   ro   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   ro   ,TestFSolve.test_Dfun_can_raise.<locals>.func       rxx~%%r   c                      [        S5      er   r   rv   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   ro   %TestFSolve.test_float32.<locals>.func   s1    88QqTCZ15RZZHAMMr   r;   r   MbP?atol)r   rZ   r!   r	   r   r   )r   ro   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   )r`   rC   rW   r   s    r   ro   ,TestFSolve.test_reentrant_func.<locals>.func   s    224#T**r   rQ   rR   rS   TrV   r;   )r!   rY   r	   r   rZ   r   r"   r   )	r   ro   r@   r?   r[   r\   r]   r^   r_   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   )rf   rJ   r   s    r   r~   3TestFSolve.test_reentrant_Dfunc.<locals>.deriv_func   s    446,d33r   rQ   rR   rS   rc   )r!   rY   r	   r   rZ   rC   r   r"   )r   r~   r@   r?   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   )r8   r`   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   )r8   rf   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)   r`   rf   rq   rx   r   r   r   r   r   r   r   r   r   r+   r,   r   r   rN   rN   o   sF    	 ;<PU
U*=4 ;55r   rN   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 )NrQ   rR   rS   hybrmethodrW   	r!   rY   r	   r   rootrC   r#   r   r"   re   s        r   r`   .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 )NrQ   rR   rS   r   rW   r   rI   )
r!   rY   r	   r   r   rC   rJ   r#   r   r"   re   s        r   rf   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 )NrQ   rR   rS   r   Tr   )	r!   rY   r	   r   r   rL   r#   r   r"   re   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)   r`   rf   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 )NrQ   rR   rS   lmr   r   re   s        r   r`   ,TestRootLM.test_pressure_network_no_gradient   sV    GGAsO./mm$4m+/tiAAB 	!+rwwqz:r   r,   N)r&   r'   r(   r)   r`   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)rX   r   )r   r   r   rZ   r   )r   r#   r]   r^   r_   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      nUSUR                  UR                  5      -  -   U l        g )Nr   r   (   )g@*   g33333sr:   {   g{Gz?)	r!   linspacer#   abcrandomdefault_rngstandard_normalr   y_meas)r   r#   abr   y_truerngs          r   r   TestLeastSq.setup_method!  sw    KK2r"Aq5a4!#!ii##C(tC$7$7$EEE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_jacobian/  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 S35        [        X R                  SS9  g )Nr   r   r   rv   r;   r:   r   rQ   solution not found (ier=)r:   decimalr	   r   r  r  r#   r   r   r  r   p0
params_fitr^   s       r   
test_basicTestLeastSq.test_basic2  sV    7^!$.."(,TVV'<>
|#'?uA%FG!*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 S35        [        X R                  SS9  g )Nr%  rW   Dfunr&  r'  r(  r:   r)  )	r	   r   r  r  r#   r"  r   r   r  r,  s       r   test_basic_with_gradient$TestLeastSq.test_basic_with_gradient:  sb    7^!$.."(,TVV'<'+'>'>@
 	|#'?uA%FG!*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%  TrV   r&  solution not found: )r	   r   r  r  r#   r   )r   r-  rX   r.  cov_xinfodictr_   r^   s           r   test_full_outputTestLeastSq.test_full_outputC  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)copyrV   r&  r7  )r	   r
   r   r  r  r#   r   r   )	r   r-  p0_copyrX   r.  r8  r9  r_   r^   s	            r   test_input_untouched TestLeastSq.test_input_untouchedK  sl    7)&dnnb$(KK#8*.0 2=.
83y $8"?@2'r   c                 `    [        S5      nSS/n[        [        [        R                  X5        g ri   r   rl   rm   r   r   rn   s      r   rq   *TestLeastSq.test_wrong_shape_func_callableU  s(    1~ 3Zi!1!14<r   c                 R    SS/n[        [        [        R                  [        USS9  g rt   )rl   rm   r   r   r.   rw   s     r   rx   *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   rp   r3  rB  r}   s      r   test_wrong_shape_Dfun_callable*TestLeastSq.test_wrong_shape_Dfun_callableb  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   ro   8TestLeastSq.test_wrong_shape_Dfun_function.<locals>.funch  r   r   c                     [        U S5      $ r   r   r   s    r   r~   >TestLeastSq.test_wrong_shape_Dfun_function.<locals>.deriv_funcj  r   r   r   r;   rG  rl   rm   r   r   r}   s      r   test_wrong_shape_Dfun_function*TestLeastSq.test_wrong_shape_Dfun_functiong  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:   rT   r   r!   exp)r   r#   r   qs       r   ro   &TestLeastSq.test_float32.<locals>.funcp  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?)      ?rX  rX  rX  rv   r&  r:   g-C6?)r!   r	   r   r   r   r   r=   )r   ro   r#   r   r-  p1successs          r   r   TestLeastSq.test_float32n  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   rv   s    r   ro   -TestLeastSq.test_func_can_raise.<locals>.func  r   r   r   r   r   r   rl   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   ro   -TestLeastSq.test_Dfun_can_raise.<locals>.func  r   r   c                      [        S5      er   r   rv   s    r   r~   3TestLeastSq.test_Dfun_can_raise.<locals>.deriv_func  r   r   r   r   r   rG  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 S35        [        UT R                  SS9  g )	Nc                  B   > TR                  5         TR                  " U 6 $ r   )r/  r  r   s    r   ro   -TestLeastSq.test_reentrant_func.<locals>.func  s    OO>>4((r   r%  rv   r&  r'  r(  r:   r)  )r	   r   r  r#   r   r   r  )r   ro   r-  r.  r^   s   `    r   r   TestLeastSq.test_reentrant_func  sZ    	) 7^!$(,TVV'<>
|#'?uA%FG!*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 S3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%  r2  r&  r'  r(  r:   r)  r+  )r   r~   r-  r.  r^   s   `    r   test_reentrant_DfunTestLeastSq.test_reentrant_Dfun  se    	2 7^!$.."(,TVV'<'13
 	|#'?uA%FG!*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   )r8   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   )r8   r4  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   ro   =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   rO  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/  r4  r:  r?  rq   rx   rH  rP  r   r   r   r   rn  r   r   rw  r+   r,   r   r   r  r     sk    F
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
S	 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                   RO                  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)rX  g	@      #@gffffff+@)rX  rT         @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   ro   ,TestCurveFit.test_one_argument.<locals>.func  	    4Kr   r;   )r;   r;   r   g3ı.n?rQ   r)  )r   r   g-C6Z?F)rX   check_finite)r   r#   r   r   r4   r   r   r   )
r   ro   poptpcovrespopt2pcov2r9  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   ro   ,TestCurveFit.test_two_argument.<locals>.func  s    T6Mr   r:   r{   c]K?-?rQ   r)  䃞ͪϵ?T㥛 b=y?)r   r#   r   r   r4   r   r   )r   ro   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   ro   =TestCurveFit.test_func_is_classmethod.<locals>.test_self.func  s    a4xr   r,   N)r&   r'   r(   r)   r*   ro   r+   r,   r   r   	test_selfr    s     r   r  r{   r  r  rQ   r)  r  r  r  )r   ro   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:   rT   rT  )r#   rp   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[        R                  " 5          [        R                  " S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   rQ      )r;   r;   r           )r;   r:   r;   r:   r;   r:   c                     X-  U-   $ r   r,   r  s      r   r1   !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   rQ   ignorez3Covariance of the parameters could not be estimatedr-  r  r-  r{   )r!   r	   r   sqrtrE   r   infreshapewarningscatch_warningsfilterwarningsr   r   r   r   )r   xdataydatar  r1   r   r  r  perr_scaledperrr  pcov_expected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:$$&##E! #6%QF%PJD$Qbq	5!9!QHLE ' 	

f$%4/v%&50 '&s   A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_linear0  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[        R                  " [        5         [        S X5        S S S 5        g ! , (       d  f       g = f)N)r;   r:   r   rQ   r     )r;   r:   r   rQ   g      @r  c                 
    X-  $ r   r,   r  s      r   r2   <TestCurveFit.test_indeterminate_covariance.<locals>.<lambda><  s    acr   )r!   r	   r  warnsr   r   r   r  r  s      r   test_indeterminate_covariance*TestCurveFit.test_indeterminate_covariance7  sC    +,-.\\/*)58 +**s   A""
A0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   r2   0TestCurveFit.test_NaN_handling.<locals>.<lambda>F  
    acAgr   c                     X-  U-   $ r   r,   r  s      r   r2   r  H  r  r   c                     X-  U-   $ r   r,   r  s      r   r2   r  J  s
    QS1Wr   r  T)r!   r	   nanrl   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)r1   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,   )rl   r   r   r   )r1   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   r1   *TestCurveFit.test_nan_policy_1d.<locals>.fl  r  r   r:   r   rQ   r;   r  r  )r:   r   rQ   r  r!   r	   r  r  r   r   r1   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   r1   *TestCurveFit.test_nan_policy_2d.<locals>.fy  s,    1a4B1a4B4!8b= r   r:   r   rQ   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   rG   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   r1   ,TestCurveFit.test_nan_policy_2_3d.<locals>.f  sB    319%%'B319%%'B4!8b= r   r:   r   rQ   r  r  r;   r   r  r  r  )r!   r	   r  r  r  )r   rG   r   r1   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   r2   0TestCurveFit.test_empty_inputs.<locals>.<lambda>      !#r   c                 
    X-  $ r   r,   r  s     r   r2   r    r  r   )r;   r:   )boundsc                 
    X-  $ r   r,   r  s     r   r2   r    r  r   r;   c                 
    X-  $ r   r,   r  s     r   r2   r    r  r   r:   rl   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   r2   8TestCurveFit.test_function_zero_params.<locals>.<lambda>  s    qr   r;   r:   r   rQ   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   r2   *TestCurveFit.test_None_x.<locals>.<lambda>  s    A		",=r   r:   r   rT   )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   rT  r  s      r   r1   ,TestCurveFit.test_method_argument.<locals>.f      rvvqbd|##r   r   r;      rT   r  r  r   Nr   unknown)r!   r  r   r   rl   r   )r   r1   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   rT  r  s      r   r1   (TestCurveFit.test_full_output.<locals>.f  s    rvvqb1f~%%r   r   r;   r0  rT   r1  T)r   rX   r   fvecr   fjacipvtqtfr&  )r!   r  r   r   
isinstancestr)
r   r1   r  r  r   r  r  r9  r  r^   s
             r   r:  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   rT  r  s      r   r1   #TestCurveFit.test_bounds.<locals>.f  r/  r   r   r;   r0  rT   rX  rj   r}  )Nr  r  )r  r   r  rU   g333333?)r   r  r   )r!   r  r   r   r   r  rl   r   )r   r1   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   r1   &TestCurveFit.test_bounds_p0.<locals>.f  s    66!%= r   r:   r	  r   r  r  g @r  r-  r  r   )r!   r  pirK  r   r   )	r   r1   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   rT  r  s      r   r1    TestCurveFit.test_jac.<locals>.f  r/  r   c                     [         R                  " U* U -  5      n[         R                  " X1* U -  U-  45      R                  $ r   r!   rU  r  r  r#   r  r  es       r   rI   "TestCurveFit.test_jac.<locals>.jac  6    r!tA99aa!_-///r   r   r;   r0  rT   rO  )z2-pointz3-pointcs)rI   r   r:   r  r   rI   r   r     )r  r   rI   r   r  )r!   r  r   r   r"   r   )
r   r1   rI   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   r2   5TestCurveFit.test_maxfev_and_bounds.<locals>.<lambda>(      r   )r   r   r   )r  r  c                 
    X-  $ r   r,   rg  s     r   r2   rh  )  ri  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   rT  r  s      r   exponential7TestCurveFit.test_curvefit_omitnan.<locals>.exponential0  s    rvvae}$$r   l   lt*G7 r   r;   r   皙?rR   r   g?r:   z1The sigma must be a scalar, 1D array or 2D array.g?rX  r  sizer  )r-  r  r  )axisr  rl  r   )r!   r  r  r  normalr  multivariate_normal
zeros_likeintegersr  r   uniqueconcatenatedeleteasarrayndimr   )r   ro  rr  r  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      n[         R                  " S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X"4S4 H<  u  pS H1  n[        XXgXS9u  p[        XXhXS9u  p[        XSS9  [        XSS9  M3     M>     g )Nc                 <    U[         R                  " U* U -  5      -  $ r   rT  r  s      r   ro   9TestCurveFit.test_curvefit_simplecovariance.<locals>.funcg  r/  r   c                     [         R                  " U* U -  5      n[         R                  " X1* U -  U-  45      R                  $ r   rZ  r[  s       r   rI   8TestCurveFit.test_curvefit_simplecovariance.<locals>.jacj  r^  r   r  r   rQ   2         @?rt  ru  r:   NNFTr  rI   r  rl  r   )
r!   r  r  r  r  r4   zerosrE   r   r   )r   ro   rI   r  r  r   r  r  covarjac1jac2r  r  r  r  r  s                   r   test_curvefit_simplecovariance+TestCurveFit.test_curvefit_simplecovariancee  s    	$	0 ii##C(Aq"%S!C#--3u:->>>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      $ NrX  r:         r   r   r   rX  )r!   r	   r  dotrU  )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  rU  r  r  r  )r#   r  r  r  r\  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   rT  r  s      r   ro   3TestCurveFit.test_curvefit_covariance.<locals>.func  r/  r   c                     [         R                  " U* U -  5      n[         R                  " X1* U -  U-  45      R                  $ r   rZ  r[  s       r   rI   2TestCurveFit.test_curvefit_covariance.<locals>.jac  r^  r   i  r;   rQ   r  rX  rt  ru  r:   r  r   r  r  r  r  gz]ʂ>rl  )r  r   )r!   r  r  r(  r  r4   r  rE   r	   r  r  r  r   r   )r   r  r  ro   rI   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##D)		!QS!C#--3u:->>>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   ro   5TestCurveFit.test_curvefit_scalar_sigma.<locals>.func      519r   r:   )r  r  )r#   r   r   r!   	full_liker   )r   r  ro   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)NrN  r  rj   r}  rR   c                     X-  U-   $ r   r,   r  s      r   ro   &TestCurveFit.test_dtypes.<locals>.func  r  r   r  errorr   r;   )r!   r(  rK  r   r
   astyper  r  simplefilterr   r   isfiniter   allclose)	r   r#   r   ro   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:   rQ   )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      rU          g      $rU   )rU   r}  r}  rU   g      $@)ggUUUUUU?rX  g      rR   )rM  g?r|  )iiirQ   rQ   r         )r1   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                 R  ^	 [         R                  " S5      n[         R                  R                  S5      nSUS-  -  SU-  -   UR                  [	        U5      S9-   m	U	4S jnS H>  n[        UU[         R                  " U5      US	9u  pV[        UUS
US	9u  px[        Xh5        M@     g )Nr   r  g@r:   g      @ru  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  r  r4   r   rz  r   )
r   r  r  r  r   popt0pcov0r  r  r  s
            @r   test_broadcast_yTestCurveFit.test_broadcast_y  s    		"ii##C(uz!C%K/#**#e**2MM	/-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   ro   .TestCurveFit.test_args_in_kwargs.<locals>.func  r  r   r&  r  r        r;   ru   )r  r  r-  rW   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   rT  r#   r  r  r   dr\  s         r   ro   <TestCurveFit.test_data_point_number_validation.<locals>.func  s*    rvvqb1f~%)A-11r   zThe number of func parameters=r   r&  r  )r  r  )rl   rm   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   r1   #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  r  r(  r  r   r   r   rE   r   eighr   r  )	r   r1   r  rG   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   rT  )r#   r  r  r   s       r   ro   'TestCurveFit.test_gh4555b.<locals>.func0  s     rvvqb1f~%))r   r   rQ   r  r  r  rR   rt  ru  )gt^G?d*.X|?T}H)r   g1x?u`v?)r  r  gon2f?gH׊>)r!   r  r  r  rx  rv  r   r   )
r   r  ro   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;   ru  rR   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>.lineH  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   rI   s     r   rI   &TestCurveFit.test_gh13670.<locals>.jacM  sI    vvcjjAo....CJ88QQ01333r   rX  g      @r   r`  )r!   r  r  r  rx  r
  r	   r   )r   r  r#   r   r-  rI   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   ro   9TestCurveFit.test_gh20155_error_mentions_x0.<locals>.func[  r  r   z+Initial guess is outside of provided boundsr   r;   )r   i  rP  )r  r   r   r   r#   r   )r   r   ro   messages       r   test_gh20155_error_mentions_x0+TestCurveFit.test_gh20155_error_mentions_x0W  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  staticmethodr  r  r  r  r  r  r  r  r$  r*  r3  r:  rG  rT  rc  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+   r,   r   r   rz  rz    s   -/ -- /&01dJ9> 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   rz  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)TestFixedPointic  c                 <    S nSn[        X5      n[        US5        g )Nc                     SU -  $ NrT   r,   r   s    r   ro   0TestFixedPoint.test_scalar_trivial.<locals>.funcg      q5Lr   rX  rU   r   r   r   ro   rp   r#   s       r   test_scalar_trivial"TestFixedPoint.test_scalar_triviale  s     	!As#r   c                 <    S nSn[        X5      n[        US5        g )Nc                     U S-  $ r  r,   r   s    r   ro   /TestFixedPoint.test_scalar_basic1.<locals>.funco  s    a4Kr   ?rX  r  r   s       r   test_scalar_basic1!TestFixedPoint.test_scalar_basic1m  s     	!As#r   c                 <    S nSn[        X5      n[        US5        g )Nc                     U S-  $ NrR   r,   r   s    r   ro   /TestFixedPoint.test_scalar_basic2.<locals>.funcw  s    c6Mr   r&  rX  r  r   s       r   test_scalar_basic2!TestFixedPoint.test_scalar_basic2u  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   ro   /TestFixedPoint.test_array_trivial.<locals>.func~  r  r   g333333?g333333?r  r   rU   )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   ro   .TestFixedPoint.test_array_basic1.<locals>.func  s    !t8Or   g      ?rX  g      ?)皙?gffffff?g?r  r2  rv   rX  )r	   r!   r3  r   r   r   ro   r   rp   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,   r8  s     r   ro   .TestFixedPoint.test_array_basic2.<locals>.func  s    #v:r   r:  )g?r;  r;  rv   r:   )r	   r   r   r<  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  rT   rT  )xxs    r   r2   .TestFixedPoint.test_lambertw.<locals>.<lambda>  s    tBw(;r   rX  r,   g-q=i  )rW   xtolmaxiterr  rT   r;   r:   )r   r   r!   rU  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  )rG   i0klkss    r   ro   1TestFixedPoint.test_no_acceleration.<locals>.func  s8    66"R%'?RVVBqD!a%L%99A==r   	iterationr   )r   r   )r   mn0ro   rG   rO  rP  rQ  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'  r-  r4  r=  rB  rK  rV  r+   r,   r   r   r  r  c  s*    $$$+&%/r   r  ),r*   r  r  r   numpy.testingr   r   r   r   r   r   rl   numpyr!   r	   r
   multiprocessing.poolr   scipyr   r   scipy.specialr   scipy.optimize._minpack_pyr   r   r   scipy.optimizer   scipy.optimize._minimizer   r   r.   r8   rC   rJ   rL   rN   r   r   r   r  rz  r  r,   r   r   <module>r`     s      G G *    + " " F F * +# #+>.<
i5 i5X; ;@; ;+ +4W. W.tf
% f
%RH Hr   