
    e!hl              
          d dl Z d dlZd dlZd dlmZmZ d dlmc m	Z
 d dl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	d
lmZ d Z d Z! e!e      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'd0dfe'd1dfe'd2dfe'd3d)fe'd4d)fe'd5d)fe'd6d+fe'd7d+fe'd8d+fe(d.d'fe(d/d(fe(d0d&fe(d1d+fe(d2d)fe(d3d&fe(d4d(fe(d5d(fe(d6d)fe(d7d)fe(d8d&fZ*eejV                  jY                  d9      ejV                  j[                  d:d;<      ejV                  j[                  d=d><       G d? d@                                  Z.eejV                  jY                  d9      ejV                  j[                  d=d><      ejV                  j[                  d:d;<      ejV                  j[                  dAdB<       G dC dDe                                         Z/y)E    N)statsspecial)array_api_compatible)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)permutations   )TestScalarRootFindersc                       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         n/var/www/html/diagnosisapp-backend/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   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   )
r"   r2   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=   rD   s   ` r#   _wrap_chandrupatlarE   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         @          @r%   xs    r#   f1rM   Y   s7    ArE	A~1b5)AqsRiK77r'   c                     d| dz
  dz  z   S )N   rJ      r%   rK   s    r#   f2rQ   ]   s    B{?r'   c                 F    t        |       }|j                  |       d| z  z
  S )NrO   )r   exprL   r   s     r#   f3rU   a   s"    		B66!9qs?r'   c                 0    | dz  d| dz  z  z
  d| z  z
  dz   S )N      @rO   rH   g      4@r%   rK   s    r#   f4rX   f   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      rI      r%   rK   s    r#   f5r]   j   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?rG   )r   )r=   x1x2phimaxiterrM   rQ   stepr    x3rU   s              r#   _bracket_minimumre   n   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    rZ   rP   r\   	      
         皙gg333333ÿgɿg      пg333333ӿgffffffֿgٿgܿ      gskip_xp_backendsz	jax.numpyz*JAX arrays do not support item assignment.)reason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 )Nrw   rI   g      ?dtyper%   )r   rS   piasarrayr   )selfrL   locr   r   s        r#   r"   zTestChandrupatlaMinimize.f   sY    Q$vvdaeaZ'((AbeeGc>9zz#QWWz-b11r'   r   float32float64r   333333?g?rs   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   rO   r~   r   argsrtol)getattrr   broadcast_tor   normpdfr   _chandrupatla_minimizer"   r   rL   r   r;   )r   r   r   r   r   r2   r;   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   rr   r[      r[   rI   rI   c           
          |r"|j                  ddd      j                  |      n|j                  d      }|f}|j                  d      |j                  d      |j                  d      ft        |      }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 |j1                  |j2                  j4                  d      sJ |j1                  |j6                  j4                  d      sJ |j1                  |j,                  j4                  d      sJ |j1                  |j.                  j4                  d      sJ y c c}w )Nrv   r   rr   r                 rW   c                 8    t        j                  gd| fiS )Nr   )r   r"   )
loc_singler2   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 Nr   f_evalsr"   r   rA   r"   r   s     r#   r"   z6TestChandrupatlaMinimize.test_vectorization.<locals>.f   &    IINI4664*6**r'   r   r   )rL   r;   successstatusnfevnitr3   r8   r4   r6   r9   r7   r[   boolintegral)linspacereshaper   r   r(   r   r   stackr   r	   r   r   r;   r"   rL   r6   r3   r9   r8   r7   r4   maxr   r   isdtyper   r   r   )r   r   r   r   r   xp_testr   r   refsattrsattrrefref_attrres_attrr2   r"   s   `             @@r#   test_vectorizationz+TestChandrupatlaMinimize.test_vectorization   sZ    >Cbkk%r*2259

SVv**S/2::b>2::b>A!#&	B	P 
	P	+ 	$Q<<t<"3'5 	5D}}D%ISgc4&8%IJH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-///s{{00&999szz//<<<sxx~~z:::sww}}j999 &J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      @rI   r%   rK   s    r#   <lambda>z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>      CA~ r'   c                     | dz
  S Nrs   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>  
    q2v r'   c                     | dz
  dz  S )Nr   r   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>	  r   r'   c                 Z    j                  | j                  j                              S r1   	full_liker   nanrT   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    rL   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   rI   rs   r   rb   )arangeint64r   r   npr   r   eim_ECONVERGED	_ESIGNERR	_ECONVERR
_EVALUEERRint32r   r   )r   r   r"   r   r2   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                 r   t         j                  j                  d      }|j                  |j                  d            }|j                  d      |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 r[   sizer   r   rO   r   r-   r.   r+   r,   MbP?r-   r   r~   r[   ư>r.   r+   rI   r,   )r   randomdefault_rngr   dictcopyr   r"   absr4   r3   r   r   fullrL   r6   r9   r7   r;   )r   r   rngpr2   r   kwargs0rA   res1j1tolres2j2h1h2s                  r#   test_convergencez)TestChandrupatlaMinimize.test_convergence  s   ii##$78JJszzqz)*::b>2::a="**Q-@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   rO   r   r[   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 Nr   rL   r   )iterr   hasattrr3   r8   r4   allr   r   _EINPROGRESSr   r"   r6   r9   r7   rL   r;   StopIteration)	r   
changed_xr
changed_xlr2   r/   r   rb   r   r   s	      r#   r/   z@TestChandrupatlaMinimize.test_maxiter_callback.<locals>.callbackd  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'   rf   r   r/   r   )r   r   r"   anyr   r   r   r   r   r3   r4   r   r   keysr   r   
_ECALLBACK)	r   r   r   r   rC   r2   r/   r   rb   s	   ``   @@@@r#   test_maxiter_callbackz.TestChandrupatlaMinimize.test_maxiter_callbackX  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,   )re   r   r   r   r   r   r   )r   r  r   r=   r_   r   rc   r`   rd   rM   rQ   rU   r-   r+   r.   r,   r2   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}t        |      fd}t        |g|d|fi}|j                  j
                  k(  sJ t        |j                  |t        j                  |j                        j                               y )Nr~   r   rO   c                 V    | j                   k(  sJ j                  | |z
  dz        S NrI   )r   astype)rL   r   r   r   s     r#   r"   z.TestChandrupatlaMinimize.test_dtype.<locals>.f  s.    77e###>>1s7Q,66r'   r   r   )r   r   r   r   rL   r   r   r   sqrtfinfoeps)r   r   r   r   r2   r"   r   r   s     `    @r#   
test_dtypez#TestChandrupatlaMinimize.test_dtype  s     E"jjEj*::b:.::au:-::au:-/ "#&	7 %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.rj   r   r   match3Abscissae and function output must be real numbers.            ?c                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>      Q r'   z...be broadcast...rh   r
  r[   r   rO   c                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   z:The shape of the array returned by `func` must be the samerO   c                     | d   | d   | d   gS )N)r   .)r   .r%   rK   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 r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   r-   rf   c                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   r.   c                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   r+   ekkic                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   r,   )`maxiter` must be a non-negative integer.c                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   rb         ?c                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   `callback` must be callable.c                     | S r1   r%   rK   s    r#   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r  r'   r/   	shrubbery)r   pytestraises
ValueErrorr   RuntimeErrorr   )r   r   messager2   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                 F   t        |j                  d            }|j                  ddd      d d |j                  f   }|j                  t	        t        g d                  j                  }t        | j                  g|d|fi}|j                  |j                  |j                  |      |j                  | j                  ||      k(  z        sJ |j                  d d df   }t        |      }t        |j                  |j                  j                  |      dd	i y )
N      ?rf   r   rP   r   r   r   r   V瞯<)r   r   r   newaxislistr   Tr   r"   r   iscloserL   r;   r   broadcast_arrays)r   r   r   r   bracketsr   r   s          r#   test_bracket_orderz+TestChandrupatlaMinimize.test_bracket_order  s    !"**R.1kk"a#Aw$67::d<
#;<=??$TVVDhDcVDvvbjj,466#s;K0KLMMMeeAqDk!#&11#%%''3?LeLr'   c                    t        j                  d            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)Nr1  c                 P    j                  | j                  d      sJ | dz
  dz  S )Nreal floatingr   rI   r   r   rL   r   s    r#   r"   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s)    ??177O<<<EA:r'   r   rZ   ignoreinvalid)r+   r,   r   r   r   gN~hatolc                     | dz
  dz  S Nr   rI   r%   rK   s    r#   r"   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f      aC!8Or'   r   c                     | dz
  dz  S rF  r%   rK   s    r#   r"   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  rG  r'   r
  g?rO   rb   r[   rh   c                     | |z
  dz  dz
  S )NrI   r   r%   rL   cs     r#   r"   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s    aC!8a<r'   rf   UUUUUU?r   c                 (    j                  |        S r1   )sinrT   s    r#   r"   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f   s    FF1I:r'   )r-   r.   r+   r,   )r   r   r   errstater   r   r   rL   r;   r   r3   r4   r   r   r   r   r8   )r   r   r"   r2   r   rK  r   s    `    @r#   test_special_casesz+TestChandrupatlaMinimize.test_special_cases  s    ""**R.1	 **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   *L77MN)__name__
__module____qualname__r"   r*  markparametrizer   r   r   tupler   r   r   r  casesr  r  r/  r9  rP  r%   r'   r#   r|   r|      s#   2
 [[W&<=[[US+"++eT2*F$GH& I >& [[Wuwvy&IJ&: K&:R/2:x2Bh [[VU+B ,B, [[UTD#;$78[[W&GHI I 9I$,P\	M83r'   r|   cupyzcupy/cupy#8391c            	          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)TestChandrupatlac                 2    t        j                  |      |z
  S r1   )r   ndtr)r   qr   s      r#   r"   zTestChandrupatla.f5  s    ||A""r'   r   r   rv   r   rs   c                 `   |j                  d      |j                  d      }}t        | j                  |||j                  |      f      }|j                  t        j                         j                  |      |j                  |      j                        }t        |j                  |       y )Nr   rW   r   r~   )	r   _chandrupatla_rootr"   r   r   ppfr   r   rL   )r   r   r   abr   r   s          r#   r   zTestChandrupatla.test_basic8  s{     zz#

21 ARZZ]4DE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        |      }t         j                   fd       } fdd_        t        |j	                  d      |j	                  d	      |
      }	 ||      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]  }|j0                   }}|j                  |j	                  ||j&                        |      }t+        |      rCt        |	j0                  |       |j-                  |	j0                        j                  dz
  k(  sBJ |	j0                  j.                  |k(  sJ |	j0                  j
                  |j&                  k(  sJ |
D cg c]  }|j2                   }}|j                  |j	                  ||      |      }t        |	j2                  |       |
D cg c]  }|j4                   }}|j                  |j	                  ||      |      }t        |	j4                  |       t7        |	j2                  |	j4                         |j9                  |	j                        }|j;                  |	j                  |   |	j2                  |   k(  |	j                  |   |	j4                  |   k(  z        sJ t+        |      rdnd}|
D cg c]  }|j<                   }}|j                  |j	                  ||      |      }t        |	j<                  ||       t        |	j<                    j                  |	j2                  g|        |
D cg c]  }|j>                   }}|j                  |j	                  ||      |      }t        |	j>                  ||       t        |	j>                    j                  |	j4                  g|        |j;                  |jA                  |	j                  |         |jC                  |jA                  |	j<                  |         |jA                  |	j>                  |               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 )Nrv   r   rr   r   c                 8    t        j                  dd| f      S )Nr   rO   r_  )r`  r"   )r   r   s    r#   r   z@TestChandrupatla.test_vectorization.<locals>.chandrupatla_singleK  s    %dffb!1$??r'   c                  R    xj                   dz  c_          j                  | i |S r   r   r   s     r#   r"   z.TestChandrupatla.test_vectorization.<locals>.fO  r   r'   r   r   rW   r_  r~   r2  rC  rI   g&.>)"r   r   r   r   r   r   r   	vectorizer   r`  ravelrL   r   r;   r   r"   r   r   r   r   r   r   r   r   r   r3   r4   r   isfiniter   r6   r7   r   minimum)r   r   r   r   p_xpargs_xpr   r   r   r   r   r   ref_xref_funref_successref_flagref_nfevref_nitref_xlref_xrfiniterD  ref_flref_frr"   s   `                       @r#   r   z#TestChandrupatla.test_vectorization@  s    =BR[[b)11%8**S/ 	
zz!}'

!$'		@ 
	@	+ 	 BJJsORZZ^'R"1%++-"&'3''

2::e5:95Au%&*+s377++**RZZuZ=uEu5!8!89489StCKK(99jjKw||!LeT[1*./3CJJ//::bjjjBEJ

H-(,-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,,,$()S#&&))BJJvUJ;UC'$()S#&&))BJJvUJ;UC'svvsvv&SUU#vvsuuV}v6v#&&.8: ; 	; ; !u$$()S#&&))BJJvUJ;UCT2svv 8 89$()S#&&))BJJvUJ;UCT2svv 8 89vvbffSWWV_-jjv!7!#v!799 : 	: :{ ( ,
 : 0 . , * * *
 *s<   [)[.[["/[' [,[1&[6[;\ c                    fd}j                  dj                        f}j                  dgdz        j                  j                  gdz        }}t	        ||||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%   rK   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  s
    1s7 r'   c                     | dz
  S r   r%   rK   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  s
    1r6 r'   c                     | dz
  dz  S N皙?r[   r%   rK   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  s    AGa< r'   c                 Z    j                  | j                  j                              S r1   r   rT   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  s    2<<2::bff3E#F r'   c                     | dz
  S r{  r%   rK   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  s
    q3w r'   c                     | dz
  S r   r%   rK   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  r   r'   c                     | dz
  dz  S r~  r%   rK   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  r   r'   c                     j                   S r1   )r   rT   s    r#   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>  s    rvv r'   )r   r   r   zipr   )r   r   r   rL   r   r   s        r#   r"   z&TestChandrupatla.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   rI   r   )r   r   r   r   r`  r   r   r   r   r   r   r   r   )r   r   r"   r   rb  rc  r   r   s    `      r#   r   zTestChandrupatla.test_flags  s    	9$ 		!288	,.zz2$q&!2::ruugai#81 AqtQ?JJ # # # 0 8:xx  A	 	

I.r'   c           	      	   t         j                  j                  d      }|j                  |j                  d            }|j                  d       |j                  d      f}|f}t	        |dddd      }|j                         }d|d<   t        | j                  g|i |}t        |j                  |j                  z
  |j                  ||j                  d                   d	|d<   t        | j                  g|i |}	t        |	j                  |	j                  z
  |j                  ||j                  d	                   t        |	j                  |	j                  z
  |j                  |j                  z
         |j                         }d|d
<   t        | j                  g|i |}t        |j                  |j                  z
  d|j                  |j                        z         d	|d
<   t        | j                  g|i |}	t        |	j                  |	j                  z
  d	|j                  |	j                        z         t        |	j                  |	j                  z
  |j                  |j                  z
         |j                         }d|d<   t        | j                  g|i |}t        |j                  |j                        |j                  ||j                  d                   d	|d<   t        | j                  g|i |}	t        |j                  |	j                        |j                  ||j                  d	                   t        |j                  |	j                        |j                  |j                               |j                         }d|d<   |\  }
}|j                  |j                   | j                  |
g|       |j                   | j                  |g|             }t        | j                  g|i |}t        |j                  |j                        d|z         d	|d<   t        | j                  g|i |}	t        |j                  |	j                        d	|z         t        |j                  |	j                        |j                  |j                               y )Nr   r[   r   rW   r   r   r   r-   r   r.   r+   r,   )r   r   r   r   r   r   r`  r"   r   r4   r3   r   r   rL   r;   rj  )r   r   r   r   r2   r   r   rA   r   r   r_   r`   f0s                r#   r   z!TestChandrupatla.test_convergence  s   ii##$78JJszzqz)*JJrN?BJJrN3tD!1Ew!$&&=7=f=tww(",,q"**T:J*KLw!$&&=7=f=tww(",,q"**T:J*KLtww($''DGG*;<w!$&&=7=f=tww($*?@w!$&&=7=f=tww($*?@tww($''DGG*;<w!$&&=7=f=rvvdhh'aD9I)JKw!$&&=7=f=rvvdhh'aD9I)JKrvvdhh')9:wBZZvtvvb0401266&$&&:Kd:K3LM!$&&=7=f=rvvdhh'b1w!$&&=7=f=rvvdhh'b1rvvdhh')9:r'   c                 P   	 j                  d      	j                  d      j                  d      fdfdd _        d _        t        g	fd}j	                  |j
                        rJ j                  |j                  dz   k(        sJ j                  |j                  k(        sJ 	 fdd	_	        d _
        d _        d _        t        g	fd
}|j                         D ]  }|dk(  rqt        ||   j                  t        j                   j"                               t        ||   j                  t        j$                  j"                               y|j'                  d      rt        ||   ||           y )Nr   r   rW   rO   c                 T    t        j                  |       |z
  }| _        |_        |S r1   )r   r\  rL   r;   )r]  r   r   r"   s      r#   r"   z1TestChandrupatla.test_maxiter_callback.<locals>.f  s(    ,,q/A%CACAEJr'   r   rI   c                 r   xj                   dz  c_         | _        t        | d      sJ j                   dk(  r| j                  | j                  fk(  s|J | j                  j                  k(  | j                  j                  k7  z  | j                  j                  k7  | j                  j                  k(  z  z  }j                  |      sJ | j                  _        | j                  _        | j                  t        j                  k(  sJ t        j                  | j                        | j                         t        j                  | j                        | j                         t        j                  | j                        | j                         j                   k(  rt        y r   )r   r   r   r3   r4   r   r   r   r   r   r"   r6   r7   rL   r;   r   )r   changedr2   r/   rb   r   r   r   s     r#   r/   z8TestChandrupatla.test_maxiter_callback.<locals>.callback  sG   MMQMHL3$$$}}!'7222 VVx{{2svv7LM"vv48;;9NOQvvg&&&HK&&HK::!1!1111DFF3661-svv6DFF3661-svv6DFF355!,cgg6}}'## (r'   rf   r   r   r~   _)r   rL   r;   r`  r   r   r   r   r   r   r   r3   r4   r  r   r   r   r   r  
startswith)
r   r   r   r   rC   r2   r/   r"   rb   r   s
   ``   @@@@@r#   r  z&TestChandrupatla.test_maxiter_callback  sr   JJx ::c?BJJrN3	
  IWIA4I66#++&&&vvchh'!)+,,,vvcgg()))	$ 	$( !!LgLQD8L 88: 	5ChC"**S]]"((**STS	2::cnnBHH:+UV$S	3s84	5r'   r  c                    |\  }}}}}|j                  |d   |j                        |j                  |d   |j                        f}|j                  ||j                        }t        |g|ddd}t        |j                  |j                   ||      |j                        dd	       t        |j                  |j                  ||j                               y )
Nr   r~   r   g|=gh㈵>)r.   r-   g:0yE>gMb`?)r   rD  )r   r   r`  r   r;   r   r   r   )	r   r  r   r"   r2   rootnfevalidr   s	            r#   r  z"TestChandrupatla.test_nit_expected  s    
 (,$7D&"
 ::gaj

:;::gaj

:;=zz$bjjz1 FWFEF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d	      }	 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 )NrH   r~   )r   r   )rL   r  r   r   r   s      r#   r"   z&TestChandrupatla.test_dtype.<locals>.f=  s0    t8"C|zz#Uz33Jr'   r
  r~   r[   r   )r   r-   rC  r   )r   r*  skipr   r   r`  r   rL   AssertionErrorr   r   r;   )	r   r  r   r   	not_numpyr"   rb  rc  r   s	     ``     r#   r  zTestChandrupatla.test_dtype1  s     !$	)+KKJKE4(=KK2$089	 zz"Ez*BJJqJ,F1zz$ez, AqwdC	!CEE4d3 	!55;;%'''FF377a< 	!s   %B> >ADDc                 "   d }d}t        j                  t        |      5  |j                  d      |j                  d      f}t	        d g|  d d d        d}t        j                  t        |      5  |j                  d      |j                  d      f}t	        |g|  d d d        d}t        j                  t        t
        f|      5  |j                  d	d
g      |j                  g d      f}t	        |g|  d d d        d}t        j                  t        |      5  |j                  d
d
g      |j                  ddg      f}t	        d g|  d d d        d}|j                  d      |j                  d      f}t        j                  t        |      5  t	        |g|ddi d d d        t        j                  t        |      5  t	        |g|d|j                  i d d d        t        j                  t        |      5  t	        |g|ddi d d d        t        j                  t        |      5  t	        |g|d|j                  i d d d        d}t        j                  t        |      5  t	        |g|ddi d d d        t        j                  t        |      5  t	        |g|ddi d d d        d}t        j                  t        |      5  t	        |g|ddi d d d        y # 1 sw Y   xY w# 1 sw Y   px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   YxY w# 1 sw Y   3x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 r1   r%   rK   s    r#   r=   z4TestChandrupatla.test_input_validation.<locals>.funcO  s    Hr'   r  r  rj   r   r  r  z...not be broadcast...rh   r
  r  z,The shape of the array returned by `func`...rO   c                     | d   | d   | d   gS )Nr   r   r%   rK   s    r#   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>e  s    !A$!ad); r'   r  r-   rf   r.   r+   r!  r,   r#  rb   r%  r'  r/   r)  )r*  r+  r,  r   r`  r-  r   )r   r   r=   r.  r2   s        r#   r/  z&TestChandrupatla.test_input_validationL  s   	 -]]:W5 	/jjnbjjm3Gt.g.	/ H]]:W5 	/jj'A6Gt.g.	/
 +]]J5WE 	/jj"b*BJJy,AAGt.g.	/ A]]:W5 	Gjj"b*BJJ1v,>>G;FgF	G =**R."**Q-/]]:W5 	9t8g8R8	9]]:W5 	=t<g<RVV<	=]]:W5 	=t<g<V<	=]]:W5 	=t<g<RVV<	= >]]:W5 	<t;g;s;	<]]:W5 	;t:g:r:	; 1]]:W5 	EtDgDD	E 	EM	/ 	/
	/ 	/	/ 	/
	G 	G	9 	9	= 	=	= 	=	= 	=	< 	<	; 	;	E 	Es   /L5/L3L'4L,"L9MMM M-7M9,NLLL),L69MMM M*-M69NNc                 	   d }|j                  g d      |j                  g d      }}t        j                  dd      5  t        |||      }d d d        |j	                  j
                        sJ t        |j                  dd  |j                  d|j                  d                t        |      fd	}t        ||j                  d
      |j                  d            }|j
                  sJ t        |j                  |j                  d             d }|j                  ddg      }t        ||j                  d      |j                  d      |f      }t        |j
                  |j                  ddg             t        |j                  |j                  |j                  dg             d }t        j                  d      5  |j                  |j                        }t        |||      }d d d        |j
                  sJ t        |j                  |j                  |j                               d }|j                  d      |j                  d      }}t        |||d      }t        |j
                  |j                  d             t        |j                  |j                  d|j                               t        |j                  |j                  d|j                               t        |j                   |j                  d|j                               t        |j"                  |       t        |j$                  |       t        |j                  |       t        || | d      }t        |j                  |        t        |||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      |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%   rK   s    r#   r"   z.TestChandrupatla.test_special_cases.<locals>.f  s    q519qQBF|++r'   )r  r   r   r  )?r1  r  r1  r@  )dividerB  r   r   r   c                 P    j                  | j                  d      sJ | dz  dz
  S )Nr<     r   r=  r>  s    r#   r"   z.TestChandrupatla.test_special_cases.<locals>.f  s)    ??177O<<<7Q;r'   r?  rO   r1  c                     | dz  |z
  S r  r%   )rL   r  s     r#   r"   z.TestChandrupatla.test_special_cases.<locals>.f  s    a4$;r'   r_  FTc                     d| z  S r   r%   rK   s    r#   r"   z.TestChandrupatla.test_special_cases.<locals>.f  s    Q3Jr'   rA  c                     | dz  dz
  S )Nr[   r   r%   rK   s    r#   r"   z.TestChandrupatla.test_special_cases.<locals>.f  s    a4!8Or'   g      rW   )rb   rh   r~   rI   r[   c                     || z  dz
  S r   r%   rJ  s     r#   r"   z.TestChandrupatla.test_special_cases.<locals>.f  s    Q37Nr'   rf   rL  )r   r   rO  r`  r   r   r   rL   r   r   r   r   infr   r   r   r   r3   r4   )	r   r   r"   rb  rc  r   r  r  r   s	           @r#   rP  z#TestChandrupatla.test_special_cases|  s   	, zz,-

;O0P1[[(; 	.$Q1-C	. vvckk"""ab	2774q#:; "!$	 !BJJrNBJJqMB{{{rzz"~.	 zz1a&! BJJqM2::a=wORZZ%>?rzz2662,78	 [[* 	2**RVV$C$QS1C	2 {{{rzz"&&12	 zz#

21 Aq!4RZZ%67

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

BJJqJ$ABARXX!>?"**Qbhh*"?@rzz"~.	 !BJJrNBJJqM

STVrzz#/K	. 	.@	2 	2s   S#)S0#S-0S:N)rQ  rR  rS  r"   r*  rT  rU  r   r   r   rV  r   r   r   r  r   r  r  r/  rP  r%   r'   r#   rZ  rZ  +  s   # [[S3E4(D"EF$ G$ [[Wuwvy&IJU: KU:n/>,;\75r [[V%89F :F$ [[VeeU^%<=[[W&GH! I >!2.E`N0r'   rZ  )0r   r*  numpyr   scipyr   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipy.conftestr   scipy._lib._array_apir   r   r   r	   r
   scipy._lib._array_api_no_0dr   r   r   scipy.optimize.elementwiser   r   scipy.optimize._tstutilsr   	itertoolsr   
test_zerosr   r(   rE   r`  r   rM   rQ   rU   rX   r]   re   rW  rT  usefixturesrx   r|   rZ  r%   r'   r#   <module>r     s8        6 6 / W W9 9 ? 8 " -:"!J (	2 +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 +,k%Q  S0%P  Re3 e3RS - e3P +,0%P  Rk%Q  Sf%5  7W0, W07SR - W0r'   