Ë
    çÿæiO¯  ã                   ór  — 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	 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)Ú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     úv/Volumes/fast/ai/experiments/voice-extract-mac/.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_parallelr1   +   s*   € Ü	”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<   4   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`
    r4   Nr3   r   )r-   r   ÚdiagÚemptyr   )r7   r8   r9   ÚnÚpdiffÚjacs         r   Úpressure_network_jacobianrC   S   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<   rC   )r7   r8   r9   s      r   Úpressure_network_fun_and_gradrE   j   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é   ç      à?©ç       @ç        rL   rM   T©ÚargsÚfull_outputr4   )	r   Úfullr	   r   Úfsolver<   r   r   r   )r   r9   r8   Úinitial_guessÚfinal_flowsÚinfoÚierÚmesgs           r   Ú!test_pressure_network_no_gradientz,TestFSolve.test_pressure_network_no_gradientp   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 )NrI   rJ   rK   ©rO   Úfprime)	r   rQ   r	   r   rR   r<   rC   r   r   ©r   r9   r8   rS   rT   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 ©Nr4   ç      ø?rL   ©r   Úassert_raisesÚ	TypeErrorr   rR   ©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 ©Nr`   rL   )©r4   ©rO   )rb   rc   r   rR   r(   ©r   rf   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 )Nr4   ©r3   r3   r   ©rf   r[   ra   ©r   re   Ú
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)r3   ©r(   ©r    s    r   re   z9TestFSolve.test_wrong_shape_fprime_function.<locals>.func˜   ó   € Ü˜a Ó&Ð&r   c                 ó   — t        | d«      S ©N)é   r|   rw   rx   s    r   rr   z?TestFSolve.test_wrong_shape_fprime_function.<locals>.deriv_funcš   ó   € Ü˜a Ó(Ð(r   r   r4   rp   )rb   rc   r   rR   rq   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©Ú
ValueErrorrk   s    r   re   z,TestFSolve.test_func_can_raise.<locals>.funcŸ   ó   € Ü˜ZÓ(Ð(r   r‚   ©Úmatchr   ©rf   ©rb   r„   r   rR   ©r   re   s     r   Útest_func_can_raisezTestFSolve.test_func_can_raisež   s/   € ò	)ô œ:¨ZÖ8Ü�O‰O˜D a SÕ)÷ 9×8Ñ8úó	   •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	   rx   s    r   re   z,TestFSolve.test_Dfun_can_raise.<locals>.func¦   ó   € Ø”r—x‘x  “~Ñ%Ð%r   c                  ó   — t        d«      ‚r�   rƒ   rk   s    r   rr   z2TestFSolve.test_Dfun_can_raise.<locals>.deriv_func©   r…   r   r‚   r†   r   rp   r‰   rq   s      r   Útest_Dfun_can_raisezTestFSolve.test_Dfun_can_raise¥   s6   € ò	&ò	)ô œ:¨ZÖ8Ü�O‰O˜D a S°Õ<÷ 9×8Ñ8úó	   ˜;»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   r4   éè  ©Údtyper3   )r   r	   Úfloat32rx   s    r   re   z%TestFSolve.test_float32.<locals>.func°   s1   € Ü—8‘8˜Q˜q™T C™Z¨¨1©°©Ð5¼R¿Z¹ZÔHÈAÑMÐMr   r4   r   çü©ñÒMbP?©Úatol)r   rR   r   r	   rœ   r   )r   re   Ú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   )rX   r<   ©rO   r   s    €r   re   z,TestFSolve.test_reentrant_func.<locals>.func¶   s   ø€ Ø×2Ñ2Ô4Ü# TÐ*Ð*r   rI   rJ   rK   TrN   r4   )r   rQ   r	   r   rR   r   r   r   )	r   re   r9   r8   rS   rT   rU   rV   rW   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]   rC   r¤   s    €r   rr   z3TestFSolve.test_reentrant_Dfunc.<locals>.deriv_funcÅ   s   ø€ Ø×4Ñ4Ô6Ü,¨dÐ3Ð3r   rI   rJ   rK   rZ   )r   rQ   r	   r   rR   r<   r   r   )r   rr   r9   r8   rS   rT   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�   )r1   rX   Ú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�   )r1   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$   rX   r]   rg   rm   rs   r~   r‹   r”   r¡   r¥   r¨   r®   r±   r&   r   r   rG   rG   o   sF   „ ò	 ò;ò<òPòUò
Uò*ò=ò4ò ò;ò5ó5r   rG   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 )NrI   rJ   rK   Úhybr©ÚmethodrO   ©	r   rQ   r	   r   Úrootr<   r    r   r   r\   s        r   rX   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 )NrI   rJ   rK   rµ   ©rO   r·   rB   )
r   rQ   r	   r   r¹   r<   rC   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 )NrI   rJ   rK   rµ   Tr»   )	r   rQ   r	   r   r¹   rE   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$   rX   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 )NrI   rJ   rK   Úlmr¶   r¸   r\   s        r   rX   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$   rX   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   r4   r3   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)rP   rÇ   )rÇ   rË   r   rR   rÎ   )r   r    rU   rV   rW   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|j                  |j                  «      z  z   | _        y )Nr   r�   é(   )gÍÌÌÌÌÌ@é*   g33333sÀr3   é{   g{®Gáz„?)	r   Úlinspacer    ÚabcÚrandomÚdefault_rngÚstandard_normalr   Úy_meas)r   r    ÚaÚbrË   Úy_trueÚrngs          r   rÉ   zTestLeastSq.setup_method!  s�   € Ü�K‰K˜˜2˜rÓ"ˆØ‰ˆˆ!ˆAØˆŒØ�Q�q�5ˆŒØ�1�a‘4‘˜!˜A™#‘ Ñ!ˆÜ�i‰i×#Ñ# CÓ(ˆØ˜t C×$7Ñ$7¸¿¹Ó$EÑEÑEˆ�r   c                 ó:   — |\  }}}|||dz  z  ||z  z   |z   z
  }|S ©Nr3   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_jacobian/  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|› d�«       t        || j                  d¬«       y )N©r   r   r   rk   ©r4   r3   r|   rI   úsolution not found (ier=Ú)r3   ©Údecimal©r	   r   rò   rê   r    r   r   ræ   ©r   Úp0Ú
params_fitrV   s       r   Ú
test_basiczTestLeastSq.test_basic2  sZ   € Ü’7‹^ˆÜ! $§.¡.°"Ø(,¯©°T·V±VÐ'<ô>‰ˆ
�Cä��|Ð#Ð'?À¸uÀAÐ%FÔGä! *¨d¯h©hÀÖBr   c                 óê   — t        g d¢«      }t        | j                  || j                  | j                  f| j
                  ¬«      \  }}t        |dv d|› d�«       t        || j                  d¬«       y )Nrû   ©rO   ÚDfunrü   rý   rþ   r3   rÿ   )	r	   r   rò   rê   r    rù   r   r   ræ   r  s       r   Útest_basic_with_gradientz$TestLeastSq.test_basic_with_gradient:  sf   € Ü’7‹^ˆÜ! $§.¡.°"Ø(,¯©°T·V±VÐ'<Ø'+×'>Ñ'>ô@‰ˆ
�Cô 	��|Ð#Ð'?À¸uÀAÐ%FÔGä! *¨d¯h©hÀÖBr   c                 ó°   — t        g d¢g«      }t        | j                  || j                  | j                  fd¬«      }|\  }}}}}t        |dv d|› �«       y )Nrû   TrN   rü   úsolution not found: )r	   r   rò   rê   r    r   )r   r  rP   r  Úcov_xÚinfodictrW   rV   s           r   Útest_full_outputzTestLeastSq.test_full_outputC  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)ÚcopyrN   rü   r  )r	   r
   r   rò   rê   r    r   r   )	r   r  Úp0_copyrP   r  r  r  rW   rV   s	            r   Útest_input_untouchedz TestLeastSq.test_input_untouchedK  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 r_   ©r   rb   rc   r   r   rd   s      r   rg   z*TestLeastSq.test_wrong_shape_func_callableU  s*   € Ü˜1‹~ˆð �3ˆZˆÜ”i¤×!1Ñ!1°4¸Õ<r   c                 óX   — ddg}t        t        t        j                  t        |d¬«       y ri   )rb   rc   r   r   r(   rl   s     r   rm   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 )Nr4   ro   r   ©rf   r  r  rq   s      r   Útest_wrong_shape_Dfun_callablez*TestLeastSq.test_wrong_shape_Dfun_callableb  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 rv   rw   rx   s    r   re   z8TestLeastSq.test_wrong_shape_Dfun_function.<locals>.funch  ry   r   c                 ó   — t        | d«      S r{   rw   rx   s    r   rr   z>TestLeastSq.test_wrong_shape_Dfun_function.<locals>.deriv_funcj  r}   r   r   r4   r  ©rb   rc   r   r   rq   s      r   Útest_wrong_shape_Dfun_functionz*TestLeastSq.test_wrong_shape_Dfun_functiong  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   r4   r3   rL   r|   ©r   Úexp)r    r    rÍ   Úqs       r   re   z&TestLeastSq.test_float32.<locals>.funcp  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#  rk   rü   r3   g-Cëâ6?)r   r	   rœ   r   r   r   r6   )r   re   r    rÍ   r  Úp1Úsuccesss          r   r¡   zTestLeastSq.test_float32n  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ƒ   rk   s    r   re   z-TestLeastSq.test_func_can_raise.<locals>.func  r…   r   r‚   r†   r   rˆ   ©rb   r„   r   r   rŠ   s     r   r‹   zTestLeastSq.test_func_can_raise~  s1   € ò	)ô œ:¨ZÖ8Ü×Ñ˜T q cÕ*÷ 9×8Ñ8ú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‘   rx   s    r   re   z-TestLeastSq.test_Dfun_can_raise.<locals>.func†  r’   r   c                  ó   — t        d«      ‚r�   rƒ   rk   s    r   rr   z3TestLeastSq.test_Dfun_can_raise.<locals>.deriv_func‰  r…   r   r‚   r†   r   r  r(  rq   s      r   r”   zTestLeastSq.test_Dfun_can_raise…  s8   € ò	&ò	)ô œ:¨ZÖ8Ü×Ñ˜T q c°
Õ;÷ 9×8Ñ8úr•   c                 óÌ   ‡ — ˆ fd„}t        g d¢«      }t        ||‰ j                  ‰ j                  f¬«      \  }}t	        |dv d|› d�«       t        |‰ j                  d¬«       y )	Nc                  óB   •— ‰j                  «         ‰j                  | Ž S r   )r  rò   r¤   s    €r   re   z-TestLeastSq.test_reentrant_func.<locals>.func�  s   ø€ Ø�O‰OÔØ!�4—>‘> 4Ð(Ð(r   rû   rk   rü   rý   rþ   r3   rÿ   )r	   r   rê   r    r   r   ræ   )r   re   r  r  rV   s   `    r   r¥   zTestLeastSq.test_reentrant_func�  s^   ø€ ô	)ô ’7‹^ˆÜ! $¨Ø(,¯©°T·V±VÐ'<ô>‰ˆ
�Cä��|Ð#Ð'?À¸uÀAÐ%FÔGä! *¨d¯h©hÀÖBr   c                 óâ   ‡ — ˆ fd„}t        g d¢«      }t        ‰ j                  |‰ j                  ‰ j                  f|¬«      \  }}t        |dv d|› d�«       t        |‰ j                  d¬«       y )	Nc                  óB   •— ‰j                  «         ‰j                  | Ž S r   )r  rù   r¤   s    €r   rr   z3TestLeastSq.test_reentrant_Dfun.<locals>.deriv_funcœ  s    ø€ Ø�O‰OÔØ*�4×*Ñ*¨DÐ1Ð1r   rû   r  rü   rý   rþ   r3   rÿ   r  )r   rr   r  r  rV   s   `    r   Útest_reentrant_DfunzTestLeastSq.test_reentrant_Dfun›  sg   ø€ ô	2ô ’7‹^ˆÜ! $§.¡.°"Ø(,¯©°T·V±VÐ'<Ø'1ô3‰ˆ
�Cô 	��|Ð#Ð'?À¸uÀAÐ%FÔGä! *¨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�   )r1   r  rª   r«   s      r   r®   z'TestLeastSq.test_concurrent_no_gradient¨  s<   € Ü˜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�   )r1   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 )Nr3   r   r|   r4   r&   rx   s    r   re   z=TestLeastSq.test_func_input_output_length_check.<locals>.func²  s   € Ø˜˜!™˜q™ Q‘Ñ&¨Ñ*Ð*r   z+Improper input: func input vector length N=r†   r   r4   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Õ-÷P÷ Pñ Pús	   •8¸AN)r"   r#   r$   rÉ   rò   rù   r  r	  r  r  rg   rm   r  r  r¡   r‹   r”   r¥   r0  r®   r±   r5  r&   r   r   rà   rà      sk   „ òFòò
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	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                  jM                  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#  rL   ç      @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   re   z,TestCurveFit.test_one_argument.<locals>.funcÀ  ó   € Ø�a‘4ˆKr   r4   )r4   r4   r   g3Ä±.n£þ?rI   rÿ   )r   r   g-Cëâ6Z?F)rP   Úcheck_finite)r   r    rÍ   r   r-   r   r   r   )
r   re   ÚpoptÚpcovÚresÚpopt2Úpcov2r  ÚerrmsgrV   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   re   z,TestCurveFit.test_two_argument.<locals>.funcÐ  s   € Ø�Q˜‘T‘6ˆMr   r3   ro   çñcÌ]KÈü?çà-� ò?rI   rÿ   çäƒžÍªÏµ?çTã¥›Ä À¿ç·bÙ=yÈ?)r   r    rÍ   r   r-   r   r   )r   re   r@  rA  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   re   z=TestCurveFit.test_func_is_classmethod.<locals>.test_self.funcß  s   € Ø˜1˜a™4‘x�r   N)r"   r#   r$   r%   re   r&   r   r   Ú	test_selfrR  Ú  s   „ ñó r   rT  ro   rJ  rK  rI   rÿ   rL  rM  rN  )r   re   r    rÍ   r   r   r   )r   rT  Útest_self_instr@  rA  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”@rY  g2ï9°l?rX  )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 )Nr3   rL   r   )r    rf   Ú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@  rA  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        j                  «       5  t        j                  ddt        «       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   r4   r3   r|   rI   é   )r4   r4   rh  é   é   é   )r4   r3   r4   r3   r4   r3   c                 ó   — || z  |z   S r   r&   rI  s      r   r+   z!TestCurveFit.test_pcov.<locals>.f  ó   € Ø�Q‘3˜‘7ˆNr   ©rÁ   ÚtrfÚdogboxr3   r   )r  r^  r·   g´N"ãÍqÊ?g²~uM/Nâ?r�   rb  r|   T)r  r^  Úabsolute_sigmar·   g´ÁO=N¨Ó?g5=¬`é6ë?gŽ¢÷[u|í?gè-�/i@c                 ó   — || z  S r   r&   rI  s      r   Úf_flatz&TestCurveFit.test_pcov.<locals>.f_flat  s   € Ø�Q‘3ˆJr   rI   Úignorez3Covariance of the parameters could not be estimated©r  r^  ©r  ro   )r   r	   r   Úsqrtr>   r   ÚinfÚreshapeÚwarningsÚcatch_warningsÚfilterwarningsr   r   r   r   )r   ÚxdataÚydatar^  r+   r·   r@  rA  Úperr_scaledÚperrrs  Úpcov_expectedÚpopt1Úpcov1s                 r   Ú	test_pcovzTestCurveFit.test_pcovü  s;  € Ü—‘Ò+Ó,ˆÜ—‘Ò,Ó-ˆÜ—‘Ò+Ó,ˆò	ô .ˆ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ð' .ò.	ô Ÿ™¤"§&¡& ¨!¡Ó,×4Ñ4°Q¸Ó:ˆä×$Ñ$Õ&Ü×#Ñ#ØØEÜô!ô # 6¨5°%¸QÀ¸FÈ%ÔP‰JˆD�$Ü$ Q¨¨b¨q¨	°5¸¸!°9À!ÀQÀÔH‰LˆE�5÷ 'ô 	�—
‘
˜fÑ$Ô%Ü˜4 Ô/ä�—‘˜vÑ%Ô&Ü˜5 -Õ0÷ 'Ð&ús   Ç AI<É<Jc                 óV   — d„ }g d¢}g d¢}t        t        |||«      d   ddgd¬«       y )	Nc                 ó   — || z  |z   S r   r&   rI  s      r   Úf_linearz.TestCurveFit.test_array_like.<locals>.f_linear0  rm  r   rü   )r|   rh  ri  é	   r   r3   r4   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        j                  t        «      5  t        d„ ||«       d d d «       y # 1 sw Y   y xY w)N)r4   r3   r|   rI   rh  é   )r4   r3   r|   rI   g      @r‹  c                 ó   — || z  S r   r&   rI  s      r   r,   z<TestCurveFit.test_indeterminate_covariance.<locals>.<lambda><  s   €  a¨¢cr   )r   r	   rÜ   Úwarnsr   r   ©r   r}  r~  s      r   Útest_indeterminate_covariancez*TestCurveFit.test_indeterminate_covariance7  sE   € ä—‘Ò+Ó,ˆÜ—‘Ò-Ó.ˆÜ�\‰\œ/Õ*ÜÑ)¨5°%Ô8÷ +×*Ñ*ús   ÁA Á A)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 )	Nr4   r|   ©r4   r3   r|   c                 ó   — || z  |z   S r   r&   rI  s      r   r,   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>F  ó   €  a¨¡c¨A¢gr   c                 ó   — || z  |z   S r   r&   rI  s      r   r,   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>H  r“  r   c                 ó   — || z  |z   S r   r&   rI  s      r   r,   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>J  s   € ¸Q¸q¹SÀ1ºWr   r?  T)r   r	   Únanrb   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+   r}  r~  r·   r?  z;`nan_policy='propagate'` is not supported by this function.r†   Ú	propagateiÐ  )Ú
nan_policyra  zThe input contains nanrš  ÚraiseÚomitr}  r~  zTnan_policy must be one of \{(?:'raise'|'omit'|None)(?:, ?(?:'raise'|'omit'|None))*\}Úhir&   )rb   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ÜÑD˜ÐD¨;¸tÔD÷ 8ô œ:Ð-EÖFÜÑ3˜Ñ3¨7Ó3÷ Gô 'ÑC¨ÑC¸FÒCÑˆ˜Ø+ˆˆw‰Ø+ˆˆw‰Ü )Ñ 3¨FÑ 3ÑÐ˜AÜ˜Ð);Ô<ð:ˆ	äœ:¨YÖ7ÜÑ0˜Ñ0¨4Ó0÷ 8Ð7÷% 8Ð7ú÷ GÐFú÷ 8Ð7ús#   œC ÁCÂ'CÃ C	ÃCÃC!r·   rn  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&   rI  s      r   r+   z*TestCurveFit.test_nan_policy_1d.<locals>.fl  rm  r   r3   r|   rI   r4   rh  ri  )r3   r|   rI   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   r4   r&   ©r    rë   rì   r[  Ú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   r3   r|   rI   rh  ri  r4   r�   ©r3   r|   rh  ©r3   r|   ri  ©r4   r3   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   r@   r3   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   r4   )Ú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   r3   r|   rI   rh  ri  r4   r�   r²  r³  r´  )r   r	   r–  r¸  r§  )r   r@   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   )r4   r3   )Úboundsc                 ó   — || z  S r   r&   r=  s     r   r,   z0TestCurveFit.test_empty_inputs.<locals>.<lambda>ž  r¼  r   r4   c                 ó   — || z  S r   r&   r=  s     r   r,   z0TestCurveFit.test_empty_inputs.<locals>.<lambda>Ÿ  r¼  r   r3   ©rb   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&   rx   s    r   r,   z8TestCurveFit.test_function_zero_params.<locals>.<lambda>¤  s   € ±qr   r4   r3   r|   rI   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   r3   r�   rL   )r   r   rÈ  r   )r   r@  rA  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   rI  s      r   r+   z,TestCurveFit.test_method_argument.<locals>.f¬  ó   € Ø”r—v‘v˜q˜b ™d“|Ñ#Ð#r   r   r4   é   rL   ©ro  rp  rÁ   Nr×   Úunknown)r   rå   r   r   rb   r„   )r   r+   r}  r~  r·   r@  rA  s          r   Útest_method_argumentz!TestCurveFit.test_method_argument«  si   € ò	$ô —‘˜A˜q "Ó%ˆÙ�%˜˜RÓ ˆã3ˆFÜ" 1 e¨U¸6ÔB‰JˆD�$Ü˜D 2 r (Õ+ð 4ô 	”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   rI  s      r   r+   z(TestCurveFit.test_full_output.<locals>.f¹  s   € Ø”r—v‘v˜q˜b 1™f“~Ñ%Ð%r   r   r4   rÍ  rL   rÎ  T)r·   rP   rÇ   ÚfvecrÁ   ÚfjacÚipvtÚqtfrü   )r   rå   r   r   Ú
isinstanceÚstr)
r   r+   r}  r~  r·   r@  rA  r  rE  rV   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Ô*Ð*Ð*Ø˜,Ò&Ð&Ð&ñ 4r   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   rI  s      r   r+   z#TestCurveFit.test_bounds.<locals>.fÍ  rÌ  r   r   r4   rÍ  rL   r#  r`   r:  )Nro  rp  )r¾  r·   ro  rM   g333333ã?)r·   r¾  rÁ   )r   rå   r   r   r   rx  rb   r„   )r   r+   r}  r~  ÚlbÚubr¾  Úbounds_classr·   r@  rA  Ú
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   éþÿÿÿr3   râ   éýÿÿÿr|   ©ro  rp  gÍÌÌÌÌÌ @rv  ©r  r¾  r·   )r   rå   Úpirã  r   r   )	r   r+   r}  r~  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   rI  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   rB   z"TestCurveFit.test_jac.<locals>.jac  ó8   € Ü—‘˜�r˜!‘t“ˆAÜ—9‘9˜a !  a¡¨!¡˜_Ó-×/Ñ/Ð/r   r   r4   rÍ  rL   ræ  )z2-pointz3-pointÚcs)rB   r·   r3   rn  ©r·   rB   r˜   rh  éÈ   )r^  r·   rB   r�   rb  )r   rå   r   r   r   r   )
r   r+   rB   r}  r~  r·   Úschemer@  rA  r^  s
             r   Útest_jaczTestCurveFit.test_jacÿ  sü   € ò	$ò	0ô —‘˜A˜q "Ó%ˆÙ�%˜˜RÓ ˆó (ˆFÛ6�Ü& q¨%°¸FØ.4ô6‘
��dä  q¨! fÕ-ñ 7ð (ó .ˆFÜ" 1 e¨U¸6ÀsÔK‰JˆD�$Ü˜D 1 a &Õ)ð .ð
 ˆˆa‰Ü—‘˜Ÿ™ A™Ó'ˆØˆˆa‰Û-ˆFÜ" 1 e¨U¸%ÈØ'*ô,‰JˆD�$ô ˜D 1 a &¨tÖ4ñ .r   c                 óÂ   — t        j                  dd«      }d|z  }t        d„ ||dd¬«      \  }}t        d„ ||dd¬	«      \  }}t        |dd
¬«       t        |dd
¬«       y )Nr   r�   r3   c                 ó   — || z  S r   r&   ©r    r    s     r   r,   z5TestCurveFit.test_maxfev_and_bounds.<locals>.<lambda>(  ó   € ¨¨1ªr   )r   r|   r˜   )r¾  ra  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¥  rC  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   r4   r3   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   rI  s      r   Úexponentialz7TestCurveFit.test_curvefit_omitnan.<locals>.exponential0  s   € Ø”r—v‘v˜a !™e“}Ñ$Ð$r   l   lt*GÊ7 r˜   r4   r�   çš™™™™™É?rJ   r   gš™™™™™©?r3   z1The sigma must be a scalar, 1D array or 2D array.gš™™™™™¹?r#  rh  ©Úsizerœ  )r  r^  rš  )Úaxisru  rþ  rž   )r   rç   rè   rå   Únormalrö   Úmultivariate_normalÚ
zeros_likeÚintegersr–  r   ÚuniqueÚconcatenateÚdeleteÚasarrayÚndimr   )r   r   r  rî   Ú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	|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   rI  s      r   re   z9TestCurveFit.test_curvefit_simplecovariance.<locals>.funcg  rÌ  r   c                 ó„   — t        j                  | | z  «      }t        j                  || | z  |z  f«      j                  S r   rï  rð  s       r   rB   z8TestCurveFit.test_curvefit_simplecovariance.<locals>.jacj  rò  r   rä   r   rI   é2   ç      @çÍÌÌÌÌÌô?r  r  r3   ©NN©FT©r^  rB   rq  rþ  rž   )
r   rç   rè   rå   ré   r-   Úzerosr>   r   r   )r   re   rB   rî   r}  rÍ   r~  r^  ÚcovarÚjac1Újac2rq  r‚  rƒ  rC  rD  s                   r   Útest_curvefit_simplecovariancez+TestCurveFit.test_curvefit_simplecovariancee  sÿ   € ò	$ò	0ô �i‰i×#Ñ# CÓ(ˆÜ—‘˜A˜q "Ó%ˆÙ�˜˜SÓ!ˆØ�C˜#×-Ñ-´3°u³:Ð-Ó>Ñ>Ñ>ˆä—‘œ˜U›Ó$ sÑ*ˆÜ—‘˜˜q™Ó!ˆà ˜: |Ó4‰JˆD�$Û"/�Ü(¨¨u°eÀ5Ø °ô A‘��uä(¨¨u°eÀ5Ø °ô A‘��uô    u°5Õ9Ü  u°5Ö9ñ #0ñ 5r   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#  r3   ç      ð¿r   ©r   r   r#  )r   r	   rw  Ú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	   rw  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   rI  s      r   re   z3TestCurveFit.test_curvefit_covariance.<locals>.func�  rÌ  r   c                 ó„   — t        j                  | | z  «      }t        j                  || | z  |z  f«      j                  S r   rï  rð  s       r   rB   z2TestCurveFit.test_curvefit_covariance.<locals>.jac’  rò  r   iÒ  r4   rI   r  r#  r  r  r3   r+  r   r,  r   r!  r"  g³zê]Ê‚>rþ  )rc  rŸ   )r   rç   rè   rÈ  ré   r-   r#  r>   r	   rw  r-  rö   r   r   )r   r/  r1  re   rB   rî   r}  rÍ   r~  r^  r$  r.  ÚydatapÚcovarpr%  r&  rq  r‚  rƒ  rC  rD  s                        r   Útest_curvefit_covariancez%TestCurveFit.test_curvefit_covariance€  s�  € ò	.ò	:ò	$ò	0ô �i‰i×#Ñ# DÓ)ˆÜ—	‘	˜!˜Q“ˆÙ�˜˜SÓ!ˆØ�C˜#×-Ñ-´3°u³:Ð-Ó>Ñ>Ñ>ˆÜ—‘œ˜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‰JˆD�$Û"/�Ü(¨¨u°eÀ5Ø °ô A‘��uä(¨°°vÀVØ °ô A‘��uô    u°6ÀÕFÜ  u°6ÀÖFñ #0ñ 6r   rq  FTc           	      óâ   — d„ }| j                   | j                  }}t        |||d|¬«      \  }}t        |||t        j                  |d«      |¬«      \  }}t        j
                  ||k(  «      sJ ‚y )Nc                 ó   — || z  |z   S r   r&   rI  s      r   re   z5TestCurveFit.test_curvefit_scalar_sigma.<locals>.func´  ó   € Ø�q‘5˜1‘9Ðr   r3   )r^  rq  )r    rÍ   r   r   Ú	full_likerª   )r   rq  re   r    rÍ   r¥  rƒ  rD  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å  rh  r`   r:  rJ   c                 ó   — || z  |z   S r   r&   rI  s      r   re   z&TestCurveFit.test_dtypes.<locals>.funcÄ  rm  r   rn  Úerrorr×   r4   )r   rÈ  rã  rœ   r
   Úastyperz  r{  Úsimplefilterr   r   Úisfiniterª   Úallclose)	r   r    rÍ   re   r·   ÚdtxÚdtyr    Úcovs	            r   Útest_dtypeszTestCurveFit.test_dtypes¿  sþ   € ä�I‰I�b˜!ÓˆØ�‰E�C‰K˜#œbŸf™f Q›i™-Ñ'ˆò	ó .ˆFÜŸ
™
¤B§J¡JÓ/�ÜŸJ™J¬¯
©
Ó3�CØŸ™ ›�AØŸ™ ›‘Að 4ô ×,Ñ,Õ.Ü×)Ñ)¨'´?ÔCÜ& t¨Q°¸&ÔA‘F�A�säŸ;™; sÓ+×/Ñ/Ô1Ð1Ð1Ü!Ÿ{™{¨1¨aÔ0Ð0Ð0Ð0÷ /Ð.ñ 0ñ .÷ /Ð.ú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 )Nr3   rI   )r   rw  )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      ÀrM   ç       Àg      $ÀrM   )rM   r:  r:  rM   g      $@)g«ªªªªªê¿gUUUUUUõ?r#  g      ÀrJ   )rä  gš™™™™™Ù?éÿÿÿÿéûÿÿÿr9  )iàÿÿÿiðÿÿÿiøÿÿÿrI   rI   rj  é   é    )r+   r}  r~  r  r¾  gñhãˆµøô>rž   )r   r	   r   r?  rœ   r   )r   rO  Úmin_fitÚmax_fitrd  Úparamsr}  r~  Ú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«      }t         j                  j                  d«      }d|dz  z  d|z  z   |j                  t	        |«      ¬«      z   Š	ˆ	fd„}dD ]E  }t        ||t        j                  |«      |¬	«      \  }}t        ||d
|¬	«      \  }}t        ||«       ŒG y )Nr�   rä   gÍÌÌÌÌÌ@r3   g      @r  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   rn  )r}  r~  r·   r   )r   rÈ  rç   rè   r-   r   r
  r   )
r   r}  rî   r^  r·   Úpopt0Úpcov0r‚  rƒ  r]  s
            @r   Útest_broadcast_yzTestCurveFit.test_broadcast_yð  s§   ø€ Ü—	‘	˜"“ˆÜ�i‰i×#Ñ# CÓ(ˆØ�u ‘zÑ! C¨%¡KÑ/°#·*±*Ä#ÀeÃ*°*Ó2MÑMˆô	/ã-ˆ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&   rI  s      r   re   z.TestCurveFit.test_args_in_kwargs.<locals>.func  r9  r   rü   ©rh  rˆ  é   é   r4   rj   )r}  r~  r  rO   rÁ  rŠ   s     r   Útest_args_in_kwargsz TestCurveFit.test_args_in_kwargs  s5   € ò	ô œ:Õ&Ü�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   re   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ü   rd  )r}  r~  )rb   rc   r   rŠ   s     r   Ú!test_data_point_number_validationz.TestCurveFit.test_data_point_number_validation  s1   € ò	2ô œ9Ð,LÖMÜ�dÚ(Ú*õ,÷ N×MÑMú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 ©Nr4   ©r   Úlogrj  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˜   r3   ri  i † r`  r   g{®Gáz„¿)r   rç   rè   rÈ  rå   r   r   rª   r>   r   Úeighr   rö   )	r   r+   rî   r@   r    rÍ   r    rE  Ú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 )Nrr  c                 ó@   — |t        j                  | | z  «      z  |z   S r   r   )r    rë   rì   rË   s       r   re   z'TestCurveFit.test_gh4555b.<locals>.func0  s    € Ø”r—v‘v˜q˜b 1™f“~Ñ%¨Ñ)Ð)r   r   rI   r  r  r  rJ   r  r  )gƒt¢^G�?çd£*.æX|?ç�ÓTû}H¿)rx  g×1”©xÿ”?çuô`v?)ry  rz  gšonÁ2Íf?gH¯¼šò×Š>)r   rç   rè   rå   r  r  r   r   )
r   rî   re   r}  rÍ   Úy_noiser~  r¥  rB  Ú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   r3   r4   r  rJ   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>.lineH  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    rB   s     €r   rB   z&TestCurveFit.test_gh13670.<locals>.jacM  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  rB   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   ro  rp  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   re   z9TestCurveFit.test_gh20155_error_mentions_x0.<locals>.func[  r>  r   z+Initial guess is outside of provided boundsr†   r4   )r™   ié  rç  )rÜ   r   r„   r   r    rÍ   )r   r·   re   Úmessages       r   Útest_gh20155_error_mentions_x0z+TestCurveFit.test_gh20155_error_mentions_x0W  sE   € ò	à?ˆÜ�]‰]œ:¨WÖ5Ü�d˜DŸF™F D§F¡F°¨s¸<Ø#õ%÷ 6×5Ñ5ús   ¡'AÁAN)+r"   r#   r$   rÉ   rF  rO  rV  rf  r„  r‰  r�  r—  Ústaticmethodr§  rÜ   rÝ   rÞ   r¬  rµ  r¹  rÂ  rÅ  rÉ  rÐ  r  rà  rë  r÷  rÿ  r  r'  r6  r;  rF  rZ  ra  rg  rl  r|  ru  r}  r„  rˆ  r&   r   r   r7  r7  º  sÛ  „ ò-ò/ò -ò-ò /ò&01òdJò9ò>ð ñ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   r7  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 ©NrL   r&   rx   s    r   re   z0TestFixedPoint.test_scalar_trivial.<locals>.funcg  ó   € Ø�q‘5ˆLr   r#  rM   ©r   r   ©r   re   rf   r    s       r   Útest_scalar_trivialz"TestFixedPoint.test_scalar_triviale  s"   € ò	àˆÜ˜˜bÓ!ˆÜ˜A˜sÕ#r   c                 ó>   — d„ }d}t        ||«      }t        |d«       y )Nc                 ó   — | dz  S rð   r&   rx   s    r   re   z/TestFixedPoint.test_scalar_basic1.<locals>.funco  r>  r   çÍÌÌÌÌÌð?r#  r�  r‘  s       r   Útest_scalar_basic1z!TestFixedPoint.test_scalar_basic1m  s"   € ò	àˆÜ˜˜bÓ!ˆÜ˜A˜sÕ#r   c                 ó>   — d„ }d}t        ||«      }t        |d«       y )Nc                 ó   — | dz  S ©NrJ   r&   rx   s    r   re   z/TestFixedPoint.test_scalar_basic2.<locals>.funcw  s   € Ø�c‘6ˆMr   r•  r#  r�  r‘  s       r   Útest_scalar_basic2z!TestFixedPoint.test_scalar_basic2u  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&   rx   s    r   re   z/TestFixedPoint.test_array_trivial.<locals>.func~  r�  r   g333333Ó?g333333Ã?rt  ©rª   rM   )r   Úerrstater   r   r‘  s       r   Útest_array_trivialz!TestFixedPoint.test_array_trivial}  sD   € ò	à�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   re   z.TestFixedPoint.test_array_basic1.<locals>.func‡  s   € Ø�q˜!‘t‘8ˆOr   ©g      è?r#  g      ô?)çš™™™™™ñ?gffffffò?gÍÌÌÌÌÌì?rt  r�  rk   r#  )r	   r   rž  r   r   ©r   re   rË   rf   r    s        r   Útest_array_basic1z TestFixedPoint.test_array_basic1…  sO   € ò	äÒ#Ó$ˆÚˆÜ�[‰[˜XÖ&Ü˜D "¨A¨4Ô0ˆA÷ 'ä˜A˜s 1™uÕ%÷ 'Ð&ú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   re   z.TestFixedPoint.test_array_basic2.<locals>.func‘  s   € Ø�q˜#‘v‘:Ðr   r£  )gš™™™™™é?r¤  r¤  rk   r3   )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 )NrP  rL   r   )Úxxs    r   r,   z.TestFixedPoint.test_lambertw.<locals>.<lambda>š  s   € ¬¯©¨t°B©w«¸Ò(;r   r#  r&   gê-�™—q=iô  )rO   ÚxtolÚmaxiterrP  rL   r4   r3   )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 )	Nr3   r‹  r  gj¼t“ð?r4   c                 ó~   •— t        j                  ‰‰z  | z  «      t        j                  ‰| z  | dz
  z  «      z  dz   S ro  rp  )r@   Úi0ÚklÚkss    €€€r   re   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Ún0re   r@   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‹  c  s*   „ ò$ò$ò$ò+ò&ò%ò/ór   r‹  ),r%   rz  rÜ   rÅ   Únumpy.testingr   r   r   r   r   r   rb   Únumpyr   r	   r
   Úmultiprocessing.poolr   Úscipyr   r   Úscipy.specialr   Úscipy.optimize._minpack_pyr   r   r   Úscipy.optimizer   Úscipy.optimize._minimizer   r   r(   r1   r<   rC   rE   rG   r³   r¿   rÃ   rà   r7  r‹  r&   r   r   Ú<module>rÂ     s´   ðñó Û Û ÷Gõ Gå *Û ß  Ý +ç "Ý "ß FÑ FÝ *Ý +÷#ñ #òò+òò>ò.<÷
i5ñ i5÷X;ñ ;÷@;ñ ;÷+ñ +÷4W.ñ W.÷tf
%ñ f
%÷RHò Hr   