
    Џkh                        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jV                  jY                  d7d89      ejV                  jY                  d:d;9      ejV                  jY                  d<d=9       G d> d?                           Z-ejV                  jY                  d7d@9      ejV                  jY                  d<d=9      ejV                  jY                  d:d;9       G dA dB                           Z.y)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                   }| D cg c]  }t        |       } }g }t        t        j                  |            D ](  }| D cg c]  }||   	 }}|j                   |        * |S c c}w c c}w )Nr   )xp)shaper	   rangemathprodappend)
arg_arraysr   	arg_arrayresiarg_scalarsfr   s         b/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_chandrupatla.pywrappedz._vectorize.<locals>.decorator.<locals>.wrapped   s    qM''EFPQ(94QJQC499U+, ,=GH	y|HH

1k?+, J R Is   A8A= )r    r"   r   s   ` r!   	decoratorz_vectorize.<locals>.decorator   s    	     r#   )r   r$   s   ` r!   
_vectorizer&      s    
 r%   c                       fd}|S )Nc                    h d}|D ci c]  }||v s||j                  |       }}|j                  dd       t              r	fd}n} 	| |f||d|}	t        k(  r3|j                  \  |_        |_        |j                  \  |_        |_        n>|j                  \  |_        |_	        |_        |j                  \  |_        |_
        |_        |j                  |_        |`|`|`|S c c}w )N>   fatolfrtolxatolxrtolcallbackc                 6   t         k(  r3| j                  \  | _        | _        | j                  \  | _        | _        n>| j                  \  | _        | _        | _        | j                  \  | _        | _        | _        | j                  | _
        | `| `| `	 |       S N)r   bracketxlxr	f_bracketflfrxmfmf_xfun)r   	_callbackfuncs    r!   r-   zC_wrap_chandrupatla.<locals>._chandrupatla_wrapper.<locals>.callback7   s}    9$%([[NCFCF%(]]NCFCF-0[[*CFCFCF-0]]*CFCFCF''KMG ~%r%   )
tolerancesr-   )popcallabler   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   )
r    r0   kwargstol_keyskeyr<   r-   r   r:   r;   s
           @r!   _chandrupatla_wrapperz1_wrap_chandrupatla.<locals>._chandrupatla_wrapper1   s    76>Ps#-c6::c?*P
PJJz40	I& !H1gR*xR6R9 [[NCFCF ]]NCFCF%([["CFCFCF%(]]"CFCFCF''KMG
; Qs
   	C1C1r#   )r;   rB   s   ` r!   _wrap_chandrupatlarC   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!   f1rL   X   s7    ArE	A~1b5)AqsRiK77r%   c                     d| dz
  dz  z   S )N   rI      r#   rJ   s    r!   f2rP   \   s    B{?r%   c                 F    t        |       }|j                  |       d| z  z
  S )NrN   )r   exprK   r   s     r!   f3rT   `   s"    		B66!9qs?r%   c                 0    | dz  d| dz  z  z
  d| z  z
  dz   S )N      @rN   rG   g      4@r#   rJ   s    r!   f4rW   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      rH      r#   rJ   s    r!   f5r\   i   s*    QT6AadF?QqS 1$$r%   c                     d}d} | |      } | |      }||z
  }||kD  r||||| fn|||||f\  }}}}}t        |      D ]&  }||z  }||z   }	 | |	      }
|
|k  r||	||
f\  }}}}& n ||	||
fS )Ngw?rE   )r   )r;   x1x2phimaxiterrL   rP   stepr   x3rT   s              r!   _bracket_minimumrd   m   s    
CG	bB	bB7D79BwRRdU3"$b"b$!7 BBD 7^ $Y"X7R^NBB r2r2r!!r%         i   i   i   i   i   i i i    rY   rO   r[   	      
         皙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
                  j                  dd      ej
                  j                  dd ej                  ddd      g      d	               Z	ej
                  j                  d
 e
       dddg      d        Zd Zd Zd Zej
                  j                  de      d        Zej
                  j                  ddddgf      ej
                  j                  dd      d               Zd Zd Zd Zy)TestChandrupatlaMinimizec                     t        ||      }|j                  d||z
  dz  z         d|j                  z  dz  z  }|j                  ||j                        d   S )Nrv   rH   g      ?dtyper#   )r   rR   piasarrayr}   )selfrK   locr   r   s        r!   r    zTestChandrupatlaMinimize.f   sY    Q$vvdaeaZ'((AbeeGc>9zz#QWWz-b11r%   r}   float32float64r   333333?g?rr   c                    ddd   }t              fddD        }j                  |      }j                  j                  t        j                  j                  d             |j                        }t        | j                  g|d|fi}t        |j                  ||	       t        |j                  |       y )
Ng{Gzt?gƠ>r   c              3   D   K   | ]  }j                  |         yw)r|   N)r   ).0xir}   r   s     r!   	<genexpr>z6TestChandrupatlaMinimize.test_basic.<locals>.<genexpr>   s     D22::b:.Ds    r   rN   r|   r   argsrtol)getattrr   broadcast_tor   normpdfr   _chandrupatla_minimizer    r   rK   r   r9   )r   r   r   r}   r   r0   r9   r   s     ``    r!   
test_basicz#TestChandrupatlaMinimize.test_basic   s    
  D1%8E"DDjjEj*oobjj%**..*;);5jI399U$TVVCgCSFCs.%r%   r   rq   rZ      rZ   rH   rH   c           
          |r"|j                  ddd      j                  |      n|j                  d      }|f}|j                  d      |j                  d      |j                  d      ft        |       fd       } fd	d
_        t        gd|i} ||      }g d}|D ]g  }	|j                  |D 
cg c]  }
t        |
|	       c}
      }t        t        ||	            }t        ||       t        ||	      j                  |k(  rgJ  t        |j                    j                  |j                  g|        t        |j                    j                  |j                  g|        t        |j                     j                  |j"                  g|        t        |j$                    j                  |j&                  g|        |j)                  |j*                        j                  k(  sJ |j)                  |j,                        j                  dz
  k(  sJ |j/                  |j0                  j2                  d      sJ |j/                  |j4                  j2                  d      sJ |j/                  |j*                  j2                  d      sJ |j/                  |j,                  j2                  d      sJ y c c}
w )Nru   r   rq   r                 rV   c                 8    t        j                  gd| fiS )Nr   )r   r    )
loc_singler0   r   s    r!   chandrupatla_singlezHTestChandrupatlaMinimize.test_vectorization.<locals>.chandrupatla_single   s    )$&&O7O*OOr%   c                  R    xj                   dz  c_          j                  | i |S NrF   f_evalsr    r   r?   r    r   s     r!   r    z6TestChandrupatlaMinimize.test_vectorization.<locals>.f   &    IINI4664*6**r%   r   r   )rK   r9   successstatusnfevnitr1   r6   r2   r4   r7   r5   rZ   boolintegral)linspacereshaper   r&   r   r   stackr   r	   r   r   r9   r    rK   r4   r1   r7   r6   r5   r2   maxr   r   isdtyper   r}   r   )r   r   r   r   r   r   r   refsattrsattrrefref_attrres_attrr0   r    s   `            @@r!   test_vectorizationz+TestChandrupatlaMinimize.test_vectorization   sP    >Cbkk%r*2259

SVv**S/2::b>2::b>A	B	P 
	P	+ 	$Q<<t<"3'5 	5Dxxt Dd!3 DEHT 23HHh/3%++u444		5 	!5!56svv 5 56svv 5 56svv 5 56vvchh199,,,vvcgg!))a-///zz#++++V444zz#****J777zz#((..*555zz#''--444 !Es   >K
c                 *   fd}j                  dj                        f}j                  dgdz  j                        j                  dgdz  j                        j                  t        j
                  gdz  j                        f}t        |g||dd}j                  t        j                  t        j                  t        j                  t        j                  gj                        }t        |j                  |       y )Nc                     d d d fdg}g }t        t        |            D ]:  }| |df   }t        t        |      |         }|j	                   ||   |             < j                  |      S )Nc                     | dz
  dz  S )N      @rH   r#   rJ   s    r!   <lambda>z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>      CA~ r%   c                     | dz
  S Nrr   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>  
    q2v r%   c                     | dz
  dz  S )Nr   r   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>  r   r%   c                 Z    j                  | j                  j                              S r/   	full_liker   nanrS   s    r!   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>  s    r||Arzz"&&/AB r%   .)r   r
   intr	   r   r   )xsjsfuncsr   r   rK   jr   s          r!   r    z.TestChandrupatlaMinimize.test_flags.<locals>.f  s{    -%-BDE C72;' (q#vJQ(

858A;'( 88C= r%   r   r|   r   rH   rr   r   ra   )arangeint64r   r   npr~   r   eim_ECONVERGED	_ESIGNERR	_ECONVERR
_EVALUEERRint32r   r   )r   r   r    r   r0   r   	ref_flagss    `     r!   
test_flagsz#TestChandrupatlaMinimize.test_flags   s    
	! 		!288	,.::qc!e2:::6::qc!e2:::6::ruugairzz::< %QHHtRHJJ # 079xx  A	

I.r%   c                    t         j                  j                  d      }|j                  |j                  d            }|j                  d|j                        |j                  d      |j                  d      f}|f}t        |dddd      }|j                         }d	|d
<   t        | j                  g|i |}|j                  |j                  |j                  z
        }	|j                  d|d
   z  |j                        }
t        |	|j                  d|
|j                               d|d
<   t        | j                  g|i |}|j                  |j                  |j                  z
        }|j                  d|d
   z  |j                        }
t        ||j                  d|
|j                               t        ||	       |j                         }d	|d<   t        | j                  g|i |}|j                  |j                  |j                  z
        }	|j                  d|d   z  |j                  |j                        z  |j                        }
t        |	|
       d|d<   t        | j                  g|i |}|j                  |j                  |j                  z
        }|j                  d|d   z  |j                  |j                        z  |j                        }
t        ||
       t        ||	       |j                         }d	|d<   t        | j                  g|i |}|j                  |j                   d|j"                  z  z
  |j$                  z         }|j                  d|d   z  |j                        }
t        ||j                  d|
|j                               d|d<   t        | j                  g|i |}|j                  |j                   d|j"                  z  z
  |j$                  z         }|j                  d|d   z  |j                        }
t        ||j                  d|
|j                               t        ||       |j                         }d	|d<   t        | j                  g|i |}|j                  |j                   d|j"                  z  z
  |j$                  z         }|j                  d|d   z  |j                  |j&                        z  |j                        }
t        ||
       d|d<   t        | j                  g|i |}|j                  |j                   d|j"                  z  z
  |j$                  z         }|j                  d|d   z  t        |j&                        z  |j                        }
t        ||
       t        ||       y )N   FA92 rZ   sizer   r|   r   rN   )r   r+   r,   r)   r*   MbP?r+   r   rZ   ư>r,   r)   rH   r*   )r   randomdefault_rngr   r   dictcopyr   r    absr2   r1   r}   r   fullrK   r4   r7   r5   r9   )r   r   rngpr0   r   kwargs0r?   res1j1tolres2j2h1h2s                  r!   test_convergencez)TestChandrupatlaMinimize.test_convergence  s   ii##$78JJszzqz)*::b

:3RZZ]BJJqMRtD!1Ew%dffAwA&AVVDGGdgg%&jj6'?*!''j:r2774AGG7<=w%dffAwA&AVVDGGdgg%&jj6'?*!''j:r2774AGG7<=r2w%dffAwA&AVVDGGdgg%&jj6'?*266$&&>9jIr3w%dffAwA&AVVDGGdgg%&jj6'?*266$&&>9jIr3r2w%dffAwA&AVVDGGa$''k)DGG34jj6'?*!''j:r2774AGG7<=w%dffAwA&AVVDGGa$''k)DGG34jj6'?*!''j:r2774AGG7<=r2w%dffAwA&AVVDGGa$''k)DGG34jj6'?*266$((+;;177jKr3w%dffAwA&AVVDGGa$''k)DGG34jj6'?*3txx=8jHr3r2r%   c                     j                  d      j                  d      j                  d      j                  d      fdt         j                  gfd}j                  |j                        rJ j                  |j                  dz   k(        sJ j                  |j                  k(        sJ  fdj                  _	        j                  _
        d_        d _        t         j                  gfd	}|j                         D ][  }|d
k(  r1||   t        j                  k(  sJ ||   t        j                   k(  r7J ||   j                  |   cxk(  r
||   k(  rXJ  J  y )N~,?r   r   rN   r   rZ   c                    xj                   dz  c_         | _        t        | d      sJ j                   dk(  r(| j                  | j                  | j
                  fk(  s~J | j                  j                  k(  | j
                  j
                  k7  z  }| j                  j                  k7  | j
                  j
                  k(  z  }j                  ||z        sJ | j                  _        | j
                  _        | j                  t        j                  k(  sJ t        j                  | j                        | j                         t        j                  | j                        | j                         t        j                  | j
                        | j                         t        j                  | j                        | j                          j                   k(  rt"        y NrF   rK   r   )iterr   hasattrr1   r6   r2   allr   r   _EINPROGRESSr   r    r4   r7   r5   rK   r9   StopIteration)	r   
changed_xr
changed_xlr0   r-   r   ra   r   r   s	      r!   r-   z@TestChandrupatlaMinimize.test_maxiter_callback.<locals>.callbacka  sm   MMQMHL3$$$}}!/7:::!ff3(++8MN
!ff3(++8MN
vvj:5666&&HK&&HK::!1!1111DFF3663/8DFF3663/8DFF3663/8DFF355#.8}}'## (r%   re   r   r-   r   )r   r   r    anyr   r   r   r   r   r1   r2   r   r   keysr   r   
_ECALLBACK)	r   r   r   r   rA   r0   r-   r   ra   s	   ``   @@@@r!   test_maxiter_callbackz.TestChandrupatlaMinimize.test_maxiter_callbackU  sv   jj"::b>2::a="**Q-@$TVV 6g 6SF-4666#++&&&vvchh'!)+,,,vvcgg()))	$ 	$, ffff%dff 9w 9cV/79
 88: 	BCh3x3==000CyCNN222CyHLL$5ASAAAAA	Br%   casec                 X   |\  }}}d}||z   }t        |||      \  }}}}	}
}d}d}d}d}|j                  |      |j                  |      |j                  ||j                        f}t        |g|||||d}t	        |j
                  |j                  ||j                               y )Ng?g-C6?r   gؗҜ<r|   )r+   r)   r,   r*   )rd   r   r   r   r   r   r   )r   r   r   r;   r^   r   rb   r_   rc   rL   rP   rT   r+   r)   r,   r*   r0   r   s                     r!   test_nit_expectedz*TestChandrupatlaMinimize.test_nit_expected  s    
 b# $Y!1$B!?BBB **R."**R."**Rrzz*2RR$T LG L5+0ULCrxx!@Ar%   g?gffffff?float16r   r   c           	         t              j                  |      }j                  d      j                  d      j                  d      f}fd}t        |g|d|fi}|j                  j                  k(  sJ t        |j                  |t        j                  j                        j                               y )Nr|   rF   rN   c                 V    | j                   k(  sJ j                  | |z
  dz        S NrH   )r}   astype)rK   r   r}   r   s     r!   r    z.TestChandrupatlaMinimize.test_dtype.<locals>.f  s.    77e###99a#g\511r%   r   r   )
r   r   r   rK   r}   r   r   sqrtfinfoeps)r   r   r}   r   r0   r    r   s     ``   r!   
test_dtypez#TestChandrupatlaMinimize.test_dtype  s     E"jjEj*::b:.::au:-::au:-/	2 %Q>>v>uu{{e###s288E?3F3F)GHr%   c                    d}|j                  d      |j                  d      |j                  d      f}t        j                  t        |      5  t	        d g|  d d d        d}|j                  d      |j                  d      |j                  d      f}t        j                  t        |      5  t	        d g|  d d d        d	}|j                  d
dg      |j                  ddg      |j                  g d      f}t        j                  t        t
        f|      5  t	        d g|  d d d        d}|j                  ddg      |j                  ddg      |j                  ddg      f}t        j                  t        |      5  t	        d g|  d d d        d}|j                  d      |j                  d      |j                  d      f}t        j                  t        |      5  t	        d g|ddi d d d        t        j                  t        |      5  t	        d g|d|j                  i d d d        t        j                  t        |      5  t	        d g|ddi d d d        t        j                  t        |      5  t	        d g|d|j                  i d d d        d}t        j                  t        |      5  t	        d g|ddi d d d        t        j                  t        |      5  t	        d  g|ddi d d d        d!}t        j                  t        |      5  t	        d" g|d#d$i d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)%N`func` must be callable.ri   r   r   match3Abscissae and function output must be real numbers.            ?c                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>      Q r%   z...be broadcast...rg   r  rZ   r   rN   c                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   z:The shape of the array returned by `func` must be the samerN   c                     | d   | d   | d   gS )N)r   .)rF   .r#   rJ   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 r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   r+   re   c                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   r,   c                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   r)   ekkic                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   r*   )`maxiter` must be a non-negative integer.c                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   ra         ?c                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   `callback` must be callable.c                     | S r/   r#   rJ   s    r!   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r%   r-   	shrubbery)r   pytestraises
ValueErrorr   RuntimeErrorr   )r   r   messager0   s       r!   test_input_validationz.TestChandrupatlaMinimize.test_input_validation  sm    -**R."**Q-A>]]:W5 	3"42'2	3 H**W%rzz!}bjjmC]]:W5 	:";99	: '**b"X&

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

Aq6(:BJJ1v<NN]]:W5 	-"#N -$+-	- =**R."**Q-A>]]:W5 	D";CCC	D]]:W5 	H";GGG	H]]:W5 	H";GGG	H]]:W5 	H";GGG	H >]]:W5 	G";FF#F	G]]:W5 	F";EE"E	F 1]]:W5 	P";OO;O	P 	PM	3 	3
	: 	:	: 	:
	- 	-	D 	D	H 	H	H 	H	H 	H	G 	G	F 	F	P 	Ps   M4M,%M9N5N)N 'N-N:OOOM),M69NNN N*-N7:OOOO(c                    |j                  ddd      d d |j                  f   }|j                  t        t	        g d                  j
                  }t        | j                  g|d|fi}|j                  t        j                  |j                  |      |j                  | j                  ||      k(  z        sJ |j                  d d df   }t        |j                  |j                  j
                  |      ddi y )	Nre   rF   rO   r   r   r   r   V瞯<)r   newaxisr   listr   Tr   r    r   xpxiscloserK   r9   r   broadcast_arrays)r   r   r   bracketsr   r   s         r!   test_bracket_orderz+TestChandrupatlaMinimize.test_bracket_order  s    kk"a#ArzzM2::d<
#;<=??$TVVDhDcVDvvckk#%%-DFF3<L1LMNNNeeAqDk,,SUUWWc:GGr%   c                 R   fd}j                  d      j                  d      j                  d      f}t        j                  d      5  t        |g|ddd}d d d        j                  sJ t        |j                  j                  d      d	
       t        |j                  j                  d      d       d }j                  d      j                  d      j                  d      f}t        |g| }|j                  sJ t        |j                  j                  d             d }j                  d      j                  d      j                  d      f}t        |g|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 }j                  d      j                  d      j                  d      f}j                  d      }t        |g|d|fi}t        |j                  |       fd}j                  d      j                  d      j                  j                        f}t        |g|ddddd}|j                  sJ |j                  |j                  cxk  r|j                  k  sJ  J  ||j                         ||j                        cxk(  r ||j                        k(  sJ  J y # 1 sw Y   xY w)Nc                 P    j                  | j                  d      sJ | dz
  dz  S )Nreal floatingrF   rH   r   r}   rS   s    r!   r    z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s)    ::agg777EA:r%   r   rY   ignoreinvalid)r)   r*         ?r   r   r   gN~hatolc                     | dz
  dz  S NrF   rH   r#   rJ   s    r!   r    z6TestChandrupatlaMinimize.test_special_cases.<locals>.f      aC!8Or%   rF   c                     | dz
  dz  S rB  r#   rJ   s    r!   r    z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  rC  r%   r  g?rN   ra   rZ   rg   c                     | |z
  dz  dz
  S )NrH   rF   r#   rK   cs     r!   r    z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s    aC!8a<r%   re   UUUUUU?r   c                 (    j                  |        S r/   )sinrS   s    r!   r    z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s    FF1I:r%   r+   r,   r)   r*   )r   r   errstater   r   r   rK   r9   r   r1   r2   r   r   r   r~   r6   )r   r   r    r0   r   rG  s    `    r!   test_special_casesz+TestChandrupatlaMinimize.test_special_cases  s   	 **R."**Q-A>[[* 	H(GWGAQGC	H{{{rzz"~D9Bf=	 **Q-A

1=$Q11{{{rzz"~.	 **R."**S/2::a=@$Q<<!<vv(svv((vww!||xx1}}zzRuu||	  **R."**Q-A>JJsO$Q<<t<q!	 **Q-A

2550AA$QUU!STU{{{vv''''''yAcffI236622222]	H 	Hs   LL&N)__name__
__module____qualname__r    r&  markparametrizer   r   r   tupler   r   r   r   casesr  r  r+  r5  rM  r#   r%   r!   rz   rz      s#   2
 [[W&<=[[US+"++eT2*F$GH& I >& [[Wuwvy&IJ%5 K%5P/2:x2Bh [[VU+B ,B, [[UTD#;$78[[W&GHI I 9I",P\H73r%   rz   zboolean indexing assignmentc            	          e Zd Zd Zej
                  j                  dd ej                  ddd      g      d        Z	ej
                  j                  d e
       d	d
dg      d        Zd Zd Zd Zej
                  j                  de      d        Zej
                  j                  ddddgf      ej
                  j                  dd      d               Zd Zd Zy)TestFindRootc                 2    t        j                  |      |z
  S r/   )r   ndtr)r   qr   s      r!   r    zTestFindRoot.f+  s    ||A""r%   r   r   ru   r   rr   c                 b   |j                  d      |j                  d      }}t        | j                  ||f|j                  |      f      }|j                  t        j                         j                  |      |j                  |      j                        }t        |j                  |       y )Nr   rV   r   r|   )	r   r   r    r   r   ppfr}   r   rK   )r   r   r   abr   r   s          r!   r   zTestFindRoot.test_basic.  s}     zz#

21Abjjm-=>jj))!,BJJqM4G4GjHs#r%   r   r   r   r   c           
          |r&t        j                  ddd      j                  |      nt        j                  d      }|j	                  |      }|f}|j
                  }t         j                   fd       } fdd_        |j	                  d|j                  	      |j	                  d
|j                  	      f}t        ||      }	 ||      j                         }
|
D cg c]  }|j                   }}|j                  |j	                  ||	      |      }t        |	j                  |       |
D cg c]  }|j                   }}|j                  |j	                  ||	      |      }t        |	j                  |d       t        |	j                    j                  |	j                  g|        |
D cg c]  }t        |j                          }}|j                  |j	                  ||j                  	      |      }t        |	j                   |       |
D cg c]  }|j"                   }}|j                  |j	                  ||j$                  	      |      }t        |	j"                  |       |
D cg c]  }|j&                   }}|j                  |j	                  ||j$                  	      |      }t)        |      r@t        |	j&                  |       |j+                  |	j&                        j                  k(  sBJ |	j&                  j,                  |k(  sJ |	j&                  j
                  |j$                  k(  sJ |
D cg c]  }|j.                   }}|j                  |j	                  ||j$                  	      |      }t)        |      rCt        |	j.                  |       |j+                  |	j.                        j                  dz
  k(  sBJ |	j.                  j,                  |k(  sJ |	j.                  j
                  |j$                  k(  sJ |
D cg c]  }|j0                  d    }}|j                  |j	                  ||	      |      }t        |	j0                  d   |       |
D cg c]  }|j0                  d    }}|j                  |j	                  ||	      |      }t        |	j0                  d   |       t3        |	j0                  d   |	j0                  d          |j5                  |	j                        }|j7                  |	j                  |   |	j0                  d   |   k(  |	j                  |   |	j0                  d   |   k(  z        sJ t)        |      rdnd}|
D cg c]  }|j8                  d    }}|j                  |j	                  ||	      |      }t        |	j8                  d   ||       t        |	j8                  d     j                  |	j0                  d   g|        |
D cg c]  }|j8                  d    }}|j                  |j	                  ||	      |      }t        |	j8                  d   ||       t        |	j8                  d     j                  |	j0                  d   g|        |j7                  |j;                  |	j                  |         |j=                  |j;                  |	j8                  d   |         |j;                  |	j8                  d   |               k(        sJ y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nru   r   rq   r   c                 6    t        j                  d| f      S )N)r   rN   r[  )r   r    )r   r   s    r!   find_root_singlez9TestFindRoot.test_vectorization.<locals>.find_root_single@  s    TVVWA488r%   c                  R    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|   rV   r[  r-  r?  rH   rF   g&.>)r   r   r   r   r   r}   	vectorizer   r   ravelrK   r   r8   r   r    r   r   r   r   r   r   r   r   r   r0   r   isfiniter   r3   r   minimum)r   r   r   r   p_xpargs_xpr}   ra  r0   r   r   r   ref_xref_fref_success
ref_statusref_nfevref_nitref_xlref_xrfiniter@  ref_flref_frr    s   `                       @r!   r   zTestFindRoot.test_vectorization6  s    =BR[[b)11%8**S/ 	
zz!}'

		9 
	9	+ 	**S

*3RZZ"**Z5UU71"((*"&'3''

2::e5:95Au%$()S))

2::e5:95AU3!8!89489StCKK(99jjKrww!GO[1,01Scjj1
1ZZ

:RXX
 FN


J/(,-CHH--::bjjjBEJB<CHHh/66#((#qyy00088>>U***88>>RXX---&*+s377++**RZZrxxZ@%HB<CGGW-66#''?aiik11177==E)))77==BHH,,,,01S#++a.11BJJvUJ;UCA/,01S#++a.11BJJvUJ;UCA/s{{1~s{{1~6SUU#vvsuuV}Av(>>v#++a.*@@B C 	C C !u$.23s#--"33BJJvUJ;UCa(&t<a(&$&&Q*J'*JK.23s#--"33BJJvUJ;UCa(&t<a(&$&&Q*J'*JKvvbffSWWV_-jja(8(@!A!#a(8(@!ACC D 	D D{ ( *
 : 2 . , 2 2 4
 4s<   '\9\>\##\(?\-\2$\7<\<:]]c                    fd}j                  dj                        f}j                  dgdz        j                  j                  gdz        }}t	        |||f|d      }j                  t
        j                  t
        j                  t
        j                  t
        j                  gj                        }t        |j                  |       y )Nc           	      J   |j                   j                  k(  sJ t              r=d d d fdg}t        | |      D cg c]  \  }} |t	        |         |       c}}S d d d fdg}t        | |      D cg c]  \  }} ||   |       c}}S c c}}w c c}}w )	Nc                     | dz
  S Nr   r#   rJ   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s
    1s7 r%   c                     | dz
  S r   r#   rJ   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s
    1r6 r%   c                     | dz
  dz  S N皙?rZ   r#   rJ   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s    AGa< r%   c                 Z    j                  | j                  j                              S r/   r   rS   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s    2<<2::bff3E#F r%   c                     | dz
  S rw  r#   rJ   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s
    q3w r%   c                     | dz
  S r   r#   rJ   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  r   r%   c                     | dz
  dz  S rz  r#   rJ   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  r   r%   c                     j                   S r/   )r   rS   s    r!   r   z4TestFindRoot.test_flags.<locals>.f.<locals>.<lambda>  s    rvv r%   )r}   r   r   zipr   )r   r   r   rK   r   r   s        r!   r    z"TestFindRoot.test_flags.<locals>.f  s     88rxx'''r{*)/FH 69R[ATQc!fa(AA&%-%'E -0BK8DAqHE!HQK88 B 9s   B Br   r|   r   rH   r   )r   r   r   r~   r   r   r   r   r   r   r   r   r   )r   r   r    r   r]  r^  r   r   s    `      r!   r   zTestFindRoot.test_flags  s    	9$ 		!288	,.zz2$q&!2::ruugai#81Aq6a8JJ # # # 0 8:xx  A	 	

I.r%   c           	      	   t         j                  j                  d      }|j                  |j                  d            }|j                  d       |j                  d      f}|f}t	        |t	        dddd            }t        |      }d|d	   d
<   t        | j                  |fi |}t        |j                  d   |j                  d   z
  |j                  ||j                  d                   d|d	   d
<   t        | j                  |fi |}	t        |	j                  d   |	j                  d   z
  |j                  ||j                  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                  |j                        z         d|d	   d<   t        | j                  |fi |}	t        |	j                  d   |	j                  d   z
  d|j                  |	j                        z         t        |	j                  d   |	j                  d   z
  |j                  d   |j                  d   z
         t        |      }d|d	   d<   t        | j                  |fi |}t        |j                  |j                        |j                  ||j                  d                   d|d	   d<   t        | j                  |fi |}	t        |j                  |	j                        |j                  ||j                  d                   t        |j                  |	j                        |j                  |j                               t        |      }d|d	   d<   |\  }
}|j                  |j                   | j                  |
g|       |j                   | j                  |g|             }t        | j                  |fi |}t        |j                  |j                        d|z         d|d	   d<   t        | j                  |fi |}	t        |j                  |	j                        d|z         t        |j                  |	j                        |j                  |j                               y )Nr   rZ   r   rV   r   rK  r   r<   r   r<   r+   rF   r   r,   r)   r*   )r   r   r   r   r   r   r   r    r   r0   r   r   rK   r8   rf  )r   r   r   r   r0   r   r   r?   r   r   r^   r_   f0s                r!   r   zTestFindRoot.test_convergence  s   ii##$78JJszzqz)*JJrN?BJJrN3tDT!ST-UV'"(,|W%3F3t||Aa8||Arzz$'78	:(,|W%3F3t||Aa8||Arzz$'78	:t||Aa8||Aa8	: '"(,|W%3F3t||Aa8$:OP(,|W%3F3t||Aa8bffTVVn,	.t||Aa8||Aa8	: '"(,|W%3F3rvvdhh'aD9I)JK(,|W%3F3rvvdhh'aD9I)JKrvvdhh')9:'"(,|W%BZZvtvvb0401266&$&&:Kd:K3LM3F3rvvdhh'b1(,|W%3F3rvvdhh'b1rvvdhh')9:r%   c                    	 j                  d      	j                  d      j                  d      fdfdd _        d _        t        	f      }j	                  |j
                        rJ j                  |j                  dz   k(        sJ j                  |j                  k(        sJ 	 fdd	_	        d _
        d d g_        t        	f
      }|j                         D ]  }|dk(  rqt        ||   j                  t        j                  j                                t        ||   j                  t        j"                  j                                y|dv r1t        ||   d   ||   d          t        ||   d   ||   d          |j%                  d      rt        ||   ||           y )Nr   r   rV   rN   c                 T    t        j                  |       |z
  }| _        |_        |S r/   )r   rX  rK   r8   )rY  r   r   r    s      r!   r    z-TestFindRoot.test_maxiter_callback.<locals>.f  s(    ,,q/A%CACAEJr%   r   rH   c                    xj                   dz  c_         | _        t        | d      sJ j                   dk(  r#| j                  d   | j                  d   fk(  sJ | j                  d   j                  d   k(  | j                  d   j                  d   k7  z  | j                  d   j                  d   k7  | j                  d   j                  d   k(  z  z  }j	                  |      sJ | j                  d   j                  d<   | j                  d   j                  d<   | j
                  t        j                  k(  sJ t        j                  | j                  d         | j                  d          t        j                  | j                  d         | j                  d          t        j                  | j                        | j                         j                   k(  rt        y r   )r   r   r   r0   r   r   r   r   r   r    r3   rK   r8   r   )r   changedr0   r-   ra   r   r   r   s     r!   r-   z4TestFindRoot.test_maxiter_callback.<locals>.callback  s   MMQMHL3$$$}}!AA77BBB [[^x/?/?/BB"{{1~1A1A!1DDF"{{1~1A1A!1DD!$Q83C3CA3F!FHI vvg&"%++a.HQ"%++a.HQ::!1!1111DFF3;;q>15s}}Q7GHDFF3;;q>15s}}Q7GHDFF355!,cgg6}}'## (r%   re   r   r   r|   >   r0   r3   r   rF   _)r   rK   r8   r   r   r   r   r   r   r   r   r0   r   r   r   r   r   r   
startswith)
r   r   r   r   rA   r0   r-   r    ra   r   s
   ``   @@@@@r!   r   z"TestFindRoot.test_maxiter_callback  s   JJx ::c?BJJrN3	
 7!w?66#++&&&vvchh'!)+,,,vvcgg()))	$ 	$,  $<G1$B 88: 
	5ChC"**S]]"((**STS	2::cnnBHH:+UV00S	!c#hqk:S	!c#hqk:$S	3s84
	5r%   r   c                    |\  }}}}}|j                  |d   |j                        |j                  |d   |j                        f}|j                  ||j                        }t        ||t        dd            }t	        |j
                  |j                   ||      |j                        dd	
       t        |j                  |j                  ||j                               y )Nr   r|   rF   g|=gh㈵>)r,   r+   r<   g:0yE>gMb`?)r   r@  )	r   r   r   r   r   r8   r   r   r   )	r   r   r   r    r0   rootnfevalidr   s	            r!   r  zTestFindRoot.test_nit_expected  s    
 (,$7D&"
 ::gaj

:;::gaj

:;=zz$bjjz17t%t/LMAdG2::!F!	."**V288*"DEr%   r  gCl?gV-?r}   r  c                    t               }|rdk(  rt        j                  d       t        d       t        j                   d        fd}j	                  d      j	                  d      }}j	                  |      }t        |||f|fdd	i
      }	 t        |j                  |d	       y # t        $ r< |j                  j                  k(  sJ j                  |j                  dk(         Y y w xY w)Nr  z0`float16` dtype only supported for NumPy arrays.z does not support c                 T    | |z
  dz  }t              rj                  |      S |S )NrG   r|   )r   r   )rK   r  r   r}   r   s      r!   r    z"TestFindRoot.test_dtype.<locals>.f<  s0    t8"C|zz#Uz33Jr%   r  r|   rZ   r+   r   r  r?  r   )r   r&  skipr   r   r   r   rK   AssertionErrorr}   r   r8   )	r   r  r}   r   	not_numpyr    r]  r^  r   s	     ``     r!   r  zTestFindRoot.test_dtype0  s     !$	)+KKJKE4(=KK2$089	 zz"Ez*BJJqJ,F1zz$ez,Aq6WdOL	!CEE4d3 	!55;;%'''FF377a< 	!s   (C ADDc                 b   d }d}t        j                  t        |      5  |j                  d      |j                  d      f}t	        d |       d d d        d}t        j                  t        |      5  |j                  d      |j                  d      f}t	        ||       d d d        d}t        j                  t        t
        f|      5  |j                  d	d
g      |j                  g d      f}t	        ||       d d d        d}t        j                  t        |      5  |j                  d
d
g      |j                  ddg      f}t	        d |       d d d        d}|j                  d      |j                  d      f}t        j                  t        |      5  t	        ||t        d             d d d        t        j                  t        |      5  t	        ||t        |j                               d d d        t        j                  t        |      5  t	        ||t        d             d d d        t        j                  t        |      5  t	        ||t        |j                               d d d        d}t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d       d d d        d}t        j                  t        |      5  t	        ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                     | S r/   r#   rJ   s    r!   r;   z0TestFindRoot.test_input_validation.<locals>.funcN  s    Hr%   r  r  ri   r   r  r  z...not be broadcast...rg   r  r  z,The shape of the array returned by `func`...rN   c                     | d   | d   | d   gS )Nr   rF   r#   rJ   s    r!   r   z4TestFindRoot.test_input_validation.<locals>.<lambda>d  s    1qtQqT 2 r%   r  re   )r+   r  )r,   r  )r)   )r*   r  r!  ra   r#  r%  )r-   )r&  r'  r(  r   r   r)  r   r   )r   r   r;   r*  r0   s        r!   r+  z"TestFindRoot.test_input_validationK  s   	 -]]:W5 	%jjnbjjm3GdG$	% H]]:W5 	%jj'A6GdG$	%
 +]]J5WE 	%jj"b*BJJy,AAGdG$	% A]]:W5 	=jj"b*BJJ1v,>>G2G<	= =**R."**Q-/]]:W5 	@dG2?	@]]:W5 	DdG2660BC	D]]:W5 	DdG60BC	D]]:W5 	DdG2660BC	D >]]:W5 	2dGS1	2]]:W5 	1dGR0	1 1]]:W5 	;dGk:	; 	;M	% 	%
	% 	%	% 	%
	= 	=	@ 	@	D 	D	D 	D	D 	D	2 	2	1 	1	; 	;s   /L&5/L33M '4M"M#M'$M4 #N(NNN%&L03L= M
MM$'M14M>N
NN"%N.c                  
   d }j                  g d      j                  g d      }}t        j                  dd      5  t        |||f      }d d d        j	                  j
                        sJ t        |j                  dd  j                  d|j                  d                fd	}t        |j                  d
      j                  d      f      }|j
                  sJ t        |j                  j                  d             d }j                  ddg      }t        |j                  d      j                  d      f|f      }t        |j
                  j                  ddg             t        |j                  j                  j                  dg             d }t        j                  d      5  j                  j                        }t        |||f      }d d d        |j
                  sJ t        |j                  j                  j                               d }j                  d      j                  d      }}t        |||fd      }t        |j
                  j                  d             t        |j                  j                  dj                               t        |j                  j                  dj                               t        |j                  j                  dj                               t        |j                   d   |       t        |j                   d   |       t        |j                  |       t        || | fd      }t        |j                  |        t        |||fd      }t        |j
                  j                  d             t        |j                  j                  dj                               t        |j                  j                  dj                               t        |j                  j                  dj                               t        |j                  j                  d             d }t        |j                  d      j                  d      fj                  d            }t        |j                  j                  d             y # 1 sw Y   xY w# 1 sw Y   xY w)Nc                 &    d| z  dz   d|  dz   z  z
  S r   r#   rJ   s    r!   r    z*TestFindRoot.test_special_cases.<locals>.f  s    q519qQBF|++r%   )r{  r   r   r{  )?r>  r  r>  r;  )divider=  rF   r   r   c                 P    j                  | j                  d      sJ | dz  dz
  S )Nr8     rF   r9  rS   s    r!   r    z*TestFindRoot.test_special_cases.<locals>.f  s)    ::agg7777Q;r%   r:  rN   r>  c                     | dz  |z
  S r  r#   )rK   r  s     r!   r    z*TestFindRoot.test_special_cases.<locals>.f  s    a4$;r%   r[  FTc                     d| z  S r   r#   rJ   s    r!   r    z*TestFindRoot.test_special_cases.<locals>.f  s    Q3Jr%   r<  c                     | dz  dz
  S )NrZ   rF   r#   rJ   s    r!   r    z*TestFindRoot.test_special_cases.<locals>.f  s    a4!8Or%   g      rV   r  rg   r|   rH   rZ   c                     || z  dz
  S r   r#   rF  s     r!   r    z*TestFindRoot.test_special_cases.<locals>.f  s    Q37Nr%   re   rH  )r   r   rL  r   r   r   r   rK   r   r   r   infr   r   r   r   r0   )r   r   r    r]  r^  r   r  r  s    `      r!   rM  zTestFindRoot.test_special_cases{  s   	, zz,-

;O0P1[[(; 	'A1v&C	' vvckk"""ab	2774q#:;	 BJJrNBJJqM:;{{{rzz"~.	 zz1a&!BJJqM2::a=9HRZZ%>?rzz2662,78	 [[* 	+**RVV$CASz*C	+ {{{rzz"&&12	 zz#

21Aq61-RZZ%67

BJJrJ$BCARXX!>?"**Qbhh*"?@A*A*q!QB8Q/r" Aq61-RZZ%56

BJJqJ$ABARXX!>?"**Qbhh*"?@rzz"~.	 BJJrNBJJqM:AOrzz#/I	' 	'>	+ 	+s   S&*S3&S03S=N)rN  rO  rP  r    r&  rQ  rR  r   r   r   rS  r   r   r   r   r   r  r  r+  rM  r#   r%   r!   rV  rV  $  s   # [[S3E4(D"EF$ G$ [[Wuwvy&IJUD KUDn/>1;f;5z [[V%89F :F$ [[VeeU^%<=[[W&GH! I >!2.;`M0r%   rV  )/r   r&  numpyr   r   r   scipyr   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipy._lib.array_api_extraarray_api_extrar1  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&   rC   r   rL   rP   rT   rW   r\   rd   rT  rQ  skip_xp_backendsrz   rV  r#   r%   r!   <module>r     s         6 6 ( ( W W9 9 ? 8 ":"!J ,L9 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k%Q  S0%P  R`3 `3RS I
`3F l3PQ0%P  Rk%Q  S_0 _0SR R
_0r%   