o
    Ö­j³�  ã                   @   s  d dl Z d dlZd dlmZ d dlmZmZ d dlm	  m
Z d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ dd	„ Zd
d„ ZdZdZe jjded�e jjded�ee j d¡G dd„ dƒƒƒƒƒZe jjded�e jjded�ee j d¡G dd„ dƒƒƒƒƒZdS )é    N)Ú_ELIMITS)Úbracket_rootÚbracket_minimum)Ústats)Úxp_assert_closeÚxp_assert_equalÚxp_assert_lessÚarray_namespace)Úxp_ravel)Úarray_api_compatiblec                  O   s6   t | i |¤Ž}|j\|_|_|j\|_|_|`|`|S ©N)r   ÚbracketÚxlÚxrÚ	f_bracketÚflÚfr©ÚargsÚkwargsÚres© r   ú^/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_bracket.pyÚ_bracket_root   s   r   c                  O   s>   t | i |¤Ž}|j\|_|_|_|j\|_|_|_|`|`|S r   )	r   r   r   Úxmr   r   r   Úfmr   r   r   r   r   Ú_bracket_minimum#   s   r   z5Array API does not support fancy indexing assignment.z*JAX arrays do not support item assignment.Úarray_api_strict)Úreasonz	jax.numpyÚskip_xp_backendsc                	   @   s>  e Zd Zej dd¡ej dd¡ej dd¡ej dd¡dd„ ƒƒƒƒZd	d
„ Zej dde 	ddd¡g¡ej dddg¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZ
ej deƒ dddg¡dd„ ƒZd d!„ Zej d"d#d#d$gf¡ej dddg¡ej dddg¡ej d%d&¡d'd(„ ƒƒƒƒZd)d*„ Zd+d,„ Zd-d.„ ZdS )/ÚTestBracketRootÚseed)i½&²$l   Šv ih¿0Úuse_xmin©FTÚ
other_sideÚfix_one_sidec                    s¾  t j |¡}| |jdd�g d¢ ¡\}}}	d|	 }	|| }
‡ fdd„‰ |rb| | ¡  ¡}| | ||  | ¡| |	¡ ¡}||| |	|    ||| |	|d     }}t||
|	|d�}n)| | |
| ¡| |	¡ ¡}|
||	|   |
||	|d    }}t||
|	d�}|r¯|d	  |d
  |d
< |d	< | | }}d|v r¯| d¡ |d< |r½|r¹|
 |d< n|
|d< dˆ _t	ˆ fi |¤Ž}|sí|j
d|jd    krédˆ jd    kréd|d  ksìJ ‚ J ‚n%|j
|jd d   k�rˆ jd d   k�r|d d k�sJ ‚ J ‚| |j|jg¡}t|| ||g¡ƒ | |j|jg¡}t|ˆ |ƒƒ |j|jk�s>J ‚| |¡}|d |d  k�sOJ ‚|jdk�sWJ ‚|j�s]J ‚d S )Né   ©Úsize)ç     jø@é
   é   é   c                    ó   ˆ  j d7  _ | S ©Nr,   ©Úcount©Úx©Úfr   r   r4   G   ó   z-TestBracketRoot.test_nfev_expected.<locals>.f)Úxl0Úxr0ÚfactorÚxmin)r6   r7   r8   r7   r6   r9   Úxmaxr   é   )ÚnpÚrandomÚdefault_rngÚasarrayÚceilÚlogÚdictÚpopr0   r   ÚnfevÚnitr   r   r   r   r   ÚsignÚstatusÚsuccess)Úselfr!   r"   r$   r%   ÚxpÚrngr6   Údr8   r7   r9   ÚnÚlÚur   r   r   r   Úsignsr   r3   r   Útest_nfev_expected4   sH    $2&FJ
z"TestBracketRoot.test_nfev_expectedc                 C   s   t j ¡  |¡| S r   )r   Ú	_stats_pyÚ_SimpleNormalÚcdf)rI   ÚqÚpr   r   r   r4   �   ó   zTestBracketRoot.frV   ç333333ã?çš™™™™™©?gffffffî?r*   r9   éûÿÿÿNr:   r+   r8   ç333333ó?r;   c              
   C   sF   t | j| d¡d|||| |¡fd�}t| |j¡ | |j¡ƒ d S )Nç{®Gáz„¿ç{®Gáz„?)r9   r:   r8   r   )r   r4   r?   r   rF   r   r   )rI   rV   r9   r:   r8   rJ   r   r   r   r   Ú
test_basic„   s   ÿ zTestBracketRoot.test_basicÚshape©é   ©r&   é   ©r&   r;   r;   c              
      sv  |rt  ddd¡ |¡nt  d¡}|f}d‰t j‡‡fdd„ƒ}‡‡fdd	„‰d
ˆ_t j d¡}|j|d� }|j|d�}d| d| }	}
|r\|j|d�dk}t j t j|	|< |
|< |j|d�d }||||	|
||ƒ 	¡ }ˆ 
|¡ˆ 
|¡ˆ 
|	¡ˆ 
|
¡ˆ 
|¡f\}}}	}
}ttˆj
|ƒƒ}tˆ|||	|
||ˆd�}g d¢}|D ]#‰ ‡ ‡fdd„|D ƒ}t|ˆ ƒ}tt|ˆd�ˆ |¡ƒ t|j|ƒ q¤tˆ 
d¡ƒ}|jj|jksØJ ‚|ræˆ |jdd… ¡sæJ ‚|jjˆjksïJ ‚|jjˆjksøJ ‚|jjˆjk�sJ ‚ˆ |j¡ˆjd k�sJ ‚t|j|j ƒ t|j!ˆ 
ˆj"|jg|¢R Ž ¡ƒ t|j#ˆ 
ˆj"|j g|¢R Ž ¡ƒ d S )Nçš™™™™™©¿çÍÌÌÌÌÌð?ra   rX   r*   c              
      s   t ˆj| |||||fˆ d�S )N©r9   r:   r8   r   Úmaxiter)r   r4   )r6   r7   r9   r:   r8   rV   ©rh   rI   r   r   Úbracket_root_single–   s   þz?TestBracketRoot.test_vectorization.<locals>.bracket_root_singlec                     s   ˆ  j d7  _ ˆj| i |¤ŽS r.   )Úf_evalsr4   )r   r   )r4   rI   r   r   r4   œ   ó   z-TestBracketRoot.test_vectorization.<locals>.fr   éÊÔ# r'   ç     @�@ç      à?ç      ø?rg   )r   r   r   r   rH   rD   rE   c                    ó   g | ]
}ˆ  t|ˆ ƒ¡‘qS r   ©r?   Úgetattr©Ú.0Úref©ÚattrrJ   r   r   Ú
<listcomp>³   ó    z6TestBracketRoot.test_vectorization.<locals>.<listcomp>©rJ   ç      ð?r,   éÿÿÿÿr;   )$r<   ÚlinspaceÚreshapeÚfloat64Ú	vectorizerk   r=   r>   ÚinfÚravelr?   ÚtupleÚmapr   rs   r   r
   Ústackr   r_   r	   rH   ÚdtypeÚboolÚallrG   Úint32rD   rE   Úmaxr   r   r   r   r4   r   )rI   r_   rJ   rV   r   rj   rK   r6   r7   r9   r:   Úir8   Úrefsr   ÚattrsÚref_attrÚres_attrÚxp_testr   )rx   r4   rh   rI   rJ   r   Útest_vectorizationŽ   sR   "þÿ
"&z"TestBracketRoot.test_vectorizationc                    s¬   ‡ fdd„}ˆ j dˆ jd�f}t|ˆ  g d¢¡ˆ  g d¢¡ˆ  ˆ j dˆ j ˆ j dg¡ˆ  ˆ jd	ˆ jˆ jd
g¡|dd�}ˆ jtjttjtj	tj
gˆ jd�}t|j|ƒ d S )Nc                    ó>   dd„ dd„ dd„ ‡fdd„dd„ g‰ ‡ fdd„t | |ƒD ƒS )	Nc                 S   ó   | d S )Nrp   r   r1   r   r   r   Ú<lambda>È   ó    z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>c                 S   r”   ©Niè  r   r1   r   r   r   r•   É   r–   c                 S   r”   r—   r   r1   r   r   r   r•   Ê   r–   c                    s
   | ˆ j  S r   ©Únanr1   r{   r   r   r•   Ë   s   
 c                 S   ó   | S r   r   r1   r   r   r   r•   Ì   ó    c                    s    g | ]\}}ˆ t |ƒ |ƒ‘qS r   )Úint©ru   r2   Új©Úfuncsr   r   ry   Î   s     z9TestBracketRoot.test_flags.<locals>.f.<locals>.<listcomp>©Úzip©ÚxsÚjsr{   rŸ   r   r4   Ç   ó   
üz%TestBracketRoot.test_flags.<locals>.fr+   ©r‡   )ç      ð¿r¨   r¨   r¨   ç      @)r,   r,   r,   r,   éüÿÿÿr}   é   r,   r;   r&   )r6   r7   r9   r:   r   rh   )ÚarangeÚint64r   r?   r‚   ÚeimÚ_ECONVERGEDr   Ú	_ECONVERRÚ
_EVALUEERRÚ
_EINPUTERRrŠ   r   rG   )rI   rJ   r4   r   r   Ú	ref_flagsr   r{   r   Ú
test_flagsÄ   s$   	ûüûzTestBracketRoot.test_flagsÚrootç�•C‹lçã?çV-²�ïã?r‡   ©Úfloat16Úfloat32r€   c           	         sò   t |ˆ ƒ‰ t| d¡ƒ‰|d u r|n|j|ˆ d�}|d u r|n|j|ˆ d�}|j|ˆ d�}‡ ‡fdd„}|jddgˆ d�}t|g|¢R |||fdœŽ}| |j¡sSJ ‚|jj|jj  krbˆ kseJ ‚ J ‚|j	j|j
j  krtˆ kswJ ‚ J ‚d S )Nr|   r§   c                    ó   ˆ  | | d ˆ ¡S )Nr&   ©Úastype)r2   rµ   ©r‡   r‘   r   r   r4   í   rW   z%TestBracketRoot.test_dtype.<locals>.fr\   r]   )r9   r:   r   )rs   r	   r?   r   r‰   rH   r   r‡   r   r   r   )	rI   rµ   r9   r:   r‡   rJ   r4   r   r   r   r¾   r   Ú
test_dtypeá   s   
$(zTestBracketRoot.test_dtypec                 C   sú  d}t jt|d�� td ddƒ W d   ƒ n1 sw   Y  d}t jt|d�� tdd„ ddƒ W d   ƒ n1 s;w   Y  t jt|d�� td	d„ dd
ƒ W d   ƒ n1 sZw   Y  t jt|d�� tdd„ ddtd� W d   ƒ n1 s{w   Y  t jt|d�� tdd„ ddtƒ d� W d   ƒ n1 s�w   Y  t jt|d�� tdd„ ddtd� W d   ƒ n1 s¾w   Y  d}t jt|d�� tdd„ dddd� W d   ƒ n1 sáw   Y  d}t jt|d�� tdd„ | ddg¡| g d¢¡ƒ W d   ƒ n	1 �sw   Y  d}t jt|d�� tdd„ dddd� W d   ƒ n	1 �s1w   Y  t jt|d�� tdd„ dddd� W d   ƒ n	1 �sSw   Y  t jt|d�� tdd„ ddd d� W d   ƒ d S 1 �svw   Y  d S )!Nú`func` must be callable.©Úmatchrª   rc   ú...must be numeric and real.c                 S   rš   r   r   r1   r   r   r   r•   ÿ   r›   z7TestBracketRoot.test_input_validation.<locals>.<lambda>y      À      ð?c                 S   rš   r   r   r1   r   r   r   r•     r›   Úhelloc                 S   rš   r   r   r1   r   r   r   r•     r›   ©r9   c                 S   rš   r   r   r1   r   r   r   r•     r›   ©r:   c                 S   rš   r   r   r1   r   r   r   r•     r›   ©r8   ú0All elements of `factor` must be greater than 1.c                 S   rš   r   r   r1   r   r   r   r•     r›   ro   Ú	broadcastc                 S   rš   r   r   r1   r   r   r   r•     r›   éþÿÿÿéýÿÿÿ)r&   rc   r+   ú)`maxiter` must be a non-negative integer.c                 S   rš   r   r   r1   r   r   r   r•     r›   rp   )rh   c                 S   rš   r   r   r1   r   r   r   r•     r›   r}   c                 S   rš   r   r   r1   r   r   r   r•     r›   Ú	shrubbery)	ÚpytestÚraisesÚ
ValueErrorr   r<   ÚobjectÚsumÚ	Exceptionr?   ©rI   rJ   Úmessager   r   r   Útest_input_validationö   sL   ÿÿÿÿÿÿÿ&ÿÿÿ$ÿz%TestBracketRoot.test_input_validationc                    s   t | d¡ƒ‰‡fdd„‰ tˆ | d¡| d¡ƒ}|jsJ ‚dd„ ‰ | d¡| d¡f}tˆ g|¢R dd	iŽ}|jsAJ |j|kƒ‚|jd	ksHJ ‚|jd
ksOJ ‚|jdksVJ ‚dd„ ‰ tˆ | d¡| d¡| d¡d�}|jspJ ‚t	|j
ˆ |jdƒƒ ‡ fdd„‰ d	ˆ _tˆ | d¡| d¡ƒ ˆ jd
ks–J ‚d	ˆ _tˆ | d¡| d¡d
d�}|jdks®J ‚t	|j| d¡dd� t	|j| d¡dd� tjdd�� tˆ | d¡| d¡d	d�}W d   ƒ n1 sãw   Y  t	|j| d¡dd� tjdd�� tˆ | d¡| d¡d	d�}W d   ƒ n	1 �sw   Y  t	|j| d¡dd� tjdd�� tˆ | d¡| d¡d d�}W d   ƒ n	1 �sCw   Y  |j�rNJ ‚d S )!Nr|   c                    ó   ˆ   | jd¡s	J ‚| d d S )Nzreal floatingéc   r,   ©Úisdtyper‡   r1   ©r‘   r   r   r4   #  ó   z-TestBracketRoot.test_special_cases.<locals>.fç      Àg      @c                 S   r”   )Nr*   r   r1   r   r   r   r4   +  s   ç      Àrh   r   r;   rÊ   c                 S   s   ||  d S r.   r   ©r2   Úcr   r   r   r4   6  ó   r¨   ç      @©r   r&   c                    r-   r.   r/   r1   r3   r   r   r4   @  r5   iöÿÿÿé   g      $@rÇ   rc   ç        gVçž¯Ò<)ÚatolÚignore)ÚoverrÅ   g      $Àg      ÀrÆ   r,   )r	   r?   r   rH   r   r   rE   rD   rG   r   r   r0   r<   Úerrstate)rI   rJ   r   r   r   )r4   r‘   r   Útest_special_cases  s\   
ÿ
ÿÿÿÿÿÿÿz"TestBracketRoot.test_special_casesc           	      C   sØ   dd„ }t  ddg¡}t|dt j d|fd�}dd„ }g d	¢}g d
¢}g d¢}g d¢}t j dt j t j dt j t j t j g}dt jddt jdddg}t|||||||fd�}tdd„ dt j dd�}|jsjJ ‚d S )Nc                 S   s   t  | ¡| S r   ©r<   Úexp)r2   rV   r   r   r   r4   j  s   z)TestBracketRoot.test_bug_fixes.<locals>.fg�Âõ(\�Ò?gffffffÖ?r}   r   )r6   r9   r:   r   c                 S   s   t  | | ¡| S r   rë   )r2   rV   rà   r   r   r   r4   q  s   )g§èi<è„Ô?gÈØ¾xÙ?gtªÆ\c¡Ù?gL·�0+à?gtšäË4Ïá?gŽ¡¿j~¾?gEˆ§.KØ?gð'2ŒLå?)r|   r¨   r|   r|   r¨   r|   r|   r|   )gÊ·©G;†Àg¡_„¾.:
@gÊëbG½ Àg¤¯9jùü¿g¨¡WM!�í?gËðeÃêÀg~:ŸÏZå¿g²öV¨^ŒÜ¿)gÊ·©G;†ÀgÐ/B_@g“ÖÅŽzÀgH_sÔòÿè¿gÔÐ«¦�Àþ?g•áË†-Ô÷¿rå   rå   rå   ©r6   r7   r9   r:   r   c                 S   s   | d S )Ng      Ð?r   r1   r   r   r   r•   ƒ  r–   z0TestBracketRoot.test_bug_fixes.<locals>.<lambda>ç      à¿)r6   r9   r:   )r<   r?   r   r‚   rH   )	rI   r4   rV   r   rà   r6   r7   r9   r:   r   r   r   Útest_bug_fixesc  s   "ÿzTestBracketRoot.test_bug_fixes)Ú__name__Ú
__module__Ú__qualname__rÎ   ÚmarkÚparametrizerQ   r4   r<   r~   r^   r„   r’   r´   r¿   rÖ   rê   rï   r   r   r   r   r    /   s.    I
5'Fr    c                   @   s°  e Zd Zdd„ Zdd„ Zdddddddœdd„Zej d	d
¡ej dd¡ej dd¡dd„ ƒƒƒZ	dd„ Z
ej ddddgf¡ej dd¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZejjddd�d d!„ ƒZej d"d#dg¡ej d$d%¡ej d&d'¡ej d(d)¡d*d+„ ƒƒƒƒZej d,d-¡ej d(d.¡d/d0„ ƒƒZej d1d2¡ej d(d3¡d4d5„ ƒƒZej d6d7¡d8d9„ ƒZej d:eƒ d;d<d=g¡d>d?„ ƒZd@dA„ ZdBdC„ ZdDdE„ ZdS )FÚTestBracketMinimumc                    s   ‡ fdd„‰ dˆ _ ˆ S )Nc                    s   ˆ  j d7  _ | | d | S )Nr,   r;   r/   )r2   ÚaÚbr3   r   r   r4   �  rl   z$TestBracketMinimum.init_f.<locals>.fr   r/   )rI   r   r3   r   Úinit_fŒ  s   zTestBracketMinimum.init_fc                 C   s`   |  |j|jk |j|jk @ ¡sJ ‚|  |j|jk|j|jk@ |j|jk|j|jk@ B ¡s.J ‚d S r   )r‰   r   r   r   r   r   r   )rI   ÚresultrJ   r   r   r   Úassert_valid_bracket“  s   ÿÿÿz'TestBracketMinimum.assert_valid_bracketN)r6   r7   r8   r9   r:   r   c             	   C   s$   d}dd„ t |||||||fƒD ƒS )N©r6   r7   r9   r:   r8   r   c                 S   s   i | ]\}}|d ur||“qS r   r   )ru   ÚnameÚvalr   r   r   Ú
<dictcomp>   s
    ÿz1TestBracketMinimum.get_kwargs.<locals>.<dictcomp>r¡   )rI   r6   r7   r8   r9   r:   r   Únamesr   r   r   Ú
get_kwargsœ  s   ÿzTestBracketMinimum.get_kwargsr!   )l	   Õ^€0#,ãN0LÀ“b*&ç l	   Ÿ}¶SÉE�S].HM¼ëa l	   êFäD…u”B�P_KU r"   r#   r$   c                 C   s2  t j |¡}| d¡| d¡f}| |jdd�g d¢ ¡\}}}	}
|| }||	 }|
d7 }
|r™|j| ¡  d |jd�}t| | ||  | ¡| |
¡ ¡ƒ}||| |
|    }||| |
|d     }|dkry||| |
|d     n|}|d |d kr˜|d7 }||| |
|    ||}}}nUd }t| | || ¡| |
¡ ¡ƒ}|||
|   }|dkrÂ|||
|d    n|}|dkrÒ|||
|d    n|}|d |d krî|d7 }|||
|   ||}}}|  ¡ }d }|�r| | | }}}d |d u�r| nd }}| | | }}}| j	|||||
|d	�}t
|| |¡fi |¤Ž}|j|jd
 k�s<J ‚|j|jk�sEJ ‚|j|k�sMJ ‚t|j|ƒ t|j|ƒ t|j|ƒ t|j||g|¢R Ž ƒ t|j||g|¢R Ž ƒ t|j||g|¢R Ž ƒ |  ||¡ |jdk�s‘J ‚|j�s—J ‚d S )Nrå   rc   r'   )r)   r*   r*   r+   r,   r+   r§   r;   rû   r&   r   )r<   r=   r>   r?   r€   rœ   r@   rA   rø   r   r   rD   rE   r0   r   r   r   r   r   r   r   rú   rG   rH   )rI   r!   r"   r$   rJ   rK   r   r6   Úd1Úd2r8   Úxm0r7   r9   rM   ÚlowerÚmiddleÚupperr4   r:   r   rù   r   r   r   rQ   ¥  s`   "(&
ÿ€"  
ÿÿz%TestBracketMinimum.test_nfev_expectedc           
   	      s°   ‡ fdd„}ˆ j dˆ jd�f}ˆ  g d¢¡}ˆ  g d¢¡}ˆ  g d¢¡}ˆ  ˆ j dˆ j ˆ j d	g¡}t||||||d
d�}ˆ jtjttjtj	tj
gˆ jd�}	t|j|	ƒ d S )Nc                    r“   )	Nc                 S   s   | d d S )Nrp   r;   r   r1   r   r   r   r•   ú  s    z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>c                 S   rš   r   r   r1   r   r   r   r•   û  r›   c                 S   rš   r   r   r1   r   r   r   r•   ü  r›   c                    s   ˆ j S r   r˜   r1   r{   r   r   r•   ý  s    c                 S   ó   | d S ©Nr;   r   r1   r   r   r   r•   þ  r–   c                    s   g | ]
\}}ˆ | |ƒ‘qS r   r   r�   rŸ   r   r   ry      rz   z<TestBracketMinimum.test_flags.<locals>.f.<locals>.<listcomp>r¡   r£   r{   rŸ   r   r4   ù  r¦   z(TestBracketMinimum.test_flags.<locals>.fr+   r§   )r¨   r¨   r¨   r¨   ç      @)rå   rå   rå   rå   r©   )r|   r|   r|   r|   ç       @r¨   g       @r&   )r6   r7   r9   r   rh   )r¬   r­   r?   r‚   r   r®   r¯   r   r°   r±   r²   rŠ   r   rG   )
rI   rJ   r4   r   r6   r  r7   r9   rù   Úreference_flagsr   r{   r   r´   ö  s    	 ÿ
þþzTestBracketMinimum.test_flagsÚminimumr¶   r·   r‡   r¸   r9   rZ   r:   r+   c              	      s$  t |ˆ ƒ‰ t| d¡ƒ‰|d u r|n|j|ˆ d�}|d u r|n|j|ˆ d�}|j|ˆ d�}‡ ‡fdd„}g d¢\}}}	t||j|ˆ d�|j|ˆ d�|j|	ˆ d�|||fd�}
| |
j¡s^J ‚|
jj|
jj  krt|
j	j  krtˆ kswJ ‚ J ‚|
j
j|
jj  kr�|
jj  kr�ˆ ks�J ‚ J ‚d S )Nr|   r§   c                    r»   r  r¼   )r2   r  r¾   r   r   r4     rW   z)TestBracketMinimum.test_dtypes.<locals>.f)r\   rå   r]   rí   )rs   r	   r?   r   r‰   rH   r   r‡   r   r   r   r   r   )rI   r  r9   r:   r‡   rJ   r4   r6   r  r7   rù   r   r¾   r   Útest_dtypes  s   
þ26zTestBracketMinimum.test_dtypesTzstr/object arrays)Únp_onlyr   c                 C   sn  d}t jt|d�� td ddd� W d   ƒ n1 sw   Y  d}t jt|d�� tdd„ | d	¡ƒ W d   ƒ n1 s>w   Y  t jt|d�� td
d„ | d¡dd� W d   ƒ n1 saw   Y  t jt|d�� tdd„ | d¡dd� W d   ƒ n1 s„w   Y  t jt|d�� tdd„ | d¡td� W d   ƒ n1 s§w   Y  t jt|d�� tdd„ | d¡tƒ d� W d   ƒ n1 sËw   Y  t jt|d�� tdd„ | d¡td� W d   ƒ n1 sîw   Y  d}t jt|d�� tdd„ | d¡dd� W d   ƒ n	1 �sw   Y  d}t jt|d�� tdd„ | ddg¡g d¢d� W d   ƒ n	1 �s>w   Y  d}t jt|d�� tdd„ | d¡ddd � W d   ƒ n	1 �sew   Y  t jt|d�� td!d„ | d¡dd"d � W d   ƒ n	1 �sŠw   Y  t jt|d�� td#d„ | d¡dd$d � W d   ƒ d S 1 �s°w   Y  d S )%NrÀ   rÁ   rª   rc   )r6   rÃ   c                 S   r  r  r   r1   r   r   r   r•   1  r–   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>y      @      ð?c                 S   r  r  r   r1   r   r   r   r•   3  r–   rÄ   c                 S   r  r  r   r1   r   r   r   r•   5  r–   zfarcical aquatic ceremony©r7   c                 S   r  r  r   r1   r   r   r   r•   8  r–   rÅ   c                 S   r  r  r   r1   r   r   r   r•   :  r–   rÆ   c                 S   r  r  r   r1   r   r   r   r•   <  r–   rÇ   rÈ   c                 S   rš   r   r   r1   r   r   r   r•   @  r›   ro   z+shape mismatch: objects cannot be broadcastc                 S   r  r  r   r1   r   r   r   r•   E  r–   rÊ   rË   )rË   rª   rZ   rÌ   c                 S   r  r  r   r1   r   r   r   r•   I  r–   rp   )r7   rh   c                 S   r  r  r   r1   r   r   r   r•   K  r–   r}   c                 S   r  r  r   r1   r   r   r   r•   M  r–   Úekki)rÎ   rÏ   rÐ   r   r?   r<   rÑ   rÒ   rÔ   r   r   r   rÖ   '  sV   ÿÿÿÿÿÿÿÿÿ"ÿÿÿ$ÿz(TestBracketMinimum.test_input_validationr6   rå   r  )rY   çš™™™™™¹?g333333Ã?r7   )çš™™™™™É?çš™™™™™Ù?rX   Nr   ))r[   r   )rî   r   )r  r   )r  r   )gÍÌÌÌÌÌ@r   )gffffff5@r   )gffffff^@r   )gš™™™„¶@r   )gš™™™™™Àr   )gÍÌÌÌÌÌ)Àr   )gfffffFbÀr   c           	      C   sz   |   ¡ }| j||tt|j|ƒƒd�}t||j||jd�fi |¤Ž}|  ||¡ |jdks.J ‚|j	s3J ‚|j
|jks;J ‚d S )N©r6   r7   r   r§   r   )rø   r   r„   r…   r?   r   r€   rú   rG   rH   rD   r0   )	rI   r6   r  r7   r   rJ   r4   r   rù   r   r   r   Útest_scalar_no_limitsO  s   
z(TestBracketMinimum.test_scalar_no_limitszxl0,xm0,xr0,xmin))ro   ç      è?r|   rå   )r|   ç      @r©   rå   )r
  r©   r	  rå   )g      (@ç      0@ç      4@rå   )Nr  r|   rå   )Nr  r©   rå   )Nr©   r	  rå   )Nr  r  rå   ))rå   rå   )gYóøÂn¥rå   )g#B’¡œÇ;rå   )r  rå   )r  rå   )r  rå   c           
      C   sv   |   ¡ }| j|||tt|j|ƒƒd�}t|| |¡fi |¤Ž}	|  |	|¡ |	jdks,J ‚|	js1J ‚|	j	|j
ks9J ‚d S )N)r6   r7   r9   r   r   )rø   r   r„   r…   r?   r   rú   rG   rH   rD   r0   )
rI   r6   r  r7   r9   r   rJ   r4   r   rù   r   r   r   Útest_scalar_with_limit_lefte  s   
ÿ
z.TestBracketMinimum.test_scalar_with_limit_leftzxl0,xm0,xr0,xmax))r  ç333333Ó?r  r|   )rY   ç333333³?r  r|   )çš™™™™™É¿çš™™™™™¹¿rå   r|   )ç3333335Àç33333³1Àgffffff,Àr|   )r  r  Nr|   )rY   r  Nr|   )r  r  Nr|   )r  r   Nr|   ))gÿÿÿÿÿÿï?rå   )gÍÌÌÌÌÌì?rå   )gffffffæ?rå   )ro   rå   c           
         s†   |   ¡ }t‡ fdd„|D ƒƒ}| j||||d�}t|ˆ j|ˆ jd�fi |¤Ž}	|  |	ˆ ¡ |	jdks4J ‚|	js9J ‚|	j	|j
ksAJ ‚d S )Nc                 3   ó    � | ]}ˆ j |ˆ jd �V  qdS ©r§   N©r?   r€   ©ru   Úargr{   r   r   Ú	<genexpr>¦  ó   € zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>)r6   r7   r:   r   r§   r   )rø   r„   r   r   r?   r€   rú   rG   rH   rD   r0   )
rI   r6   r  r7   r:   r   rJ   r4   r   rù   r   r{   r   Útest_scalar_with_limit_right‹  s   
z/TestBracketMinimum.test_scalar_with_limit_rightzxl0,xm0,xr0,xmin,xmax,args))r  r  r  Nr|   ©r|   rå   )gffffffö?ç333333ÿ?r  r  N©r  rå   )gÍÌÌÌÌÌ@ç      
@g333333@Nçš™™™™ÙX@©r-  r   )rc   ç      @r+   çÍÌÌÌÌL:ÀN©r0  r   )Nr  NNr|   r)  )Nr*  Nr  Nr+  )Nr,  NNr-  r.  )Nr/  Nr0  Nr1  c                 C   sx   |   ¡ }| j|||tt|j|ƒƒd�}	t|| |¡fi |	¤Ž}
|
jdks&J ‚|d |
j|
jfv s2J ‚|
j	|j
ks:J ‚d S )N)r7   r9   r:   r   r}   r   )rø   r   r„   r…   r?   r   rG   r   r   rD   r0   )rI   r6   r  r7   r9   r:   r   rJ   r4   r   rù   r   r   r   Útest_minimum_at_boundary_point®  s   ]
ÿz1TestBracketMinimum.test_minimum_at_boundary_pointr_   r`   rb   rd   c                    s\  |rt  ddd¡ |¡nd}|df}d‰t j‡‡fdd„ƒ}ˆ ¡ }t j d	¡}|j|d
� }|j|d
�}	||j|d
�|	|   }
d| d|	 }}|r`|j|d
�dk}t j t j||< ||< |j|d
�d }||
||	||||ƒ ¡ }t	‡fdd„|D ƒƒ}t
|ˆ |
¡||	||||ˆd�	}g d¢}|D ]#‰ ‡ ‡fdd„|D ƒ}t|ˆ ƒ}tt|ˆd�ˆ |¡ƒ t|j|ƒ q•tˆ d¡ƒ}|jj|jksÉJ ‚|r×ˆ |jdd… ¡s×J ‚|jjˆjksàJ ‚|jjˆjkséJ ‚|jjˆjksòJ ‚ˆ |j¡|jd ksÿJ ‚ˆ |ˆ¡ t|j||jg|¢R Ž ƒ t|j ||j!g|¢R Ž ƒ t|j"||j#g|¢R Ž ƒ d S )Nre   rf   ra   rX   rå   r*   c                    s"   t ˆ ¡ | |||||ˆ |dfd�	S )Nrå   )r6   r7   r9   r:   r8   rh   r   )r   rø   )r  r6   r7   r9   r:   r8   rö   ri   r   r   Úbracket_minimum_single  s   þzETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_singlerm   r'   rn   ro   rp   c                 3   r!  r"  r#  r$  r{   r   r   r&  -  r'  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>)r6   r7   r9   r:   r8   r   rh   )	r   r   r   r   r   r   rH   rD   rE   c                    rq   r   rr   rt   rw   r   r   ry   3  rz   z9TestBracketMinimum.test_vectorization.<locals>.<listcomp>r{   r|   r,   r}   r&   )$r<   r~   r   r�   rø   r=   r>   r‚   rƒ   r„   r   r?   rs   r   r
   r†   r   r_   r	   rH   r‡   rˆ   r‰   rG   rŠ   rD   rE   r‹   r0   rú   r   r   r   r   r   r   )rI   r_   rJ   rö   r   r3  r4   rK   r6   r7   r  r9   r:   rŒ   r8   r�   r   rŽ   r�   r�   r‘   r   )rx   rh   rI   rJ   r   r’     sL   ÿ
z%TestBracketMinimum.test_vectorizationc                    s¬  t | d¡ƒ‰ ‡ fdd„}t||jd|jd�dd�}|jsJ ‚dd„ }| d	¡| d
¡| d¡}}}t||||dd�}t|j|ƒ t|j|ƒ t|j|ƒ dd„ }t|| d
¡| d¡d�}|jseJ ‚t	|j
||jdƒƒ |  ¡ }| d
¡| d¡| d¡}}}| d¡| d¡f}t|||||d�}|jdksžJ ‚t|j|ƒ t|j|ƒ t|j|ƒ t|j
||g|¢R Ž ƒ t|j||g|¢R Ž ƒ t|j||g|¢R Ž ƒ d S )Nr|   c                    r×   )NÚnumericéb   r,   rÙ   r1   rÛ   r   r   r4   K  rÜ   z0TestBracketMinimum.test_special_cases.<locals>.frÝ   r§   r+   r  c                 S   s   | d d S )Nr;   r*   r   r1   r   r   r   r4   S  rá   rÞ   r¨   r
  r   )r6   r7   rh   c                 S   s   || d  d S )Nr;   r,   r   rß   r   r   r   r4   ]  s   râ   rã   r&   r  rå   r  )r	   r?   r   r€   rH   r   r   r   r   r   r   rø   r0   r   r   )rI   rJ   r4   rù   r6   r  r7   r   r   rÛ   r   rê   E  s2   
"
"z%TestBracketMinimum.test_special_casesc                    sN   ˆ  d¡ˆ  d¡‰‰ ‡ ‡‡fdd„}t|ˆ  d¡ˆˆ d�}ˆ|jks%J ‚d S )NgJg7e4Ì?g[2\W«Zö?c                    s(   ˆ  ˆ¡ˆ  ˆ ¡}}|| |  d  S ©Nr}   ©rA   ©r2   Úlog_aÚlog_b©r:   r9   rJ   r   r   r4   w  s   z0TestBracketMinimum.test_gh_20562_left.<locals>.fgµæ_\Ý¶á?©r9   r:   )r?   r   r   ©rI   rJ   r4   rù   r   r;  r   Útest_gh_20562_leftr  s   ÿz%TestBracketMinimum.test_gh_20562_leftc                    sN   ˆ  d¡ˆ  d¡‰‰ ‡ ‡‡fdd„}t|ˆ  d¡ˆˆ d�}ˆ |jks%J ‚d S )Ng[2\W«Zö¿gJg7e4Ì¿c                    s*   ˆ  ˆ  ¡ˆ  ˆ ¡}}|| |  d S r6  r7  r8  r;  r   r   r4   „  s   z1TestBracketMinimum.test_gh_20562_right.<locals>.fgµæ_\Ý¶á¿r<  )r?   r   r   r=  r   r;  r   Útest_gh_20562_right  s   ÿz&TestBracketMinimum.test_gh_20562_right)rð   rñ   rò   rø   rú   r   rÎ   ró   rô   rQ   r´   r  r   rÖ   r  r  r(  r2  r„   r’   rê   r>  r?  r   r   r   r   rõ   ‡  sl    
ÿ	þG
'þ	ýÿ
ýÿ	
þ
\	
1-rõ   ) rÎ   Únumpyr<   Úscipy.optimize._bracketr   Úscipy.optimize.elementwiser   r   Ú(scipy._lib._elementwise_iterative_methodÚ_libÚ_elementwise_iterative_methodr®   Úscipyr   Úscipy._lib._array_api_no_0dr   r   r   r	   Úscipy._lib._array_apir
   Úscipy.conftestr   r   r   Úarray_api_strict_skip_reasonÚjax_skip_reasonró   r   Úusefixturesr    rõ   r   r   r   r   Ú<module>   s2    		
  V
