
     h                        d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlZddlmZmZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ  G d d          Z d Z!d Z"d Z#d Z$d Z% G d d          Z& G d d          Z' G d d          Z( G d d          Z) G d d          Z* G d d          Z+dS )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                       e Zd ZdZd Zd ZdS )ReturnShapezThis class exists to create a callable that does not have a '__name__' attribute.

    __init__ takes the argument 'shape', which should be a tuple of ints. When an instance
    is called with a single argument 'x', it returns numpy.ones(shape).
    c                     || _         d S N)shape)selfr   s     ]/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_minpack.py__init__zReturnShape.__init__   s    


    c                 4    t          j        | j                  S r   )nponesr   )r   xs     r   __call__zReturnShape.__call__    s    wtz"""r   N)__name__
__module____qualname____doc__r   r#    r   r   r   r      s<           # # # # #r   r   c                 *    t          j        |          S )zUA function that returns an array of ones of the given shape.
    `x` is ignored.
    )r    r!   )r"   r   s     r   
dummy_funcr*   $   s     75>>r   c                     t          t          |                     5 }|                    d |           cd d d            S # 1 swxY w Y   d S )Nc                      |             S r   r(   )fs    r   <lambda>z#sequence_parallel.<locals>.<lambda>-   s    !!## r   )r   lenmap)fspools     r   sequence_parallelr3   +   s    	CGG		 +xxr**+ + + + + + + + + + + + + + + + + +s   AAAc                     || dz  z  }t          j        |dd         |d         z
  |                                 |z
  f          }|S )a  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_networkr>   4   sJ    4 	
JMA
	1QRR51Q4<!1!1D!89::AHr   c                 P   t          |           }t          j        | dd         dz  |dd         z  d| d         z  |d         z  z
            }t          j        ||f          }|dz  |d|dz
  d|dz
  f<   d|d|dz
  |dz
  f<   t          j        |          ||dz
  ddf<   |S )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 parrameters.

    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`
    r6   Nr5   r   )r/   r    diagemptyr!   )r9   r:   r;   npdiffjacs         r   pressure_network_jacobianrE   S   s     	JAGJqrrNQ&122.Z]1BQqT1IIJJE
(Aq6

CaiC1dqsd
OC1ac	N'!**C!QQQKJr   c                 F    t          | ||          t          | ||          fS r   )r>   rE   )r9   r:   r;   s      r   pressure_network_fun_and_gradrG   j   s*    Zq11%j$::< <r   c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )
TestFSolvec                 
   t          j        dd          }d}t          g d          }t          j        t
          |||fd          \  }}}}t          |t          j        d                     t          |dk    |           d S )N         ?       @        rN   rO   Targsfull_outputr6   )	r    fullr   r   fsolver>   r   r!   r   )r   r;   r:   initial_guessfinal_flowsinfoiermesgs           r   !test_pressure_network_no_gradientz,TestFSolve.test_pressure_network_no_gradientp   s    GAsOO...//'/m4)( ( ($T3 	"+rwqzz:::q$r   c                     t          j        dd          }d}t          g d          }t          j        t
          |||ft                    }t          |t          j        d                     d S )NrK   rL   rM   rQ   fprime)	r    rS   r   r   rT   r>   rE   r   r!   r   r;   r:   rU   rV   s        r   #test_pressure_network_with_gradientz.TestFSolve.test_pressure_network_with_gradient{   sn    GAsOO...//om4),. . . 	"+rwqzz:::::r   c                 n    t          d          }ddg}t          t          t          j        ||           d S Nr6         ?rN   r   assert_raises	TypeErrorr   rT   r   funcx0s      r   test_wrong_shape_func_callablez)TestFSolve.test_wrong_shape_func_callable   s4    1~~ 3Zi$;;;;;r   c                 ^    ddg}t          t          t          j        t          |d           d S Nrb   rN   )r6   rQ   )rd   re   r   rT   r*   r   rh   s     r   test_wrong_shape_func_functionz)TestFSolve.test_wrong_shape_func_function   s.     3Zi*bwOOOOOOr   c                     t          d          }t          d          }t          t          t          j        |ddg|           d S )Nr6   r5   r5   r   rh   r]   rc   r   rg   
deriv_funcs      r    test_wrong_shape_fprime_callablez+TestFSolve.test_wrong_shape_fprime_callable   s?    1~~ ''
i$Aa5TTTTTTr   c                 \    d }d }t          t          t          j        |ddg|           d S )Nc                 "    t          | d          S N)r5   r*   r"   s    r   r.   z=TestFSolve.test_wrong_shape_fprime_function.<locals>.<lambda>       At,, r   c                 "    t          | d          S N)   r~   ry   rz   s    r   r.   z=TestFSolve.test_wrong_shape_fprime_function.<locals>.<lambda>       z!U33 r   r   r6   rr   )rd   re   r   rT   rs   s      r    test_wrong_shape_fprime_functionz+TestFSolve.test_wrong_shape_fprime_function   s7    ,,33
i$Aa5TTTTTTr   c                     d }t          t          d          5  t          j        |dg           d d d            d S # 1 swxY w Y   d S )Nc                       t          d          NI raised
ValueErrorrm   s    r   rg   z,TestFSolve.test_func_can_raise.<locals>.func       Z(((r   r   matchr   rh   rd   r   r   rT   r   rg   s     r   test_func_can_raisezTestFSolve.test_func_can_raise   s    	) 	) 	) :Z888 	* 	*ODaS))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*   ?AAc                     d }d }t          t          d          5  t          j        |dg|           d d d            d S # 1 swxY w Y   d S )Nc                 2    | t          j        dg          z
  S N
   r    r   rz   s    r   r.   z0TestFSolve.test_Dfun_can_raise.<locals>.<lambda>       RXrd^^+ r   c                       t          d          r   r   rm   s    r   rt   z2TestFSolve.test_Dfun_can_raise.<locals>.deriv_func   r   r   r   r   r   rr   r   rs   s      r   test_Dfun_can_raisezTestFSolve.test_Dfun_can_raise   s    ++	) 	) 	) :Z888 	= 	=ODaS<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=   AA
Ac                     d }t          j        |t          j        ddgt          j                            }t           ||          ddgd           d S )Nc                 p    t          j        | d         dz
  | d         dz
  gt           j                  dz  S )Nr   d   r6   i  dtyper5   )r    r   float32rz   s    r   r.   z)TestFSolve.test_float32.<locals>.<lambda>   s2    1Q4#:qtd{";2:NNNPQQ r   r6   r   MbP?atol)r   rT   r    r   r   r   )r   rg   ps      r   test_float32zTestFSolve.test_float32   sT    QQOD"(Aq62:">">??Q!Qd333333r   c                      fd}t          j        dd          }d}t          g d          }t          j        ||||fd          \  }}}}t          |t          j        d                     t          |dk    |           d S )Nc                  >                                      t          |  S r   )rZ   r>   rQ   r   s    r   rg   z,TestFSolve.test_reentrant_func.<locals>.func   s     22444#T**r   rK   rL   rM   TrP   r6   )r    rS   r   r   rT   r   r!   r   )	r   rg   r;   r:   rU   rV   rW   rX   rY   s	   `        r   test_reentrant_funczTestFSolve.test_reentrant_func   s    	+ 	+ 	+ 	+ 	+
 GAsOO...//'/-tQi( ( ($T3 	"+rwqzz:::q$r   c                       fd}t          j        dd          }d}t          g d          }t          j        t
          |||f|          }t          |t          j        d                     d S )Nc                  >                                      t          |  S r   )r_   rE   r   s    r   rt   z3TestFSolve.test_reentrant_Dfunc.<locals>.deriv_func   s     44666,d33r   rK   rL   rM   r\   )r    rS   r   r   rT   r>   r   r!   )r   rt   r;   r:   rU   rV   s   `     r   test_reentrant_DfunczTestFSolve.test_reentrant_Dfunc   s    	4 	4 	4 	4 	4
 GAsOO...//om4)   	"+rwqzz:::::r   c                 l    t          | j        gdz            }t          d |D                       sJ d S )Nr   c                     g | ]}|d u S r   r(   .0results     r   
<listcomp>z:TestFSolve.test_concurrent_no_gradient.<locals>.<listcomp>       333vFdN333r   )r3   rZ   allr   vs     r   test_concurrent_no_gradientz&TestFSolve.test_concurrent_no_gradient   sC    tEFKLL333334444444r   c                 l    t          | j        gdz            }t          d |D                       sJ d S )Nr   c                     g | ]}|d u S r   r(   r   s     r   r   z<TestFSolve.test_concurrent_with_gradient.<locals>.<listcomp>   r   r   )r3   r_   r   r   s     r   test_concurrent_with_gradientz(TestFSolve.test_concurrent_with_gradient   sC    tGH2MNN333334444444r   N)r$   r%   r&   rZ   r_   ri   ro   ru   r   r   r   r   r   r   r   r   r(   r   r   rI   rI   o   s        	  	  	 ; ; ;< < <P P PU U U
U U U
* * *= = =4 4 4
     ; ; ;5 5 55 5 5 5 5r   rI   c                        e Zd Zd Zd Zd ZdS )TestRootHybrc                     t          j        dd          }d}t          g d          }t          j        t
          |d||f          j        }t          |t          j        d                     d S )NrK   rL   rM   hybrmethodrQ   	r    rS   r   r   rootr>   r"   r   r!   r^   s        r   rZ   z.TestRootHybr.test_pressure_network_no_gradient   su    GAsOO...//m$4m+1q	C C CCD 	!+rwqzz:::::r   c                     t          j        dd          }d}t          g dg          }t          j        t
          |||fdt                    j        }t          |t          j	        d                     d S )NrK   rL   rM   r   rQ   r   rD   )
r    rS   r   r   r   r>   rE   r"   r   r!   r^   s        r   r_   z0TestRootHybr.test_pressure_network_with_gradient   s}    GAsOO///011m$4m*.6(AC C CCD 	 	"+rwqzz:::::r   c                     t          j        dd          }d}t          g d          }t          j        t
          |||fdd          j        }t          |t          j        d                     d S )NrK   rL   rM   r   Tr   )	r    rS   r   r   r   rG   r"   r   r!   r^   s        r   ,test_pressure_network_with_gradient_combinedz9TestRootHybr.test_pressure_network_with_gradient_combined   sy     GAsOO...//m$A$1q	+1t= = ==> 	 	"+rwqzz:::::r   N)r$   r%   r&   rZ   r_   r   r(   r   r   r   r      sA        ; ; ;; ; ;	; 	; 	; 	; 	;r   r   c                       e Zd Zd ZdS )
TestRootLMc                     t          j        dd          }d}t          g d          }t          j        t
          |d||f          j        }t          |t          j        d                     d S )NrK   rL   rM   lmr   r   r^   s        r   rZ   z,TestRootLM.test_pressure_network_no_gradient   su    GAsOO...//m$4m+/tQiA A AAB 	!+rwqzz:::::r   N)r$   r%   r&   rZ   r(   r   r   r   r      s#        ; ; ; ; ;r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestLeastSqc                    t          j        ddd          }d\  }}}|| _        |||f| _        ||dz  z  ||z  z   |z   }t           j                            d           |dt           j                            |j                  z  z   | _        d S )Nr   r   (   )g@*   g33333sr5   g{Gz?)	r    linspacer"   abcrandomseedstandard_normalr   y_meas)r   r"   abcy_trues         r   setup_methodzTestLeastSq.setup_method  s    K2r""!AQq51a4!A#!
	qtBI$=$=fl$K$KKKr   c                 :    |\  }}}|||dz  z  ||z  z   |z   z
  }|S Nr5   r(   )r   r   yr"   r   r   r   errs           r   	residualszTestLeastSq.residuals  s1    !A1a4!A#!"
r   c                 f    t          j        |dz  |t          j        |          g          j         S r   )r    vstack	ones_likeT)r   _p_yr"   s       r   residuals_jacobianzTestLeastSq.residuals_jacobian  s+    	1a4BLOO455777r   c                     t          g d          }t          | j        || j        | j        f          \  }}t          |dv d|z             t          || j        d           d S )Nr   r   r   rm   r6   r5   r~   rK   solution not found (ier=%d)r5   decimalr   r   r   r   r"   r   r   r   r   p0
params_fitrX   s       r   
test_basiczTestLeastSq.test_basic  ss    777^^!$."(,TV'<> > >
Cy "?#"EFFF!*dhBBBBBBr   c                     t          g d          }t          | j        || j        | j        f| j                  \  }}t          |dv d|z             t          || j        d           d S )Nr   rQ   Dfunr   r   r5   r   )	r   r   r   r   r"   r   r   r   r   r   s       r   test_basic_with_gradientz$TestLeastSq.test_basic_with_gradient  s~    777^^!$."(,TV'<'+'>@ @ @
C 	y "?#"EFFF!*dhBBBBBBr   c                     t          g dg          }t          | j        || j        | j        fd          }|\  }}}}}t          |dv d|z             d S )Nr   TrP   r   solution not found: %s)r   r   r   r   r"   r   )r   r   rR   r   cov_xinfodictrY   rX   s           r   test_full_outputzTestLeastSq.test_full_output%  sq    GGG9dnb$(K#8*.0 0 0 2=.
E8T3y ":T"ABBBBBr   c                     t          g dt                    }t          |d          }t          | j        || j        | j        fd          }|\  }}}}}t          |dv d|z             t          ||           d S )Nr   r   T)copyrP   r   r   )r   r   r   r   r   r"   r   r   )	r   r   p0_copyrR   r   r   r   rY   rX   s	            r   test_input_untouchedz TestLeastSq.test_input_untouched-  s    777)))&&&dnb$(K#8*.0 0 0 2=.
E8T3y ":T"ABBB2w'''''r   c                 n    t          d          }ddg}t          t          t          j        ||           d S ra   r   rd   re   r   r   rf   s      r   ri   z*TestLeastSq.test_wrong_shape_func_callable7  s5    1~~ 3Zi!14<<<<<r   c                 ^    ddg}t          t          t          j        t          |d           d S rk   )rd   re   r   r   r*   rn   s     r   ro   z*TestLeastSq.test_wrong_shape_func_function>  s/     3Zi!1:rPPPPPPr   c                     t          d          }t          d          }t          t          t          j        |ddg|           d S )Nr6   rq   r   rh   r   r   rs   s      r   test_wrong_shape_Dfun_callablez*TestLeastSq.test_wrong_shape_Dfun_callableD  s@    1~~ ''
i!14QqE
SSSSSSr   c                 \    d }d }t          t          t          j        |ddg|           d S )Nc                 "    t          | d          S rx   ry   rz   s    r   r.   z<TestLeastSq.test_wrong_shape_Dfun_function.<locals>.<lambda>J  r{   r   c                 "    t          | d          S r}   ry   rz   s    r   r.   z<TestLeastSq.test_wrong_shape_Dfun_function.<locals>.<lambda>K  r   r   r   r6   r   rd   re   r   r   rs   s      r   test_wrong_shape_Dfun_functionz*TestLeastSq.test_wrong_shape_Dfun_functionI  s8    ,,33
i!14QqE
SSSSSSr   c           	         d }t          j        g dt           j                  }t          j        g dt           j                  }t          j        g d          }t          j        ||||f          \  }}t          |dv            t           ||||          dz                                  d	 ||||          dz                                  z  k                d S )
Nc                     | d         t          j        || d         z
  dz   d| d         dz  z  z            z  | d         z   }||z
  S )Nr   r6   r5   rN   r~   r    exp)r   r"   r   qs       r   rg   z&TestLeastSq.test_float32.<locals>.funcP  sK    !RVa!fq[L#adAg+6777!<Aq5Lr   )
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?)      ?r  r  r  rm   r   r5   g-C6?)r    r   r   r   r   r   r8   )r   rg   r"   r   r   p1successs          r   r   zTestLeastSq.test_float32N  s   	 	 	 H   %'Z1 1 1H $ $ $+-:7 7 7X'''((&tRqe<<<G9$%%%b1q%%''$$$r!A,,/1F1F1H1H*HHIIIIIr   c                     d }t          t          d          5  t          j        |dg           d d d            d S # 1 swxY w Y   d S )Nc                       t          d          r   r   rm   s    r   rg   z-TestLeastSq.test_func_can_raise.<locals>.func_  r   r   r   r   r   r   rd   r   r   r   r   s     r   r   zTestLeastSq.test_func_can_raise^  s    	) 	) 	) :Z888 	+ 	+Tqc****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+r   c                     d }d }t          t          d          5  t          j        |dg|           d d d            d S # 1 swxY w Y   d S )Nc                 2    | t          j        dg          z
  S r   r   rz   s    r   r.   z1TestLeastSq.test_Dfun_can_raise.<locals>.<lambda>f  r   r   c                       t          d          r   r   rm   s    r   rt   z3TestLeastSq.test_Dfun_can_raise.<locals>.deriv_funch  r   r   r   r   r   r   r  rs   s      r   r   zTestLeastSq.test_Dfun_can_raisee  s    ++	) 	) 	) :Z888 	< 	<Tqc
;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<r   c                       fd}t          g d          }t          || j         j        f          \  }}t	          |dv d|z             t          | j        d           d S )Nc                  @                                       j        |  S r   )r   r   r   s    r   rg   z-TestLeastSq.test_reentrant_func.<locals>.funco  s"    OO!4>4((r   r   rm   r   r   r5   r   )r   r   r   r"   r   r   r   )r   rg   r   r   rX   s   `    r   r   zTestLeastSq.test_reentrant_funcn  s    	) 	) 	) 	) 	) 777^^!$(,TV'<> > >
Cy "?#"EFFF!*dhBBBBBBr   c                       fd}t          g d          }t           j        | j         j        f|          \  }}t          |dv d|z             t          | j        d           d S )Nc                  @                                       j        |  S r   )r   r   r   s    r   rt   z3TestLeastSq.test_reentrant_Dfun.<locals>.deriv_func{  s#    OO*4*D11r   r   r   r   r   r5   r   r   )r   rt   r   r   rX   s   `    r   test_reentrant_DfunzTestLeastSq.test_reentrant_Dfunz  s    	2 	2 	2 	2 	2 777^^!$."(,TV'<'13 3 3
C 	y "?#"EFFF!*dhBBBBBBr   c                 l    t          | j        gdz            }t          d |D                       sJ d S )Nr   c                     g | ]}|d u S r   r(   r   s     r   r   z;TestLeastSq.test_concurrent_no_gradient.<locals>.<listcomp>  r   r   )r3   r   r   r   s     r   r   z'TestLeastSq.test_concurrent_no_gradient  sB    t/"455333334444444r   c                 l    t          | j        gdz            }t          d |D                       sJ d S )Nr   c                     g | ]}|d u S r   r(   r   s     r   r   z=TestLeastSq.test_concurrent_with_gradient.<locals>.<listcomp>  r   r   )r3   r   r   r   s     r   r   z)TestLeastSq.test_concurrent_with_gradient  sC    t<=BCC333334444444r   c                     d }t          t          d          5  t          j        |ddg           d d d            d S # 1 swxY w Y   d S )Nc                 *    d| d         dz
  dz  z  dz   S )Nr5   r   r~   r6   r(   rz   s    r   rg   z=TestLeastSq.test_func_input_output_length_check.<locals>.func  s    !qQ&**r   z+Improper input: func input vector length N=r   r   r6   r   r  r   s     r   #test_func_input_output_length_checkz/TestLeastSq.test_func_input_output_length_check  s    	+ 	+ 	+ 9!NP P P 	. 	.Tq!f----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   A  AAN)r$   r%   r&   r   r   r   r   r   r   r   ri   ro   r  r  r   r   r   r   r  r   r   r   r(   r   r   r   r     sO       L L L  
8 8 8C C CC C CC C C( ( (= = =Q Q QT T T
T T T
J J J + + +< < <
C 
C 
CC C C5 5 55 5 5. . . . .r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Z dS )TestCurveFitc                 ^    t          g d          | _        t          g d          | _        d S )N)r  g	@      #@gffffff+@)r  rN         @g      @)r   r   r"   r   s    r   r   zTestCurveFit.setup_method  s2    ,,,--+++,,r   c                    d }t          || j        | j                  \  }}t          t	          |          dk               t          |j        dk               t          |d         dd           t          |d         d	d           t          || j        | j        dd
          }|\  }}}}}	t          ||           d S )Nc                     | |z  S r   r(   r"   r   s     r   rg   z,TestCurveFit.test_one_argument.<locals>.func      a4Kr   r6   )r6   r6   r   g3ı.n?rK   r   )r   r   g-C6Z?F)rR   check_finite)r   r"   r   r   r/   r   r   r   )
r   rg   poptpcovrespopt2pcov2r   errmsgrX   s
             r   test_one_argumentzTestCurveFit.test_one_argument  s    	 	 	tTVTV44
dD		Q
e#$$$DGVQ7777DIvq9999 dfdf$%E; ; ;03-x!$.....r   c                    d }t          || j        | j                  \  }}t          t	          |          dk               t          |j        dk               t          |ddgd           t          |dd	gd	d
ggd           d S )Nc                     || |z  z  S r   r(   r"   r   r   s      r   rg   z,TestCurveFit.test_two_argument.<locals>.func  s    QT6Mr   r5   rq   c]K?-?rK   r   䃞ͪϵ?T㥛 b=y?)r   r"   r   r   r/   r   r   )r   rg   r,  r-  s       r   test_two_argumentzTestCurveFit.test_two_argument  s    	 	 	tTVTV44
dD		Q
e#$$$!$(8!DDDD!$&'):Wf<M(N*+	- 	- 	- 	- 	- 	-r   c                     G d d          } |            }t          |j        | j        | j                  \  }}t	          |j        dk               t          |ddgd           t          |dd	gd	d
ggd           d S )Nc                       e Zd ZdZd ZdS )8TestCurveFit.test_func_is_classmethod.<locals>.test_selfzThis class tests if curve_fit passes the correct number of
               arguments when the model function is a class instance method.
            c                     |||z  z  S r   r(   )r   r"   r   r   s       r   rg   z=TestCurveFit.test_func_is_classmethod.<locals>.test_self.func  s    1a4xr   N)r$   r%   r&   r'   rg   r(   r   r   	test_selfr>    s-                  r   r@  rq   r6  r7  rK   r   r8  r9  r:  )r   rg   r"   r   r   r   r   )r   r@  test_self_instr,  r-  s        r   test_func_is_classmethodz%TestCurveFit.test_func_is_classmethod  s    	  	  	  	  	  	  	  	  #~2DFDFCC
d
e#$$$!$(8!DDDD!$&'):Wf<M(N*+	- 	- 	- 	- 	- 	-r   c                 ~    g d}g d}g d}g d}d }t          ||||d          \  }}t          ||d	           d S )
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@rE  g29l?rD  )g䃞j@gj@gT{7@g|'fɘ@g ƞ?g'ˊ@c                     |t          j        | |z
  dz   d|dz  z  z            z  |t          j        | |z
  dz   d|dz  z  z            z  z   |z   S )Nr5   rN   r	  )r"   rh   x1A0A1sigmar   s          r   f_double_gaussz9TestCurveFit.test_regression_2639.<locals>.f_double_gauss  sf    rv"qyj"UAX+6777!B$
BuaxK 8999:<=> ?r   i'  maxfevgh㈵>rtol)r   r   )r   r"   r   guessgoodrK  r,  r-  s           r   test_regression_2639z!TestCurveFit.test_regression_2639  s      # # #/ / // / /	? 	? 	? ~q!U5III
dd......r   c           
      d   t          j        g d          }t          j        g d          }t          j        g d          }d }dD ][}t          |||ddg||          \  }}t          j        t          j        |                    }t          |d	d
gd           t          |||ddgd|z  |          \  }}t          j        t          j        |                    }t          |d	d
gd           t          |||ddg|d|          \  }}t          j        t          j        |                    }	t          |	ddgd           t          |||ddgd|z  d|          \  }}t          j        t          j        |                    }	t          |	ddgd           ]d }
t          j        t           j        gdz                                dd          }t                      5 }|	                    t          d           t          |
||ddg|          \  }}t          ||d d         |d d         ddg          \  }}d d d            n# 1 swxY w Y   t          |j        dk               t          ||           t          |j        dk               t          ||           d S )N)r   r6   r5   r~   rK      )r6   r6   rT           )r6   r5   r6   r5   r6   r5   c                     || z  |z   S r   r(   r5  s      r   r-   z!TestCurveFit.test_pcov.<locals>.f      Q37Nr   r   trfdogboxr5   r   )r   rJ  r   gN"q?g~uM/N?r   rN  r~   T)r   rJ  absolute_sigmar   gO=N?g5=`6?g[u|?g-/i@c                     || z  S r   r(   r5  s      r   f_flatz&TestCurveFit.test_pcov.<locals>.f_flat  s    Q3Jr   rK   z3Covariance of the parameters could not be estimated)r   rJ  r   rq   )r    r   r   sqrtr@   r   infreshaper	   filterr   r   r   r   )r   xdataydatarJ  r-   r   r,  r-  perr_scaledperrr_  pcov_expectedsuppopt1pcov1s                  r   	test_pcovzTestCurveFit.test_pcov  sG   +++,,,,,--+++,,	 	 	 . 	K 	KF"1eU1vU*02 2 2JD$'"'$--00KK*j)AMMMM"1eU1vQuW*02 2 2JD$'"'$--00KK*j)AMMMM"1eU1vU26vG G GJD$7274==))DD:z":FFFF"1eU1vQuW26vG G GJD$7274==))DD<">TJJJJJ	 	 	 "&!,,44Q::   	ICJJLN N N"65%QF%PPPJD$$Qbqb	5!9!QHHHLE5		I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	
f$%%%4///v%&&&5-00000s   ,AIIIc                 n    d }g d}g d}t          t          |||          d         ddgd           d S )	Nc                     || z  |z   S r   r(   r5  s      r   f_linearz.TestCurveFit.test_array_like.<locals>.f_linear  rY  r   r   )r~   rT  rU  	   r   r5   r6   g|=r   )r   r   )r   rp  r"   r   s       r   test_array_likezTestCurveFit.test_array_like  sU    	 	 	 LLLL	(Aq11!4q!f5IIIIIIr   c                     t          j        g d          }t          j        g d          }t          t          t          d ||           d S )N)r6   r5   r~   rK   rT     )r6   r5   r~   rK   g      @rt  c                     || z  S r   r(   r5  s      r   r.   z<TestCurveFit.test_indeterminate_covariance.<locals>.<lambda>  s
    QqS r   )r    r   r   r   r   r   re  rf  s      r   test_indeterminate_covariancez*TestCurveFit.test_indeterminate_covariance  sX    +++,,---.._i((%	8 	8 	8 	8 	8r   c                 (   t          j        dt           j        dg          }t          j        g d          }t          t          t
          d ||           t          t          t
          d ||           t          t          t
          d ||fi ddi d S )	Nr6   r~   )r6   r5   r~   c                     || z  |z   S r   r(   r5  s      r   r.   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>#      acAg r   c                     || z  |z   S r   r(   r5  s      r   r.   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>%  rz  r   c                     || z  |z   S r   r(   r5  s      r   r.   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>'  s    QqS1W r   r+  T)r    r   nanrd   r   r   rv  s      r   test_NaN_handlingzTestCurveFit.test_NaN_handling  s     !RVQ((##j)--ue	= 	= 	=j)--ue	= 	= 	= 	j)-D-DU	> 	>'5t&<	> 	> 	> 	> 	>r   c                    t          t          t          d g g            t          t          t          d g g d           t          t          t          d dgg            t          t          t          d dgg d           d S )	Nc                     || z  S r   r(   r)  s     r   r.   z0TestCurveFit.test_empty_inputs.<locals>.<lambda>,  
    !A# r   c                     || z  S r   r(   r)  s     r   r.   z0TestCurveFit.test_empty_inputs.<locals>.<lambda>-  r  r   )r6   r5   )boundsc                     || z  S r   r(   r)  s     r   r.   z0TestCurveFit.test_empty_inputs.<locals>.<lambda>/  r  r   r6   c                     || z  S r   r(   r)  s     r   r.   z0TestCurveFit.test_empty_inputs.<locals>.<lambda>0  r  r   r5   rd   r   r   r&  s    r   test_empty_inputszTestCurveFit.test_empty_inputs*  s    j)-=-=r2FFFj)-=-=r2#	% 	% 	% 	%j)-=-=sBGGGj)-=-=sB#	% 	% 	% 	% 	% 	%r   c                 J    t          t          t          d ddgddg           d S )Nc                     | S r   r(   rz   s    r   r.   z8TestCurveFit.test_function_zero_params.<locals>.<lambda>5  s    q r   r6   r5   r~   rK   r  r&  s    r   test_function_zero_paramsz&TestCurveFit.test_function_zero_params3  s(    j)[[1a&1a&IIIIIr   c                 |    t          d d dt          j        d          z            \  }}t          |dg           d S )Nc                 0    |t          j        d          z  S r   )r    arange)_r   s     r   r.   z*TestCurveFit.test_None_x.<locals>.<lambda>8  s    A	",= r   r5   r   rN   )r   r    r  r   )r   r,  r-  s      r   test_None_xzTestCurveFit.test_None_x7  sE    ==#Q2%68 8
drd#####r   c                     d }t          j        ddd          } ||dd          }dD ]*}t          ||||          \  }}t          |ddg           +t	          t
          t          |||d           d S )	Nc                 8    |t          j        | | z            z  S r   r	  r5  s      r   r-   z,TestCurveFit.test_method_argument.<locals>.f=      rvqbd||##r   r   r6      rN   r[  r\  r   Nr   unknown)r    r   r   r   rd   r   )r   r-   re  rf  r   r,  r-  s          r   test_method_argumentz!TestCurveFit.test_method_argument<  s    	$ 	$ 	$ Aq"%%%R  3 	, 	,F"1eU6BBBJD$D2r(++++j)QuYOOOOOOr   c                 :   d }t          j        ddd          } ||dd          }dD ]q}t          ||||d          \  }}}}}	t          |ddg           d	|v sJ d
|v sJ |dk    s|d|v sJ d|v sJ d|v sJ t	          |t
                    sJ |	dv sJ rd S )Nc                 8    |t          j        | | z            z  S r   r	  r5  s      r   r-   z(TestCurveFit.test_full_output.<locals>.fJ  s    rvqb1f~~%%r   r   r6   r  rN   r  T)r   rR   nfevfvecr   fjacipvtqtfr   )r    r   r   r   
isinstancestr)
r   r-   re  rf  r   r,  r-  r   r1  rX   s
             r   r   zTestCurveFit.test_full_outputI  s   	& 	& 	& Aq"%%%R  3 	' 	'F095%D1B 1B 1B-D$&#D2r(+++X%%%%X%%%%~~))))))))((((fc*****,&&&&&	' 	'r   c           	         d }t          j        ddd          } ||dd          }ddg}ddg}||f}t          ||          }d	D ]V}t          |||||
          \  }	}
t	          |	d         d           t          |||||
          \  }}t	          ||	           Wt          |||dddgdt           j        gf          \  }	}
t	          |	d         d           t          t          t          ||||d
           d S )Nc                 8    |t          j        | | z            z  S r   r	  r5  s      r   r-   z#TestCurveFit.test_bounds.<locals>.f^  r  r   r   r6   r  rN   r  rb   r%  )Nr[  r\  )r  r   r[  rO   g333333?)r   r  r   )r    r   r   r   r   rb  rd   r   )r   r-   re  rf  lbubr  bounds_classr   r,  r-  
popt_class
pcov_classs                r   test_boundszTestCurveFit.test_bounds]  sb   	$ 	$ 	$ Aq"%%%R   !W2Y bb"~~- 	. 	.F"1eU6*02 2 2JD$DGS)))%.q%6B6<&> &> &>"J
 J---- q%u(*Awbf&>@ @ @
dQ%%% 	j)QuV!	# 	# 	# 	# 	# 	#r   c           	         d }t          j        dt           j        z  dt           j        z  d          }t          j        |          }dt           j        z  dt           j        z  f}dD ]Z}t	          |||dt           j        z  	          \  }}t	          |||dt           j        z  ||
          \  }}t          ||           [d S )Nc                 0    t          j        | |z             S r   )r    sinr)  s     r   r-   z&TestCurveFit.test_bounds_p0.<locals>.f  s    6!a%== r   r5   r   r~   r[  r\  g @r`  )r   r  r   )r    r   pir  r   r   )	r   r-   re  rf  r  r   popt_1r  popt_2s	            r   test_bounds_p0zTestCurveFit.test_bounds_p0  s    	! 	! 	! BruHagr22uru*a"%i(' 	, 	,F!!UEc"%i@@@IFA!!UEc"%i)/@ @ @IFA FF++++	, 	,r   c           	         d }d }t          j        ddd          } ||dd          }dD ]0}dD ]+}t          |||||	          \  }}t          |d
d
g           ,1dD ]+}t          |||||          \  }}t          |d
d
g           ,d|d<   t          j        |j        d                   }	d|	d<   dD ].}t          ||||	||          \  }}t          |d
d
gd           /d S )Nc                 8    |t          j        | | z            z  S r   r	  r5  s      r   r-   z TestCurveFit.test_jac.<locals>.f  r  r   c                 v    t          j        | | z            }t          j        || | z  |z  f          j        S r   r    r
  r   r   r"   r   r   es       r   rD   z"TestCurveFit.test_jac.<locals>.jac  6    r!tA9a!a!_--//r   r   r6   r  rN   r  )z2-pointz3-pointcs)rD   r   r5   rZ  )r   rD   r   rT     )rJ  r   rD   r   rN  )r    r   r   r   r!   r   )
r   r-   rD   re  rf  r   schemer,  r-  rJ  s
             r   test_jaczTestCurveFit.test_jac  sp   	$ 	$ 	$	0 	0 	0 Aq"%%%R   ( 	. 	.F6 . .&q%F.46 6 6
dq!f----. . 	* 	*F"1eU6sKKKJD$D1a&)))) aA''a- 	5 	5F"1eU%'*, , ,JD$ D1a&t44444	5 	5r   c                     t          j        dd          }d|z  }t          d ||dd          \  }}t          d ||dd	          \  }}t          |dd
           t          |dd
           d S )Nr   r   r5   c                     || z  S r   r(   r"   r   s     r   r.   z5TestCurveFit.test_maxfev_and_bounds.<locals>.<lambda>  
    1 r   )r   r~   r   )r  rM  c                     || z  S r   r(   r  s     r   r.   z5TestCurveFit.test_maxfev_and_bounds.<locals>.<lambda>  r  r   )r  max_nfev+=r   )r    r  r   r   )r   r"   r   rk  r  r/  s         r   test_maxfev_and_boundsz#TestCurveFit.test_maxfev_and_bounds  s     IaaC__a6#NNNq__a6CPPPqqu----qu------r   c           
      <   d }d }t           j                            d           t          j        ddd          } ||dd          }|dt           j                            t          |          	          z  z   }t          j        t          |                    dz   }t          j        |d
z            }||fdfD ]^\  }}	dD ]V}
t          ||||||
          \  }}t          |||||	|
          \  }}t          ||d           t          ||d           W_d S )Nc                 8    |t          j        | | z            z  S r   r	  r5  s      r   rg   z9TestCurveFit.test_curvefit_simplecovariance.<locals>.func  r  r   c                 v    t          j        | | z            }t          j        || | z  |z  f          j        S r   r  r  s       r   rD   z8TestCurveFit.test_curvefit_simplecovariance.<locals>.jac  r  r   r   rK   2         @?皙?sizer5   NNFTrJ  rD   r]  r  r   )
r    r   r   r   normalr/   zerosr@   r   r   )r   rg   rD   re  r   rf  rJ  covarjac1jac2r]  rk  rl  r/  r0  s                  r   test_curvefit_simplecovariancez+TestCurveFit.test_curvefit_simplecovariance  sj   	$ 	$ 	$	0 	0 	0 		qAq"%%DS!!C")**E

*;;;;U$$s*q!!:|4 	: 	:JD$"/ : :(ue5  A  A  Au(ue5  A  A  Au  u59999u599999:	: 	:r   c           
         d }d }d }d }t           j                            d           t          j        dd          } ||dd	          }|d
t           j                            t          |                    z  z   }t          j        t          |                    d
z   }t          j        |dz            }	t          j        d	t          j	        d          z  dt          j	        d          z  dgd	t          j	        d          z  d	t          j	        d          z  dgg dg          }
|

                    |          }|

                    |	          
                    |
j                  }||fdfD ]`\  }}dD ]X}t          ||||||          \  }}t          ||||||          \  }}t          ||dd           t          ||dd           Yad S )Nc                 D   t          j        dt          j        d          z  dt          j        d          z  dgdt          j        d          z  dt          j        d          z  dgg dg          }|                    |t          j        | | z            z            S Nr  r5         r   r   r   r  )r    r   ra  dotr
  )r"   r   r   rotns       r   funcpz4TestCurveFit.test_curvefit_covariance.<locals>.funcp  s    8bmS^Q?"RWQZZ-QSTVT[\]T^T^Q^`aAbdododopqqD88Ar!t,---r   c                    t          j        dt          j        d          z  dt          j        d          z  dgdt          j        d          z  dt          j        d          z  dgg dg          }t          j        | | z            }|                    t          j        || | z  |z  f          j                  S r  )r    r   ra  r
  r  r   r   )r"   r   r   r  r  s        r   jacpz3TestCurveFit.test_curvefit_covariance.<locals>.jacp  s    8bmS^Q?"RWQZZ-QSTVT[\]T^T^Q^`aAbdododopqqDr!tA88BIq1"q&1*o668999r   c                 8    |t          j        | | z            z  S r   r	  r5  s      r   rg   z3TestCurveFit.test_curvefit_covariance.<locals>.func  r  r   c                 v    t          j        | | z            }t          j        || | z  |z  f          j        S r   r  r  s       r   rD   z2TestCurveFit.test_curvefit_covariance.<locals>.jac  r  r   r   r6   rK   r  r  r  r  r5   r  r  r  r  r  g+i)+>r  )rO  r   )r    r   r   r  r  r/   r  r@   r   ra  r  r   r   r   )r   r  r  rg   rD   re  r   rf  rJ  r  r  ydatapcovarpr  r  r]  rk  rl  r/  r0  s                       r   test_curvefit_covariancez%TestCurveFit.test_curvefit_covariance  s    	. 	. 	.	: 	: 	:
	$ 	$ 	$	0 	0 	0 		q	!QDS!!C")**E

*;;;;U$$s*q!! x"RWQZZ-RWQZZ;bmRPRPWXYPZPZ]\]=^`k`k`klmm%%$$TV,,;5 	G 	GJD$"/ G G(ue5  A  A  Au(vV  A  A  Au  u6FFFFu6FFFFFG	G 	Gr   c           	      v   t          j        dd          }d|z  dz   dt          j        |          z  z   }d }dD ]}t           j        t           j        fD ]}t           j        t           j        fD ],}|                    |          }|                    |          }-t          j                    5  t          j        dt                     t          ||||	          \  }}t          j        |                                          sJ t          j        |d
          rJ 	 d d d            n# 1 swxY w Y   d S )Nr  rT  rb   r%  rL   c                     || z  |z   S r   r(   r5  s      r   rg   z&TestCurveFit.test_dtypes.<locals>.func  rY  r   rZ  errorr  r6   )r    r  r  r   r   astypewarningscatch_warningssimplefilterr   r   isfiniter   allclose)	r   r"   r   rg   r   dtxdtyr   covs	            r   test_dtypeszTestCurveFit.test_dtypes  s   Ib!ECK#bfQii-'	 	 	 . 	1 	1F
BJ/ 
1 
1J
3 & &CAAA,.. 1 1)'?CCC&tQ&AAAFAs;s++//11111!{1a0000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1	1 	1s   /A0D,,D03D0c                    d }t          j        g d          }t          j        g d          }t          j        g d          }g d}t          j        g d          } ||g|R  }t          ||||||f          \  }}	|                    t           j                  } ||g|R  }t          ||||||f          \  }
}	t          |
|d	           d S )
Nc                     ||z   dz  }||z
  dz  }||| |z
  z  z   |t          j        | |z
  dz  |dz  dz  z             z  z   S )Nr5   rK   )r    ra  )r"   s_1s_2o_xo_yr   b_2b_1s           r   	hyperbolaz,TestCurveFit.test_dtypes2.<locals>.hyperbola  sX    9/C9/Cae$s27AcEA:1Q3F+G+G'GGGr   )g      rO          g      $rO   )rO   r%  r%  rO   g      $@)ggUUUUUU?r  g      rL   )r  g?r$  )iiirK   rK   rV         )r-   re  rf  r   r  gh㈵>r   )r    r   r   r  r   r   )r   r  min_fitmax_fitrP  paramsre  rf  popt_64r  popt_32s              r   test_dtypes2zTestCurveFit.test_dtypes2  s+   	H 	H 	H
 (88899(55566:::;;&&&88899	%)&))) %u'.&8: : :
 RZ((	%)&)))%u'.&8: : :
 	t444444r   c                 V   t          j        d          }d|dz  z  d|z  z   t           j                            t	          |                    z   fd}dD ]P}t          ||t          j        |          |          \  }}t          ||d|          \  }}t          ||           Qd S )	Nr   g@r5   g      @c                 &    || dz  z  || z  z   z
  S r   r(   )r"   r   r   targets      r   r.   z/TestCurveFit.test_broadcast_y.<locals>.<lambda>:  s    1QT6AaC<&#8 r   rZ  )re  rf  r   r   )r    r  r   randr/   r   
zeros_liker   )	r   re  fit_funcr   popt0pcov0rk  rl  r
  s	           @r   test_broadcast_yzTestCurveFit.test_broadcast_y7  s    	"uz!C%K/")..U2L2LL8888- 		* 		*F$X+0+-=+?+?,24 4 4LE5 %X+0+,,24 4 4LE5 E5))))		* 		*r   c                     d }t          t                    5  t          |g dg ddgd           d d d            d S # 1 swxY w Y   d S )Nc                     || z  |z   S r   r(   r5  s      r   rg   z.TestCurveFit.test_args_in_kwargs.<locals>.funcI  s    q519r   r   rT  rq        r6   rl   )re  rf  r   rQ   r  r   s     r   test_args_in_kwargsz TestCurveFit.test_args_in_kwargsF  s    	 	 	 :&& 	! 	!d(LL*NN	! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   ?AAc                     d }t          t          d          5  t          |g dg d           d d d            d S # 1 swxY w Y   d S )Nc                 J    |t          j        | | z            z  |z   |z   |z   S r   r	  r"   r   r   r   dr  s         r   rg   z<TestCurveFit.test_data_point_number_validation.<locals>.funcT  s*    rvqb1f~~%)A-11r   zThe number of func parameters=r   r   r  )re  rf  )rd   re   r   r   s     r   !test_data_point_number_validationz.TestCurveFit.test_data_point_number_validationS  s    	2 	2 	2 9,LMMM 	, 	,d(LL*NN, , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   >AAzignore::RuntimeWarningc                    d }t           j                            d          }d}t          j        |          }t          j        dd|          |                    |          z   }t          j        |||d          \  }}t          j        t          j        |          dk              sJ t          j
        |          d         }t          j        |d	k              sJ t          ||j                   d S )
Nc                 ~    |t          j        | dz   |z             z  |t          j        | dz   |z             z  z   |z   S Nr6   r    logr  s         r   r-   z#TestCurveFit.test_gh4555.<locals>.fb  s@    RVAEAI&&&26!a%!)+<+<)<<q@@r      MI9V$O-r   r5   rU  i rL  r   g{Gz)r    r   default_rngr  r   r   r   r   r@   r   eighr   r   )	r   r-   rngrB   r"   r   r   r  eigss	            r   test_gh4555zTestCurveFit.test_gh4555\  s    	A 	A 	A i##$677IaLLK1a  3::a==0#Aq!F;;;3vbgcllQ&'''''{3"vdUl#####SU#####r   c                 8   t           j                            d          }d }t          j        ddd          } ||ddd          }d	|                    |j        
          z  }||z   }t          |||          \  }}g dg dg dg}	t          ||	d           d S )Nr!  c                 >    |t          j        | | z            z  |z   S r   r	  )r"   r   r   r   s       r   rg   z'TestCurveFit.test_gh4555b.<locals>.funcu  s     rvqb1f~~%))r   r   rK   r  r  r  rL   r  r  )gt^G?d*.X|?T}H)r)  g1x?u`v?)r*  r+  gon2f?gH׊>)r    r   r"  r   r  r  r   r   )
r   r$  rg   re  r   y_noiserf  r  r.  refs
             r   test_gh4555bzTestCurveFit.test_gh4555bp  s     i##$677	* 	* 	* Aq"%%DS#&&



333G4..3MMMMMMMMMO 	S$'''''r   N)!r$   r%   r&   r   r2  r;  rB  rR  rm  rr  rw  r~  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  pytestmarkfilterwarningsr&  r.  r(   r   r   r"  r"    s       - - -/ / / - - -- - - / / /&.1 .1 .1`J J J8 8 8> > >% % %J J J$ $ $
P P P' ' '( #  #  #D, , ,""5 "5 "5H	. 	. 	.: : :6*G *G *GX1 1 1*5 5 58* * *! ! !, , , [ 899$ $ :9$&( ( ( ( (r   r"  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestFixedPointc                 P    d }d}t          ||          }t          |d           d S )Nc                     d| z  S NrN   r(   rz   s    r   rg   z0TestFixedPoint.test_scalar_trivial.<locals>.func      q5Lr   r  rO   r   r   r   rg   rh   r"   s       r   test_scalar_trivialz"TestFixedPoint.test_scalar_trivial  s;    	 	 	b!!As#####r   c                 P    d }d}t          ||          }t          |d           d S )Nc                     | dz  S r   r(   rz   s    r   rg   z/TestFixedPoint.test_scalar_basic1.<locals>.func  r*  r   ?r  r8  r9  s       r   test_scalar_basic1z!TestFixedPoint.test_scalar_basic1  s;    	 	 	b!!As#####r   c                 P    d }d}t          ||          }t          |d           d S )Nc                     | dz  S NrL   r(   rz   s    r   rg   z/TestFixedPoint.test_scalar_basic2.<locals>.func  s    c6Mr   r=  r  r8  r9  s       r   test_scalar_basic2z!TestFixedPoint.test_scalar_basic2  s;    	 	 	b!!As#####r   c                     d }ddg}t          j        d          5  t          ||          }d d d            n# 1 swxY w Y   t          |ddg           d S )Nc                     d| z  S r6  r(   rz   s    r   rg   z/TestFixedPoint.test_array_trivial.<locals>.func  r7  r   g333333?g333333?ignorer   rO   )r    errstater   r   r9  s       r   test_array_trivialz!TestFixedPoint.test_array_trivial  s    	 	 	4[[X&&& 	& 	&D"%%A	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&ASz*****s   :>>c                     d }t          g d          }g d}t          j        d          5  t          |||f          }d d d            n# 1 swxY w Y   t	          |d|z             d S )Nc                     || dz  z  S r   r(   r"   r   s     r   rg   z.TestFixedPoint.test_array_basic1.<locals>.func  s    q!t8Or   g      ?r  g      ?)皙?gffffff?g?rE  rF  rm   r  )r   r    rG  r   r   r   rg   r   rh   r"   s        r   test_array_basic1z TestFixedPoint.test_array_basic1  s    	 	 	###$$[X&&& 	1 	1D"A4000A	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1As1u%%%%%s   AAAc                     d }t          g d          }g d}t          |||f          }t          ||dz             d S )Nc                     || dz  z  S rA  r(   rK  s     r   rg   z.TestFixedPoint.test_array_basic2.<locals>.func  s    q#v:r   rL  )g?rM  rM  rm   r5   )r   r   r   rN  s        r   test_array_basic2z TestFixedPoint.test_array_basic2  s^    	 	 	###$$__bt,,,Aq!t$$$$$r   c                     t          d dddd          }t          |t          j        d|z            dz             t          |t	          d	          d
z             d S )Nc                 6    t          j        d| z            dz  S )Nr  rN   r	  )xxs    r   r.   z.TestFixedPoint.test_lambertw.<locals>.<lambda>  s    tBw(; r   r  r(   g-q=i  )rQ   xtolmaxiterr  rN   r6   r5   )r   r   r    r
  r   )r   xxroots     r   test_lambertwzTestFixedPoint.test_lambertw  sh    ;;SeS2 2 2tF{ 3 3C 7888A.....r   c                     ddd}d}|dz
  |z  z  |z  d|dz
  z  z  z  fd}t          ||d          }t          ||           d S )	Nr5   rt  r  gjt?r6   c                 z    t          j        z  | z            t          j        | z  | dz
  z            z  dz   S r  r  )rB   i0klkss    r   rg   z1TestFixedPoint.test_no_acceleration.<locals>.func  s9    6"R%'??RVRT1q5\%;%;;a??r   	iterationr  )r   r   )r   mn0rg   rB   r\  r]  r^  s        @@@r   test_no_accelerationz#TestFixedPoint.test_no_acceleration  s    sAg2a1ac7++	@ 	@ 	@ 	@ 	@ 	@ 	@ b5551r   N)r$   r%   r&   r:  r>  rB  rH  rO  rR  rY  rb  r(   r   r   r3  r3    s        $ $ $$ $ $$ $ $+ + +& & &% % %/ / /    r   r3  ),r'   r  r/  numpy.testingr   r   r   r   r   r   r	   r
   rd   numpyr    r   r   multiprocessing.poolr   scipyr   r   scipy.specialr   scipy.optimize._minpack_pyr   r   r   scipy.optimizer   scipy.optimize._minimizer   r   r*   r3   r>   rE   rG   rI   r   r   r   r"  r3  r(   r   r   <module>rk     s     < < < < < < < < < < < < < < < < < < + * * * * *                     + + + + + + " " " " " " " " " " " " " " F F F F F F F F F F * * * * * * + + + + + +# # # # # # # #  + + +  >  .< < <
e5 e5 e5 e5 e5 e5 e5 e5P; ; ; ; ; ; ; ;@; ; ; ; ; ; ; ;T. T. T. T. T. T. T. T.ni( i( i( i( i( i( i( i(XH H H H H H H H H Hr   