o
    i                     @   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   [/home/kim/smarthome/.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.Z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 ih0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rd jd    krd|d  ksJ  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   r3   G      z-TestBracketRoot.test_nfev_expected.<locals>.f)xl0xr0factorxmin)r5   r6   r7   r6   r5   r8   xmaxr      )nprandomdefault_rngasarrayceillogdictpopr/   r   nfevnitr   r   r   r   r   signstatussuccess)selfr    r!   r#   r$   xprngr5   dr7   r6   r8   nlur   r   r   r   Zsignsr   r2   r   test_nfev_expected4   sH    $2&FJ
z"TestBracketRoot.test_nfev_expectedc                 C   s   t j || S r   )r   Z	_stats_pyZ_SimpleNormalZcdf)rH   qpr   r   r   r3         zTestBracketRoot.frQ   333333?皙?gffffff?r)   r8   Nr9   r*   r7   333333?r:   c              
   C   sF   t | j|dd|||||fd}t||j ||j d S )N{Gz{Gz?)r8   r9   r7   r   )r   r3   r>   r   rE   r   r   )rH   rQ   r8   r9   r7   rI   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| qt
d}|jj|jksJ |r|jdd sJ |jjjksJ |jjjksJ |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皙?r\   rS   r)   c              
      s   t j| |||||f dS )Nr8   r9   r7   r   maxiter)r   r3   )r5   r6   r8   r9   r7   rQ   rc   rH   r   r   bracket_root_single   s   z?TestBracketRoot.test_vectorization.<locals>.bracket_root_singlec                     s     j d7  _ j| i |S r-   )f_evalsr3   )r   r   )r3   rH   r   r   r3         z-TestBracketRoot.test_vectorization.<locals>.fr   # r&        @@      ?      ?rb   )r   r   r   r   rG   rC   rD   c                       g | ]
} t| qS r   r>   getattr.0refattrrI   r   r   
<listcomp>       z6TestBracketRoot.test_vectorization.<locals>.<listcomp>rI         ?r+   r:   )$r;   linspacereshapefloat64	vectorizerf   r<   r=   infravelr>   tuplemapr   rn   r   r
   stackr   rZ   r	   rG   dtypeboolallrF   int32rC   rD   maxr   r   r   r   r3   r   )rH   rZ   rI   rQ   r   re   rJ   r5   r6   r8   r9   ir7   refsr   attrsref_attrres_attrxp_testr   )rs   r3   rc   rH   rI   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 )Nrk   r   r0   r   r   r   <lambda>       z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>c                 S   r   Ni  r   r0   r   r   r   r      r   c                 S   r   r   r   r0   r   r   r   r      r   c                    s
   |  j  S r   nanr0   rv   r   r   r      s   
 c                 S      | S r   r   r0   r   r   r   r          c                    s    g | ]\}} t | |qS r   )intrp   r1   jfuncsr   r   rt      s     z9TestBracketRoot.test_flags.<locals>.f.<locals>.<listcomp>zipZxsjsrv   r   r   r3         
z%TestBracketRoot.test_flags.<locals>.fr*   r   )      r   r   r         @)r+   r+   r+   r+   rx      r+   r:   r%   )r5   r6   r8   r9   r   rc   )arangeint64r   r>   r}   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r   rF   )rH   rI   r3   r   r   Z	ref_flagsr   rv   r   
test_flags   s$   	zTestBracketRoot.test_flagsroot灕Cl?V-?r   Zfloat16Z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 )Nrw   r   c                        | | d  S )Nr%   Zastype)r1   r   r   r   r   r   r3      rR   z%TestBracketRoot.test_dtype.<locals>.frW   rX   )r8   r9   r   )rn   r	   r>   r   r   rG   r   r   r   r   r   )	rH   r   r8   r9   r   rI   r3   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 sw   Y  t jt|d tdd ddtd W d    n1 sw   Y  d}t jt|d tdd dddd W d    n1 sw   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   r^   ...must be numeric and real.c                 S   r   r   r   r0   r   r   r   r      r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>y            ?c                 S   r   r   r   r0   r   r   r   r     r   helloc                 S   r   r   r   r0   r   r   r   r     r   r8   c                 S   r   r   r   r0   r   r   r   r     r   r9   c                 S   r   r   r   r0   r   r   r   r     r   r7   0All elements of `factor` must be greater than 1.c                 S   r   r   r   r0   r   r   r   r     r   rj   	broadcastc                 S   r   r   r   r0   r   r   r   r     r   )r%   r^   r*   )`maxiter` must be a non-negative integer.c                 S   r   r   r   r0   r   r   r   r     r   rk   )rc   c                 S   r   r   r   r0   r   r   r   r     r   rx   c                 S   r   r   r   r0   r   r   r   r     r   Z	shrubbery)	pytestraises
ValueErrorr   r;   objectsum	Exceptionr>   rH   rI   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sJ d	 _t |d|dd
d}|jdksJ t	|j|ddd t	|j|ddd tjdd t |d|dd	d}W d    n1 sw   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 )!Nrw   c                         | jds	J | d d S )Nzreal floatingc   r+   Zisdtyper   r0   r   r   r   r3   #     z-TestBracketRoot.test_special_cases.<locals>.f      g      @c                 S   r   )Nr)   r   r0   r   r   r   r3   +  s         rc   r   r:   r   c                 S   s   ||  d S r-   r   r1   cr   r   r   r3   6     r         @r   r%   c                    r,   r-   r.   r0   r2   r   r   r3   @  r4   i   g      $@r   r^           gV瞯<)Zatolignore)Zoverr   g      $g      r   r+   )r	   r>   r   rG   r   r   rD   rC   rF   r   r   r/   r;   Zerrstate)rH   rI   r   r   r   )r3   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)r1   rQ   r   r   r   r3   j  s   z)TestBracketRoot.test_bug_fixes.<locals>.fg(\?gffffff?rx   r   )r5   r8   r9   r   c                 S   s   t | | | S r   r   )r1   rQ   r   r   r   r   r3   q  s   )gi<?gx?gt\c?gL0+?gt4?gj~?gE.K?g'2L?)rw   r   rw   rw   r   rw   rw   rw   )gʷG;g_.:
@gbG g9jgWM!?geg~:ZgV^ܿ)gʷG;g/B_@gŎzgH_sgЫ?gˆ-r   r   r   r5   r6   r8   r9   r   c                 S   s   | d S )Ng      ?r   r0   r   r   r   r     r   z0TestBracketRoot.test_bug_fixes.<locals>.<lambda>      )r5   r8   r9   )r;   r>   r   r}   rG   )	rH   r3   rQ   r   r   r5   r6   r8   r9   r   r   r   test_bug_fixesc  s   "zTestBracketRoot.test_bug_fixes)__name__
__module____qualname__r   markparametrizerO   r3   r;   ry   rY   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.   )r1   abr2   r   r   r3     rg   z$TestBracketMinimum.init_f.<locals>.fr   r.   )rH   r   r2   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   )rH   resultrI   r   r   r   assert_valid_bracket  s   z'TestBracketMinimum.assert_valid_bracketN)r5   r6   r7   r8   r9   r   c             	   C   s$   d}dd t |||||||fD S )Nr5   r6   r8   r9   r7   r   c                 S   s   i | ]\}}|d ur||qS r   r   )rp   namevalr   r   r   
<dictcomp>  s
    z1TestBracketMinimum.get_kwargs.<locals>.<dictcomp>r   )rH   r5   r6   r7   r8   r9   r   namesr   r   r   
get_kwargs  s   zTestBracketMinimum.get_kwargsr    )l	   ^0#,N0Lb*& l	   }SES].HMa l	   FDuB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sJ |jsJ d S )Nr   r^   r&   )r(   r)   r)   r*   r+   r*   r   r:   r   r%   r   )r;   r<   r=   r>   r{   r   r?   r@   r   r   r   rC   rD   r/   r   r   r   r   r   r   r   r   rF   rG   )rH   r    r!   r#   rI   rJ   r   r5   Zd1Zd2r7   xm0r6   r8   rL   lowermiddleupperr3   r9   r   r   r   r   r   rO     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 )Nrk   r:   r   r0   r   r   r   r     s    z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>c                 S   r   r   r   r0   r   r   r   r     r   c                 S   r   r   r   r0   r   r   r   r     r   c                    s    j S r   r   r0   rv   r   r   r     s    c                 S      | d S Nr:   r   r0   r   r   r   r     r   c                    s   g | ]
\}} | |qS r   r   r   r   r   r   rt      ru   z<TestBracketMinimum.test_flags.<locals>.f.<locals>.<listcomp>r   r   rv   r   r   r3     r   z(TestBracketMinimum.test_flags.<locals>.fr*   r   )r   r   r   r         @)r   r   r   r   r   )rw   rw   rw   rw          @r   g       @r%   )r5   r6   r8   r   rc   )r   r   r>   r}   r   r   r   r   r   r   r   r   r   rF   )
rH   rI   r3   r   r5   r   r6   r8   r   Zreference_flagsr   rv   r   r     s    	 
zTestBracketMinimum.test_flagsminimumr   r   r   r   r8   rU   r9   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sJ  J d S )Nrw   r   c                    r   r   r   )r1   r   r   r   r   r3     rR   z)TestBracketMinimum.test_dtypes.<locals>.f)rW   r   rX   r   )rn   r	   r>   r   r   rG   r   r   r   r   r   r   r   )rH   r   r8   r9   r   rI   r3   r5   r   r6   r   r   r   r   test_dtypes  s   
26zTestBracketMinimum.test_dtypesTzstr/object arrays)Z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 sw   Y  t jt|d tdd |dtd W d    n1 sw   Y  t jt|d tdd |dt d W d    n1 sw   Y  t jt|d tdd |dtd W d    n1 sw   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 sw   Y  t jt|d td#d |ddd$d  W d    d S 1 sw   Y  d S )%Nr   r   r   r^   )r5   r   c                 S   r   r   r   r0   r   r   r   r   1  r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>y      @      ?c                 S   r   r   r   r0   r   r   r   r   3  r   r   c                 S   r   r   r   r0   r   r   r   r   5  r   zfarcical aquatic ceremonyr6   c                 S   r   r   r   r0   r   r   r   r   8  r   r   c                 S   r   r   r   r0   r   r   r   r   :  r   r   c                 S   r   r   r   r0   r   r   r   r   <  r   r   r   c                 S   r   r   r   r0   r   r   r   r   @  r   rj   z+shape mismatch: objects cannot be broadcastc                 S   r   r   r   r0   r   r   r   r   E  r   r   r   )r   r   rU   r   c                 S   r   r   r   r0   r   r   r   r   I  r   rk   )r6   rc   c                 S   r   r   r   r0   r   r   r   r   K  r   rx   c                 S   r   r   r   r0   r   r   r   r   M  r   Zekki)r   r   r   r   r>   r;   r   r   r   r   r   r   r   '  sV   "$z(TestBracketMinimum.test_input_validationr5   r   r   )rT   皙?g333333?r6   )皙?皙?rS   Nr   ))rV   r   )r   r   )r   r   )r   r   )g@r   )gffffff5@r   )gffffff^@r   )g@r   )gr   )g)r   )gfffffFbr   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r5   r6   r   r   r   )r   r   r   r   r>   r   r{   r   rF   rG   rC   r/   )	rH   r5   r   r6   r   rI   r3   r   r   r   r   r   test_scalar_no_limitsO  s   
z(TestBracketMinimum.test_scalar_no_limitszxl0,xm0,xr0,xmin))rj         ?rw   r   )rw         @r   r   )r   r   r   r   )g      (@      0@      4@r   )Nr  rw   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)r5   r6   r8   r   r   )r   r   r   r   r>   r   r   rF   rG   rC   r/   )
rH   r5   r   r6   r8   r   rI   r3   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   rw   )rT   333333?r   rw   )皙ɿ皙r   rw   )3333335333331gffffff,rw   )r   r  Nrw   )rT   r  Nrw   )r	  r
  Nrw   )r  r  Nrw   ))g?r   )g?r   )gffffff?r   )rj   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{   rp   argrv   r   r   	<genexpr>      zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>)r5   r6   r9   r   r   r   )r   r   r   r   r>   r{   r   rF   rG   rC   r/   )
rH   r5   r   r6   r9   r   rI   r3   r   r   r   rv   r   test_scalar_with_limit_right  s   
z/TestBracketMinimum.test_scalar_with_limit_rightzxl0,xm0,xr0,xmin,xmax,args))r   r  r   Nrw   rw   r   )gffffff?333333?r  r  Nr  r   )g@      
@g333333@N皙X@r  r   )r^         @r*   L:Nr  r   )Nr  NNrw   r  )Nr  Nr  Nr  )Nr  NNr  r  )Nr  Nr  Nr  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)r6   r8   r9   r   rx   r   )r   r   r   r   r>   r   rF   r   r   rC   r/   )rH   r5   r   r6   r8   r9   r   rI   r3   r   r   r   r   r   test_minimum_at_boundary_point  s   ]
z1TestBracketMinimum.test_minimum_at_boundary_pointrZ   r[   r]   r_   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| qtd}|jj|jksJ |r׈|jdd sJ |jjjksJ |jjjksJ |jjjksJ |j|jd ksJ | t|j||jg|R   t|j ||j!g|R   t|j"||j#g|R   d S )Nr`   ra   r\   rS   r   r)   c                    s"   t  | ||||| |dfd	S )Nr   )r5   r6   r8   r9   r7   rc   r   )r   r   )r   r5   r6   r8   r9   r7   r   rd   r   r   bracket_minimum_single  s   zETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_singlerh   r&   ri   rj   rk   c                 3   r  r  r  r  rv   r   r   r  -  r  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>)r5   r6   r8   r9   r7   r   rc   )	r   r   r   r   r   r   rG   rC   rD   c                    rl   r   rm   ro   rr   r   r   rt   3  ru   z9TestBracketMinimum.test_vectorization.<locals>.<listcomp>rv   rw   r+   rx   r%   )$r;   ry   rz   r|   r   r<   r=   r}   r~   r   r   r>   rn   r   r
   r   r   rZ   r	   rG   r   r   r   rF   r   rC   rD   r   r/   r   r   r   r   r   r   r   )rH   rZ   rI   r   r   r  r3   rJ   r5   r6   r   r8   r9   r   r7   r   r   r   r   r   r   r   )rs   rc   rH   rI   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sJ t|j| t|j| t|j| t|j
||g|R   t|j||g|R   t|j||g|R   d S )Nrw   c                    r   )Nnumericb   r+   r   r0   r   r   r   r3   K  r   z0TestBracketMinimum.test_special_cases.<locals>.fr   r   r*   r   c                 S   s   | d d S )Nr:   r)   r   r0   r   r   r   r3   S  r   r   r   r   r   )r5   r6   rc   c                 S   s   || d  d S )Nr:   r+   r   r   r   r   r   r3   ]  s   r   r   r%   r	  r   r   )r	   r>   r   r{   rG   r   r   r   r   r   r   r   r/   r   r   )rH   rI   r3   r   r5   r   r6   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\WZ?c                    s(      }}|| |  d  S Nrx   r@   r1   Zlog_aZlog_br9   r8   rI   r   r   r3   w  s   z0TestBracketMinimum.test_gh_20562_left.<locals>.fg_\ݶ?r8   r9   )r>   r   r   rH   rI   r3   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\WZgJg7e4̿c                    s*        }}|| |  d S r"  r#  r$  r%  r   r   r3     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   rO   r   r   r   r   r  r  r  r  r   r   r   r(  r)  r   r   r   r   r     sl    
	G
'	
	

\	
1-r   ) r   numpyr;   Zscipy.optimize._bracketr   Zscipy.optimize.elementwiser   r   Z(scipy._lib._elementwise_iterative_methodZ_libZ_elementwise_iterative_methodr   Zscipyr   Zscipy._lib._array_api_no_0dr   r   r   r	   Zscipy._lib._array_apir
   Zscipy.conftestr   r   r   Zarray_api_strict_skip_reasonZjax_skip_reasonr   r   Zusefixturesr   r   r   r   r   r   <module>   s2    		
  V
