U
    »mœd’Ž  ã                   @   s>  d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlZddlmZmZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ G dd„ dƒZ dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%G dd„ dƒZ&G dd„ dƒZ'G dd„ dƒZ(G dd„ dƒZ)G d d!„ d!ƒZ*G d"d#„ d#ƒZ+dS )$z7
Unit tests for optimization routines from minpack.py.
é    N)Úassert_Úassert_almost_equalÚassert_array_equalÚassert_array_almost_equalÚassert_allcloseÚassert_warnsÚsuppress_warnings)Úraises)ÚarrayÚfloat64)Ú
ThreadPool)ÚoptimizeÚlinalg)Úlambertw)ÚleastsqÚ	curve_fitÚfixed_point)ÚOptimizeWarning)ÚBoundsc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú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                 C   s
   || _ d S ©N)Úshape)Úselfr   © r   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/optimize/tests/test_minpack.pyÚ__init__   s    zReturnShape.__init__c                 C   s   t  | j¡S r   )ÚnpÚonesr   )r   Úxr   r   r   Ú__call__    s    zReturnShape.__call__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s   r   c                 C   s
   t  |¡S )zUA function that returns an array of ones of the given shape.
    `x` is ignored.
    )r   r   )r   r   r   r   r   Ú
dummy_func$   s    r$   c              
   C   s4   t t| ƒƒ�}| dd„ | ¡W  5 Q R £ S Q R X d S )Nc                 S   s   | ƒ S r   r   )Úfr   r   r   Ú<lambda>-   ó    z#sequence_parallel.<locals>.<lambda>)r   ÚlenÚmap)ÚfsÚpoolr   r   r   Úsequence_parallel+   s    r,   c                 C   s6   || d  }t  |dd… |d  |  ¡ | 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   ZhstackÚsum)Ú
flow_ratesÚQtotÚkÚPÚFr   r   r   Úpressure_network4   s    &r5   c                 C   s¢   t | ƒ}t | dd… d |dd…  d| d  |d   ¡}t ||f¡}|d |d|d …d|d …f< d|d|d …|d f< t |¡||d dd…f< |S )a…  Return the jacobian of the equation system F(flow_rates)
    computed by `pressure_network` with respect to
    *flow_rates*. See `pressure_network` for the detailed
    description of parrameters.

    Returns
    -------
    jac : float
        *n* by *n* matrix ``df_i/dQ_i`` where ``n = len(flow_rates)``
        and *f_i* and *Q_i* are described in the doc for `pressure_network`
    r.   Nr-   r   )r(   r   ÚdiagÚemptyr   )r0   r1   r2   ÚnZpdiffÚjacr   r   r   Úpressure_network_jacobianS   s    6 r:   c                 C   s   t | ||ƒt| ||ƒfS r   )r5   r:   )r0   r1   r2   r   r   r   Úpressure_network_fun_and_gradj   s    

ÿr;   c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
TestFSolvec                 C   s`   t  dd¡}d}tddddgƒ}tjt|||fdd�\}}}}t|t  d¡ƒ t|dk|ƒ d S )Né   ç      à?ç       @ç        T©ÚargsÚfull_outputr.   )	r   Úfullr
   r   Úfsolver5   r   r   r   )r   r2   r1   Úinitial_guessÚfinal_flowsÚinfoÚierÚmesgr   r   r   Ú!test_pressure_network_no_gradientp   s      þz,TestFSolve.test_pressure_network_no_gradientc                 C   sJ   t  dd¡}d}tddddgƒ}tjt|||ftd�}t|t  d¡ƒ d S )Nr=   r>   r?   r@   ©rB   Úfprime)	r   rD   r
   r   rE   r5   r:   r   r   ©r   r2   r1   rF   rG   r   r   r   Ú#test_pressure_network_with_gradient{   s      þz.TestFSolve.test_pressure_network_with_gradientc                 C   s$   t dƒ}ddg}tttj||ƒ d S ©Nr.   ç      ø?r?   ©r   Úassert_raisesÚ	TypeErrorr   rE   ©r   ÚfuncÚx0r   r   r   Útest_wrong_shape_func_callable…   s    z)TestFSolve.test_wrong_shape_func_callablec                 C   s    ddg}t ttjt|dd� d S ©NrQ   r?   )©r.   ©rB   )rS   rT   r   rE   r$   ©r   rW   r   r   r   Útest_wrong_shape_func_functionŒ   s    z)TestFSolve.test_wrong_shape_func_functionc                 C   s,   t dƒ}t dƒ}tttj|ddg|d� d S )Nr.   ©r-   r-   r   ©rW   rM   rR   ©r   rV   Ú
deriv_funcr   r   r   Ú test_wrong_shape_fprime_callable’   s    z+TestFSolve.test_wrong_shape_fprime_callablec                 C   s,   dd„ }dd„ }t ttj|ddg|d� d S )Nc                 S   s
   t | dƒS ©N)r-   ©r$   ©r   r   r   r   r&   ˜   r'   z=TestFSolve.test_wrong_shape_fprime_function.<locals>.<lambda>c                 S   s
   t | dƒS ©N)é   rg   rd   re   r   r   r   r&   ™   r'   r   r.   r_   )rS   rT   r   rE   r`   r   r   r   Ú test_wrong_shape_fprime_function—   s    z+TestFSolve.test_wrong_shape_fprime_functionc              	   C   s4   dd„ }t tdd�� tj|dgd� W 5 Q R X d S )Nc                  W   s   t dƒ‚d S ©NúI raised©Ú
ValueErrorr[   r   r   r   rV   �   s    z,TestFSolve.test_func_can_raise.<locals>.funcrj   ©Úmatchr   ©rW   ©rS   rl   r   rE   ©r   rV   r   r   r   Útest_func_can_raiseœ   s    zTestFSolve.test_func_can_raisec              	   C   s>   dd„ }dd„ }t tdd�� tj|dg|d� W 5 Q R X d S )	Nc                 S   s   | t  dg¡ S ©Né
   ©r   r
   re   r   r   r   r&   ¤   r'   z0TestFSolve.test_Dfun_can_raise.<locals>.<lambda>c                  W   s   t dƒ‚d S ri   rk   r[   r   r   r   ra   ¦   s    z2TestFSolve.test_Dfun_can_raise.<locals>.deriv_funcrj   rm   r   r_   rp   r`   r   r   r   Útest_Dfun_can_raise£   s    zTestFSolve.test_Dfun_can_raisec                 C   s<   dd„ }t  |t ddgtj¡¡}t||ƒddgdd� d S )Nc                 S   s(   t j| d d | d d gt jd�d S )Nr   éd   r.   iè  ©Zdtyper-   )r   r
   Úfloat32re   r   r   r   r&   ­   r'   z)TestFSolve.test_float32.<locals>.<lambda>r.   r   çü©ñÒMbP?©Úatol)r   rE   r   r
   ry   r   )r   rV   Úpr   r   r   Útest_float32¬   s    zTestFSolve.test_float32c           	         sl   ‡ fdd„}t  dd¡}d}tddddgƒ}tj||||fdd�\}}}}t|t  d¡ƒ t|d	k|ƒ d S )
Nc                     s   ˆ   ¡  t| Ž S r   )rK   r5   r[   ©r   r   r   rV   ²   s    z,TestFSolve.test_reentrant_func.<locals>.funcr=   r>   r?   r@   TrA   r.   )r   rD   r
   r   rE   r   r   r   )	r   rV   r2   r1   rF   rG   rH   rI   rJ   r   r   r   Útest_reentrant_func±   s      þzTestFSolve.test_reentrant_funcc                    sV   ‡ fdd„}t  dd¡}d}tddddgƒ}tjt|||f|d�}t|t  d¡ƒ d S )Nc                     s   ˆ   ¡  t| Ž S r   )rO   r:   r[   r   r   r   ra   Á   s    z3TestFSolve.test_reentrant_Dfunc.<locals>.deriv_funcr=   r>   r?   r@   rL   )r   rD   r
   r   rE   r5   r   r   )r   ra   r2   r1   rF   rG   r   r   r   Útest_reentrant_DfuncÀ   s      þzTestFSolve.test_reentrant_Dfuncc                 C   s*   t | jgd ƒ}tdd„ |D ƒƒs&t‚d S )Nrt   c                 S   s   g | ]}|d k‘qS r   r   ©Ú.0Úresultr   r   r   Ú
<listcomp>Ð   s     z:TestFSolve.test_concurrent_no_gradient.<locals>.<listcomp>)r,   rK   ÚallÚAssertionError©r   Úvr   r   r   Útest_concurrent_no_gradientÎ   s    z&TestFSolve.test_concurrent_no_gradientc                 C   s*   t | jgd ƒ}tdd„ |D ƒƒs&t‚d S )Nrt   c                 S   s   g | ]}|d k‘qS r   r   r‚   r   r   r   r…   Ô   s     z<TestFSolve.test_concurrent_with_gradient.<locals>.<listcomp>)r,   rO   r†   r‡   rˆ   r   r   r   Útest_concurrent_with_gradientÒ   s    z(TestFSolve.test_concurrent_with_gradientN)r    r!   r"   rK   rO   rX   r]   rb   rh   rr   rv   r~   r€   r�   rŠ   r‹   r   r   r   r   r<   o   s   
	r<   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestRootHybrc                 C   sL   t  dd¡}d}tddddgƒ}tjt|d||fd�j}t|t  d¡ƒ d S )Nr=   r>   r?   r@   Úhybr©ÚmethodrB   ©	r   rD   r
   r   Úrootr5   r   r   r   rN   r   r   r   rK   Ø   s     ÿz.TestRootHybr.test_pressure_network_no_gradientc                 C   sP   t  dd¡}d}tddddggƒ}tjt|||fdtd�j}t|t  	d¡ƒ d S )Nr=   r>   r?   r@   r�   ©rB   r�   r9   )
r   rD   r
   r   r‘   r5   r:   r   r   r   rN   r   r   r   rO   á   s     þz0TestRootHybr.test_pressure_network_with_gradientc                 C   sN   t  dd¡}d}tddddgƒ}tjt|||fddd�j}t|t  d¡ƒ d S )Nr=   r>   r?   r@   r�   Tr’   )	r   rD   r
   r   r‘   r;   r   r   r   rN   r   r   r   Ú,test_pressure_network_with_gradient_combinedë   s      þz9TestRootHybr.test_pressure_network_with_gradient_combinedN)r    r!   r"   rK   rO   r“   r   r   r   r   rŒ   ×   s   	
rŒ   c                   @   s   e Zd Zdd„ ZdS )Ú
TestRootLMc                 C   sL   t  dd¡}d}tddddgƒ}tjt|d||fd�j}t|t  d¡ƒ d S )Nr=   r>   r?   r@   ÚlmrŽ   r�   rN   r   r   r   rK   ø   s     ÿz,TestRootLM.test_pressure_network_no_gradientN)r    r!   r"   rK   r   r   r   r   r”   ÷   s   r”   c                   @   s¤   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'S )(ÚTestLeastSqc                 C   sj   t  ddd¡}d\}}}|| _|||f| _||d  ||  | }t j d¡ |dt j |j¡  | _d S )Nr   rt   é(   )gÍÌÌÌÌÌ@é*   g33333sÀr-   g{®Gáz„?)	r   Úlinspacer   ÚabcÚrandomÚseedZstandard_normalr   Úy_meas)r   r   ÚaÚbÚcZy_truer   r   r   Úsetup_method  s    
zTestLeastSq.setup_methodc                 C   s*   |\}}}|||d  ||  |  }|S ©Nr-   r   )r   r}   Úyr   rž   rŸ   r    Úerrr   r   r   Ú	residuals  s    
zTestLeastSq.residualsc                 C   s   t  |d |t  |¡g¡j S r¢   )r   ÚvstackZ	ones_likeÚT)r   Ú_pZ_yr   r   r   r   Úresiduals_jacobian  s    zTestLeastSq.residuals_jacobianc                 C   sP   t dddgƒ}t| j|| j| jfd�\}}t|dkd| ƒ t|| jdd� d S )Nr   r[   ©r.   r-   rg   r=   úsolution not found (ier=%d)r-   ©Údecimal©r
   r   r¥   r�   r   r   r   rš   ©r   Úp0Ú
params_fitrI   r   r   r   Ú
test_basic  s    
ÿ
zTestLeastSq.test_basicc                 C   sT   t dddgƒ}t| j|| j| jf| jd�\}}t|dkd| ƒ t|| jdd� d S )Nr   ©rB   ÚDfunrª   r«   r-   r¬   )	r
   r   r¥   r�   r   r©   r   r   rš   r¯   r   r   r   Útest_basic_with_gradient  s    
þ
z$TestLeastSq.test_basic_with_gradientc                 C   sN   t dddggƒ}t| j|| j| jfdd�}|\}}}}}t|dkd| ƒ d S )Nr   TrA   rª   úsolution not found: %s)r
   r   r¥   r�   r   r   )r   r°   rC   r±   Úcov_xÚinfodictrJ   rI   r   r   r   Útest_full_output%  s    
þzTestLeastSq.test_full_outputc           	      C   sf   t dddgtd�}t |dd�}t| j|| j| jfdd�}|\}}}}}t|dkd| ƒ t||ƒ d S )Nr   rx   T)ÚcopyrA   rª   r¶   )r
   r   r   r¥   r�   r   r   r   )	r   r°   Zp0_copyrC   r±   r·   r¸   rJ   rI   r   r   r   Útest_input_untouched-  s    
þz TestLeastSq.test_input_untouchedc                 C   s$   t dƒ}ddg}tttj||ƒ d S rP   ©r   rS   rT   r   r   rU   r   r   r   rX   7  s    z*TestLeastSq.test_wrong_shape_func_callablec                 C   s    ddg}t ttjt|dd� d S rY   )rS   rT   r   r   r$   r\   r   r   r   r]   >  s    z*TestLeastSq.test_wrong_shape_func_functionc                 C   s,   t dƒ}t dƒ}tttj|ddg|d� d S )Nr.   r^   r   ©rW   r´   r¼   r`   r   r   r   Útest_wrong_shape_Dfun_callableD  s    z*TestLeastSq.test_wrong_shape_Dfun_callablec                 C   s,   dd„ }dd„ }t ttj|ddg|d� d S )Nc                 S   s
   t | dƒS rc   rd   re   r   r   r   r&   J  r'   z<TestLeastSq.test_wrong_shape_Dfun_function.<locals>.<lambda>c                 S   s
   t | dƒS rf   rd   re   r   r   r   r&   K  r'   r   r.   r½   ©rS   rT   r   r   r`   r   r   r   Útest_wrong_shape_Dfun_functionI  s    z*TestLeastSq.test_wrong_shape_Dfun_functionc                 C   sº   dd„ }t jddddddd	d
ddg
t jd�}t jddddddddddg
t jd�}t  ddddg¡}tj||||fd�\}}t|dkƒ t||||ƒd  ¡ d||||ƒd  ¡  k ƒ d S )Nc                 S   s@   | d t  || d  d  d| d d   ¡ | d  }|| S )Nr   r.   r-   r?   rg   ©r   Úexp)r}   r   r£   Úqr   r   r   rV   P  s    8z&TestLeastSq.test_float32.<locals>.funcgš™™™™™÷?gw¾Ÿ/Ýö?g%�•C‹ö?gNbX9´ö?gHáz®G÷?gçû©ñÒMø?gZd;ßO�÷?gÙÎ÷Sãõ?gú~j¼t“ô?gV-²ó?rx   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-   g-Cëâ6?)r   r
   ry   r   r   r   r/   )r   rV   r   r£   r°   Úp1Úsuccessr   r   r   r~   N  s     ÿÿ ÿÿzTestLeastSq.test_float32c              	   C   s4   dd„ }t tdd�� tj|dgd� W 5 Q R X d S )Nc                  W   s   t dƒ‚d S ri   rk   r[   r   r   r   rV   _  s    z-TestLeastSq.test_func_can_raise.<locals>.funcrj   rm   r   ro   ©rS   rl   r   r   rq   r   r   r   rr   ^  s    zTestLeastSq.test_func_can_raisec              	   C   s>   dd„ }dd„ }t tdd�� tj|dg|d� W 5 Q R X d S )	Nc                 S   s   | t  dg¡ S rs   ru   re   r   r   r   r&   f  r'   z1TestLeastSq.test_Dfun_can_raise.<locals>.<lambda>c                  W   s   t dƒ‚d S ri   rk   r[   r   r   r   ra   h  s    z3TestLeastSq.test_Dfun_can_raise.<locals>.deriv_funcrj   rm   r   r½   rÇ   r`   r   r   r   rv   e  s    zTestLeastSq.test_Dfun_can_raisec                    sZ   ‡ fdd„}t dddgƒ}t||ˆ jˆ jfd�\}}t|dkd| ƒ t|ˆ jdd� d S )	Nc                     s   ˆ   ¡  ˆ j| Ž S r   )r²   r¥   r[   r   r   r   rV   o  s    z-TestLeastSq.test_reentrant_func.<locals>.funcr   r[   rª   r«   r-   r¬   )r
   r   r�   r   r   r   rš   )r   rV   r°   r±   rI   r   r   r   r€   n  s    
ÿ
zTestLeastSq.test_reentrant_funcc                    s^   ‡ fdd„}t dddgƒ}tˆ j|ˆ jˆ jf|d�\}}t|dkd| ƒ t|ˆ jdd� d S )	Nc                     s   ˆ   ¡  ˆ j| Ž S r   )r²   r©   r[   r   r   r   ra   {  s    z3TestLeastSq.test_reentrant_Dfun.<locals>.deriv_funcr   r³   rª   r«   r-   r¬   r®   )r   ra   r°   r±   rI   r   r   r   Útest_reentrant_Dfunz  s    
þ
zTestLeastSq.test_reentrant_Dfunc                 C   s*   t | jgd ƒ}tdd„ |D ƒƒs&t‚d S )Nrt   c                 S   s   g | ]}|d k‘qS r   r   r‚   r   r   r   r…   ‰  s     z;TestLeastSq.test_concurrent_no_gradient.<locals>.<listcomp>)r,   r²   r†   r‡   rˆ   r   r   r   rŠ   ‡  s    z'TestLeastSq.test_concurrent_no_gradientc                 C   s*   t | jgd ƒ}tdd„ |D ƒƒs&t‚d S )Nrt   c                 S   s   g | ]}|d k‘qS r   r   r‚   r   r   r   r…   �  s     z=TestLeastSq.test_concurrent_with_gradient.<locals>.<listcomp>)r,   rµ   r†   r‡   rˆ   r   r   r   r‹   ‹  s    z)TestLeastSq.test_concurrent_with_gradientc              	   C   s6   dd„ }t tdd�� tj|ddgd� W 5 Q R X d S )Nc                 S   s   d| d d d  d S )Nr-   r   rg   r.   r   re   r   r   r   rV   ‘  s    z=TestLeastSq.test_func_input_output_length_check.<locals>.funcz+Improper input: func input vector length N=rm   r   r.   ro   r¿   rq   r   r   r   Ú#test_func_input_output_length_check�  s
    ÿz/TestLeastSq.test_func_input_output_length_checkN)r    r!   r"   r¡   r¥   r©   r²   rµ   r¹   r»   rX   r]   r¾   rÀ   r~   rr   rv   r€   rÈ   rŠ   r‹   rÉ   r   r   r   r   r–     s&   		
	r–   c                   @   sð   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zej d3¡d4d5„ ƒZd6d7„ Z d8S )9ÚTestCurveFitc                 C   s(   t ddddgƒ| _t ddddgƒ| _d S )NrÄ   gš™™™™™	@ç      #@gffffff+@r?   ç      @g      @)r
   r£   r   r   r   r   r   r¡   š  s    zTestCurveFit.setup_methodc           
      C   s�   dd„ }t || j| jƒ\}}tt|ƒdkƒ t|jdkƒ t|d ddd� t|d	 d
dd� t || j| jddd�}|\}}}}}	t||ƒ d S )Nc                 S   s   | | S r   r   ©r   rž   r   r   r   rV   Ÿ  s    z,TestCurveFit.test_one_argument.<locals>.funcr.   )r.   r.   r   g3Ä±.n£þ?r=   r¬   )r   r   g-Cëâ6Z?F)rC   Úcheck_finite)r   r   r£   r   r(   r   r   r   )
r   rV   ÚpoptÚpcovÚresÚpopt2Úpcov2r¸   ÚerrmsgrI   r   r   r   Útest_one_argumentž  s     ÿzTestCurveFit.test_one_argumentc                 C   sj   dd„ }t || j| jƒ\}}tt|ƒdkƒ t|jdkƒ t|ddgdd� t|d	d
gd
dggdd� d S )Nc                 S   s   || |  S r   r   ©r   rž   rŸ   r   r   r   rV   ¯  s    z,TestCurveFit.test_two_argument.<locals>.funcr-   r^   çñcÌ]KÈü?çà-� ò?r=   r¬   çäƒžÍªÏµ?çTã¥›Ä À¿ç·bÙ=yÈ?)r   r   r£   r   r(   r   r   )r   rV   rÏ   rÐ   r   r   r   Útest_two_argument®  s    ÿzTestCurveFit.test_two_argumentc                 C   sh   G dd„ dƒ}|ƒ }t |j| j| jƒ\}}t|jdkƒ t|ddgdd� t|dd	gd	d
ggdd� d S )Nc                   @   s   e Zd ZdZdd„ ZdS )z8TestCurveFit.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                 S   s   |||  S r   r   )r   r   rž   rŸ   r   r   r   rV   ¾  s    z=TestCurveFit.test_func_is_classmethod.<locals>.test_self.funcN)r    r!   r"   r#   rV   r   r   r   r   Ú	test_self¹  s   rÝ   r^   r×   rØ   r=   r¬   rÙ   rÚ   rÛ   )r   rV   r   r£   r   r   r   )r   rÝ   Ztest_self_instrÏ   rÐ   r   r   r   Útest_func_is_classmethod¸  s    ÿz%TestCurveFit.test_func_is_classmethodc              
   C   s€   ddddddddd	d
g
}ddddddddddg
}ddddddg}ddddddg}dd „ }t ||||d!d"�\}}t||d#d$� d S )%NgB`åÐ"ñ�@g¬Zd;ñ�@g¸…ëQñ�@g#Ûù~jñ�@g/Ý$�ñ�@g;ßO�—ñ�@g¦›Ä °ñ�@g²�ï§Æñ�@gZd;ßñ�@g)\�Âõñ�@g     ØŠ@g     (�@g     Œš@g     X¤@g     tŸ@g     °ž@g     £@g     8˜@g     ¨�@g     HŠ@g€^w8}ñ�@gU]ƒ}¹ñ�@g     X”@g2ï9°l?gäƒžÍjñ�@gºÂj¬ñ�@g…”ŸT{7›@g|'f½ØÉ˜@g ‘Æž„?g©„'ôšËŠ@c                 S   sL   |t  | | d  d|d   ¡ |t  | | d  d|d   ¡  | S )Nr-   r?   rÁ   )r   rW   Úx1ZA0ÚA1Úsigmar    r   r   r   Úf_double_gaussÕ  s
    ""ÿÿz9TestCurveFit.test_regression_2639.<locals>.f_double_gaussi'  ©Úmaxfevgñhãˆµøä>©Úrtol)r   r   )r   r   r£   ÚguessZgoodrâ   rÏ   rÐ   r   r   r   Útest_regression_2639È  s2        ý  ÿ ÿ ÿz!TestCurveFit.test_regression_2639c              
   C   s  t  ddddddg¡}t  dddddd	g¡}t  ddddddg¡}d
d„ }dD �]}t|||ddg||d�\}}t  t  |¡¡}t|ddgdd� t|||ddgd| |d�\}}t  t  |¡¡}t|ddgdd� t|||ddg|d|d�\}}t  t  |¡¡}	t|	ddgdd� t|||ddgd| d|d�\}}t  t  |¡¡}	t|	ddgdd� qNdd„ }
t  t jgd ¡ dd¡}tƒ �T}| 	t
d¡ t|
||ddg|d�\}}t||d d… |d d… ddgd�\}}W 5 Q R X t|jdkƒ t||ƒ t|jdkƒ t||ƒ d S )Nr   r.   r-   rg   r=   é   é   é   é   c                 S   s   ||  | S r   r   rÖ   r   r   r   r%   à  s    z!TestCurveFit.test_pcov.<locals>.f©r•   ÚtrfÚdogbox)r°   rá   r�   g´N"ãÍqÊ?g²~uM/Nâ?rz   rå   T)r°   rá   Úabsolute_sigmar�   g´ÁO=N¨Ó?g5=¬`é6ë?gŽ¢÷[u|í?gè-�/i@c                 S   s   ||  S r   r   rÖ   r   r   r   Úf_flatú  s    z&TestCurveFit.test_pcov.<locals>.f_flatz3Covariance of the parameters could not be estimated)r°   rá   ©r°   r^   )r   r
   r   Úsqrtr6   r   ÚinfZreshaper   Úfilterr   r   r   r   )r   ÚxdataÚydatará   r%   r�   rÏ   rÐ   Zperr_scaledZperrrñ   Zpcov_expectedÚsupÚpopt1Úpcov1r   r   r   Ú	test_pcovÛ  sN    
ÿ
ÿ
 ÿ
 ÿ
ÿ2
zTestCurveFit.test_pcovc                 C   sB   dd„ }ddddg}dddd	g}t t|||ƒd
 ddgdd� d S )Nc                 S   s   ||  | S r   r   rÖ   r   r   r   Úf_linear  s    z.TestCurveFit.test_array_like.<locals>.f_linearr.   r-   rg   r=   ré   rê   é	   r   g»½×Ùß|Û=r{   )r   r   )r   rü   r   r£   r   r   r   Útest_array_like  s    zTestCurveFit.test_array_likec                 C   sD   t  ddddddg¡}t  ddddddg¡}tttdd	„ ||ƒ d S )
Nr.   r-   rg   r=   ré   é   g      @c                 S   s   ||  S r   r   rÖ   r   r   r   r&     r'   z<TestCurveFit.test_indeterminate_covariance.<locals>.<lambda>)r   r
   r   r   r   ©r   rö   r÷   r   r   r   Útest_indeterminate_covariance  s      ÿz*TestCurveFit.test_indeterminate_covariancec                 C   sj   t  dt jdg¡}t  dddg¡}tttdd„ ||ƒ tttdd„ ||ƒ tttdd„ ||fdd	iŽ d S )
Nr.   rg   r-   c                 S   s   ||  | S r   r   rÖ   r   r   r   r&   #  r'   z0TestCurveFit.test_NaN_handling.<locals>.<lambda>c                 S   s   ||  | S r   r   rÖ   r   r   r   r&   %  r'   c                 S   s   ||  | S r   r   rÖ   r   r   r   r&   '  r'   rÎ   T)r   r
   ÚnanrS   rl   r   r   r   r   r   Útest_NaN_handling  s$      ÿ  ÿ ÿÿzTestCurveFit.test_NaN_handlingc                 C   s`   t ttdd„ g g ƒ t ttdd„ g g dd� t ttdd„ dgg ƒ t ttdd„ d	gg dd� d S )
Nc                 S   s   ||  S r   r   rÍ   r   r   r   r&   ,  r'   z0TestCurveFit.test_empty_inputs.<locals>.<lambda>c                 S   s   ||  S r   r   rÍ   r   r   r   r&   -  r'   )r.   r-   )Úboundsc                 S   s   ||  S r   r   rÍ   r   r   r   r&   /  r'   r.   c                 S   s   ||  S r   r   rÍ   r   r   r   r&   0  r'   r-   ©rS   rl   r   r   r   r   r   Útest_empty_inputs*  s    ÿÿzTestCurveFit.test_empty_inputsc                 C   s    t ttdd„ ddgddgƒ d S )Nc                 S   s   | S r   r   re   r   r   r   r&   5  r'   z8TestCurveFit.test_function_zero_params.<locals>.<lambda>r.   r-   rg   r=   r  r   r   r   r   Útest_function_zero_params3  s    z&TestCurveFit.test_function_zero_paramsc                 C   s.   t dd„ d dt d¡ ƒ\}}t|dgƒ d S )Nc                 S   s   |t  d¡ S rs   )r   Úarange)Ú_rž   r   r   r   r&   8  r'   z*TestCurveFit.test_None_x.<locals>.<lambda>r-   rt   r?   )r   r   r  r   )r   rÏ   rÐ   r   r   r   Útest_None_x7  s
     ÿzTestCurveFit.test_None_xc                 C   sf   dd„ }t  ddd¡}||ddƒ}dD ]&}t||||d�\}}t|ddgƒ q&ttt|||d	d� d S )
Nc                 S   s   |t  | |  ¡ S r   rÁ   rÖ   r   r   r   r%   =  s    z,TestCurveFit.test_method_argument.<locals>.fr   r.   é   r?   ©rî   rï   r•   N©r�   Úunknown)r   r™   r   r   rS   rl   )r   r%   rö   r÷   r�   rÏ   rÐ   r   r   r   Útest_method_argument<  s    z!TestCurveFit.test_method_argumentc           
      C   sÀ   dd„ }t  ddd¡}||ddƒ}dD ]”}t||||dd	�\}}}}}	t|ddgƒ d
|ks`t‚d|kslt‚|dks||d kr d|ksˆt‚d|ks”t‚d|ks t‚t|tƒs®t‚|	dks&t‚q&d S )Nc                 S   s   |t  | |  ¡ S r   rÁ   rÖ   r   r   r   r%   J  s    z(TestCurveFit.test_full_output.<locals>.fr   r.   r  r?   r  T)r�   rC   ZnfevZfvecr•   ZfjacZipvtZqtfrª   )r   r™   r   r   r‡   Ú
isinstanceÚstr)
r   r%   rö   r÷   r�   rÏ   rÐ   r¸   rÔ   rI   r   r   r   r¹   I  s(        ÿzTestCurveFit.test_full_outputc              	   C   sÞ   dd„ }t  ddd¡}||ddƒ}ddg}dd	g}||f}t||ƒ}d
D ]H}t|||||d�\}	}
t|	d dƒ t|||||d�\}}t||	ƒ qHt|||dddgdt jgfd�\}	}
t|	d dƒ ttt||||dd� d S )Nc                 S   s   |t  | |  ¡ S r   rÁ   rÖ   r   r   r   r%   ^  s    z#TestCurveFit.test_bounds.<locals>.fr   r.   r  r?   rÄ   rQ   rÌ   )Nrî   rï   )r  r�   rî   r@   g333333ã?)r�   r  r•   )r   r™   r   r   r   rô   rS   rl   )r   r%   rö   r÷   ZlbZubr  Zbounds_classr�   rÏ   rÐ   Z
popt_classZ
pcov_classr   r   r   Útest_bounds]  s0    

ÿ
þ

ÿ
ÿzTestCurveFit.test_boundsc           	   	   C   s�   dd„ }t  dt j dt j d¡}t  |¡}dt j dt j f}dD ]F}t|||d	t j d
�\}}t|||d	t j ||d�\}}t||ƒ qDd S )Nc                 S   s   t  | | ¡S r   )r   ÚsinrÍ   r   r   r   r%   ‚  s    z&TestCurveFit.test_bounds_p0.<locals>.féþÿÿÿr-   r—   éýÿÿÿrg   ©rî   rï   gÍÌÌÌÌÌ @rò   )r°   r  r�   )r   r™   Úpir  r   r   )	r   r%   rö   r÷   r  r�   Zpopt_1r	  Zpopt_2r   r   r   Útest_bounds_p0  s    
 ÿ
zTestCurveFit.test_bounds_p0c           
   	   C   sè   dd„ }dd„ }t  ddd¡}||ddƒ}d	D ]2}d
D ](}t|||||d�\}}t|ddgƒ q6q.dD ](}t|||||d�\}}t|ddgƒ qfd|d< t  |jd ¡}	d|	d< dD ].}t||||	||d�\}}t|ddgdd� q´d S )Nc                 S   s   |t  | |  ¡ S r   rÁ   rÖ   r   r   r   r%   “  s    z TestCurveFit.test_jac.<locals>.fc                 S   s*   t  | |  ¡}t  || |  | f¡jS r   ©r   rÂ   r¦   r§   ©r   rž   rŸ   Úer   r   r   r9   –  s    z"TestCurveFit.test_jac.<locals>.jacr   r.   r  r?   r  )z2-pointz3-pointÚcs)r9   r�   r-   rí   )r�   r9   rw   ré   éÈ   )rá   r�   r9   rz   rå   )r   r™   r   r   r   r   )
r   r%   r9   rö   r÷   r�   ÚschemerÏ   rÐ   rá   r   r   r   Útest_jac�  s*    
ÿ
ÿ
zTestCurveFit.test_jacc                 C   sh   t  dd¡}d| }tdd„ ||ddd�\}}td	d„ ||ddd
�\}}t|ddd� t|ddd� d S )Nr   rt   r-   c                 S   s   ||  S r   r   ©r   r}   r   r   r   r&   ¹  r'   z5TestCurveFit.test_maxfev_and_bounds.<locals>.<lambda>)r   rg   rw   )r  rä   c                 S   s   ||  S r   r   r   r   r   r   r&   º  r'   )r  Zmax_nfevç›+¡†›„=r{   )r   r  r   r   )r   r   r£   rù   r	  rÒ   r   r   r   Útest_maxfev_and_bounds´  s    z#TestCurveFit.test_maxfev_and_boundsc              
   C   sà   dd„ }dd„ }t j d¡ t  ddd¡}||dd	ƒ}|d
t jjt|ƒd�  }t  t|ƒ¡d
 }t  |d ¡}||fdfD ]^\}}	dD ]P}
t||||||
d�\}}t|||||	|
d�\}}t	||dd� t	||dd� qˆq|d S )Nc                 S   s   |t  | |  ¡ S r   rÁ   rÖ   r   r   r   rV   Á  s    z9TestCurveFit.test_curvefit_simplecovariance.<locals>.funcc                 S   s*   t  | |  ¡}t  || |  | f¡jS r   r  r  r   r   r   r9   Ä  s    z8TestCurveFit.test_curvefit_simplecovariance.<locals>.jacr   r=   é2   ç      @çÍÌÌÌÌÌô?çš™™™™™É?©Úsizer-   ©NN©FT©rá   r9   rð   r!  r{   )
r   r›   rœ   r™   Únormalr(   Úzerosr6   r   r   )r   rV   r9   rö   r£   r÷   rá   ÚcovarÚjac1Újac2rð   rù   rú   rÒ   rÓ   r   r   r   Útest_curvefit_simplecovariance¿  s(    
 ÿ

 ÿ
z+TestCurveFit.test_curvefit_simplecovariancec              
   C   sX  dd„ }dd„ }dd„ }dd„ }t j d	¡ t  d
d¡}||ddƒ}|dt jjt|ƒd�  }t  t|ƒ¡d }t  |d ¡}	t  dt  	d¡ dt  	d¡ d	gdt  	d¡ dt  	d¡ d	gd	d	dgg¡}
|
 
|¡}|
 
|	¡ 
|
j¡}||fdfD ]b\}}dD ]T}t||||||d�\}}t||||||d�\}}t||ddd� t||ddd� qüqðd S )Nc                 S   sd   t  dt  d¡ dt  d¡ dgdt  d¡ dt  d¡ dgdddgg¡}| |t  | |  ¡ ¡S ©NrÄ   r-   ç      ð¿r   )r   r
   ró   ÚdotrÂ   )r   rž   rŸ   Úrotnr   r   r   ÚfuncpÜ  s    Jz4TestCurveFit.test_curvefit_covariance.<locals>.funcpc                 S   sz   t  dt  d¡ dt  d¡ dgdt  d¡ dt  d¡ dgdddgg¡}t  | |  ¡}| t  || |  | f¡j¡S r2  )r   r
   ró   rÂ   r4  r¦   r§   )r   rž   rŸ   r5  r  r   r   r   Újacpà  s    Jz3TestCurveFit.test_curvefit_covariance.<locals>.jacpc                 S   s   |t  | |  ¡ S r   rÁ   rÖ   r   r   r   rV   å  s    z3TestCurveFit.test_curvefit_covariance.<locals>.funcc                 S   s*   t  | |  ¡}t  || |  | f¡jS r   r  r  r   r   r   r9   è  s    z2TestCurveFit.test_curvefit_covariance.<locals>.jacr   r.   r=   r$  rÄ   r&  r'  r-   r3  r)  r*  r+  g+i¤)+€>r!  )ræ   r|   )r   r›   rœ   r  r,  r(   r-  r6   r
   ró   r4  r§   r   r   )r   r6  r7  rV   r9   rö   r£   r÷   rá   r.  r5  ZydatapZcovarpr/  r0  rð   rù   rú   rÒ   rÓ   r   r   r   Útest_curvefit_covarianceÚ  s2    J

 ÿ

 ÿ
z%TestCurveFit.test_curvefit_covariancec           	      C   sÊ   t  dd¡}d| d dt  |¡  }dd„ }dD ]’}t jt jfD ]€}t jt jfD ]}| |¡}| |¡}qRt ¡ �H t d	t	¡ t
||||d
�\}}t  |¡ ¡ s¨t‚t  |d¡r¸t‚W 5 Q R X qBq2d S )Nr  ré   rQ   rÌ   r>   c                 S   s   ||  | S r   r   rÖ   r   r   r   rV     s    z&TestCurveFit.test_dtypes.<locals>.funcrí   Úerrorr  r.   )r   r  r  ry   r   ÚastypeÚwarningsÚcatch_warningsÚsimplefilterr   r   Úisfiniter†   r‡   Zallclose)	r   r   r£   rV   r�   ZdtxZdtyr}   Úcovr   r   r   Útest_dtypes  s    

zTestCurveFit.test_dtypesc              
   C   sÚ   dd„ }t  dddddg¡}t  dddddg¡}t  d	d
dddg¡}dddddg}t  ddddddddg¡}||f|žŽ }t||||||fd�\}}	| t j¡}||f|žŽ }t||||||fd�\}
}	t|
|dd� d S )Nc                 S   sJ   || d }|| d }||| |   |t  | | d |d d  ¡  S )Nr-   r=   )r   ró   )r   Zs_1Zs_2Zo_xZo_yr    Zb_2Zb_1r   r   r   Ú	hyperbola  s    z,TestCurveFit.test_dtypes2.<locals>.hyperbolag      Àr@   ç       Àg      $ÀrÌ   g      $@g«ªªªªªê¿gUUUUUUõ?rÄ   g      Àr>   r  gš™™™™™Ù?éÿÿÿÿéûÿÿÿrË   iàÿÿÿiðÿÿÿiøÿÿÿr=   rë   é   é    )r%   rö   r÷   r°   r  gñhãˆµøô>r{   )r   r
   r   r:  ry   r   )r   rA  Zmin_fitZmax_fitrç   Úparamsrö   r÷   Zpopt_64r	  Zpopt_32r   r   r   Útest_dtypes2  s     
ÿ

ÿ
zTestCurveFit.test_dtypes2c                    s€   t  d¡}d|d  d|  t j t|ƒ¡ ‰ ‡ fdd„}dD ]<}t||t  |¡|d�\}}t||d	|d�\}}t||ƒ q>d S )
Nrt   gÍÌÌÌÌÌ@r-   g      @c                    s   || d  ||   ˆ  S r¢   r   rÖ   ©Útargetr   r   r&   :  r'   z/TestCurveFit.test_broadcast_y.<locals>.<lambda>rí   )rö   r÷   r�   r   )r   r  r›   Zrandr(   r   Z
zeros_liker   )r   rö   Zfit_funcr�   Zpopt0Zpcov0rù   rú   r   rI  r   Útest_broadcast_y7  s    
$ý
ý
zTestCurveFit.test_broadcast_yc              	   C   sD   dd„ }t tƒ�* t|ddddgddd	d
gdgdd� W 5 Q R X d S )Nc                 S   s   ||  | S r   r   rÖ   r   r   r   rV   I  s    z.TestCurveFit.test_args_in_kwargs.<locals>.funcr.   r-   rg   r=   ré   rý   é   é   rZ   )rö   r÷   r°   rB   r  rq   r   r   r   Útest_args_in_kwargsF  s    


üz TestCurveFit.test_args_in_kwargsc              	   C   sB   dd„ }t tdd��$ t|ddddgd	d
ddgd� W 5 Q R X d S )Nc                 S   s    |t  | |  ¡ | | | S r   rÁ   ©r   rž   rŸ   r    Údr  r   r   r   rV   T  s    z<TestCurveFit.test_data_point_number_validation.<locals>.funczThe number of func parameters=rm   r.   r-   rg   r=   ré   rý   rL  rM  )rö   r÷   )rS   rT   r   rq   r   r   r   Ú!test_data_point_number_validationS  s    

þz.TestCurveFit.test_data_point_number_validationzignore::RuntimeWarningc           	      C   s˜   dd„ }t j d¡}d}t  |¡}t  dd|¡| |¡ }tj|||dd�\}}t  t  |¡d	k¡sht	‚t
 |¡d	 }t  |d
k¡sˆt	‚t||jƒ d S )Nc                 S   s0   |t  | d | ¡ |t  | d | ¡  | S ©Nr.   ©r   ÚlogrO  r   r   r   r%   b  s    z#TestCurveFit.test_gh4555.<locals>.fì   MI9V$O-rw   r-   rê   i † rã   r   g{®Gáz„¿)r   r›   Údefault_rngr  r™   r   r   r†   r6   r‡   r   Zeighr   r§   )	r   r%   Úrngr8   r   r£   r}   r?  Zeigsr   r   r   Útest_gh4555\  s    
zTestCurveFit.test_gh4555c           
      C   s†   t j d¡}dd„ }t  ddd¡}||ddd	ƒ}d
|j|jd� }|| }t|||ƒ\}}dddgdddgdddgg}	t||	dƒ d S )NrU  c                 S   s   |t  | |  ¡ | S r   rÁ   )r   rž   rŸ   r    r   r   r   rV   u  s    z'TestCurveFit.test_gh4555b.<locals>.funcr   r=   r#  r$  r%  r>   r&  r'  gƒt¢^G�?gd£*.æX|?g�ÓTû}H¿g×1”©xÿ”?guô`v?gšonÁ2Íf?gH¯¼šò×Š>)r   r›   rV  r™   r,  r(  r   r   )
r   rW  rV   rö   r£   Zy_noiser÷   r	  rÑ   Úrefr   r   r   Útest_gh4555bp  s    þzTestCurveFit.test_gh4555bN)!r    r!   r"   r¡   rÕ   rÜ   rÞ   rè   rû   rþ   r  r  r  r  r
  r  r¹   r  r  r  r"  r1  r8  r@  rH  rK  rN  rQ  ÚpytestÚmarkÚfilterwarningsrX  rZ  r   r   r   r   rÊ   ™  s8   
0		"$,	

rÊ   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestFixedPointc                 C   s$   dd„ }d}t ||ƒ}t|dƒ d S )Nc                 S   s   d|  S ©Nr?   r   re   r   r   r   rV   ‰  s    z0TestFixedPoint.test_scalar_trivial.<locals>.funcrÄ   r@   ©r   r   ©r   rV   rW   r   r   r   r   Útest_scalar_trivial‡  s    
z"TestFixedPoint.test_scalar_trivialc                 C   s$   dd„ }d}t ||ƒ}t|dƒ d S )Nc                 S   s   | d S r¢   r   re   r   r   r   rV   ‘  s    z/TestFixedPoint.test_scalar_basic1.<locals>.funcçÍÌÌÌÌÌð?rÄ   r`  ra  r   r   r   Útest_scalar_basic1�  s    
z!TestFixedPoint.test_scalar_basic1c                 C   s$   dd„ }d}t ||ƒ}t|dƒ d S )Nc                 S   s   | d S ©Nr>   r   re   r   r   r   rV   ™  s    z/TestFixedPoint.test_scalar_basic2.<locals>.funcrc  rÄ   r`  ra  r   r   r   Útest_scalar_basic2—  s    
z!TestFixedPoint.test_scalar_basic2c              	   C   sD   dd„ }ddg}t jdd�� t||ƒ}W 5 Q R X t|ddgƒ d S )Nc                 S   s   d|  S r_  r   re   r   r   r   rV      s    z/TestFixedPoint.test_array_trivial.<locals>.funcg333333Ó?g333333Ã?Úignore©r†   r@   )r   Úerrstater   r   ra  r   r   r   Útest_array_trivialŸ  s
    z!TestFixedPoint.test_array_trivialc              	   C   sZ   dd„ }t dddgƒ}dddg}tjd	d
�� t|||fd�}W 5 Q R X t|d| ƒ d S )Nc                 S   s   || d  S r¢   r   ©r   r    r   r   r   rV   ©  s    z.TestFixedPoint.test_array_basic1.<locals>.funcç      è?rÄ   ç      ô?çš™™™™™ñ?gffffffò?gÍÌÌÌÌÌì?rg  rh  r[   )r
   r   ri  r   r   ©r   rV   r    rW   r   r   r   r   Útest_array_basic1§  s    
z TestFixedPoint.test_array_basic1c                 C   sB   dd„ }t dddgƒ}dddg}t|||fd�}t||d	 ƒ d S )
Nc                 S   s   || d  S re  r   rk  r   r   r   rV   ³  s    z.TestFixedPoint.test_array_basic2.<locals>.funcrl  rÄ   rm  gš™™™™™é?rn  r[   r-   )r
   r   r   ro  r   r   r   Útest_array_basic2±  s
    
z TestFixedPoint.test_array_basic2c                 C   sD   t dd„ ddddd�}t|t d| ¡d	 ƒ t|td
ƒd ƒ d S )Nc                 S   s   t  d|  ¡d S )NrB  r?   rÁ   )Zxxr   r   r   r&   ¼  r'   z.TestFixedPoint.test_lambertw.<locals>.<lambda>rÄ   r   gê-�™—q=iô  )rB   ZxtolÚmaxiterrB  r?   r.   r-   )r   r   r   rÂ   r   )r   Zxxrootr   r   r   Útest_lambertwº  s    
  ÿzTestFixedPoint.test_lambertwc                    s`   d‰d‰d}d}|d | ˆˆ | d|d    ‰ ‡ ‡‡fdd„}t ||dd	�}t||ƒ d S )
Nr-   rÿ   r%  gj¼t“ð?r.   c                    s,   t  ˆˆ |  ¡t  ˆ |  | d  ¡ d S rR  rS  )r8   ©Zi0ÚklÚksr   r   rV   É  s    z1TestFixedPoint.test_no_acceleration.<locals>.funcÚ	iterationr  )r   r   )r   ÚmZn0rV   r8   r   rt  r   Útest_no_accelerationÁ  s    $z#TestFixedPoint.test_no_accelerationN)r    r!   r"   rb  rd  rf  rj  rp  rq  rs  ry  r   r   r   r   r^  …  s   
	r^  ),r#   r;  r[  Znumpy.testingr   r   r   r   r   r   r   r	   rS   Únumpyr   r
   r   Zmultiprocessing.poolr   Zscipyr   r   Zscipy.specialr   Zscipy.optimize._minpack_pyr   r   r   Zscipy.optimizer   Zscipy.optimize._minimizer   r   r$   r,   r5   r:   r;   r<   rŒ   r”   r–   rÊ   r^  r   r   r   r   Ú<module>   s8   $	h     o