a
    ‡ù»j×x  ã                9   @   s„  d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
  mZ d dlmZmZ d dlmZ d dlmZ ddlmZ d	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zeddfeddfeddfeddfeddfeddfed d!fed"d#fed$d#fed%dfed&d'fedd(fedd)fedd)fedd*fedd(fedd(fed d+fed"dfed$dfed%d,fed&dfeddfeddfeddfedd-fedd.fedd,fed dfed"d/fed$d/fed%dfed&dfed0d+fed1dfed2dfed3dfed4dfed5d+fed6d+fed7d+fed8d-fed9d-fed:d-fed0d)fed1d*fed2d(fed3d-fed4d+fed5d(fed6d*fed7d*fed8d+fed9d+fed:d(fg7ZG d;d<„ d<ƒZG d=d>„ d>eƒZdS )?é    N)Úassert_allcloseÚassert_equalÚassert_array_less)Ústats)Ú_chandrupatla_minimizeÚ_chandrupatla)Ú_CHANDRUPATLA_TESTS)Úpermutationsé   )ÚTestScalarRootFindersc                 C   s0   dd| d  d  d| d   dd|  d   S )Néd   r
   ç      @é   ç       @© ©Úxr   r   úLE:\soccer\ml_env\Lib\site-packages\scipy/optimize/tests/test_chandrupatla.pyÚf1   s    r   c                 C   s   d| d d  S )Né   r   é   r   r   r   r   r   Úf2   s    r   c                 C   s   t  | ¡d|   S )Nr   )ÚnpÚexpr   r   r   r   Úf3   s    r   c                 C   s    | d d| d   d|   d S )Ng      @r   r   g      4@r   r   r   r   r   Úf4   s    r   c                 C   s$   d| d  d| d   d|   d S )Né   é   r   é   r   r   r   r   r   Úf5   s    r   c                 C   s¨   d}d}| |ƒ}| |ƒ}|| }||kr8||||| fn|||||f\}}}}}t |ƒD ]>}||9 }|| }	| |	ƒ}
|
|k r’||	||
f\}}}}qX q˜qX|||	|||
fS )Ng�ö—›wãù?r   )Úrange)ÚfuncÚx1Úx2ÚphiÚmaxiterr   r   ÚstepÚiÚx3r   r   r   r   Ú_bracket_minimum#   s     ÿr)   éÿÿÿÿé   éþÿÿÿé   éüÿÿÿiøÿÿÿé   iðÿÿÿé   iàÿÿÿé   iÀÿÿÿé   i€ÿÿÿé   i ÿÿÿi þÿÿi üÿÿé   r   r   r   é	   é   é
   é   é   çš™™™™™©¿gš™™™™™¹¿g333333Ã¿gš™™™™™É¿g      Ð¿g333333Ó¿gffffffÖ¿gš™™™™™Ù¿gÍÌÌÌÌÌÜ¿g      à¿gš™™™™™á¿c                	   @   sÖ   e Zd Zdd„ Zej dde ddd¡g¡dd	„ ƒZ	ej d
e
ƒ dddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zej de¡dd„ ƒZej ddddgf¡ej dejejejf¡dd„ ƒƒZdd„ Zd d!„ Zd"d#„ Zd$S )%ÚTestChandrupatlaMinimizec                 C   s   t  ¡ }| || ¡ S ©N)r   ÚnormÚpdf)Úselfr   ÚlocÚdistr   r   r   Úft   s    zTestChandrupatlaMinimize.fr@   ç333333ã?gÍÌÌÌÌÌð¿çÍÌÌÌÌÌð?r7   c                 C   sh   t | jddd|fd�}|}tjj|j|dd� tjj|jtj 	d¡ ddd� |jj
t 
|¡ksdJ ‚d S )Néûÿÿÿr   r   ©Úargsç�íµ ÷Æ°>©Úrtol)ÚatolrJ   )r   rB   r   Útestingr   r   Úfunr   r=   r>   Úshape)r?   r@   ÚresÚrefr   r   r   Ú
test_basicx   s
     z#TestChandrupatlaMinimize.test_basicrN   ©r6   ©r   é   ©r   r   r   c                    s~  |rt  ddd¡ |¡nd}|f}t j‡fdd„ƒ}‡ ‡fdd„‰ d	ˆ _tˆ d
d	d|d�}||ƒ ¡ }dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t	|jˆj|jg|¢R Ž ƒ dd„ |D ƒ}	t	|j ¡ |	ƒ t	|jj
|ƒ t  |jjt j¡�sJ ‚dd„ |D ƒ}
t	|j ¡ |
ƒ t	|jj
|ƒ t  |jjt j¡�sbJ ‚dd„ |D ƒ}t	|j ¡ |ƒ t	t  |j¡ˆ jƒ t	|jj
|jj
ƒ t  |jjt j¡�s¾J ‚dd„ |D ƒ}t	|j ¡ |ƒ t	t  |j¡ˆ jd ƒ t	|jj
|jj
ƒ t  |jjt j¡�sJ ‚dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t|jˆj|jg|¢R Ž ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t|jˆj|jg|¢R Ž ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t|jˆj|jg|¢R Ž ƒ d S )Nr:   rD   r6   rC   c                    s   t ˆ jddd| fd�S )NrE   r   r   rF   )r   rB   )Z
loc_single©r?   r   r   Úchandrupatla_single‰   s    zHTestChandrupatlaMinimize.test_vectorization.<locals>.chandrupatla_singlec                     s   ˆ  j d7  _ ˆj| i |¤ŽS ©Nr
   ©Úf_evalsrB   ©rG   Úkwargs©rB   r?   r   r   rB   �   s    z6TestChandrupatlaMinimize.test_vectorization.<locals>.fr   rE   r   rF   c                 S   s   g | ]
}|j ‘qS r   r   ©Ú.0rP   r   r   r   Ú
<listcomp>•   ó    z?TestChandrupatlaMinimize.test_vectorization.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   ©rM   r^   r   r   r   r`   ™   ra   c                 S   s   g | ]
}|j ‘qS r   ©Úsuccessr^   r   r   r   r`   ž   ra   c                 S   s   g | ]
}|j ‘qS r   ©Ústatusr^   r   r   r   r`   £   ra   c                 S   s   g | ]
}|j ‘qS r   ©Únfevr^   r   r   r   r`   ¨   ra   c                 S   s   g | ]
}|j ‘qS r   ©Únitr^   r   r   r   r`   ®   ra   r   c                 S   s   g | ]
}|j ‘qS r   ©Úxlr^   r   r   r   r`   ´   ra   c                 S   s   g | ]
}|j ‘qS r   )Úxmr^   r   r   r   r`   ¸   ra   c                 S   s   g | ]
}|j ‘qS r   ©Úxrr^   r   r   r   r`   ¼   ra   c                 S   s   g | ]
}|j ‘qS r   ©Úflr^   r   r   r   r`   À   ra   c                 S   s   g | ]
}|j ‘qS r   )Úfmr^   r   r   r   r`   Å   ra   c                 S   s   g | ]
}|j ‘qS r   ©Úfrr^   r   r   r   r`   Ê   ra   )r   ÚlinspaceÚreshapeÚ	vectorizerZ   r   Úravelr   r   r   rN   rM   rB   rd   Ú
issubdtypeÚdtypeÚbool_rf   Úintegerrh   Úmaxrj   rl   rm   ro   rq   rr   rt   )r?   rN   r@   rG   rW   rO   ÚrefsÚref_xÚref_funÚref_successÚref_flagÚref_nfevÚref_nitÚref_xlZref_xmÚref_xrÚref_flZref_fmÚref_frr   r]   r   Útest_vectorization‚   sl    z+TestChandrupatlaMinimize.test_vectorizationc                 C   sl   dd„ }t jdt jd�f}t|dgd dgd t jgd |dd�}t  tjtjtj	tj
g¡}t|j|ƒ d S )	Nc                    s4   dd„ dd„ dd„ dd„ g‰ ‡ fdd„t | |ƒD ƒS )Nc                 S   s   | d d S )Nç      @r   r   r   r   r   r   Ú<lambda>Ó   ra   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>c                 S   s   | d S ©Nr7   r   r   r   r   r   r‹   Ô   ra   c                 S   s   | d d S )NrŠ   rT   r   r   r   r   r   r‹   Õ   ra   c                 S   s   t jS r<   ©r   Únanr   r   r   r   r‹   Ö   ra   c                    s   g | ]\}}ˆ | |ƒ‘qS r   r   ©r_   r   Új©Úfuncsr   r   r`   Ø   ra   zBTestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<listcomp>©Úzip©ZxsÚjsr   r‘   r   rB   Ò   s    ýz.TestChandrupatlaMinimize.test_flags.<locals>.frT   ©rz   r   r   r7   ©rG   r%   )r   ÚarangeÚint64r   ÚpiÚarrayÚeimÚ_ECONVERGEDÚ	_ESIGNERRÚ	_ECONVERRÚ
_EVALUEERRr   rf   ©r?   rB   rG   rO   Z	ref_flagsr   r   r   Ú
test_flagsÏ   s     ÿýz#TestChandrupatlaMinimize.test_flagsc                 C   sà  t j d¡}|jdd�}d}|f}t|ddddd�}| ¡ }d|d< t| jg|¢R i |¤Ž}t|j|j	 ƒ}t
|d	|d  ƒ d
|d< t| jg|¢R i |¤Ž}	t|	j|	j	 ƒ}
t
|
d	|d  ƒ t
|
|ƒ | ¡ }d|d< t| jg|¢R i |¤Ž}t|j|j	 ƒ}t
|d	|d  t|jƒ ƒ d
|d< t| jg|¢R i |¤Ž}	t|	j|	j	 ƒ}
t
|
d	|d  t|	jƒ ƒ t
|
|ƒ | ¡ }d|d< t| jg|¢R i |¤Ž}t|jd|j  |j ƒ}t
|d|d  ƒ d
|d< t| jg|¢R i |¤Ž}	t|	jd|	j  |	j ƒ}t
|d|d  ƒ t
||ƒ | ¡ }d|d< t| jg|¢R i |¤Ž}t|jd|j  |j ƒ}t
|d|d  t|jƒ ƒ d
|d< t| jg|¢R i |¤Ž}	t|	jd|	j  |	j ƒ}t
|d|d  t|	jƒ ƒ t
||ƒ d S )Nì   ™FA92 r   ©Úsize©rE   r   r   r   ©rG   ÚxatolÚxrtolÚfatolÚfrtolçü©ñÒMbP?r©   rT   rH   rª   r«   r   r¬   )r   ÚrandomÚdefault_rngÚdictÚcopyr   rB   Úabsro   rl   r   r   rq   rr   rt   rM   )r?   ÚrngÚpÚbracketrG   Úkwargs0r\   Úres1Zj1Úres2Zj2Zh1Zh2r   r   r   Útest_convergenceå   sZ    


z)TestChandrupatlaMinimize.test_convergencec                    s.  d‰d‰ d‰t ˆjgˆ ¢R ˆfˆdœŽ}t |j¡r8J ‚t |jˆd k¡sPJ ‚t |jˆk¡sdJ ‚‡ ‡‡‡‡fdd„‰tjˆ_	tjˆ_
dˆ_d ˆ_t ˆjgˆ ¢R ˆfˆd	œŽ}| ¡ D ]p}|d
krþ|| tjksÖJ ‚ˆj| tjksêJ ‚|| tjksüJ ‚q¸|| ˆj|   k�r"|| ks¸n J ‚q¸d S )Nç~ý,œã?r§   r   r˜   r   c                    s  ˆ j d7  _ | ˆ_t| dƒs"J ‚ˆj dkrF| j| j| jfˆ ksˆJ ‚nB| jˆjk| jˆjk@ }| jˆjk| jˆjk@ }t ||B ¡sˆJ ‚| jˆ_| jˆ_| jt	j
ks¨J ‚tˆ | jˆ¡| jƒ tˆ | jˆ¡| jƒ tˆ | jˆ¡| jƒ tˆ | jˆ¡| jƒ ˆj ˆk�rt‚d S ©Nr
   r   r   )ÚiterrO   Úhasattrrl   rm   ro   r   Úallrf   r�   Ú_EINPROGRESSr   rB   rq   rr   rt   r   rM   ÚStopIteration)rO   Z
changed_xrZ
changed_xl©rµ   Úcallbackr@   r%   r?   r   r   rÂ   %  s"    
z@TestChandrupatlaMinimize.test_maxiter_callback.<locals>.callbackr*   ©rG   rÂ   rf   )r   rB   r   Úanyrd   r¾   rh   rj   rŽ   rl   ro   r¼   rO   Úkeysr�   r    r¿   Ú
_ECALLBACK©r?   rO   r¸   Úkeyr   rÁ   r   Útest_maxiter_callback  s.    ÿÿz.TestChandrupatlaMinimize.test_maxiter_callbackÚcasec              
   C   sf   |\}}}d}|| }t |||ƒ\}}}}}	}
d}d}d}d}t||||||||d�}t|j|ƒ d S )Ngš™™™™™É?g-Cëâ6?rH   g¼‰Ø—²Òœ<)r©   r«   rª   r¬   )r)   r   r   rj   )r?   rÊ   r!   r"   rj   r&   r#   r(   r   r   r   r©   r«   rª   r¬   rO   r   r   r   Útest_nit_expectedM  s    
ÿz*TestChandrupatlaMinimize.test_nit_expectedgÍÌÌÌÌÌä?gffffffæ?rz   c                    sf   ˆ |ƒ}‡ fdd„}t |ˆ dƒˆ dƒˆ dƒ|fd�}|jjˆ ksDJ ‚t|j|t t ˆ ¡j¡d� d S )Nc                    s    | j ˆ ksJ ‚| | d  ˆ ¡S )Nr   )rz   Úastype)r   r@   r—   r   r   rB   j  s    z.TestChandrupatlaMinimize.test_dtype.<locals>.féýÿÿÿr
   r   rF   rI   )r   r   rz   r   r   ÚsqrtZfinfoÚeps)r?   r@   rz   rB   rO   r   r—   r   Ú
test_dtypec  s    ÿz#TestChandrupatlaMinimize.test_dtypec                 C   s$  d}t jt|d�� td dddƒ W d   ƒ n1 s60    Y  d}t jt|d��" tdd„ d	ddƒ W d   ƒ n1 sz0    Y  d
}t jt|d��. tdd„ ddgddgg d¢ƒ W d   ƒ n1 sÊ0    Y  d}t jt|d��. tdd„ ddgddgddgƒ W d   ƒ n1 �s0    Y  d}t jt|d��& tdd„ ddddd� W d   ƒ n1 �sf0    Y  t jt|d��( tdd„ dddtjd� W d   ƒ n1 �s®0    Y  t jt|d��& tdd„ ddddd� W d   ƒ n1 �sô0    Y  t jt|d��( tdd„ dddtjd� W d   ƒ n1 �s<0    Y  d}t jt|d��& tdd„ ddddd � W d   ƒ n1 �s†0    Y  t jt|d��& td!d„ ddddd � W d   ƒ n1 �sÌ0    Y  d"}t jt|d��& td#d„ dddd$d%� W d   ƒ n1 �s0    Y  d S )&Nú`func` must be callable.©Úmatchr.   r   rT   ú3Abscissae and function output must be real numbers.c                 S   s   | S r<   r   r   r   r   r   r‹   |  ra   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>ù      À      ð?ú+shape mismatch: objects cannot be broadcastc                 S   s   | S r<   r   r   r   r   r   r‹   �  ra   r,   rÍ   ©r   rT   r   z:The shape of the array returned by `func` must be the samec                 S   s   | d | d | d gS ©Nr   r
   r   r   r   r   r   r‹   …  ra   r   ú(Tolerances must be non-negative scalars.c                 S   s   | S r<   r   r   r   r   r   r‹   Š  ra   r*   ©r©   c                 S   s   | S r<   r   r   r   r   r   r‹   Œ  ra   ©rª   c                 S   s   | S r<   r   r   r   r   r   r‹   Ž  ra   Úekki©r«   c                 S   s   | S r<   r   r   r   r   r   r‹   �  ra   ©r¬   ú)`maxiter` must be a non-negative integer.c                 S   s   | S r<   r   r   r   r   r   r‹   ”  ra   ç      ø?©r%   c                 S   s   | S r<   r   r   r   r   r   r‹   –  ra   ú`callback` must be callable.c                 S   s   | S r<   r   r   r   r   r   r‹   š  ra   Ú	shrubbery©rÂ   )ÚpytestÚraisesÚ
ValueErrorr   r   rŽ   ©r?   Úmessager   r   r   Útest_input_validations  s>    ,0<ÿ$686866z.TestChandrupatlaMinimize.test_input_validationc                 C   s¨   t  ddd¡d d …t jf }t  ttg d¢ƒƒ¡j}t| jg|¢R d|fiŽ}t  	t  
|j|¡|j|  ||¡kB ¡sxJ ‚|jd d …df }tt  |jj|¡ddiŽ d S )	Nr*   r
   r   r§   rG   r   rJ   gVçž¯Ò<)r   ru   Znewaxisrœ   Úlistr	   ÚTr   rB   r¾   Úiscloser   rM   r   Zbroadcast_arrays)r?   r@   ZbracketsrO   rP   r   r   r   Útest_bracket_orderœ  s    *z+TestChandrupatlaMinimize.test_bracket_orderc              
   C   s¶  dd„ }t jdd��$ t|dddddd�}W d   ƒ n1 s>0    Y  |jsRJ ‚t|jd	d
d� t|jdƒ dd„ }t|d	d	d	ƒ}|jsŽJ ‚t|jd	ƒ dd„ }d}t|g|¢R ddiŽ}|jsÐJ |j	|kƒ‚|j
dksÞJ ‚|jdksìJ ‚|jdksúJ ‚|jdk�s
J ‚dd„ }t|ddd	dd�}t|jdƒ dd„ }t|dd	t jddddd�}|j�s^J ‚|j|j  k �r||j	k �s‚n J ‚||jƒ||jƒ  k�r¬||j	ƒk�s²n J ‚d S )Nc                 S   s    t  | jt j¡sJ ‚| d d S )Nr
   r   ©r   ry   rz   Zfloatingr   r   r   r   rB   ª  s    z6TestChandrupatlaMinimize.test_special_cases.<locals>.fÚignore©Úinvalidéùÿÿÿr   r   )r«   r¬   r
   r­   rI   c                 S   s   | d d S ©Nr
   r   r   r   r   r   r   rB   ¶  s    c                 S   s   | d d S rô   r   r   r   r   r   rB   ¾  s    )rÍ   çš™™™™™ñ?r   r%   r   r,   rõ   c                 S   s   | | d d S ©Nr   r
   r   ©r   Úcr   r   r   rB   Ê  s    r*   çUUUUUUÕ?rF   c                 S   s   t  | ¡ S r<   )r   Úsinr   r   r   r   rB   Ò  s    )r©   rª   r«   r¬   )r   Úerrstater   rd   r   r   r   rM   rl   ro   rj   rh   rf   r›   rm   ©r?   rB   rO   rµ   r   r   r   Útest_special_cases¥  s8    2

ÿ$z+TestChandrupatlaMinimize.test_special_casesN)Ú__name__Ú
__module__Ú__qualname__rB   rå   ÚmarkÚparametrizer   ru   rQ   Útupler‰   r£   r¹   rÉ   ÚcasesrË   Úfloat16Úfloat32Úfloat64rÐ   rê   rî   rý   r   r   r   r   r;   r   s    
	
L44
)	r;   c                	   @   sÎ   e Zd Zdd„ Zej dde ddd¡g¡dd	„ ƒZ	ej d
e
ƒ dddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zej de¡dd„ ƒZej ddddgf¡ej dejejejf¡dd„ ƒƒZdd „ Zd!d"„ Zd#S )$ÚTestChandrupatlac                 C   s   t j |¡| S r<   )r   r=   Úcdf)r?   Úqr´   r   r   r   rB   ß  s    zTestChandrupatla.fr´   rC   r:   rD   r7   c                 C   sH   t | jdd|fd�}t ¡  |¡}tj |j|¡ |jj	|j	ksDJ ‚d S ©NrE   r   rF   )
Ú_chandrupatla_rootrB   r   r=   Zppfr   rL   r   r   rN   )r?   r´   rO   rP   r   r   r   rQ   â  s    zTestChandrupatla.test_basicrN   rR   rS   rU   c              
      s–  |rt  ddd¡ |¡nd}|f}t j‡fdd„ƒ}‡ ‡fdd„‰ d	ˆ _tˆ d
d|d�}||ƒ ¡ }dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t	|jˆj|jg|¢R Ž ƒ dd„ |D ƒ}	t	|j ¡ |	ƒ t	|jj
|ƒ t  |jjt j¡�sJ ‚dd„ |D ƒ}
t	|j ¡ |
ƒ t	|jj
|ƒ t  |jjt j¡�s`J ‚dd„ |D ƒ}t	|j ¡ |ƒ t	t  |j¡ˆ jƒ t	|jj
|jj
ƒ t  |jjt j¡�s¼J ‚dd„ |D ƒ}t	|j ¡ |ƒ t	t  |j¡ˆ jd ƒ t	|jj
|jj
ƒ t  |jjt j¡�sJ ‚dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t|j|jƒ t  |j¡}t  |j| |j| k|j| |j| kB ¡�sÂJ ‚dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t|jˆj|jg|¢R Ž ƒ dd„ |D ƒ}t|j ¡ |ƒ t	|jj
|ƒ t|jˆj|jg|¢R Ž ƒ t  t  |j| ¡t  t  |j| ¡t  |j| ¡¡k¡�s’J ‚d S )Nr:   rD   r6   rC   c                    s   t ˆ jdd| fd�S r  )r  rB   )r´   rV   r   r   rW   ñ  s    z@TestChandrupatla.test_vectorization.<locals>.chandrupatla_singlec                     s   ˆ  j d7  _ ˆj| i |¤ŽS rX   rY   r[   r]   r   r   rB   õ  s    z.TestChandrupatla.test_vectorization.<locals>.fr   rE   r   rF   c                 S   s   g | ]
}|j ‘qS r   r   r^   r   r   r   r`   ý  ra   z7TestChandrupatla.test_vectorization.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   rb   r^   r   r   r   r`     ra   c                 S   s   g | ]
}|j ‘qS r   rc   r^   r   r   r   r`     ra   c                 S   s   g | ]
}|j ‘qS r   re   r^   r   r   r   r`     ra   c                 S   s   g | ]
}|j ‘qS r   rg   r^   r   r   r   r`     ra   c                 S   s   g | ]
}|j ‘qS r   ri   r^   r   r   r   r`     ra   r   c                 S   s   g | ]
}|j ‘qS r   rk   r^   r   r   r   r`     ra   c                 S   s   g | ]
}|j ‘qS r   rn   r^   r   r   r   r`      ra   c                 S   s   g | ]
}|j ‘qS r   rp   r^   r   r   r   r`   )  ra   c                 S   s   g | ]
}|j ‘qS r   rs   r^   r   r   r   r`   .  ra   )r   ru   rv   rw   rZ   r  rx   r   r   r   rN   rM   rB   rd   ry   rz   r{   rf   r|   rh   r}   rj   rl   ro   r   Úisfiniter¾   rq   rt   r²   Úminimum)r?   rN   r´   rG   rW   rO   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   Zfiniter‡   rˆ   r   r]   r   r‰   ê  sr    ÿÿÿz#TestChandrupatla.test_vectorizationc                 C   sd   dd„ }t jdt jd�f}t|dgd t jgd |dd�}t  tjtjtj	tj
g¡}t|j|ƒ d S )Nc                    s4   dd„ dd„ dd„ dd„ g‰ ‡ fdd„t | |ƒD ƒS )Nc                 S   s   | d S )NrŠ   r   r   r   r   r   r‹   ;  ra   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>c                 S   s   | d S rŒ   r   r   r   r   r   r‹   <  ra   c                 S   s   | d d S )Ngš™™™™™¹?r   r   r   r   r   r   r‹   =  ra   c                 S   s   t jS r<   r�   r   r   r   r   r‹   >  ra   c                    s   g | ]\}}ˆ | |ƒ‘qS r   r   r�   r‘   r   r   r`   ?  ra   z:TestChandrupatla.test_flags.<locals>.f.<locals>.<listcomp>r“   r•   r   r‘   r   rB   :  s    ýz&TestChandrupatla.test_flags.<locals>.frT   r—   r   r   r˜   )r   r™   rš   r  r›   rœ   r�   rž   rŸ   r    r¡   r   rf   r¢   r   r   r   r£   7  s     ýzTestChandrupatla.test_flagsc                 C   s¨  t j d¡}|jdd�}d}|f}t|ddddd�}| ¡ }d|d< t| jg|¢R i |¤Ž}t|j|j	 dƒ d	|d< t| jg|¢R i |¤Ž}t|j|j	 d	ƒ t|j|j	 |j|j	 ƒ | ¡ }d|d
< t| jg|¢R i |¤Ž}t|j|j	 dt  
|j¡ ƒ d	|d
< t| jg|¢R i |¤Ž}t|j|j	 d	t  
|j¡ ƒ t|j|j	 |j|j	 ƒ | ¡ }d|d< t| jg|¢R i |¤Ž}tt  
|j¡dƒ d	|d< t| jg|¢R i |¤Ž}tt  
|j¡d	ƒ tt  
|j¡t  
|j¡ƒ | ¡ }d|d< |\}	}
t  t
| j|	g|¢R Ž ƒt
| j|
g|¢R Ž ƒ¡}t| jg|¢R i |¤Ž}tt  
|j¡d| ƒ d	|d< t| jg|¢R i |¤Ž}tt  
|j¡d	| ƒ tt  
|j¡t  
|j¡ƒ d S )Nr¤   r   r¥   ©rE   r   r   r¨   r­   r©   rH   rª   r«   r¬   )r   r®   r¯   r°   r±   r  rB   r   ro   rl   r²   r   rM   r  )r?   r³   r´   rµ   rG   r¶   r\   r·   r¸   r"   r#   Zf0r   r   r   r¹   J  sN    0z!TestChandrupatla.test_convergencec                    sB  d‰d‰ d‰‡fdd„‰d ˆ_ d ˆ_tˆgˆ ¢R ˆfˆdœŽ}t |j¡rNJ ‚t |jˆd k¡sfJ ‚t |jˆk¡szJ ‚‡ ‡‡‡‡fdd	„‰d
ˆ_	d ˆ_
d ˆ_d ˆ_tˆgˆ ¢R ˆfˆdœŽ}| ¡ D ]t}|dk�r|| tjksèJ ‚ˆj
| tjksüJ ‚|| tjk�s<J ‚qÈ|| ˆj
|   k�r6|| ksÈn J ‚qÈd S )Nrº   r  r   c                    s"   t  ¡  | ¡| }| ˆ _|ˆ _|S r<   )r   r=   r	  r   rM   )r
  r´   rO   )rB   r   r   rB   ~  s    z1TestChandrupatla.test_maxiter_callback.<locals>.fr˜   r   c                    sô   ˆ j d7  _ | ˆ_t| dƒs"J ‚ˆj dkrB| j| jfˆ ks€J ‚n>| jˆjk| jˆjk@ | jˆjk| jˆjk@ B }t |¡s€J ‚| jˆ_| jˆ_| jtj	ks J ‚t
ˆ | jˆ¡| jƒ t
ˆ | jˆ¡| jƒ t
ˆ | jˆ¡| jƒ ˆj ˆkrðt‚d S r»   )r¼   rO   r½   rl   ro   r   r¾   rf   r�   r¿   r   rB   rq   rt   r   rM   rÀ   )rO   Úchanged)rµ   rÂ   r%   r´   r?   r   r   rÂ   Œ  s"    
ÿ
z8TestChandrupatla.test_maxiter_callback.<locals>.callbackr*   rÃ   rf   )r   rM   r  r   rÄ   rd   r¾   rh   rj   r¼   rO   rl   ro   rÅ   r�   r    r¿   rÆ   rÇ   r   )rµ   rÂ   rB   r%   r´   r?   r   rÉ   x  s4    ÿÿ
z&TestChandrupatla.test_maxiter_callbackrÊ   c                 C   sL   |\}}}}}t |g|¢R dddœŽ}t|j||ƒddd� t|j|ƒ d S )Ng»½×Ùß|û=gñhãˆµøä>)rª   r©   g:Œ0âŽyE>gü©ñÒMb`?)rJ   rK   )r  r   rM   r   rh   )r?   rÊ   rB   rµ   ÚrootZnfevalÚidrO   r   r   r   rË   ²  s    z"TestChandrupatla.test_nit_expectedr  g�•C‹lçã?gV-²�ïã?rz   c                    sj   ˆ |ƒ}‡ fdd„}t |ˆ dƒˆ dƒ|fdd�}|jjˆ ks@J ‚tj|j|dd�sft |jdk¡sfJ ‚d S )	Nc                    s   | | d   ˆ ¡S )Nr   )rÌ   )r   r  r—   r   r   rB   Æ  s    z&TestChandrupatla.test_dtype.<locals>.frÍ   r   r­   )rG   r©   )rK   r   )r  r   rz   r   Zallcloser¾   rM   )r?   r  rz   rB   rO   r   r—   r   rÐ   À  s    ÿzTestChandrupatla.test_dtypec                 C   s  d}t jt|d�� td ddƒ W d   ƒ n1 s40    Y  d}t jt|d��  tdd„ ddƒ W d   ƒ n1 sv0    Y  d	}t jt|d��( td
d„ ddgg d¢ƒ W d   ƒ n1 sÀ0    Y  d}t jt|d��( tdd„ ddgddgƒ W d   ƒ n1 �s0    Y  d}t jt|d��$ tdd„ dddd� W d   ƒ n1 �sT0    Y  t jt|d��& tdd„ ddtjd� W d   ƒ n1 �sš0    Y  t jt|d��$ tdd„ dddd� W d   ƒ n1 �sÞ0    Y  t jt|d��& tdd„ ddtjd� W d   ƒ n1 �s$0    Y  d}t jt|d��$ tdd„ dddd� W d   ƒ n1 �sl0    Y  t jt|d��$ td d„ dddd� W d   ƒ n1 �s°0    Y  d!}t jt|d��$ td"d„ ddd#d$� W d   ƒ n1 �sø0    Y  d S )%NrÑ   rÒ   r.   rT   rÔ   c                 S   s   | S r<   r   r   r   r   r   r‹   ×  ra   z8TestChandrupatla.test_input_validation.<locals>.<lambda>rÕ   rÖ   c                 S   s   | S r<   r   r   r   r   r   r‹   Ü  ra   r,   rÍ   r×   z,The shape of the array returned by `func`...c                 S   s   | d | d | d gS rØ   r   r   r   r   r   r‹   à  ra   r   rÙ   c                 S   s   | S r<   r   r   r   r   r   r‹   ä  ra   r*   rÚ   c                 S   s   | S r<   r   r   r   r   r   r‹   æ  ra   rÛ   c                 S   s   | S r<   r   r   r   r   r   r‹   è  ra   rÜ   rÝ   c                 S   s   | S r<   r   r   r   r   r   r‹   ê  ra   rÞ   rß   c                 S   s   | S r<   r   r   r   r   r   r‹   î  ra   rà   rá   c                 S   s   | S r<   r   r   r   r   r   r‹   ð  ra   râ   c                 S   s   | S r<   r   r   r   r   r   r‹   ô  ra   rã   rä   )rå   ræ   rç   r  r   rŽ   rè   r   r   r   rê   Î  s:    *.68464644z&TestChandrupatla.test_input_validationc                 C   sª  dd„ }t |ddƒ}|jsJ ‚t|jdƒ dd„ }t |ddƒ}|jsHJ ‚t|jdƒ dd„ }tjdd	��  t |tjtjƒ}W d   ƒ n1 sŽ0    Y  |js¢J ‚t|jtjƒ d
d„ }d}t |g|¢R ddiŽ}|jsæJ |j	|kƒ‚|j
dksôJ ‚|jdk�sJ ‚|jdk�sJ ‚|jdk�s$J ‚t |g|¢R ddiŽ}|j�sFJ ‚|jdk�sVJ ‚|j
dk�sfJ ‚|jdk�svJ ‚t|jdƒ dd„ }t |dddd�}t|jdƒ d S )Nc                 S   s    t  | jt j¡sJ ‚| d d S )Néc   r
   rï   r   r   r   r   rB   û  s    z.TestChandrupatla.test_special_cases.<locals>.fró   r   r
   c                 S   s   | d d S rö   r   r   r   r   r   rB     s    c                 S   s   d|  S rX   r   r   r   r   r   rB     s    rð   rñ   c                 S   s   | d d S )Nr   r
   r   r   r   r   r   rB     s    )rÍ   r   r%   r   r   r,   rÍ   r   c                 S   s   ||  d S rX   r   r÷   r   r   r   rB   )  s    r*   rF   rù   )r  rd   r   r   r   r   rû   Úinfrl   ro   rj   rh   rf   rü   r   r   r   rý   ö  s<    

.
z#TestChandrupatla.test_special_casesN)rþ   rÿ   r   rB   rå   r  r  r   ru   rQ   r  r‰   r£   r¹   rÉ   r   rË   r  r  r  rÐ   rê   rý   r   r   r   r   r  Ý  s   

L.:
(r  ) rå   Únumpyr   Znumpy.testingr   r   r   Zscipyr   Z(scipy._lib._elementwise_iterative_methodZ_libZ_elementwise_iterative_methodr�   Zscipy.optimize._chandrupatlar   r   r  Zscipy.optimize._tstutilsr   Ú	itertoolsr	   Z
test_zerosr   r   r   r   r   r   r)   r  r;   r  r   r   r   r   Ú<module>   s”   É;  m