
    Yh                        d dl Z d dlZd dlZd dlmZ d dlmZmZ d dl	m
c mZ d dlm
c mZ d dlmZmZmZmZmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlm Z  d	 Z!d
 Z" e"e          Z#d Z$d Z%d Z&d Z'd Z(d Z)g 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'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(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Z*ej+        ,                    d7d89          ej+        ,                    d:d;9          ej+        ,                    d<d=9           G d> d?                                              Z-ej+        ,                    d7d@9          ej+        ,                    d<d=9          ej+        ,                    d:d;9           G dA dB                                              Z.dS )C    N)deepcopy)statsspecial)array_namespaceis_cupyis_numpyxp_ravelxp_size)xp_assert_closexp_assert_equalxp_assert_less)find_minimum	find_root)_CHANDRUPATLA_TESTS)permutationsc                       fd}|S )Nc                       fd}|S )Nc                      | d         j         }fd| D             } g }t          t          j        |                    D ](fd| D             }|                     |            )|S )Nr   c                 2    g | ]}t          |           S ))xp)r	   ).0	arg_arrayr   s     x/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_chandrupatla.py
<listcomp>zB_vectorize.<locals>.decorator.<locals>.wrapped.<locals>.<listcomp>   s&    QQQ(9444QQQ    c                      g | ]
}|         S  r   )r   r   is     r   r   zB_vectorize.<locals>.decorator.<locals>.wrapped.<locals>.<listcomp>   s    HHH	y|HHHr   )shaperangemathprodappend)
arg_arraysr   resarg_scalarsr   fr   s       @r   wrappedz._vectorize.<locals>.decorator.<locals>.wrapped   s    qM'EQQQQjQQQJC49U++,, , ,HHHHZHHH

11k?++++Jr   r   )r'   r(   r   s   ` r   	decoratorz_vectorize.<locals>.decorator   s)    	 	 	 	 	 	 r   r   )r   r)   s   ` r   
_vectorizer*      s$    
 
 
 
 
 r   c                       fd}|S )Nc                    h d}fd|D             }                     dd           t                    rfd}n} | |f||d}t          k    r)|j        \  |_        |_        |j        \  |_        |_        n4|j        \  |_        |_	        |_        |j        \  |_        |_
        |_        |j        |_        |`|`|`|S )N>   fatolfrtolxatolxrtolc                 D    i | ]}|v |                     |          S r   )pop)r   keykwargss     r   
<dictcomp>zE_wrap_chandrupatla.<locals>._chandrupatla_wrapper.<locals>.<dictcomp>4   s*    PPPs#--c6::c??---r   callbackc                    t           k    r)| j        \  | _        | _        | j        \  | _        | _        n4| j        \  | _        | _        | _        | j        \  | _        | _        | _        | j	        | _
        | `| `| `	 |           S N)r   bracketxlxr	f_bracketflfrxmfmf_xfun)r%   	_callbackfuncs    r   r6   zC_wrap_chandrupatla.<locals>._chandrupatla_wrapper.<locals>.callback7   s|    9$$%([NCFCF%(]NCFCFF-0[*CFCFCF-0]*CFCFCF'KMG y~~%r   )
tolerancesr6   )r2   callabler   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   )	r'   r9   r4   tol_keysrE   r6   r%   rC   rD   s	     `    @r   _chandrupatla_wrapperz1_wrap_chandrupatla.<locals>._chandrupatla_wrapper1   s   777PPPPhPPP
JJz400	I 	!& & & & & & & !Hd1gR*xRR6RR9 [NCFCF ]NCFCFF%(["CFCFCF%(]"CFCFCF'KMG
r   r   )rD   rH   s   ` r   _wrap_chandrupatlarI   0   s%             B ! r   c                 H    dd| dz  z
  dz  z  d| dz  z
  z   dd| z
  dz  z  z   S )Nd            @          @r   xs    r   f1rR   X   s7    ArE	A~1b5)AqsRiK77r   c                     d| dz
  dz  z   S )N   rO      r   rP   s    r   f2rV   \   s    B{?r   c                 V    t          |           }|                    |           d| z  z
  S )NrT   )r   exprQ   r   s     r   f3rZ   `   s'    			B66!99qs?r   c                 0    | dz  d| dz  z  z
  d| z  z
  dz   S )N      @rT   rM   g      4@r   rP   s    r   f4r]   e   s&    b51QU7?SU"R''r   c                 6    d| dz  z  d| dz  z  z
  d| z  z
  dz   S )N      rN      r   rP   s    r   f5rb   i   s*    QT6AadF?QqS 1$$r   c                     d}d} | |          } | |          }||z
  }||k    r||||| fn|||||f\  }}}}}t          |          D ])}||z  }||z   }	 | |	          }
|
|k     r||	||
f\  }}}}) |||	|||
fS )Ngw?rK   )r    )rD   x1x2phimaxiterrR   rV   stepr   x3rZ   s              r   _bracket_minimumrj   m   s    
CG	bB	bB7D79BwwRRdU33"$b"b$!7 BBD 7^^  $YT"XX77R^NBBr2r2r!!r         i   i   i   i   i   i i i    r_   rU   ra   	      
         皙gg333333ÿgɿg      пg333333ӿgffffffֿgٿgܿ      gz
dask.arrayzno take_along_axis)reasonz	jax.numpyz*JAX arrays do not support item assignment.array_api_strictz)Currently uses fancy indexing assignment.c            
           e Zd Zd Zej                            dd          ej                            dd ej        ddd          g          d	                         Z	ej                            d
 e
            dddg          d             Zd Zd Zd Zej                            de          d             Zej                            ddddgf          ej                            dd          d                         Zd Zd Zd ZdS )TestChandrupatlaMinimizec                     t          ||          }|                    d||z
  dz  z             d|j        z  dz  z  }|                    ||j                  d         S )Nr|   rN   g      ?dtyper   )r   rX   piasarrayr   )selfrQ   locr   r%   s        r   r'   zTestChandrupatlaMinimize.f   s^    Q$$vvdaeaZ'(((AbeGc>9zz#QWz--b11r   r   float32float64r   333333?g?rx   c                    ddd         }t                    fddD             }                    |          }                                        t          j                            d                     |j                  }t          | j        g|R d|fi}t          |j
        ||	           t          |j        |           d S )
Ng{Gzt?gƠ>r   c              3   F   K   | ]}                     |           V  dS )r   N)r   )r   xir   r   s     r   	<genexpr>z6TestChandrupatlaMinimize.test_basic.<locals>.<genexpr>   s3      DD22::b:..DDDDDDr   r   rT   r   r   argsrtol)getattrr   broadcast_tor   normpdfr   _chandrupatla_minimizer'   r   rQ   r   rB   )r   r   r   r   r   r9   rB   r%   s     ``    r   
test_basicz#TestChandrupatlaMinimize.test_basic   s    
  D11%8E""DDDDDDDDjjEj**oobjj%*..*;*;);5jII39UU$TVCgCCCSFCCs....%%%%%r   r   rw   r`      r`   rN   rN   c                 V    |r*|                     ddd                              |          n|                    d          }|f}|                    d          |                    d          |                    d          ft          |           fd            } fd	d
_        t          gR d|i} ||          }g d}|D ]k|                    fd|D                       }	t          t          |                    }
t          |
|	           t          |          j
        |k    sJ lt          |j          j        |j        g|R             t          |j          j        |j        g|R             t          |j          j        |j        g|R             t          |j          j        |j        g|R             |                    |j                  j        k    sJ |                    |j                  j        dz
  k    sJ |                    |j        j        d          sJ |                    |j        j        d          sJ |                    |j        j        d          sJ |                    |j        j        d          sJ d S )Nr{   r   rw   r                 r\   c                 0    t          j        gR d| fiS )Nr   )r   r'   )
loc_singler9   r   s    r   chandrupatla_singlezHTestChandrupatlaMinimize.test_vectorization.<locals>.chandrupatla_single   s%    )$&O7OOO*OOOr   c                  >    xj         dz  c_          j        | i |S NrL   f_evalsr'   r   r4   r'   r   s     r   r'   z6TestChandrupatlaMinimize.test_vectorization.<locals>.f   )    IINII464*6***r   r   r   )rQ   rB   successstatusnfevnitr:   r?   r;   r=   r@   r>   c                 0    g | ]}t          |          S r   )r   )r   refattrs     r   r   z?TestChandrupatlaMinimize.test_vectorization.<locals>.<listcomp>   s#     D D Dd!3!3 D D Dr   r`   boolintegral)linspacereshaper   r*   r   r   stackr	   r   r   r   rB   r'   rQ   r=   r:   r@   r?   r>   r;   maxr   r   isdtyper   r   r   )r   r   r   r   r   r   r%   refsattrsref_attrres_attrr   r9   r'   s   `          @@@r   test_vectorizationz+TestChandrupatlaMinimize.test_vectorization   s    >CWbkk%r**225999

SVv**S//2::b>>2::b>>A	B	P 	P 	P 	P 	P 
	P	+ 	+ 	+ 	+ 	+ 	+ 	$Q<<<<t<<""3''5 5 5 	5 	5Dxx D D D Dt D D DEEHT 2 233HHh///3%%+u44444!5!5!5!5666sv 5 5 5 5666sv 5 5 5 5666sv 5 5 5 5666vvch19,,,,vvcg!)a-////zz#++V44444zz#**J77777zz#(.*55555zz#'-4444444r   c                    fd}                     dj                  f}                    dgdz  j                                      dgdz  j                                      t          j        gdz  j                  f}t          |g|R |dd}                    t          j        t          j	        t          j
        t          j        gj                  }t          |j        |           d S )Nc                 (   d d d fdg}g }t          t          |                    D ]R}| |df         }t          t          |          |                   }|                     ||         |                     S                    |          S )Nc                     | dz
  dz  S )N      @rN   r   rP   s    r   <lambda>z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>      CA~ r   c                     | dz
  S Nrx   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>  
    q2v r   c                     | dz
  dz  S )Nr   r   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                 `                         |                     j                            S r8   	full_liker   nanrY   s    r   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>  s#    r||Arzz"&/A/ABB r   .)r    r
   intr	   r#   r   )xsjsfuncsr%   r   rQ   jr   s          r   r'   z.TestChandrupatlaMinimize.test_flags.<locals>.f  s    --%%--BBBBDE C72;;'' ( (q#vJQ((

858A;;''''88C== r   r   r   r   rN   rx   r   rg   )arangeint64r   r   npr   r   eim_ECONVERGED	_ESIGNERR	_ECONVERR
_EVALUEERRint32r   r   )r   r   r'   r   r9   r%   	ref_flagss    `     r   
test_flagsz#TestChandrupatlaMinimize.test_flags   s    
	! 
	! 
	! 
	! 
	! 		!28	,,.::qc!e2::66::qc!e2::66::rugairz:::< %QHHHtRHHHJJ # 079x  A A	
I.....r   c                 z   t           j                            d          }|                    |                    d                    }|                    d|j                  |                    d          |                    d          f}|f}t          |dddd          }|                                }d	|d
<   t          | j        g|R i |}|	                    |j
        |j        z
            }	|                    d|d
         z  |j                  }
t          |	|                    d|
|j                             d|d
<   t          | j        g|R i |}|	                    |j
        |j        z
            }|                    d|d
         z  |j                  }
t          ||                    d|
|j                             t          ||	           |                                }d	|d<   t          | j        g|R i |}|	                    |j
        |j        z
            }	|                    d|d         z  |	                    |j                  z  |j                  }
t          |	|
           d|d<   t          | j        g|R i |}|	                    |j
        |j        z
            }|                    d|d         z  |	                    |j                  z  |j                  }
t          ||
           t          ||	           |                                }d	|d<   t          | j        g|R i |}|	                    |j        d|j        z  z
  |j        z             }|                    d|d         z  |j                  }
t          ||                    d|
|j                             d|d<   t          | j        g|R i |}|	                    |j        d|j        z  z
  |j        z             }|                    d|d         z  |j                  }
t          ||                    d|
|j                             t          ||           |                                }d	|d<   t          | j        g|R i |}|	                    |j        d|j        z  z
  |j        z             }|                    d|d         z  |	                    |j                  z  |j                  }
t          ||
           d|d<   t          | j        g|R i |}|	                    |j        d|j        z  z
  |j        z             }|                    d|d         z  t          |j                  z  |j                  }
t          ||
           t          ||           d S )N   FA92 r`   sizer   r   r   rT   )r   r/   r0   r-   r.   MbP?r/   r   r`   ư>r0   r-   rN   r.   )r   randomdefault_rngr   r   dictcopyr   r'   absr;   r:   r   r   fullrQ   r=   r@   r>   rB   )r   r   rngpr9   r   kwargs0r4   res1j1tolres2j2h1h2s                  r   test_convergencez)TestChandrupatlaMinimize.test_convergence  sP   i##$788JJszzqz))**::b
:33RZZ]]BJJqMMRtD!1EEEw%dfAwAAA&AAVVDGdg%&&jj6'?*!'j::r2774AG7<<===w%dfAwAAA&AAVVDGdg%&&jj6'?*!'j::r2774AG7<<===r2w%dfAwAAA&AAVVDGdg%&&jj6'?*266$&>>9jIIr3w%dfAwAAA&AAVVDGdg%&&jj6'?*266$&>>9jIIr3r2w%dfAwAAA&AAVVDGa$'k)DG344jj6'?*!'j::r2774AG7<<===w%dfAwAAA&AAVVDGa$'k)DG344jj6'?*!'j::r2774AG7<<===r2w%dfAwAAA&AAVVDGa$'k)DG344jj6'?*266$(+;+;;17jKKr3w%dfAwAAA&AAVVDGa$'k)DG344jj6'?*3tx==8jHHr3r2r   c                 "                         d                               d                               d                               d          fdt           j        gR fd}                    |j                  rJ                     |j        dz   k              sJ                     |j        k              sJ  fdj        _	        j        _
        d_        d _        t           j        gR fd	}|                                D ]a}|d
k    r1||         t          j        k    sJ ||         t          j        k    sJ 9||         j        |         cxk    r||         k    sn J bd S )N~,?r   r   rT   r   r`   c                 P   xj         dz  c_         | _        t          | d          sJ j         dk    r| j        | j        | j        fk    sJ n\| j        j        k    | j        j        k    z  }| j        j        k    | j        j        k    z  }                    ||z            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 NrL   rQ   r   )iterr%   hasattrr:   r?   r;   allr   r   _EINPROGRESSr   r'   r=   r@   r>   rQ   rB   StopIteration)	r%   
changed_xr
changed_xlr9   r6   r   rg   r   r   s	      r   r6   z@TestChandrupatlaMinimize.test_maxiter_callback.<locals>.callbacka  s~   MMQMMHL3$$$$$}!!/7:::::!f3(+8MN
!f3(+8MN
vvj:566666&HK&HK:!11111DFF363//888DFF363//888DFF363//888DFF35#..888}''## ('r   rk   r   r6   r   )r   r   r'   anyr   r   r   r   r   r:   r;   r   r%   keysr   r   
_ECALLBACK)	r   r   r%   r   r3   r9   r6   r   rg   s	   ``   @@@@r   test_maxiter_callbackz.TestChandrupatlaMinimize.test_maxiter_callbackU  s   jj""::b>>2::a=="**Q--@$TV 6g 6 6SF-46 6 666#+&&&&&vvch'!)+,,,,,vvcg()))))	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$, ff%df 9w 9 9cV/79 9 9
 88:: 	B 	BCh3x3=0000CyCN22222CyHL$5AAAASAAAAAAA	B 	Br   casec                 n   |\  }}}d}||z   }t          |||          \  }}}}	}
}d}d}d}d}|                    |          |                    |          |                    ||j                  f}t          |g|R ||||d}t	          |j        |                    ||j                             d S )Ng?g-C6?r   gؗҜ<r   )r/   r-   r0   r.   )rj   r   r   r   r   r   r   )r   r  r   rD   rd   r   rh   re   ri   rR   rV   rZ   r/   r-   r0   r.   r9   r%   s                     r   test_nit_expectedz*TestChandrupatlaMinimize.test_nit_expected  s    
 b# $Y!1$B!?!?BBB **R.."**R.."**Rrz*2R2RR$T LG L L5+0UL L LCrx!@!@AAAAAr   g?gffffff?float16r   r   c           	         t                                        |          }                    d                              d                              d          f}fd}t          |g|R d|fi}|j        j        k    sJ t          |j        |t          j                                      j	                             d S )Nr   rL   rT   c                 V    | j         k    sJ                     | |z
  dz            S NrN   )r   astype)rQ   r   r   r   s     r   r'   z.TestChandrupatlaMinimize.test_dtype.<locals>.f  s2    7e####99a#g\5111r   r   r   )
r   r   r   rQ   r   r   r!   sqrtfinfoeps)r   r   r   r   r9   r'   r%   s     ``   r   
test_dtypez#TestChandrupatlaMinimize.test_dtype  s     E""jjEj**::b:..::au:--::au:--/	2 	2 	2 	2 	2 	2 %Q>>>>v>>u{e####s288E??3F)G)GHHHHHHr   c                    d}|                     d          |                     d          |                     d          f}t          j        t          |          5  t	          d g|R   d d d            n# 1 swxY w Y   d}|                     d          |                     d          |                     d          f}t          j        t          |          5  t	          d g|R   d d d            n# 1 swxY w Y   d	}|                     d
dg          |                     ddg          |                     g d          f}t          j        t          t
          f|          5  t	          d g|R   d d d            n# 1 swxY w Y   d}|                     ddg          |                     ddg          |                     ddg          f}t          j        t          |          5  t	          d g|R   d d d            n# 1 swxY w Y   d}|                     d          |                     d          |                     d          f}t          j        t          |          5  t	          d g|R ddi d d d            n# 1 swxY w Y   t          j        t          |          5  t	          d g|R d|j        i d d d            n# 1 swxY w Y   t          j        t          |          5  t	          d g|R ddi d d d            n# 1 swxY w Y   t          j        t          |          5  t	          d g|R d|j        i d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          d g|R ddi d d d            n# 1 swxY w Y   t          j        t          |          5  t	          d  g|R ddi d d d            n# 1 swxY w Y   d!}t          j        t          |          5  t	          d" g|R d#d$i d d d            d S # 1 swxY w Y   d S )%N`func` must be callable.ro   r   r   match3Abscissae and function output must be real numbers.            ?c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>      Q r   z...be broadcast...rm   r  r`   r   rT   c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   z:The shape of the array returned by `func` must be the samerT   c                 0    | d         | d         | d         gS )N)r   .)rL   .r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  s    ai6AfI-N r   (Tolerances must be non-negative scalars.c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   r/   rk   c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   r0   c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   r-   ekkic                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   r.   )`maxiter` must be a non-negative integer.c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   rg         ?c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   `callback` must be callable.c                     | S r8   r   rP   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r   r6   	shrubbery)r   pytestraises
ValueErrorr   RuntimeErrorr   )r   r   messager9   s       r   test_input_validationz.TestChandrupatlaMinimize.test_input_validation  s    -**R.."**Q--A>]:W555 	3 	3"42'2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 H**W%%rzz!}}bjjmmC]:W555 	: 	:";;99999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: '**b"X&&

Aq6(:(:BJJyyy<Q<QQ]J5WEEE 	: 	:";;99999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: O**b"X&&

Aq6(:(:BJJ1v<N<NN]:W555 	- 	-"#N#N -$+- - - -	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- =**R.."**Q--A>]:W555 	D 	D";;CCCCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D]:W555 	H 	H";;GGGGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H]:W555 	H 	H";;GGGGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H]:W555 	H 	H";;GGGGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H >]:W555 	G 	G";;FFFF#FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G]:W555 	F 	F";;EEEE"EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 1]:W555 	P 	P";;OOOO;OOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   A66A:=A:C77C;>C;*FF	F	1HHH2JJJ6KK K?LL!$L!M&&M*-M*N,,N03N0O00O47O4P77P;>P;c                    |                     ddd          d d |j        f         }|                    t          t	          g d                              j        }t          | j        g|R d|fi}|                    t          j
        |j        |          |j        |                     ||          k    z            sJ |j        d d df         }t          |                    |j        j        |          ddi d S )	Nrk   rL   rU   r   r   r   r   V瞯<)r   newaxisr   listr   Tr   r'   r   xpxiscloserQ   rB   r   broadcast_arrays)r   r   r   bracketsr%   r   s         r   test_bracket_orderz+TestChandrupatlaMinimize.test_bracket_order  s    kk"a##AAArzM2::d<


#;#;<<==?$TVDhDDDcVDDvvck#%--DFF3<L<L1LMNNNNNeAAAqDk,,SUWc::GGGGGGr   c                 v   fd}                     d                               d                               d          f}t          j        d          5  t          |g|R ddd}d d d            n# 1 swxY w Y   |j        sJ t          |j                             d          d	
           t          |j                             d          d           d }                     d                               d                               d          f}t          |g|R  }|j        sJ t          |j                             d                     d }                     d                               d                               d          f}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                               d                               d          f}                     d          }t          |g|R d|fi}t          |j        |           fd}                     d                               d                               j                  f}t          |g|R ddddd}|j        sJ |j	        |j        cxk     r|j
        k     sn J  ||j	                   ||j                  cxk    r ||j
                  k    sn J d S )Nc                 N                         | j        d          sJ | dz
  dz  S )Nreal floatingrL   rN   r   r   rY   s    r   r'   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s-    ::ag77777EA:r   r   r_   ignoreinvalid)r-   r.         ?r   r   r   gN~hatolc                     | dz
  dz  S NrL   rN   r   rP   s    r   r'   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f      aC!8Or   rL   c                     | dz
  dz  S rH  r   rP   s    r   r'   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  rI  r   r  g?rT   rg   r`   rm   c                     | |z
  dz  dz
  S )NrN   rL   r   rQ   cs     r   r'   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s    aC!8a<r   rk   UUUUUU?r   c                 0                         |            S r8   )sinrY   s    r   r'   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s    FF1II:r   r/   r0   r-   r.   )r   r   errstater   r   r   rQ   rB   r   r:   r;   r   r   r   r   r?   )r   r   r'   r9   r%   rM  s    `    r   test_special_casesz+TestChandrupatlaMinimize.test_special_cases  s   	 	 	 	 	 **R.."**Q--A>[*** 	H 	H(GWGGAQGGGC	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H{rzz"~~D9999Bf====	 	 	 **Q--A

1=$Q1111{rzz"~~...	 	 	 **R.."**S//2::a==@$Q<<<<!<<v((sv((((w!||||x1}}}}zRu||||	  	  	  **R.."**Q--A>JJsOO$Q<<<<t<<q!!!	 	 	 	 	 **Q--A

250A0AA$QUUU!STUUU{v''''''''''qyyAAcfII22223622222222s   A88A<?A<N)__name__
__module____qualname__r'   r,  markparametrizer   r   r   tupler   r   r   r  casesr  r  r1  r;  rS  r   r   r   r   r      s       2 2 2
 [W&<==[US+"+eT2*F*F$GHH& & IH >=& [Wuuwwvy&IJJ%5 %5 KJ%5P/ / /2: : :x2B 2B 2Bh [VU++B B ,+B, [UTD#;$788[W&GHHI I IH 98I",P ,P ,P\H H H73 73 73 73 73r   r   zboolean indexing assignmentc            	          e Zd Zd Zej                            dd ej        ddd          g          d             Z	ej                            d e
            d	d
dg          d             Zd Zd Zd Zej                            de          d             Zej                            ddddgf          ej                            dd          d                         Zd Zd ZdS )TestFindRootc                 0    t          j        |          |z
  S r8   )r   ndtr)r   qr   s      r   r'   zTestFindRoot.f+  s    |A""r   r   r   r{   r   rx   c                    |                     d          |                     d          }}t          | j        ||f|                     |          f          }|                     t          j                                        |          |                     |          j                  }t          |j        |           d S )Nr   r\   r   r   )	r   r   r'   r   r   ppfr   r   rQ   )r   r   r   abr%   r   s          r   r   zTestFindRoot.test_basic.  s     zz#

21Abjjmm-=>>>jj))!,,BJJqMM4GjHHs#####r   r   r   r   r   c           
      F    |r)t          j        ddd                              |          nt          j        d          }|                    |          }|f}|j        }t           j         fd            } fdd_        |                    d|j        	          |                    d
|j        	          f}t          ||          }	 ||          	                                }
d |
D             }|                    |                    ||	          |          }t          |	j        |           d |
D             }|                    |                    ||	          |          }t          |	j        |d           t          |	j          j        |	j        g|R             d |
D             }|                    |                    ||j        	          |          }t          |	j        |           d |
D             }|                    |                    ||j        	          |          }t          |	j        |           d |
D             }|                    |                    ||j        	          |          }t'          |          r;t          |	j        |           |                    |	j                  j        k    sJ n)|	j        j        |k    sJ |	j        j        |j        k    sJ d |
D             }|                    |                    ||j        	          |          }t'          |          r>t          |	j        |           |                    |	j                  j        dz
  k    sJ n)|	j        j        |k    sJ |	j        j        |j        k    sJ d |
D             }|                    |                    ||	          |          }t          |	j        d         |           d |
D             }|                    |                    ||	          |          }t          |	j        d         |           t3          |	j        d         |	j        d                    |                    |	j                  }|                    |	j        |         |	j        d         |         k    |	j        |         |	j        d         |         k    z            sJ t'          |          rdnd}d |
D             }|                    |                    ||	          |          }t          |	j        d         ||           t          |	j        d           j        |	j        d         g|R             d |
D             }|                    |                    ||	          |          }t          |	j        d         ||           t          |	j        d           j        |	j        d         g|R             |                    |                    |	j        |                   |                    |                    |	j        d         |                   |                    |	j        d         |                             k              sJ d S )Nr{   r   rw   r   c                 4    t          j        d| f          S )N)r   rT   ra  )r   r'   )r   r   s    r   find_root_singlez9TestFindRoot.test_vectorization.<locals>.find_root_single@  s    TVWA48888r   c                  >    xj         dz  c_          j        | i |S r   r   r   s     r   r'   z*TestFindRoot.test_vectorization.<locals>.fD  r   r   r   r   r   r\   ra  c                     g | ]	}|j         
S r   rP   r   r   s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>M  s    '''3'''r   c                     g | ]	}|j         
S r   )rA   rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>Q  s    )))S)))r   r3  rE  c                 6    g | ]}t          |j                  S r   )r   r   rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>V  s"    999StCK((999r   c                     g | ]	}|j         
S r   )r   rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>Z  s    111Scj111r   c                     g | ]	}|j         
S r   )r   rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>^  s    ---CH---r   c                     g | ]	}|j         
S r   )r   rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>g  s    +++s37+++r   rN   c                 (    g | ]}|j         d          S r   r9   rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>p      111S#+a.111r   c                 (    g | ]}|j         d          S rL   rr  rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>t  rs  r   rL   g&.>c                 (    g | ]}|j         d          S rq  r<   rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>      333s#-"333r   c                 (    g | ]}|j         d          S ru  rw  rj  s     r   r   z3TestFindRoot.test_vectorization.<locals>.<listcomp>  rx  r   )r   r   r   r   r   r   	vectorizer   r   ravelr   rQ   rA   r   r'   r   r   r   r   r   r   r   r   r   r9   r   isfiniter   r<   r   minimum)r   r   r   r   p_xpargs_xpr   rg  r9   r%   r   ref_xref_fref_success
ref_statusref_nfevref_nitref_xlref_xrfiniterF  ref_flref_frr'   s   `                      @r   r   zTestFindRoot.test_vectorization6  s|    =B "R[b))11%888*S// 	
zz!}}'
		9 	9 	9 	9 
	9	+ 	+ 	+ 	+ 	+ 	+ 	**S
*33RZZ"*Z5U5UU7111""((**''$'''

2::e5:995AAu%%%))D)))

2::e5:995AAU3333!8!8!8!899999D999jjKrw!G!GOO[11111D111
ZZ

:RX
 F FNN

J///-----::bjjjBBEJJB<< 	.CHh///66#(##qy000008>U****8>RX----++d+++**RZZrxZ@@%HHB<< 	-CGW---66#'??aik111117=E))))7=BH,,,,11D111BJJvUJ;;UCCA///11D111BJJvUJ;;UCCA///s{1~s{1~666SU##vvsuV}Av(>>v#+a.*@@B C C 	C 	C 	C !.uu$33d333BJJvUJ;;UCCa(&t<<<<a(&$&Q*J'*J*J*JKKK33d333BJJvUJ;;UCCa(&t<<<<a(&$&Q*J'*J*J*JKKKvvbffSWV_--jja(8(@!A!A!#a(8(@!A!AC CC D D 	D 	D 	D 	D 	Dr   c                    fd}                     dj                  f}                    dgdz                                j        gdz            }}t	          |||f|d          }                    t
          j        t
          j        t
          j        t
          j	        gj
                  }t          |j        |           d S )Nc                     |j         j        k    sJ t                    r(d d d fdgfdt          | |          D             S d d d fd	gfd
t          | |          D             S )Nc                     | dz
  S Nr   r   rP   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s
    1s7 r   c                     | dz
  S r   r   rP   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s
    1r6 r   c                     | dz
  dz  S N皙?r`   r   rP   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s    AGa< r   c                 `                         |                     j                            S r8   r   rY   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s#    2<<2::bf3E3E#F#F r   c                 R    g | ]#\  }} t          |                   |          $S r   )r   r   rQ   r   r   s      r   r   z6TestFindRoot.test_flags.<locals>.f.<locals>.<listcomp>  s1    AAATQc!ffa((AAAr   c                     | dz
  S r  r   rP   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s
    q3w r   c                     | dz
  S r   r   rP   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                     | dz
  dz  S r  r   rP   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                     j         S r8   )r   rY   s    r   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s	    rv r   c                 8    g | ]\  }} |         |          S r   r   r  s      r   r   z6TestFindRoot.test_flags.<locals>.f.<locals>.<listcomp>  s)    888DAqHE!HQKK888r   )r   r   r   zip)r   r   r   r   s     @r   r'   z"TestFindRoot.test_flags.<locals>.f  s     8rx''''r{{ B**))//FFFFH BAAASR[[AAAA&&%%--%%%%'E 9888CBKK8888r   r   r   r   rN   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r'   r   rc  rd  r%   r   s    `      r   r   zTestFindRoot.test_flags  s    	9 	9 	9 	9 	9$ 		!28	,,.zz2$q&!!2::rugai#8#81Aq6a888JJ # # # 0 8:x  A A	 	
I.....r   c           	      
   t           j                            d          }|                    |                    d                    }|                    d           |                    d          f}|f}t	          |t	          dddd                    }t          |          }d|d	         d
<   t          | j        |fi |}t          |j	        d         |j	        d         z
  |
                    ||                    d                               d|d	         d
<   t          | j        |fi |}	t          |	j	        d         |	j	        d         z
  |
                    ||                    d                               t          |	j	        d         |	j	        d         z
  |j	        d         |j	        d         z
             t          |          }d|d	         d<   t          | j        |fi |}t          |j	        d         |j	        d         z
  d|                    |j                  z             d|d	         d<   t          | j        |fi |}	t          |	j	        d         |	j	        d         z
  d|                    |	j                  z             t          |	j	        d         |	j	        d         z
  |j	        d         |j	        d         z
             t          |          }d|d	         d<   t          | j        |fi |}t          |                    |j                  |
                    ||                    d                               d|d	         d<   t          | j        |fi |}	t          |                    |	j                  |
                    ||                    d                               t          |                    |	j                  |                    |j                             t          |          }d|d	         d<   |\  }
}|                    |                     | j        |
g|R            |                     | j        |g|R                      }t          | j        |fi |}t          |                    |j                  d|z             d|d	         d<   t          | j        |fi |}	t          |                    |	j                  d|z             t          |                    |	j                  |                    |j                             d S )Nr   r`   r   r\   r   rQ  r   rE   r   rE   r/   rL   r   r0   r-   r.   )r   r   r   r   r   r   r   r'   r   r9   r   r   rQ   rA   r}  )r   r   r   r   r9   r   r   r4   r   r   rd   re   f0s                r   r   zTestFindRoot.test_convergence  s   i##$788JJszzqz))**JJrNN?BJJrNN3tDT!ST-U-U-UVVV'""(,|W%33F33t|Aa8||Arzz$'7'788	: 	: 	:(,|W%33F33t|Aa8||Arzz$'7'788	: 	: 	:t|Aa8|Aa8	: 	: 	: '""(,|W%33F33t|Aa8$:OPPP(,|W%33F33t|Aa8bffTVnn,	. 	. 	.t|Aa8|Aa8	: 	: 	: '""(,|W%33F33rvvdh''aD9I9I)J)JKKK(,|W%33F33rvvdh''aD9I9I)J)JKKKrvvdh'')9)9:::'""(,|W%BZZvtvb0400011266&$&:Kd:K:K:K3L3LMM33F33rvvdh''b111(,|W%33F33rvvdh''b111rvvdh'')9)9:::::r   c                 B   	                      d          	                     d                               d          fdfdd _        d _        t          	f          }                    |j                  rJ                     |j        dz   k              sJ                     |j        k              sJ 	 fdd	_	        d _
        d d g_        t          	f
          }|                                D ]}|dk    rut          ||                              t          j        j                             t          ||                              t          j        j                             ~|dv rQt          ||         d         ||         d                    t          ||         d         ||         d                    |                    d          rt          ||         ||                    d S )Nr   r   r\   rT   c                 R    t          j        |           |z
  }| _        |_        |S r8   )r   r^  rQ   rA   )r_  r   r%   r'   s      r   r'   z-TestFindRoot.test_maxiter_callback.<locals>.f  s(    ,q//A%CACAEJr   r   rN   c                    xj         dz  c_         | _        t          | d          sJ j         dk    r!| j        d         | j        d         fk    sJ n| j        d         j        d         k    | j        d         j        d         k    z  | j        d         j        d         k    | j        d         j        d         k    z  z  }                    |          sJ | j        d         j        d<   | j        d         j        d<   | j        t          j        k    sJ t          	                    | j        d                   | j
        d                    t          	                    | j        d                   | j
        d                    t          	                    | j                  | j                   j         k    rt          d S r   )r   r%   r   r9   r   r   r   r   r   r'   r<   rQ   rA   r   )r%   changedr9   r6   rg   r   r   r   s     r   r6   z4TestFindRoot.test_maxiter_callback.<locals>.callback  s   MMQMMHL3$$$$$}!!AA77BBBBB [^x/?/BB"{1~1A!1DDF"{1~1A!1DD!$Q83CA3F!FHI vvg&&&"%+a.HQ"%+a.HQ:!11111DFF3;q>155s}Q7GHHHDFF3;q>155s}Q7GHHHDFF35!,,cg666}''## ('r   rk   r  r   r   >   r9   r<   r   rL   _)r   rQ   rA   r   r  r   r   r   r   r   r%   r9   r  r   r   r   r   r  
startswith)
r   r   r%   r   r3   r9   r6   r'   rg   r   s
   ``   @@@@@r   r  z"TestFindRoot.test_maxiter_callback  s@   JJx  ::c??BJJrNN3	 	 	 	 	
 7!w???66#+&&&&&vvch'!)+,,,,,vvcg()))))	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$,  $<G1$BBB 88:: 
	5 
	5ChC"**S]"(**S*STTTS	2::cnBH:+U+UVVVV000S	!c#hqk:::S	!c#hqk::::$$ 5S	3s84444
	5 
	5r   r  c                    |\  }}}}}|                     |d         |j                  |                     |d         |j                  f}|                     ||j                  }t          ||t          dd                    }t	          |j        |                      ||          |j                  dd	
           t          |j        |                     ||j                             d S )Nr   r   rL   g|=gh㈵>)r0   r/   rE   g:0yE>gMb`?)r   rF  )	r   r   r   r   r   rA   r   r   r   )	r   r  r   r'   r9   rootnfevalidr%   s	            r   r  zTestFindRoot.test_nit_expected  s    
 (,$7D&"
 ::gaj
:;;::gaj
:;;=zz$bjz117t%t/L/L/LMMMAAdGG2:!F!F!	. 	. 	. 	."**V28*"D"DEEEEEr   r  gCl?gV-?r   r	  c                 2   t                     }|rdk    rt          j        d           t          d           t          j         d            fd}                    d                              d          }}                    |          }t          |||f|fdd	i
          }	 t          |j        |d	           d S # t          $ r4 |j        j	        k    sJ 
                    |j        dk               Y d S w xY w)Nr
  z0`float16` dtype only supported for NumPy arrays.z does not support c                 d    | |z
  dz  }t                    r                    |          S |S )NrM   r   )r   r   )rQ   r  r%   r   r   s      r   r'   z"TestFindRoot.test_dtype.<locals>.f<  s:    t8"C|| 4zz#Uz333Jr   r  r   r`   r/   r   r  rE  r   )r   r,  skipr   r   r   r   rQ   AssertionErrorr   r   rA   )	r   r  r   r   	not_numpyr'   rc  rd  r%   s	     ``     r   r  zTestFindRoot.test_dtype0  s]    !$	 	L)++KJKKKE4((=K28888999	 	 	 	 	 	 zz"Ez**BJJqJ,F,F1zz$ez,,Aq6WdOLLL	!CE4d333333 	! 	! 	!5;%''''FF37a<      	!s   ?C :DDc                 P   d }d}t          j        t          |          5  |                    d          |                    d          f}t	          d |           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    d          |                    d          f}t	          ||           d d d            n# 1 swxY w Y   d}t          j        t          t
          f|          5  |                    d	d
g          |                    g d          f}t	          ||           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    d
d
g          |                    ddg          f}t	          d |           d d d            n# 1 swxY w Y   d}|                    d          |                    d          f}t          j        t          |          5  t	          ||t          d                     d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||t          |j                             d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||t          d                     d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||t          |j                             d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            d S # 1 swxY w Y   d S )Nc                     | S r8   r   rP   s    r   rD   z0TestFindRoot.test_input_validation.<locals>.funcN  s    Hr   r  r  ro   r   r  r  z...not be broadcast...rm   r  r  z,The shape of the array returned by `func`...rT   c                 0    | d         | d         | d         gS )Nr   rL   r   rP   s    r   r   z4TestFindRoot.test_input_validation.<locals>.<lambda>d  s    1qtQqT 2 r   r  rk   )r/   r  )r0   r#  )r-   )r.   r%  r'  rg   r)  r+  )r6   )r,  r-  r.  r   r   r/  r   r   )r   r   rD   r0  r9   s        r   r1  z"TestFindRoot.test_input_validationK  s   	 	 	 -]:W555 	% 	%jjnnbjjmm3GdG$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% H]:W555 	% 	%jj''A6GdG$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 +]J5WEEE 	% 	%jj"b**BJJyyy,A,AAGdG$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% A]:W555 	= 	=jj"b**BJJ1v,>,>>G22G<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= =**R.."**Q--/]:W555 	@ 	@dG2????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@]:W555 	D 	DdG260B0B0BCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D]:W555 	D 	DdG60B0B0BCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D]:W555 	D 	DdG260B0B0BCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D >]:W555 	2 	2dGS1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2]:W555 	1 	1dGR0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 1]:W555 	; 	;dGk::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   ;A((A,/A,;CCC?EEE9A GG	G	!III*&JJ #J !K//K36K3&MMM/NNN4OOO;PP"Pc                 
   d }                     g d                               g d          }}t          j        dd          5  t          |||f          }d d d            n# 1 swxY w Y                       |j                  sJ t          |j        dd                              d|j        d                              fd	}t          |                     d
                               d          f          }|j        sJ t          |j                             d                     d }                     ddg          }t          |                     d                               d          f|f          }t          |j                             ddg                     t          |j                             j
        dg                     d }t          j        d          5                       j                  }t          |||f          }d d d            n# 1 swxY w Y   |j        sJ t          |j                             j                             d }                     d                               d          }}t          |||fd          }t          |j                             d                     t          |j                             dj                             t          |j                             dj                             t          |j                             dj                             t          |j        d         |           t          |j        d         |           t          |j        |           t          || | fd          }t          |j        |            t          |||fd          }t          |j                             d                     t          |j                             dj                             t          |j                             dj                             t          |j                             dj                             t          |j                             d                     d }t          |                     d                               d          f                     d                    }t          |j                             d                     d S )Nc                 &    d| z  dz   d|  dz   z  z
  S r   r   rP   s    r   r'   z*TestFindRoot.test_special_cases.<locals>.f  s    q519qQBF|++r   )r  r   r   r  )?rD  r  rD  rA  )dividerC  rL   r   r   c                 N                         | j        d          sJ | dz  dz
  S )Nr>     rL   r?  rY   s    r   r'   z*TestFindRoot.test_special_cases.<locals>.f  s-    ::ag777777Q;r   r@  rT   rD  c                     | dz  |z
  S r  r   )rQ   r  s     r   r'   z*TestFindRoot.test_special_cases.<locals>.f  s    a4$;r   ra  FTc                     d| z  S r   r   rP   s    r   r'   z*TestFindRoot.test_special_cases.<locals>.f  s    Q3Jr   rB  c                     | dz  dz
  S )Nr`   rL   r   rP   s    r   r'   z*TestFindRoot.test_special_cases.<locals>.f  s    a4!8Or   g      r\   r  rm   r   rN   r`   c                     || z  dz
  S r   r   rL  s     r   r'   z*TestFindRoot.test_special_cases.<locals>.f  s    Q37Nr   rk   rN  )r   r   rR  r   r   r   r   rQ   r   r   r   infr   r   r   r   r9   )r   r   r'   rc  rd  r%   r  r  s    `      r   rS  zTestFindRoot.test_special_cases{  sI   	, 	, 	, zz,,,--

;O;O;O0P0P1[(;;; 	' 	'A1v&&C	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' vvck"""""abb	2774q#:#:;;;	 	 	 	 	 BJJrNNBJJqMM:;;{rzz"~~...	 	 	 zz1a&!!BJJqMM2::a==9HHHRZZ%>%>???rzz262,77888	 	 	 [*** 	+ 	+**RV$$CASz**C	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ {rzz"&11222	 	 	 zz#

21Aq61---RZZ%6%6777
BJJrJ$B$BCCCARX!>!>???"**Qbh*"?"?@@@A***A***q!!!QB8Q///r""" Aq61---RZZ%5%5666
BJJqJ$A$ABBBARX!>!>???"**Qbh*"?"?@@@rzz"~~...	 	 	 BJJrNNBJJqMM:AOOOrzz#/////s$   	A((A,/A,?-H88H<?H<N)rT  rU  rV  r'   r,  rW  rX  r   r   r   rY  r   r   r   r  r   r  r  r1  rS  r   r   r   r\  r\  $  s       # # # [S3E4(D(D"EFF$ $ GF$ [Wuuwwvy&IJJUD UD KJUDn/ / />1; 1; 1;f;5 ;5 ;5z [V%899F F :9F$ [VeeU^%<==[W&GHH! ! IH >=!2.; .; .;`M0 M0 M0 M0 M0r   r\  )/r!   r,  numpyr   r   r   scipyr   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipy._lib.array_api_extraarray_api_extrar7  scipy._lib._array_apir   r   r   r	   r
   scipy._lib._array_api_no_0dr   r   r   scipy.optimize.elementwiser   r   scipy.optimize._tstutilsr   	itertoolsr   r*   rI   r   rR   rV   rZ   r]   rb   rj   rZ  rW  skip_xp_backendsr   r\  r   r   r   <module>r     s                               6 6 6 6 6 6 6 6 6 ( ( ( ( ( ( ( ( ( W W W W W W W W W W W W W W9 9 9 9 9 9 9 9 9 9 ? > > > > > > > 8 8 8 8 8 8 " " " " " "  :"! "! "!J ,+L99 8 8 8    
( ( (% % %" " "(8	RL8	RL8	 RL8	 RL	8	
 bM8	 bM8	 bM8	 rN8	 rN8	 rN8	 O8	 QK8	 QK8	 QK8	 QK8	  aL!8	" aL#8	$ aL%8	& rN'8	( rN)8	* rN+8	, O-8	. RL/8	0 RL18	2 RL38	4 RL58	6 bM78	8 bM98	: bM;8	< rN=8	> rN?8	@ rNA8	B OC8	D NE8	F OG8	H OI8	J OK8	L OM8	N NO8	P NQ8	R NS8	T OU8	V OW8	X OY8	Z N[8	\ N]8	^ N_8	` Oa8	b Nc8	d Ne8	f Ng8	h Ni8	j Nk8	l Nm8	n No8	v l3GHHk%Q  S S0%P  R R`3 `3 `3 `3 `3 `3 `3R RS S IH
`3F l3PQQ0%P  R Rk%Q  S S_0 _0 _0 _0 _0 _0 _0S SR R RQ
_0 _0 _0r   