Ë
    âQ(h)¯  ã                   óz  — d Z ddl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, G d„ d «      Z-y)!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y)ÚReturnShapezúThis 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                 ó   — || _         y ©N)Úshape)Úselfr   s     ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_minpack.pyÚ__init__zReturnShape.__init__   s	   € Øˆ�
ó    c                 ó@   — t        j                  | j                  «      S r   )ÚnpÚonesr   )r   Úxs     r   Ú__call__zReturnShape.__call__!   s   € Ü�w‰w�t—z‘zÓ"Ð"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   € ô �7‰7�5‹>Ðr   c                 ó|   — t        t        | «      «      5 }|j                  d„ | «      cd d d «       S # 1 sw Y   y xY w)Nc                 ó   —  | «       S r   r(   )Úfs    r   ú<lambda>z#sequence_parallel.<locals>.<lambda>.   s   € ¡!£#€ r   )r   ÚlenÚmap)ÚfsÚpools     r   Úsequence_parallelr3   ,   s3   € Ü	”C˜“GÓ	ð + Ø�x‰x™ rÓ*÷+÷ +ò +ús   •2²;c                 óx   — || dz  z  }t        j                  |dd |d   z
  | j                  «       |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>   5   sD   € ð4 	
ˆJ˜‰MÑ€AÜ
�	‰	�1�Q�R�5˜1˜Q™4‘< §¡Ó!1°DÑ!8Ð9Ó:€AØ€Hr   c                 ó.  — 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 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`
    r6   Nr5   r   )r/   r    ÚdiagÚemptyr!   )r9   r:   r;   ÚnÚpdiffÚjacs         r   Úpressure_network_jacobianrE   T   s²   € ô 	ˆJ‹€AÜ�G‰G�J˜q˜r�N QÑ&¨¨1¨2¨Ñ.°°ZÀ±]Ñ1BÀQÀqÁTÑ1IÑIÓJ€Eä
�(‰(�A�q�6Ó
€CØ˜a‘i€Cˆˆˆ1‰ˆˆdˆq�‰sˆdˆ
�OØ€Cˆˆˆ1‰ˆˆa�‰cˆ	�NÜ—'‘'˜!“*€Cˆˆ!‰ŠQˆ�Kà€Jr   c                 ó6   — t        | ||«      t        | ||«      fS r   )r>   rE   )r9   r:   r;   s      r   Úpressure_network_fun_and_gradrG   k   s$   € Ü˜Z¨¨qÓ1Ü% j°$¸Ó:ð<ð <r   c                   óZ   — 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y)Ú
TestFSolvec                 óò   — t        j                  dd«      }d}t        g d¢«      }t        j                  t
        |||fd¬«      \  }}}}t        |t        j                  d«      «       t        |dk(  |«       y )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_gradientq   sh   € ä�G‰G�A�s‹OˆØˆÜÒ.Ó/ˆÜ'/§¡Ü˜m°4¸°)Øô(Ñ$ˆ�T˜3 ô 	" +¬r¯w©w°q«zÔ:Ü��q‘˜$Õr   c                 óÒ   — t        j                  dd«      }d}t        g d¢«      }t        j                  t
        |||ft        ¬«      }t        |t        j                  d«      «       y )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|   sQ   € ä�G‰G�A�s‹OˆØˆÜÒ.Ó/ˆÜ—o‘oÜ˜m°4¸°)Ü,ô.ˆô 	" +¬r¯w©w°q«zÕ:r   c                 ób   — t        d«      }ddg}t        t        t        j                  ||«       y ©Nr6   ç      ø?rN   ©r   Úassert_raisesÚ	TypeErrorr   rT   ©r   ÚfuncÚx0s      r   Útest_wrong_shape_func_callablez)TestFSolve.test_wrong_shape_func_callable†   s(   € Ü˜1‹~ˆð �3ˆZˆÜ”i¤§¡°$¸Õ;r   c                 óX   — ddg}t        t        t        j                  t        |d¬«       y ©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!   € ð �3ˆZˆÜ”i¤§¡´*¸bÀwÖOr   c                 óx   — t        d«      }t        d«      }t        t        t        j                  |ddg|¬«       y )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¤§¡°$¸A¸a¸5ÈÖTr   c                 óX   — d„ }d„ }t        t        t        j                  |ddg|¬«       y )Nc                 ó   — t        | d«      S ©N)r5   ©r*   ©r"   s    r   rg   z9TestFSolve.test_wrong_shape_fprime_function.<locals>.func™   ó   € Ü˜a Ó&Ð&r   c                 ó   — t        | d«      S ©N)é   r~   ry   rz   s    r   rt   z?TestFSolve.test_wrong_shape_fprime_function.<locals>.deriv_func›   ó   € Ü˜a Ó(Ð(r   r   r6   rr   )rd   re   r   rT   rs   s      r   Ú test_wrong_shape_fprime_functionz+TestFSolve.test_wrong_shape_fprime_function˜   s$   € ò	'ò	)ä”i¤§¡°$¸A¸a¸5ÈÖTr   c                 ó†   — d„ }t        t        d¬«      5  t        j                  |dg¬«       d d d «       y # 1 sw Y   y xY w)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Ÿ   s8   € ò	)ô œ:¨ZÔ8ñ 	*Ü�O‰O˜D a SÕ)÷	*÷ 	*ñ 	*úó	   •7·A c                 óŽ   — d„ }d„ }t        t        d¬«      5  t        j                  |dg|¬«       d d d «       y # 1 sw Y   y xY w)Nc                 ó4   — | t        j                  dg«      z
  S ©Né
   ©r    r   rz   s    r   rg   z,TestFSolve.test_Dfun_can_raise.<locals>.func§   ó   € Ø”r—x‘x  “~Ñ%Ð%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ñ 	=Ü�O‰O˜D a S°Õ<÷	=÷ 	=ñ 	=úó	   ˜;»Ac                 óª   — d„ }t        j                  |t        j                  ddgt        j                  «      «      }t         ||«      ddgd¬«       y )Nc                 ón   — t        j                  | d   dz
  | d   dz
  gt         j                  ¬«      dz  S )Nr   éd   r6   éè  ©Údtyper5   )r    r   Úfloat32rz   s    r   rg   z%TestFSolve.test_float32.<locals>.func±   s1   € Ü—8‘8˜Q˜q™T C™Z¨¨1©°©Ð5¼R¿Z¹ZÔHÈAÑMÐMr   r6   r   çü©ñÒMbP?©Úatol)r   rT   r    r   rž   r   )r   rg   Úps      r   Útest_float32zTestFSolve.test_float32°   s?   € ò	Nä�O‰O˜D¤"§(¡(¨A¨q¨6´2·:±:Ó">Ó?ˆÜ™˜Q› ! Q ¨dÖ3r   c                 óö   ‡ — ˆ fd„}t        j                  dd«      }d}t        g d¢«      }t        j                  ||||fd¬«      \  }}}}t        |t        j                  d«      «       t        |dk(  |«       y )Nc                  ó4   •— ‰j                  «        t        | Ž S r   )rZ   r>   ©rQ   r   s    €r   rg   z,TestFSolve.test_reentrant_func.<locals>.func·   s   ø€ Ø×2Ñ2Ô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¶   sp   ø€ ô	+ô
 �G‰G�A�s‹OˆØˆÜÒ.Ó/ˆÜ'/§¡Ø�- t¨Q iØô(Ñ$ˆ�T˜3 ô 	" +¬r¯w©w°q«zÔ:Ü��q‘˜$Õr   c                 óÖ   ‡ — ˆ fd„}t        j                  dd«      }d}t        g d¢«      }t        j                  t
        |||f|¬«      }t        |t        j                  d«      «       y )Nc                  ó4   •— ‰j                  «        t        | Ž S r   )r_   rE   r¦   s    €r   rt   z3TestFSolve.test_reentrant_Dfunc.<locals>.deriv_funcÆ   s   ø€ Ø×4Ñ4Ô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Å   sY   ø€ ô	4ô
 �G‰G�A�s‹OˆØˆÜÒ.Ó/ˆÜ—o‘oÜ˜m°4¸°)Øôˆô 	" +¬r¯w©w°q«zÕ:r   c                 óz   — t        | j                  gdz  «      }t        |D �cg c]  }|d u ‘Œ c}«      sJ ‚y c c}w r‘   )r3   rZ   Úall©r   ÚvÚresults      r   Útest_concurrent_no_gradientz&TestFSolve.test_concurrent_no_gradientÓ   s:   € Ü˜t×EÑEÐFÈÑKÓLˆÜ°Ö3 v�F˜d’NÒ3Ô4Ð4Ñ4ùÒ3ó   £8c                 óz   — t        | j                  gdz  «      }t        |D �cg c]  }|d u ‘Œ c}«      sJ ‚y c c}w r‘   )r3   r_   r¬   r­   s      r   Útest_concurrent_with_gradientz(TestFSolve.test_concurrent_with_gradient×   s:   € Ü˜t×GÑGÐHÈ2ÑMÓNˆÜ°Ö3 v�F˜d’NÒ3Ô4Ð4Ñ4ùÒ3r±   N)r$   r%   r&   rZ   r_   ri   ro   ru   r€   r�   r–   r£   r§   rª   r°   r³   r(   r   r   rI   rI   p   sF   „ ò	 ò;ò<òPòUò
Uò*ò=ò4ò ò;ò5ó5r   rI   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestRootHybrc                 óÞ   — t        j                  dd«      }d}t        g d¢«      }t        j                  t
        |d||f¬«      j                  }t        |t        j                  d«      «       y )NrK   rL   rM   Úhybr©ÚmethodrQ   ©	r    rS   r   r   Úrootr>   r"   r   r!   r^   s        r   rZ   z.TestRootHybr.test_pressure_network_no_gradientÝ   sX   € ä�G‰G�A�s‹OˆØˆÜÒ.Ó/ˆÜ—m‘mÔ$4°mØ+1¸¸q¸	ôCßCDÁ1ð 	ä! +¬r¯w©w°q«zÕ:r   c                 óê   — t        j                  dd«      }d}t        g d¢g«      }t        j                  t
        |||fdt        ¬«      j                  }t        |t        j                  d«      «       y )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`   € ä�G‰G�A�s‹OˆØˆÜÒ/Ð0Ó1ˆÜ—m‘mÔ$4°mØ*.°¨¸6Ü(AôCçCDÁ1ð 	ô 	" +¬r¯w©w°q«zÕ:r   c                 óà   — t        j                  dd«      }d}t        g d¢«      }t        j                  t
        |||fdd¬«      j                  }t        |t        j                  d«      «       y )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ð   s^   € ô �G‰G�A�s‹OˆØˆÜÒ.Ó/ˆÜ—m‘mÔ$AØ$1¸¸q¸	Ø+1°tô=ç=>¹Qð 	ô 	" +¬r¯w©w°q«zÕ:r   N)r$   r%   r&   rZ   r_   r¿   r(   r   r   rµ   rµ   Ü   s   „ ò;ò;ó	;r   rµ   c                   ó   — e Zd Zd„ Zy)Ú
TestRootLMc                 óÞ   — t        j                  dd«      }d}t        g d¢«      }t        j                  t
        |d||f¬«      j                  }t        |t        j                  d«      «       y )NrK   rL   rM   Úlmr¸   rº   r^   s        r   rZ   z,TestRootLM.test_pressure_network_no_gradientý   sX   € ä�G‰G�A�s‹OˆØˆÜÒ.Ó/ˆÜ—m‘mÔ$4°mØ+/°t¸Q°iôAßABÁð 	ä! +¬r¯w©w°q«zÕ:r   N)r$   r%   r&   rZ   r(   r   r   rÁ   rÁ   ü   s   „ ó;r   rÁ   c                   óf   — e Zd Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Z	y)ÚTestNfevc                 ó6   — t        j                  «       | _        y r   )Ú	threadingÚlocalÚnfev©r   s    r   Úsetup_methodzTestNfev.setup_method  s   € Ü—O‘OÓ%ˆ�	r   c                 óž   — t        | j                  d«      sd| j                  _        | j                  xj                  dz  c_        |dz  dz
  S )NÚcr   r6   r5   r~   )ÚhasattrrÉ   rÍ   )r   Úys     r   Úzero_fzTestNfev.zero_f  s:   € Ü�t—y‘y #Ô&ØˆD�I‰IŒKØ�	‰	�Š�qÑ�Ø�!‰t�A‰vˆr   r¹   )
r·   rÃ   Úbroyden1Úbroyden2ÚandersonÚlinearmixingÚdiagbroydenÚexcitingmixingÚkrylovzdf-sanec                 ó´   — d| j                   _        t        j                  | j                  d|¬«      }|j                   | j                   j                  k(  sJ ‚y )Nr   rš   ©r¹   )rÉ   rÍ   r   r»   rÐ   )r   r¹   Úsolutions      r   Útest_root_nfevzTestNfev.test_root_nfev  s?   € ð ˆ�	‰	ŒÜ—=‘= §¡¨c¸&ÔAˆØ�}‰} §	¡	§¡Ò+Ð+Ñ+r   c                 ó°   — d| j                   _        t        j                  | j                  dd¬«      \  }}}}|d   | j                   j                  k(  sJ ‚y )Nr   rš   T)rR   rÉ   )rÉ   rÍ   r   rT   rÐ   )r   r"   rW   rX   rY   s        r   Útest_fsolve_nfevzTestNfev.test_fsolve_nfev  sF   € Øˆ�	‰	ŒÜ%Ÿ_™_¨T¯[©[¸#È4ÔPÑˆˆ4��dØ�F‰|˜tŸy™yŸ{™{Ò*Ð*Ñ*r   N)
r$   r%   r&   rË   rÐ   ÚpytestÚmarkÚparametrizerÛ   rÝ   r(   r   r   rÅ   rÅ     s;   „ ò&òð ‡[�[×Ñ˜Xò (3ó 4ñ
,ó4ð
,ó
+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y)ÚTestLeastSqc                 ó(  — t        j                  ddd«      }d\  }}}|| _        |||f| _        ||dz  z  ||z  z   |z   }t         j                  j                  d«       |dt         j                  j                  |j                  «      z  z   | _        y )Nr   r’   é(   )gÍÌÌÌÌÌ@é*   g33333sÀr5   g{®Gáz„?)	r    Úlinspacer"   ÚabcÚrandomÚseedÚstandard_normalr   Úy_meas)r   r"   ÚaÚbrÍ   Úy_trues         r   rË   zTestLeastSq.setup_method"  s�   € Ü�K‰K˜˜2˜rÓ"ˆØ‰ˆˆ!ˆAØˆŒØ�Q�q�5ˆŒØ�1�a‘4‘˜!˜A™#‘ Ñ!ˆÜ
�	‰	�‰�qÔØ˜t¤B§I¡I×$=Ñ$=¸f¿l¹lÓ$KÑKÑKˆ�r   c                 ó:   — |\  }}}|||dz  z  ||z  z   |z   z
  }|S ©Nr5   r(   )r   r¢   rÏ   r"   rì   rí   rÍ   Úerrs           r   Ú	residualszTestLeastSq.residuals+  s1   € Ø‰ˆˆ!ˆAØ��1�a‘4‘˜!˜A™#‘ Ñ!Ñ"ˆØˆ
r   c                 ót   — t        j                  |dz  |t        j                  |«      g«      j                   S rð   )r    ÚvstackÚ	ones_likeÚT)r   Ú_pÚ_yr"   s       r   Úresiduals_jacobianzTestLeastSq.residuals_jacobian0  s-   € Ü—	‘	˜1˜a™4 ¤B§L¡L°£OÐ4Ó5×7Ñ7Ð7Ð7r   c                 óÒ   — t        g d¢«      }t        | j                  || j                  | j                  f¬«      \  }}t        |dv d|z  «       t        || j                  d¬«       y )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_basic3  sV   € Ü’7‹^ˆÜ! $§.¡.°"Ø(,¯©°T·V±VÐ'<ô>‰ˆ
�Cä��yÐ Ð"?À#Ñ"EÔFä! *¨d¯h©hÀÖBr   c                 óè   — t        g d¢«      }t        | j                  || j                  | j                  f| j
                  ¬«      \  }}t        |dv d|z  «       t        || j                  d¬«       y )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;  sb   € Ü’7‹^ˆÜ! $§.¡.°"Ø(,¯©°T·V±VÐ'<Ø'+×'>Ñ'>ô@‰ˆ
�Cô 	��yÐ Ð"?À#Ñ"EÔFä! *¨d¯h©hÀÖBr   c                 ó°   — t        g d¢g«      }t        | j                  || j                  | j                  fd¬«      }|\  }}}}}t        |dv d|› �«       y )Nrû   TrP   rü   úsolution not found: )r   r   rò   rë   r"   r   )r   r  rR   r  Úcov_xÚinfodictrY   rX   s           r   Útest_full_outputzTestLeastSq.test_full_outputD  s\   € Ü’G�9ÓˆÜ˜dŸn™n¨bØ$(§K¡K°·±Ð#8Ø*.ô0ˆð 2=Ñ.ˆ
�E˜8 T¨3Ü��yÐ Ð$8¸¸Ð"?Õ@r   c                 óì   — t        g d¢t        ¬«      }t        |d¬«      }t        | j                  || j                  | j
                  fd¬«      }|\  }}}}}t        |dv d|› �«       t        ||«       y )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_untouchedL  sr   € Ü’7¤Ô)ˆÜ˜ Ô&ˆÜ˜dŸn™n¨bØ$(§K¡K°·±Ð#8Ø*.ô0ˆð 2=Ñ.ˆ
�E˜8 T¨3Ü��yÐ Ð$8¸¸Ð"?Ô@Ü˜2˜wÕ'r   c                 ób   — t        d«      }ddg}t        t        t        j                  ||«       y ra   ©r   rd   re   r   r   rf   s      r   ri   z*TestLeastSq.test_wrong_shape_func_callableV  s*   € Ü˜1‹~ˆð �3ˆZˆÜ”i¤×!1Ñ!1°4¸Õ<r   c                 óX   — ddg}t        t        t        j                  t        |d¬«       y rk   )rd   re   r   r   r*   rn   s     r   ro   z*TestLeastSq.test_wrong_shape_func_function]  s#   € ð �3ˆZˆÜ”i¤×!1Ñ!1´:¸rÈÖPr   c                 óx   — t        d«      }t        d«      }t        t        t        j                  |ddg|¬«       y )Nr6   rq   r   ©rh   r  r  rs   s      r   Útest_wrong_shape_Dfun_callablez*TestLeastSq.test_wrong_shape_Dfun_callablec  s/   € Ü˜1‹~ˆÜ  Ó'ˆ
Ü”i¤×!1Ñ!1°4¸Q¸q¸EÈ
ÖSr   c                 óX   — d„ }d„ }t        t        t        j                  |ddg|¬«       y )Nc                 ó   — t        | d«      S rx   ry   rz   s    r   rg   z8TestLeastSq.test_wrong_shape_Dfun_function.<locals>.funci  r{   r   c                 ó   — t        | d«      S r}   ry   rz   s    r   rt   z>TestLeastSq.test_wrong_shape_Dfun_function.<locals>.deriv_funck  r   r   r   r6   r  ©rd   re   r   r   rs   s      r   Útest_wrong_shape_Dfun_functionz*TestLeastSq.test_wrong_shape_Dfun_functionh  s&   € ò	'ò	)ä”i¤×!1Ñ!1°4¸Q¸q¸EÈ
Ö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  j                  «       d	 ||||«      dz  j                  «       z  k  «       y )
Nc                 óz   — | 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>.funcq  sJ   € Ø�!‘”R—V‘V˜a  !¡™f q™[˜L¨#¨a°©d°A©g©+Ñ6Ó7Ñ7¸¸!¹Ñ<ˆAØ�q‘5ˆLr   )
gš™™™™™÷?gw¾Ÿ/Ýö?g%�•C‹ö?gNbX9´ö?gHáz®G÷?gçû©ñÒMø?gZd;ßO�÷?gÙÎ÷Sãõ?gú~j¼t“ô?gV-²ó?rœ   )
gŒJê4‘?g¥N@aÃ“?g^KÈ=›•?gM„O¯”?gßà“©‚‘?g?W[±¿ìŽ?g‹lçû©ñ’?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_float32o  s±   € ò	ô �H‰Hò Ü%'§Z¡Zô1ˆä�H‰Hò $Ü+-¯:©:ô7ˆä�X‰XÒ'Ó(ˆÜ×&Ñ& t¨R°q¸°eÔ<‰ˆˆGä�˜9Ð$Ô%Ü‘�b˜˜1“˜q‘×%Ñ%Ó'¨$±$°r¸!¸A³,À±/×1FÑ1FÓ1HÑ*HÑHÕIr   c                 ó†   — d„ }t        t        d¬«      5  t        j                  |dg¬«       d d d «       y # 1 sw Y   y xY w)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ñ 	+Ü×Ñ˜T q cÕ*÷	+÷ 	+ñ 	+úrŽ   c                 óŽ   — d„ }d„ }t        t        d¬«      5  t        j                  |dg|¬«       d d d «       y # 1 sw Y   y xY w)Nc                 ó4   — | t        j                  dg«      z
  S r‘   r“   rz   s    r   rg   z-TestLeastSq.test_Dfun_can_raise.<locals>.func‡  r”   r   c                  ó   — t        d«      ‚rƒ   r…   rm   s    r   rt   z3TestLeastSq.test_Dfun_can_raise.<locals>.deriv_funcŠ  r‡   r   r„   rˆ   r   r  r'  rs   s      r   r–   zTestLeastSq.test_Dfun_can_raise†  sA   € ò	&ò	)ô œ:¨ZÔ8ñ 	<Ü×Ñ˜T q c°
Õ;÷	<÷ 	<ñ 	<úr—   c                 óÊ   ‡ — ˆ fd„}t        g d¢«      }t        ||‰ j                  ‰ j                  f¬«      \  }}t	        |dv d|z  «       t        |‰ j                  d¬«       y )Nc                  óB   •— ‰j                  «         ‰j                  | Ž S r   )r  rò   r¦   s    €r   rg   z-TestLeastSq.test_reentrant_func.<locals>.func‘  s   ø€ Ø�O‰OÔØ!�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_func�  sZ   ø€ ô	)ô ’7‹^ˆÜ! $¨Ø(,¯©°T·V±VÐ'<ô>‰ˆ
�Cä��yÐ Ð"?À#Ñ"EÔFä! *¨d¯h©hÀÖBr   c                 óà   ‡ — ˆ fd„}t        g d¢«      }t        ‰ j                  |‰ j                  ‰ j                  f|¬«      \  }}t        |dv d|z  «       t        |‰ j                  d¬«       y )Nc                  óB   •— ‰j                  «         ‰j                  | Ž S r   )r  rù   r¦   s    €r   rt   z3TestLeastSq.test_reentrant_Dfun.<locals>.deriv_func�  s    ø€ Ø�O‰OÔØ*�4×*Ñ*¨DÐ1Ð1r   rû   r  rü   rý   r5   rþ   r   )r   rt   r  r  rX   s   `    r   Útest_reentrant_DfunzTestLeastSq.test_reentrant_Dfunœ  sc   ø€ ô	2ô ’7‹^ˆÜ! $§.¡.°"Ø(,¯©°T·V±VÐ'<Ø'1ô3‰ˆ
�Cô 	��yÐ Ð"?À#Ñ"EÔFä! *¨d¯h©hÀÖBr   c                 óz   — t        | j                  gdz  «      }t        |D �cg c]  }|d u ‘Œ c}«      sJ ‚y c c}w r‘   )r3   r  r¬   r­   s      r   r°   z'TestLeastSq.test_concurrent_no_gradient©  s8   € Ü˜tŸ™Ð/°"Ñ4Ó5ˆÜ°Ö3 v�F˜d’NÒ3Ô4Ð4Ñ4ùÒ3r±   c                 óz   — t        | j                  gdz  «      }t        |D �cg c]  }|d u ‘Œ c}«      sJ ‚y c c}w r‘   )r3   r  r¬   r­   s      r   r³   z)TestLeastSq.test_concurrent_with_gradient­  s:   € Ü˜t×<Ñ<Ð=ÀÑBÓCˆÜ°Ö3 v�F˜d’NÒ3Ô4Ð4Ñ4ùÒ3r±   c                 óˆ   — d„ }t        t        d¬«      5  t        j                  |ddg¬«       d d d «       y # 1 sw Y   y xY w)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ñ 	.ä×Ñ˜T q¨! fÕ-÷	.÷ 	.ñ 	.ús	   •8¸AN)r$   r%   r&   rË   rò   rù   r  r  r  r  ri   ro   r  r  r£   r�   r–   r§   r/  r°   r³   r4  r(   r   r   râ   râ   !  sk   „ òLòò
8òCòCòAò(ò=òQòTò
TòJò +ò<ò
CòCò5ò5ó.r   râ   c                   ó$  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
j                  j                  d„ «       Zd	„ Zed
„ «       Ze
j                  j#                  dg d¢«      d„ «       Ze
j                  j#                  dg d¢«      d„ «       Ze
j                  j#                  dddg«      e
j                  j#                  dg d¢«      d„ «       «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze
j                  j#                  dg d¢«      d„ «       Zd„ Zd „ Z e
j                  j#                  d!d"d#g«      d$„ «       Z!d%„ Z"d&„ Z#d'„ Z$d(„ Z%d)„ Z&e
j                  jO                  d*«      d+„ «       Z(d,„ Z)d-„ Z*e
j                  j#                  dd.d/g«      d0„ «       Z+y1)2ÚTestCurveFitc                 óL   — t        g d¢«      | _        t        g d¢«      | _        y )N)r"  gš™™™™™	@ç      #@gffffff+@)r"  rN   ç      @g      @)r   rÏ   r"   rÊ   s    r   rË   zTestCurveFit.setup_method¼  s   € ÜÒ,Ó-ˆŒÜÒ+Ó,ˆ�r   c                 ód  — 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        ||«       y )Nc                 ó   — | |z  S r   r(   ©r"   rì   s     r   rg   z,TestCurveFit.test_one_argument.<locals>.funcÁ  ó   € Ø�a‘4ˆKr   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›   € ò	ä˜t T§V¡V¨T¯V©VÓ4‰
ˆˆdÜ”�D“	˜Q‘ÔÜ�—
‘
˜eÑ#Ô$Ü˜D ™G V°QÕ7Ü˜D ™I v°qÕ9ô ˜˜dŸf™f d§f¡fØ$%°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¬«       y )Nc                 ó   — || |z  z  S r   r(   ©r"   rì   rí   s      r   rg   z,TestCurveFit.test_two_argument.<locals>.funcÑ  s   € Ø�Q˜‘T‘6ˆMr   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Ð  sq   € ò	ä˜t T§V¡V¨T¯V©VÓ4‰
ˆˆdÜ”�D“	˜Q‘ÔÜ�—
‘
˜eÑ#Ô$Ü! $¨°Ð(8À!ÕDÜ! $¨&°'Ð):¸WÀfÐ<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¬«       y )Nc                   ó   — e Zd ZdZd„ Zy)ú8TestCurveFit.test_func_is_classmethod.<locals>.test_selfz”This 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   € Ø˜1˜a™4‘x�r   N)r$   r%   r&   r'   rg   r(   r   r   Ú	test_selfrQ  Û  s   „ ñó r   rS  rq   rI  rJ  rK   rþ   rK  rL  rM  )r   rg   r"   rÏ   r   r   r   )r   rS  Útest_self_instr?  r@  s        r   Útest_func_is_classmethodz%TestCurveFit.test_func_is_classmethodÚ  su   € ÷	 ñ 	 ñ #›ˆÜ˜~×2Ñ2°D·F±F¸D¿F¹FÓC‰
ˆˆdÜ�—
‘
˜eÑ#Ô$Ü! $¨°Ð(8À!ÕDÜ! $¨&°'Ð):¸WÀfÐ<MÐ(NØ*+ö	-r   c                 ól   — g d¢}g d¢}g d¢}g d¢}d„ }t        ||||d¬«      \  }}t        ||d¬	«       y )
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”@rX  g2ï9°l?rW  )gäƒžÍjñ�@gºÂj¬ñ�@g…”ŸT{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÷  sd   € Ø”r—v‘v  "¡ q™y˜j¨"¨U°A©X©+Ñ6Ó7Ñ7ØœŸ™ ! B¡$¨¡ 
¨B¨u°a©x©KÑ 8Ó9Ñ9ñ:Ø<=ñ>ð ?r   i'  ©Úmaxfevgñhãˆµøä>©Úrtol)r   r   )r   r"   rÏ   ÚguessÚgoodr^  r?  r@  s           r   Útest_regression_2639z!TestCurveFit.test_regression_2639ê  sG   € òˆò#ˆò/ˆò/ˆò	?ô ˜~¨q°!°UÀ5ÔI‰
ˆˆdÜ˜˜d¨Ö.r   c           
      óò  — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g d¢«      }d„ }dD �]C  }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¬«       �ŒF d„ }
t        j                  t         j                  gdz  «      j                  dd«      }t        «       5 }|j                  t        d«       t        |
||ddg|¬«      \  }}t        ||d d |d d ddg¬«      \  }}d d d «       t        j                  dk(  «       t        ||«       t        j                  dk(  «       t        ||«       y # 1 sw Y   ŒRxY w)N)r   r6   r5   r~   rK   é   )r6   r6   rg  é   é   é   )r6   r5   r6   r5   r6   r5   c                 ó   — || z  |z   S r   r(   rH  s      r   r-   z!TestCurveFit.test_pcov.<locals>.f  ó   € Ø�Q‘3˜‘7ˆNr   ©rÃ   ÚtrfÚdogboxr5   r   )r  r]  r¹   g´N"ãÍqÊ?g²~uM/Nâ?rŸ   ra  r~   T)r  r]  Úabsolute_sigmar¹   g´ÁO=N¨Ó?g5=¬`é6ë?gŽ¢÷[u|í?gè-�/i@c                 ó   — || z  S r   r(   rH  s      r   Úf_flatz&TestCurveFit.test_pcov.<locals>.f_flat  s   € Ø�Q‘3ˆJr   rK   z3Covariance of the parameters could not be estimated©r  r]  ©r  rq   )r    r   r   Úsqrtr@   r   ÚinfÚreshaper	   Úfilterr   r   r   r   )r   ÚxdataÚydatar]  r-   r¹   r?  r@  Úperr_scaledÚperrrr  Úpcov_expectedÚsupÚpopt1Úpcov1s                  r   Ú	test_pcovzTestCurveFit.test_pcový  sB  € Ü—‘Ò+Ó,ˆÜ—‘Ò,Ó-ˆÜ—‘Ò+Ó,ˆò	ð .ó 	KˆFÜ" 1 e¨U¸¸1°vÀUØ*0ô2‰JˆD�$äŸ'™'¤"§'¡'¨$£-Ó0ˆKÜ˜K¨*°jÐ)AÈÕMä" 1 e¨U¸¸1°vÀQÀuÁWØ*0ô2‰JˆD�$äŸ'™'¤"§'¡'¨$£-Ó0ˆKÜ˜K¨*°jÐ)AÈÕMä" 1 e¨U¸¸1°vÀUØ26¸vôG‰JˆD�$ä—7‘7œ2Ÿ7™7 4›=Ó)ˆDÜ˜D :¨zÐ":ÀÕFä" 1 e¨U¸¸1°vÀQÀuÁWØ26¸vôG‰JˆD�$ä—7‘7œ2Ÿ7™7 4›=Ó)ˆDÜ˜D <°Ð">ÀT×Jð'	Kò.	ô Ÿ™¤"§&¡& ¨!¡Ó,×4Ñ4°Q¸Ó:ˆäÓ ð 	I CØ�J‰J”ØLôNä" 6¨5°%¸QÀ¸FÈ%ÔP‰JˆD�$Ü$ Q¨¨b¨q¨	°5¸¸!°9À!ÀQÀÔH‰LˆE�5÷		Iô 	�—
‘
˜fÑ$Ô%Ü˜4 Ô/ä�—‘˜vÑ%Ô&Ü˜5 -Õ0÷	Ið 	Iús   ÇAI-É-I6c                 óV   — d„ }g d¢}g d¢}t        t        |||«      d   ddgd¬«       y )	Nc                 ó   — || z  |z   S r   r(   rH  s      r   Úf_linearz.TestCurveFit.test_array_like.<locals>.f_linear/  rl  r   rü   )r~   rg  rh  é	   r   r5   r6   g»½×Ùß|Û=r    )r   r   )r   r„  r"   rÏ   s       r   Útest_array_likezTestCurveFit.test_array_like-  s1   € ò	ò ˆÚˆÜœ	 (¨A¨qÓ1°!Ñ4°q¸!°fÀ5ÖIr   c                 ó�   — t        j                  g d¢«      }t        j                  g d¢«      }t        t        t        d„ ||«       y )N)r6   r5   r~   rK   rg  é   )r6   r5   r~   rK   g      @rˆ  c                 ó   — || z  S r   r(   rH  s      r   r.   z<TestCurveFit.test_indeterminate_covariance.<locals>.<lambda><  s
   €  Q q¡S€ r   )r    r   r   r   r   ©r   ry  rz  s      r   Útest_indeterminate_covariancez*TestCurveFit.test_indeterminate_covariance6  s5   € ô —‘Ò+Ó,ˆÜ—‘Ò-Ó.ˆÜ”_¤iÙ(¨%°õ	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¤Ž y )	Nr6   r~   ©r6   r5   r~   c                 ó   — || z  |z   S r   r(   rH  s      r   r.   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>F  ó   €  a¨¡c¨A¡g€ r   c                 ó   — || z  |z   S r   r(   rH  s      r   r.   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>H  r�  r   c                 ó   — || z  |z   S r   r(   rH  s      r   r.   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>J  s   € ¸Q¸q¹SÀ1¹W€ r   r>  T)r    r   Únanrd   r†   r   rŠ  s      r   Útest_NaN_handlingzTestCurveFit.test_NaN_handling>  ss   € ô —‘˜!œRŸV™V Q˜Ó(ˆÜ—‘šÓ#ˆä”j¤)Ù-¨u°eô	=ä”j¤)Ù-¨u°eô	=ô 	”j¤)Ñ-DØ˜Uñ	>Ø'5°tÐ&<ó	>r   c                 óÈ  — | |||ddœ}d}t        t        |¬«      5  t        di |¤dddœ¤Ž d d d «       t        t        d¬«      5  t        di |¤d	d
i¤Ž d d d «       t        di |¤d	di¤Ž\  }}	||d<   ||d<   t        di |¤Ž\  }
}	t        ||
«       d}t        t        |¬«      5  t        di |¤d	di¤Ž d d d «       y # 1 sw Y   Œ”xY w# 1 sw Y   ŒwxY w# 1 sw Y   y xY w)NF)r-   ry  rz  r¹   r>  z;`nan_policy='propagate'` is not supported by this function.rˆ   Ú	propagateiÐ  )Ú
nan_policyr`  zThe input contains nanr–  ÚraiseÚomitry  rz  zTnan_policy must be one of \{(?:'raise'|'omit'|None)(?:, ?(?:'raise'|'omit'|None))*\}Úhir(   )rd   r†   r   r   )r-   Úxdata_with_nanÚxdata_without_nanÚydata_with_nanÚydata_without_nanr¹   ÚkwargsÚ	error_msgÚresult_with_nanÚ_Úresult_without_nans              r   Ú_check_nan_policyzTestCurveFit._check_nan_policyM  s	  € ð  >¸NØ"°Eñ;ˆð)ˆ	äœ:¨YÔ7ñ 	EÜÑD˜ÐD¨;¸tÔD÷	Eô œ:Ð-EÔFñ 	4ÜÑ3˜Ñ3¨7Ó3÷	4ô 'ÑC¨ÑC¸FÒCÑˆ˜Ø+ˆˆw‰Ø+ˆˆw‰Ü )Ñ 3¨FÑ 3ÑÐ˜AÜ˜Ð);Ô<ð:ˆ	äœ:¨YÔ7ñ 	1ÜÑ0˜Ñ0¨4Ó0÷	1ð 	1÷%	Eð 	Eú÷	4ð 	4ú÷	1ð 	1ús#   œC ÁCÂ'CÃ C	ÃCÃC!r¹   rm  c                 óR  — d„ }t        j                  ddt         j                  ddt         j                  g«      }t        j                  ddddt         j                  dg«      }t        j                  g d¢«      }t        j                  g d	¢«      }| j                  ||||||«       y )
Nc                 ó   — || z  |z   S r   r(   rH  s      r   r-   z*TestCurveFit.test_nan_policy_1d.<locals>.fl  rl  r   r5   r~   rK   r6   rg  rh  )r5   r~   rK   r�  ©r    r   r’  r£  ©r   r¹   r-   rš  rœ  r›  r�  s          r   Útest_nan_policy_1dzTestCurveFit.test_nan_policy_1dj  s‡   € ò	ô Ÿ™ 1 a¬¯©°°A´r·v±vÐ">Ó?ˆÜŸ™ 1 a¨¨A¬r¯v©v°qÐ"9Ó:ˆÜŸH™H¢YÓ/ÐÜŸH™H¢YÓ/Ðà×Ñ˜q .Ð2CØ-Ð/@À&õ	Jr   c           
      óÄ  — d„ }t        j                  ddt         j                  ddt         j                  dgddt         j                  t         j                  dt         j                  dgg«      }t        j                  ddddt         j                  ddg«      }t        j                  g d	¢g d
¢g«      }t        j                  g d¢«      }| j                  ||||||«       y )Nc                 ó<   — | dd d …f   }| dd d …f   }||z  |z   |z   S ©Nr   r6   r(   ©r"   rì   rí   rZ  Úx2s        r   r-   z*TestCurveFit.test_nan_policy_2d.<locals>.fy  s.   € Ø�1’a�4‘ˆBØ�1’a�4‘ˆBØ�R‘4˜!‘8˜b‘=Ð r   r5   r~   rK   rg  rh  r6   r’   ©r5   r~   rg  ©r5   r~   rh  ©r6   r5   r’   r¦  r§  s          r   Útest_nan_policy_2dzTestCurveFit.test_nan_policy_2dw  s·   € ò	!ô
 Ÿ™ A q¬"¯&©&°!°Q¼¿¹ÀÐ#BØ$% q¬"¯&©&´"·&±&¸!¼R¿V¹VÀQÐ#Gð#Ió JˆäŸ™ 1 a¨¨A¬r¯v©v°q¸"Ð"=Ó>ˆÜŸH™H¢i²Ð%;Ó<ÐÜŸH™H¢ZÓ0Ðà×Ñ˜q .Ð2CØ-Ð/@À&õ	Jr   rB   r5   r~   c           
      óö  — d„ }t        j                  ddt         j                  ddt         j                  dgddt         j                  t         j                  dt         j                  dggg«      }|dk(  r|j                  «       n|}t        j                  ddddt         j                  ddg«      }t        j                  g d	¢g d
¢gg«      }t        j                  g d¢«      }| j	                  ||||||«       y )Nc                 óx   — | ddd d …f   j                  «       }| ddd d …f   j                  «       }||z  |z   |z   S )N.r   r6   )Úsqueezer¬  s        r   r-   z,TestCurveFit.test_nan_policy_2_3d.<locals>.fŠ  sD   € Ø�3˜š1�9‘×%Ñ%Ó'ˆBØ�3˜š1�9‘×%Ñ%Ó'ˆBØ�R‘4˜!‘8˜b‘=Ð r   r5   r~   rK   rg  rh  r6   r’   r®  r¯  r°  )r    r   r’  r´  r£  )r   rB   r¹   r-   rš  rœ  r›  r�  s           r   Útest_nan_policy_2_3dz!TestCurveFit.test_nan_policy_2_3d‡  sÖ   € ò	!ô
 Ÿ™ Q¨¬2¯6©6°1°a¼¿¹ÀÐ$CØ$% q¬"¯&©&´"·&±&¸!¼R¿V¹VÀQÐ#Gð$Ið #Jó Kˆà56¸!²V˜×/Ñ/Ô1ÀˆÜŸ™ 1 a¨¨A¬r¯v©v°q¸"Ð"=Ó>ˆÜŸH™H¢y²)Ð&<Ð%=Ó>ÐÜŸH™H¢ZÓ0Ðà×Ñ˜q .Ð2CØ-Ð/@À&õ	J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¬«       y )	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>Ÿ  r¸  r   r5   ©rd   r†   r   rÊ   s    r   Útest_empty_inputszTestCurveFit.test_empty_inputs™  sT   € ä”j¤)Ñ-=¸rÀ2ÔFÜ”j¤)Ñ-=¸rÀ2Ø#õ	%ä”j¤)Ñ-=À¸sÀBÔGÜ”j¤)Ñ-=À¸sÀBØ#ö	%r   c                 ó<   — t        t        t        d„ ddgddg«       y )Nc                 ó   — | S r   r(   rz   s    r   r.   z8TestCurveFit.test_function_zero_params.<locals>.<lambda>¤  s   € °q€ r   r6   r5   r~   rK   r½  rÊ   s    r   Útest_function_zero_paramsz&TestCurveFit.test_function_zero_params¢  s   € ä”j¤)©[¸1¸a¸&À1ÀaÀ&ÕIr   c                 ól   — t        d„ d dt        j                  d«      z  «      \  }}t        |dg«       y )Nc                 ó2   — |t        j                  d«      z  S r‘   )r    Úarange)r¡  rì   s     r   r.   z*TestCurveFit.test_None_x.<locals>.<lambda>§  s   € ¨A´·	±	¸"³Ñ,=€ r   r5   r’   rN   )r   r    rÄ  r   )r   r?  r@  s      r   Útest_None_xzTestCurveFit.test_None_x¦  s1   € ÜÑ=Ø# Q¬¯©°2«Ñ%6ó8‰
ˆˆdä˜˜r˜dÕ#r   c                 óÌ   — d„ }t        j                  ddd«      } ||dd«      }dD ]"  }t        ||||¬«      \  }}t        |ddg«       Œ$ t	        t
        t        |||d¬«       y )	Nc                 ó:   — |t        j                  | | z  «      z  S r   r  rH  s      r   r-   z,TestCurveFit.test_method_argument.<locals>.f¬  ó   € Ø”r—v‘v˜q˜b ™d“|Ñ#Ð#r   r   r6   é   rN   ©rn  ro  rÃ   NrÙ   Úunknown)r    ræ   r   r   rd   r†   )r   r-   ry  rz  r¹   r?  r@  s          r   Útest_method_argumentz!TestCurveFit.test_method_argument«  sn   € ò	$ô —‘˜A˜q "Ó%ˆÙ�%˜˜RÓ ˆà3ò 	,ˆFÜ" 1 e¨U¸6ÔB‰JˆD�$Ü˜D 2 r (Õ+ð	,ô 	”j¤)¨Q°°uÀYÖOr   c                 ó  — d„ }t        j                  ddd«      } ||dd«      }dD ]c  }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 rŒcJ ‚ y )Nc                 ó:   — |t        j                  | | z  «      z  S r   r  rH  s      r   r-   z(TestCurveFit.test_full_output.<locals>.f¹  s   € Ø”r—v‘v˜q˜b 1™f“~Ñ%Ð%r   r   r6   rÉ  rN   rÊ  T)r¹   rR   rÉ   ÚfvecrÃ   ÚfjacÚipvtÚqtfrü   )r    ræ   r   r   Ú
isinstanceÚstr)
r   r-   ry  rz  r¹   r?  r@  r  rD  rX   s
             r   r  zTestCurveFit.test_full_output¸  sÖ   € ò	&ô —‘˜A˜q "Ó%ˆÙ�%˜˜RÓ ˆà3ò 	'ˆFÜ09Ø�5˜%¨¸Dô1BÑ-ˆD�$˜ &¨#ä˜D 2 r (Ô+Ø˜XÑ%Ð%Ð%Ø˜XÑ%Ð%Ð%Ø˜Š~  Ø Ñ)Ð)Ð)Ø Ñ)Ð)Ð)Ø Ñ(Ð(Ð(Ü˜f¤cÔ*Ð*Ð*Ø˜,Ò&Ð&Ð&ñ	'r   c           	      ó¬  — d„ }t        j                  ddd«      } ||dd«      }ddg}ddg}||f}t        ||«      }d	D ]C  }t        |||||¬
«      \  }	}
t	        |	d   d«       t        |||||¬
«      \  }}t	        ||	«       ŒE t        |||dddgdt         j
                  gf¬«      \  }	}
t	        |	d   d«       t        t        t        ||||d¬
«       y )Nc                 ó:   — |t        j                  | | z  «      z  S r   r  rH  s      r   r-   z#TestCurveFit.test_bounds.<locals>.fÍ  rÈ  r   r   r6   rÉ  rN   r"  rb   r9  )Nrn  ro  )rº  r¹   rn  rO   g333333ã?)r¹   rº  rÃ   )r    ræ   r   r   r   rv  rd   r†   )r   r-   ry  rz  ÚlbÚubrº  Úbounds_classr¹   r?  r@  Ú
popt_classÚ
pcov_classs                r   Útest_boundszTestCurveFit.test_boundsÌ  s  € ò	$ô —‘˜A˜q "Ó%ˆÙ�%˜˜RÓ ˆð �!ˆWˆØ�2ˆYˆð �b�ˆÜ˜b "“~ˆØ-ò 	.ˆFÜ" 1 e¨U¸6Ø*0ô2‰JˆD�$ä˜D ™G SÔ)ä%.¨q°%¸Ø6BØ6<ô&>Ñ"ˆJ˜
ô ˜J¨Õ-ð	.ô ˜q %¨°uØ(*¨A w°´b·f±f°Ð&>ô@‰
ˆˆdä˜˜Q™ Ô%ô 	”j¤)¨Q°°uÀVØ!ö	#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 ]V  }t	        |||dt         j                  z  ¬	«      \  }}t	        |||dt         j                  z  ||¬
«      \  }}t        ||«       ŒX y )Nc                 ó2   — t        j                  | |z   «      S r   )r    Úsinr<  s     r   r-   z&TestCurveFit.test_bounds_p0.<locals>.fñ  s   € Ü—6‘6˜!˜a™%“=Ð r   éþÿÿÿr5   rä   éýÿÿÿr~   ©rn  ro  gÍÌÌÌÌÌ @rt  ©r  rº  r¹   )r    ræ   Úpirß  r   r   )	r   r-   ry  rz  rº  r¹   Úpopt_1r¡  Úpopt_2s	            r   Útest_bounds_p0zTestCurveFit.test_bounds_p0î  s­   € ò	!ô —‘˜BœrŸu™u™H a¬¯©¡g¨rÓ2ˆÜ—‘�u“ˆØ”r—u‘u‘*˜a¤"§%¡%™iÐ(ˆØ'ò 	,ˆFÜ! ! U¨E°c¼"¿%¹%±iÔ@‰IˆF�AÜ! ! U¨E°c¼"¿%¹%±iØ)/¸ô@‰IˆF�Aô ˜F FÕ+ñ	,r   c           	      ó®  — d„ }d„ }t        j                  ddd«      } ||dd«      }dD ]*  }dD ]#  }t        |||||¬	«      \  }}t        |d
d
g«       Œ% Œ, dD ]#  }t        |||||¬«      \  }}t        |d
d
g«       Œ% d|d<   t        j                  |j
                  d   «      }	d|	d<   dD ]&  }t        ||||	||¬«      \  }}t        |d
d
gd¬«       Œ( y )Nc                 ó:   — |t        j                  | | z  «      z  S r   r  rH  s      r   r-   z TestCurveFit.test_jac.<locals>.f  rÈ  r   c                 ó„   — 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  ó8   € Ü—‘˜�r˜!‘t“ˆAÜ—9‘9˜a !  a¡¨!¡˜_Ó-×/Ñ/Ð/r   r   r6   rÉ  rN   râ  )z2-pointz3-pointÚcs)rD   r¹   r5   rm  ©r¹   rD   rš   rg  éÈ   )r]  r¹   rD   rŸ   ra  )r    ræ   r   r   r!   r   )
r   r-   rD   ry  rz  r¹   Úschemer?  r@  r]  s
             r   Útest_jaczTestCurveFit.test_jacÿ  s  € ò	$ò	0ô —‘˜A˜q "Ó%ˆÙ�%˜˜RÓ ˆð (ò 	.ˆFØ6ò .�Ü& q¨%°¸FØ.4ô6‘
��dä  q¨! fÕ-ñ.ð	.ð .ò 	*ˆFÜ" 1 e¨U¸6ÀsÔK‰JˆD�$Ü˜D 1 a &Õ)ð	*ð
 ˆˆa‰Ü—‘˜Ÿ™ A™Ó'ˆØˆˆa‰Ø-ò 	5ˆFÜ" 1 e¨U¸%ÈØ'*ô,‰JˆD�$ô ˜D 1 a &¨tÖ4ñ	5r   c                 óÂ   — t        j                  dd«      }d|z  }t        d„ ||dd¬«      \  }}t        d„ ||dd¬	«      \  }}t        |dd
¬«       t        |dd
¬«       y )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º  r`  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Ï   r  r¡  rB  s         r   Útest_maxfev_and_boundsz#TestCurveFit.test_maxfev_and_bounds#  sa   € ô �I‰I�a˜ÓˆØˆa‰CˆÜ™_¨a°¸6È#ÔN‰ˆˆqÜ™_¨a°¸6ÈCÔP‰ˆˆqä˜˜q uÕ-Ü˜˜q uÖ-r   Ú	sigma_dim)r   r6   r5   c                 óŒ  — d„ }t         j                  j                  d«      }d}t        j                  dd|«      } ||dd«      }|dk(  rd	}||j	                  d||«      z  }nz|dk(  r|d	z  }||j	                  d||«      z  }nY|d
k(  rM|j	                  dd
||f«      }||j
                  z  }||j                  t        j                  |«      |«      z  }nJ d«       ‚ddg}	|j                  |d¬«      }
|j                  |d¬«      }t         j                  ||
<   t         j                  ||<   t        ||||	|d¬«      \  }}t        j                  t        j                  |
|f«      «      }t        j                  ||d¬«      }t        j                  ||d¬«      }t        j                  |«      }|j                  dk(  rt        j                  ||«      }n?|j                  d
k(  r0t        j                  ||d¬«      }t        j                  ||d¬«      }t        ||||	|¬«      \  }}t!        ||d¬«       t!        ||d¬«       y )Nc                 ó8   — |t        j                  || z  «      z  S r   r  rH  s      r   Úexponentialz7TestCurveFit.test_curvefit_omitnan.<locals>.exponential0  s   € Ø”r—v‘v˜a !™e“}Ñ$Ð$r   l   lt*GÊ7 rš   r6   r’   çš™™™™™É?rL   r   gš™™™™™©?r5   z1The sigma must be a scalar, 1D array or 2D array.gš™™™™™¹?r"  rg  ©Úsizer˜  )r  r]  r–  )Úaxisrs  rú  r    )r    rè   Údefault_rngræ   Únormalrö   Úmultivariate_normalÚ
zeros_likeÚintegersr’  r   ÚuniqueÚconcatenateÚdeleteÚasarrayÚndimr   )r   rü  rÿ  ÚrngÚNr"   rÏ   r]  rì   r  Úi_xÚi_yÚres_optÚres_covÚi_deleteÚref_optÚref_covs                    r   Útest_curvefit_omitnanz"TestCurveFit.test_curvefit_omitnan.  s  € ò	%ô �i‰i×#Ñ# OÓ4ˆØˆÜ�K‰K˜˜2˜qÓ!ˆÙ˜˜3 Ó$ˆà˜ŠNØˆEØ�—‘˜A˜u aÓ(Ñ(‰Aà˜1ŠnØ˜‘HˆEØ�—‘˜A˜u aÓ(Ñ(‰Aà˜1Šnà—
‘
˜1˜a ! Q Ó(ˆAØ˜Ÿ™‘GˆEØ�×(Ñ(¬¯©°qÓ)9¸5ÓAÑA‰AàMÐMÓM�5à�3ˆZˆð �l‰l˜1 1ˆlÓ%ˆØ�l‰l˜1 1ˆlÓ%ˆô —‘ˆˆ#‰Ü—‘ˆˆ#‰Ü$ [°!°Q¸2ÀUØ06ô8Ñˆ�ô
 —9‘9œRŸ^™^¨S°#¨JÓ7Ó8ˆÜ�I‰I�a˜¨Ô*ˆÜ�I‰I�a˜¨Ô*ˆä—
‘
˜5Ó!ˆØ�:‰:˜Š?Ü—I‘I˜e XÓ.‰EØ�Z‰Z˜1Š_Ü—I‘I˜e X°AÔ6ˆEÜ—I‘I˜e X°AÔ6ˆEÜ$ [°!°Q¸2ÀUÔKÑˆ�ä˜ ¨uÕ5Ü˜ ¨uÖ5r   c           
      ó  — d„ }d„ }t         j                  j                  d«       t        j                  ddd«      } ||dd«      }|dt         j                  j	                  t        |«      ¬	«      z  z   }t        j                  t        |«      «      dz   }t        j                  |d
z  «      }||fdfD ]P  \  }}	dD ]F  }
t        ||||||
¬«      \  }}t        |||||	|
¬«      \  }}t        ||d¬«       t        ||d¬«       ŒH ŒR y )Nc                 ó:   — |t        j                  | | z  «      z  S r   r  rH  s      r   rg   z9TestCurveFit.test_curvefit_simplecovariance.<locals>.funcg  rÈ  r   c                 ó„   — t        j                  | | z  «      }t        j                  || | z  |z  f«      j                  S r   rë  rì  s       r   rD   z8TestCurveFit.test_curvefit_simplecovariance.<locals>.jacj  rî  r   r   rK   é2   ç      @çÍÌÌÌÌÌô?r   r  r5   ©NN©FT©r]  rD   rp  rú  r    )
r    rè   ré   ræ   r  r/   Úzerosr@   r   r   )r   rg   rD   ry  rÏ   rz  r]  ÚcovarÚjac1Újac2rp  r  r€  rB  rC  s                  r   Útest_curvefit_simplecovariancez+TestCurveFit.test_curvefit_simplecovariancee  s	  € ò	$ò	0ô 	�	‰	�‰�qÔÜ—‘˜A˜q "Ó%ˆÙ�˜˜SÓ!ˆØ�Cœ"Ÿ)™)×*Ñ*´°E³
Ð*Ó;Ñ;Ñ;ˆä—‘œ˜U›Ó$ sÑ*ˆÜ—‘˜˜q™Ó!ˆà ˜: |Ð4ò 	:‰JˆD�$Ø"/ò :�Ü(¨¨u°eÀ5Ø °ô A‘��uä(¨¨u°eÀ5Ø °ô A‘��uô    u°5Õ9Ü  u°5Ö9ñ:ñ	:r   c           
      ój  — d„ }d„ }d„ }d„ }t         j                  j                  d«      }t        j                  dd«      } ||dd	«      }|d
|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                  |«      }|j                  |
«      j                  |j                  «      }||fdfD ]R  \  }}dD ]H  }t        ||||	||¬«      \  }}t        ||||||¬«      \  }}t        ||dd¬«       t        ||dd¬«       ŒJ ŒT y )Nc                 óH  — 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                  |t        j                  | | z  «      z  «      S ©Nr"  r5   ç      ð¿r   ©r   r   r"  )r    r   ru  Údotr   )r"   rì   rí   Úrotns       r   Úfuncpz4TestCurveFit.test_curvefit_covariance.<locals>.funcp‚  s   € Ü—8‘8˜b¤§¡¨£™m¨S´·±¸³©^¸QÐ?Ø ¤§¡¨£™m¨R´·±¸³
©]¸AÐ>Ú(ð*ó +ˆDð —8‘8˜A¤§¡¨ 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  «      }|j	                  t        j
                  || | z  |z  f«      j                  «      S r(  )r    r   ru  r   r+  rô   rö   )r"   rì   rí   r,  rí  s        r   Újacpz3TestCurveFit.test_curvefit_covariance.<locals>.jacpˆ  sœ   € Ü—8‘8˜b¤§¡¨£™m¨S´·±¸³©^¸QÐ?Ø ¤§¡¨£™m¨R´·±¸³
©]¸AÐ>Ú(ð*ó +ˆDô —‘˜�r˜!‘t“ˆAØ—8‘8œBŸI™I q¨1¨"¨q©&°1©* oÓ6×8Ñ8Ó9Ð9r   c                 ó:   — |t        j                  | | z  «      z  S r   r  rH  s      r   rg   z3TestCurveFit.test_curvefit_covariance.<locals>.func�  rÈ  r   c                 ó„   — 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ú  )rb  r¡   )r    rè   ÚRandomStaterÄ  r  r/   r!  r@   r   ru  r+  rö   r   r   )r   r-  r/  rg   rD   r  ry  rÏ   rz  r]  r"  r,  ÚydatapÚcovarpr#  r$  rp  r  r€  rB  rC  s                        r   Útest_curvefit_covariancez%TestCurveFit.test_curvefit_covariance€  s›  € ò	.ò	:ò	$ò	0ô �i‰i×#Ñ# AÓ&ˆÜ—	‘	˜!˜Q“ˆÙ�˜˜SÓ!ˆØ�C˜#Ÿ*™*¬#¨e«*˜*Ó5Ñ5Ñ5ˆÜ—‘œ˜U›Ó$ sÑ*ˆÜ—‘˜˜q™Ó!ˆô �x‰x˜"œRŸW™W Q›Z™-¨¬R¯W©W°Q«Z©¸Ð;ØœRŸW™W Q›Z™-¨¬B¯G©G°A«J©¸Ð:Ú$ð&ó 'ˆð —‘˜%“ˆØ—‘˜%“×$Ñ$ T§V¡VÓ,ˆà ˜;¨Ð5ò 	G‰JˆD�$Ø"/ò G�Ü(¨¨u°eÀ5Ø °ô A‘��uä(¨°°vÀVØ °ô A‘��uô    u°6ÀÕFÜ  u°6ÀÖFñGñ	Gr   rp  FTc           	      óâ   — d„ }| j                   | j                  }}t        |||d|¬«      \  }}t        |||t        j                  |d«      |¬«      \  }}t        j
                  ||k(  «      sJ ‚y )Nc                 ó   — || z  |z   S r   r(   rH  s      r   rg   z5TestCurveFit.test_curvefit_scalar_sigma.<locals>.func´  ó   € Ø�q‘5˜1‘9Ðr   r5   )r]  rp  )r"   rÏ   r   r    Ú	full_liker¬   )r   rp  rg   r"   rÏ   r¡  r€  rC  s           r   Útest_curvefit_scalar_sigmaz'TestCurveFit.test_curvefit_scalar_sigma²  sl   € ò	ð �v‰v�t—v‘vˆ1ˆÜ˜T 1 a¨qÀÔP‰ˆˆ5äØ�a˜¤"§,¡,¨q°!Ó"4À^ô
‰ˆˆ5ô �v‰v�e˜u‘nÔ%Ð%Ñ%r   c           	      ó„  — 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 ]$  }|j                  |«      }|j                  |«      }Œ& t        j                  «       5  t        j                  dt        «       t        ||||¬	«      \  }}t        j                  |«      j                  «       sJ ‚t        j                  |d
«      rJ ‚	 d d d «       ŒÒ Œ÷ y # 1 sw Y   ŒßxY w)Nrá  rg  rb   r9  rL   c                 ó   — || z  |z   S r   r(   rH  s      r   rg   z&TestCurveFit.test_dtypes.<locals>.funcÄ  rl  r   rm  Ú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  € ä�I‰I�b˜!ÓˆØ�‰E�C‰K˜#œbŸf™f Q›i™-Ñ'ˆò	ð .ò 	1ˆFÜŸ
™
¤B§J¡JÐ/ò 
1�ÜŸJ™J¬¯
©
Ð3ò &�CØŸ™ ›�AØŸ™ ›‘Að&ô ×,Ñ,Ó.ñ 1Ü×)Ñ)¨'´?ÔCÜ& t¨Q°¸&ÔA‘F�A�säŸ;™; sÓ+×/Ñ/Ô1Ð1Ð1Ü!Ÿ{™{¨1¨aÔ0Ð0Ð0Ð0÷1ð 1ñ
1ñ	1÷1ð 1ús   Â>A*D6Ä6D?c                 óœ  — d„ }t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g d¢«      }g d¢}t        j                  g d¢«      } ||g|¢­Ž }t        ||||||f¬«      \  }}	|j                  t         j                  «      } ||g|¢­Ž }t        ||||||f¬«      \  }
}	t        |
|d¬	«       y )
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    ru  )r"   Ús_1Ús_2Úo_xÚo_yrÍ   Úb_2Úb_1s           r   Ú	hyperbolaz,TestCurveFit.test_dtypes2.<locals>.hyperbola×  sW   € Ø˜‘9 ‘/ˆCØ˜‘9 ‘/ˆCØ˜˜a ™e™Ñ$ s¬2¯7©7°A°c±E¸A±:ÀÀ1ÁÀQÁÑ3FÓ+GÑ'GÑGÐGr   )g      ÀrO   ç       Àg      $ÀrO   )rO   r9  r9  rO   g      $@)g«ªªªªªê¿gUUUUUUõ?r"  g      ÀrL   )rà  gš™™™™™Ù?éÿÿÿÿéûÿÿÿr8  )iàÿÿÿiðÿÿÿiøÿÿÿrK   rK   ri  é   é    )r-   ry  rz  r  rº  gñhãˆµøô>r    )r    r   r   r>  rž   r   )r   rP  Úmin_fitÚmax_fitrc  Úparamsry  rz  Úpopt_64r¡  Úpopt_32s              r   Útest_dtypes2zTestCurveFit.test_dtypes2Ô  sÉ   € ò	Hô
 —(‘(Ò8Ó9ˆÜ—(‘(Ò5Ó6ˆÜ—‘Ò:Ó;ˆâ&ˆÜ—‘Ò8Ó9ˆÙ˜%Ð) &Ò)ˆô  °%¸uÈØ'.°Ð&8ô:‰
ˆ�ð —‘œRŸZ™ZÓ(ˆÙ˜%Ð) &Ò)ˆä °%¸uÈØ'.°Ð&8ô:‰
ˆ�ô 	˜ ¨tÖ4r   c                 ó<  ‡— t        j                  d«      }d|dz  z  d|z  z   t         j                  j                  t	        |«      «      z   Šˆfd„}dD ]E  }t        ||t        j                  |«      |¬«      \  }}t        ||d|¬«      \  }}t        ||«       ŒG y )	Nr’   gÍÌÌÌÌÌ@r5   g      @c                 ó&   •— || dz  z  || z  z   ‰z
  S rð   r(   )r"   rì   rí   Útargets      €r   Úfit_funcz/TestCurveFit.test_broadcast_y.<locals>.fit_funcó  s   ø€ Ø�q˜A‘v‘:  A¡Ñ%¨Ñ.Ð.r   rm  )ry  rz  r¹   r   )r    rÄ  rè   Úrandr/   r   r  r   )	r   ry  r_  r¹   Úpopt0Úpcov0r  r€  r^  s	           @r   Útest_broadcast_yzTestCurveFit.test_broadcast_yð  sš   ø€ Ü—	‘	˜"“ˆØ�u ‘zÑ! C¨%¡KÑ/´"·)±)·.±.ÄÀUÃÓ2LÑLˆô	/à-ò 		*ˆFÜ$ XØ+0Ü+-¯=©=¸Ó+?Ø,2ô4‰LˆE�5ô % XØ+0Ø+,Ø,2ô4‰LˆE�5ô ˜E 5Õ)ñ		*r   c                 ó|   — d„ }t        t        «      5  t        |g d¢g d¢dgd¬«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — || z  |z   S r   r(   rH  s      r   rg   z.TestCurveFit.test_args_in_kwargs.<locals>.func  r8  r   rü   ©rg  r…  é   é   r6   rl   )ry  rz  r  rQ   r½  rŒ   s     r   Útest_args_in_kwargsz TestCurveFit.test_args_in_kwargs   s>   € ò	ô œ:Ó&ñ 	!Ü�dÚ(Ú*Ø˜Øõ	!÷	!÷ 	!ñ 	!ús   “2²;c                 óz   — d„ }t        t        d¬«      5  t        |g d¢g d¢¬«       d d d «       y # 1 sw Y   y xY w)Nc                 óL   — |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>.func  s*   € Ø”r—v‘v˜q˜b 1™f“~Ñ%¨Ñ)¨AÑ-°Ñ1Ð1r   zThe number of func parameters=rˆ   rü   rf  )ry  rz  )rd   re   r   rŒ   s     r   Ú!test_data_point_number_validationz.TestCurveFit.test_data_point_number_validation  s9   € ò	2ô œ9Ð,LÔMñ 	,Ü�dÚ(Ú*õ,÷	,÷ 	,ñ 	,ús   •1±:zignore::RuntimeWarningc                 óê  — d„ }t         j                  j                  d«      }d}t        j                  |«      }t        j                  dd|«      |j                  |«      z   }t        j                  |||d¬«      \  }}t        j                  t        j                  |«      dkD  «      sJ ‚t        j                  |«      d   }t        j                  |d	kD  «      sJ ‚t        ||j                  «       y )
Nc                 ó‚   — |t        j                  | dz   |z   «      z  |t        j                  | dz   |z   «      z  z   |z   S ©Nr6   ©r    Úlogrl  s         r   r-   z#TestCurveFit.test_gh4555.<locals>.f  s>   € Ø”R—V‘V˜A ™E A™IÓ&Ñ&¨¬2¯6©6°!°a±%¸!±)Ó+<Ñ)<Ñ<¸qÑ@Ð@r   ì   MI9V$O-rš   r5   rh  i † r_  r   g{®Gáz„¿)r    rè   r  rÄ  ræ   r   r   r¬   r@   r   Úeighr   rö   )	r   r-   r  rB   r"   rÏ   r¢   rF  Úeigss	            r   Útest_gh4555zTestCurveFit.test_gh4555  sÀ   € ò	Aô �i‰i×#Ñ#Ð$6Ó7ˆØˆÜ�I‰I�a‹LˆÜ�K‰K˜˜1˜aÓ  3§:¡:¨a£=Ñ0ˆÜ×#Ñ# A q¨!°FÔ;‰ˆˆ3Ü�v‰v”b—g‘g˜c“l QÑ&Ô'Ð'Ð'Ü�{‰{˜3Ó Ñ"ˆä�v‰v�d˜U‘lÔ#Ð#Ð#Ü˜˜SŸU™UÕ#r   c                 ó$  — t         j                  j                  d«      }d„ }t        j                  ddd«      } ||ddd«      }d	|j	                  |j
                  ¬
«      z  }||z   }t        |||«      \  }}g d¢g d¢g d¢g}	t        ||	d«       y )Nrt  c                 ó@   — |t        j                  | | z  «      z  |z   S r   r  )r"   rì   rí   rÍ   s       r   rg   z'TestCurveFit.test_gh4555b.<locals>.func/  s    € Ø”r—v‘v˜q˜b 1™f“~Ñ%¨Ñ)Ð)r   r   rK   r  r  r  rL   r   r  )gƒt¢^G�?çd£*.æX|?ç�ÓTû}H¿)rz  g×1”©xÿ”?çuô`v?)r{  r|  gšonÁ2Íf?gH¯¼šò×Š>)r    rè   r  ræ   r  r  r   r   )
r   r  rg   ry  rÏ   Úy_noiserz  r¡  rA  Úrefs
             r   Útest_gh4555bzTestCurveFit.test_gh4555b*  s•   € ô �i‰i×#Ñ#Ð$6Ó7ˆò	*ô —‘˜A˜q "Ó%ˆÙ�˜˜S #Ó&ˆØ˜Ÿ
™
¨¯
©
˜
Ó3Ñ3ˆØ�G‘ˆÜ˜4 ¨Ó.‰ˆˆ3âMÚMÚMðOˆô 	˜˜S $Õ'r   c                 ó0  ‡‡— t         j                  j                  d«      }t        j                  ddd«      }d|z  dz   |j	                  d¬«      dz  z   }ˆfd	„Šˆfd
„Šd ‰_        d ‰_        t        j                  ddg«      }t        ‰|||d‰¬«       y )Nl   ¾FÂjGbð r   r~   ée   r5   r6   r  rL   c                 óv   •— t        j                  ‰j                  |k(  «      rJ ‚|‰_        | |d   z  |d   z   S r«  )r    r¬   Úlast_p)r"   r¢   Úlines     €r   r„  z'TestCurveFit.test_gh13670.<locals>.lineG  s;   ø€ Ü—v‘v˜dŸk™k¨QÑ.Ô/Ð/Ð/ØˆDŒKØ�q˜‘t‘8˜a ™d‘?Ð"r   c                 óÂ   •— t        j                  ‰j                  |k(  «      rJ ‚|‰_        t        j                  | t        j                  | «      g«      j
                  S r   )r    r¬   rƒ  r   rõ   rö   )r"   r¢   rD   s     €r   rD   z&TestCurveFit.test_gh13670.<locals>.jacL  sF   ø€ Ü—v‘v˜cŸj™j¨A™oÔ.Ð.Ð.ØˆCŒJÜ—8‘8˜Q¤§¡¨Q£Ð0Ó1×3Ñ3Ð3r   r"  g      @rÃ   rð  )r    rè   r  ræ   r  rƒ  r   r   )r   r  r"   rÏ   r  rD   r„  s        @@r   Útest_gh13670zTestCurveFit.test_gh13670>  sŒ   ù€ ô
 �i‰i×#Ñ#Ð$7Ó8ˆÜ�K‰K˜˜1˜cÓ"ˆØ�‰E�A‰I˜Ÿ
™
¨˜
Ó,¨sÑ2Ñ2ˆô	#ô
	4ð
 ˆŒØˆŒ
Ü�X‰X�s˜C�jÓ!ˆÜ�$˜˜1˜b¨°3Ö7r   rn  ro  c           	      óº   — d„ }d}t        j                  t        |¬«      5  t        || j                  | j
                  dgd|¬«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — | |z  S r   r(   r<  s     r   rg   z9TestCurveFit.test_gh20155_error_mentions_x0.<locals>.funcZ  r=  r   z+Initial guess is outside of provided boundsrˆ   r6   )r›   ié  rã  )rÞ   r
   r†   r   r"   rÏ   )r   r¹   rg   Úmessages       r   Útest_gh20155_error_mentions_x0z+TestCurveFit.test_gh20155_error_mentions_x0V  sN   € ò	à?ˆÜ�]‰]œ:¨WÔ5ñ 	%Ü�d˜DŸF™F D§F¡F°¨s¸<Ø#õ%÷	%÷ 	%ñ 	%ús   ¡'AÁAN),r$   r%   r&   rË   rE  rN  rU  re  r�  r†  rÞ   rß   Úthread_unsafer‹  r“  Ústaticmethodr£  rà   r¨  r±  rµ  r¾  rÁ  rÅ  rÌ  r  rÜ  rç  ró  rû  r  r%  r5  r:  rG  r[  rc  ri  rn  Úfilterwarningsrw  r  r†  rŠ  r(   r   r   r6  r6  »  sô  „ ò-ò/ò -ò-ò /ò&.1ò`Jð ‡[�[×Ññ8ó ð8ò>ð ñ1ó ð1ð8 ‡[�[×Ñ˜XÒ'>Ó?ñ
Jó @ð
Jð ‡[�[×Ñ˜XÒ'>Ó?ñJó @ðJð ‡[�[×Ñ˜S 1 a &Ó)Ø‡[�[×Ñ˜XÒ'>Ó?ñJó @ó *ðJò %òJò$ò
Pò'ò( #òD,ò""5òH	.ð ‡[�[×Ñ˜[ª)Ó4ñ46ó 5ð46òl:ò60Gðd ‡[�[×ÑÐ-°°t¨}Ó=ñ
&ó >ð
&ò1ò*5ò8*ò !ò,ð ‡[�[×ÑÐ 8Ó9ñ$ó :ð$ò&(ò(8ð0 ‡[�[×Ñ˜X¨¨xÐ'8Ó9ñ%ó :ñ%r   r6  c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestFixedPointc                 ó>   — d„ }d}t        ||«      }t        |d«       y )Nc                 ó   — d| z  S ©NrN   r(   rz   s    r   rg   z0TestFixedPoint.test_scalar_trivial.<locals>.funcf  ó   € Ø�q‘5ˆLr   r"  rO   ©r   r   ©r   rg   rh   r"   s       r   Útest_scalar_trivialz"TestFixedPoint.test_scalar_triviald  s"   € ò	àˆÜ˜˜bÓ!ˆÜ˜A˜sÕ#r   c                 ó>   — d„ }d}t        ||«      }t        |d«       y )Nc                 ó   — | dz  S rð   r(   rz   s    r   rg   z/TestFixedPoint.test_scalar_basic1.<locals>.funcn  r=  r   çÍÌÌÌÌÌð?r"  r”  r•  s       r   Útest_scalar_basic1z!TestFixedPoint.test_scalar_basic1l  s"   € ò	àˆÜ˜˜bÓ!ˆÜ˜A˜sÕ#r   c                 ó>   — d„ }d}t        ||«      }t        |d«       y )Nc                 ó   — | dz  S ©NrL   r(   rz   s    r   rg   z/TestFixedPoint.test_scalar_basic2.<locals>.funcv  s   € Ø�c‘6ˆMr   r™  r"  r”  r•  s       r   Útest_scalar_basic2z!TestFixedPoint.test_scalar_basic2t  s"   € ò	àˆÜ˜˜bÓ!ˆÜ˜A˜sÕ#r   c                 óœ   — d„ }ddg}t        j                  d¬«      5  t        ||«      }d d d «       t        ddg«       y # 1 sw Y   ŒxY w)Nc                 ó   — d| z  S r’  r(   rz   s    r   rg   z/TestFixedPoint.test_array_trivial.<locals>.func}  r“  r   g333333Ó?g333333Ã?Úignore©r¬   rO   )r    Úerrstater   r   r•  s       r   Útest_array_trivialz!TestFixedPoint.test_array_trivial|  sK   € ò	à�4ˆ[ˆÜ�[‰[˜XÔ&ñ 	&Ü˜D "Ó%ˆA÷	&ä˜A  S˜zÕ*÷	&ð 	&ús   žAÁAc                 ó¾   — d„ }t        g d¢«      }g d¢}t        j                  d¬«      5  t        |||f¬«      }d d d «       t	        d|z  «       y # 1 sw Y   ŒxY w)Nc                 ó   — || dz  z  S rð   r(   ©r"   rÍ   s     r   rg   z.TestFixedPoint.test_array_basic1.<locals>.func†  s   € Ø�q˜!‘t‘8ˆOr   ©g      è?r"  g      ô?)çš™™™™™ñ?gffffffò?gÍÌÌÌÌÌì?r¡  r¢  rm   r"  )r   r    r£  r   r   ©r   rg   rÍ   rh   r"   s        r   Útest_array_basic1z TestFixedPoint.test_array_basic1„  sV   € ò	äÒ#Ó$ˆÚˆÜ�[‰[˜XÔ&ñ 	1Ü˜D "¨A¨4Ô0ˆA÷	1ä˜A˜s 1™uÕ%÷	1ð 	1ús   «AÁAc                 óh   — d„ }t        g d¢«      }g d¢}t        |||f¬«      }t        ||dz  «       y )Nc                 ó   — || dz  z  S r�  r(   r§  s     r   rg   z.TestFixedPoint.test_array_basic2.<locals>.func�  s   € Ø�q˜#‘v‘:Ðr   r¨  )gš™™™™™é?r©  r©  rm   r5   )r   r   r   rª  s        r   Útest_array_basic2z TestFixedPoint.test_array_basic2Ž  s5   € ò	äÒ#Ó$ˆÚˆÜ˜˜b¨ tÔ,ˆÜ˜A˜q !™tÕ$r   c                 ó    — t        d„ dddd¬«      }t        |t        j                  d|z  «      dz  «       t        |t	        d	«      d
z  «       y )Nc                 ó8   — t        j                  d| z  «      dz  S )NrQ  rN   r  )Úxxs    r   r.   z.TestFixedPoint.test_lambertw.<locals>.<lambda>™  s   € ¬¯©¨t°B©w«¸Ñ(;€ r   r"  r(   gê-�™—q=iô  )rQ   ÚxtolÚmaxiterrQ  rN   r6   r5   )r   r   r    r   r   )r   Úxxroots     r   Útest_lambertwzTestFixedPoint.test_lambertw—  sF   € äÑ;¸SØ˜e¨Sô2ˆä˜¤§¡ t¨F¡{Ó 3°CÑ 7Ô8Ü˜¤¨£¨A¡Õ.r   c                 ó�   ‡‡‡— dŠdŠd}d}|dz
  |z  ‰‰z  |z  d|dz
  z  z  z  Šˆˆˆfd„}t        ||d¬«      }t        ||«       y )	Nr5   rˆ  r  gj¼t“ð?r6   c                 ó~   •— t        j                  ‰‰z  | z  «      t        j                  ‰| z  | dz
  z  «      z  dz   S rq  rr  )rB   Úi0ÚklÚkss    €€€r   rg   z1TestFixedPoint.test_no_acceleration.<locals>.func¦  s8   ø€ Ü—6‘6˜"˜R™% ™'“?¤R§V¡V¨B¨q©D°!°a±%©LÓ%9Ñ9¸AÑ=Ð=r   Ú	iterationrÙ   )r   r   )r   ÚmÚn0rg   rB   r¸  r¹  rº  s        @@@r   Útest_no_accelerationz#TestFixedPoint.test_no_accelerationž  s]   ú€ àˆØˆØˆØˆØ�‰s�A‰g˜˜2™˜a™ 1 a¨¡c¡7Ñ+Ñ+ˆö	>ô ˜˜b¨Ô5ˆÜ˜˜1Õr   N)r$   r%   r&   r–  rš  rž  r¤  r«  r®  rµ  r¾  r(   r   r   r�  r�  b  s*   „ ò$ò$ò$ò+ò&ò%ò/ór   r�  ).r'   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â   r6  r�  r(   r   r   ú<module>rÇ     s¹   ðñó Û Û ÷<÷ <ñ <õ +Û ß  Ý +ç "Ý "ß FÑ FÝ *Ý +÷#ñ #òò+òò>ò.<÷
i5ñ i5÷X;ñ ;÷@;ñ ;÷+ñ +÷4W.ñ W.÷td
%ñ d
%÷NHò Hr   