
    S_fu                        d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
c 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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d.dfed/d%fed0d%fed1d%fed2d'fed3d'fed4d'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Z G d5 d6      Z G d7 d8e      Zy)9    N)assert_allcloseassert_equalassert_array_less)stats)_chandrupatla_minimize_chandrupatla)_CHANDRUPATLA_TESTS)permutations   )TestScalarRootFindersc                 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    Flib/python3.12/site-packages/scipy/optimize/tests/test_chandrupatla.pyf1r      s7    ArE	A~1b5)AqsRiK77    c                     d| dz
  dz  z   S )N   r      r   r   s    r   f2r      s    B{?r   c                 8    t        j                  |       d| z  z
  S )Nr   )npexpr   s    r   f3r      s    66!9qs?r   c                 0    | dz  d| dz  z  z
  d| z  z
  dz   S )Ng      @r   r   g      4@r   r   s    r   f4r!      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      r      r   r   s    r   f5r&      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?r   )range)funcx1x2phimaxiterr   r   stepix3r   s              r   _bracket_minimumr1   #   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    r#   r   r%   	      
         皙gg333333ÿgɿg      пg333333ӿgffffffֿgٿgܿg      gc            	          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ej"                  ej$                  ej&                  f      d               Zd Zd Zd Zy)TestChandrupatlaMinimizec                 T    t        j                         }|j                  ||z
         S N)r   normpdf)selfr   locdists       r   fzTestChandrupatlaMinimize.ft   s#    zz|S!!!r   rJ   333333?g?r?   c                    t        | j                  ddd|f      }|}t        j                  j	                  |j
                  |d       t        j                  j	                  |j                  t        j                  j                  d       dd       |j
                  j                  t        j                  |      k(  sJ y )Nr   r   argsư>rtol)atolrU   )r   rL   r   testingr   r   funr   rG   rH   shape)rI   rJ   resrefs       r   
test_basicz#TestChandrupatlaMinimize.test_basicx   s     %TVVRASFC


""355#D"9


""377UZZ^^A->,>QQ"Ouu{{bhhsm+++r   rY   r>   r$      r$   r   r   c                     |r&t        j                  ddd      j                  |      nd}|f}t         j                   fd       } fdd_        t        ddd	|
      } ||      j                         }|D cg c]  }|j                   }}t        |j                  j                         |       t        |j                  j                  |       |D cg c]  }|j                   }	}t        |j                  j                         |	       t        |j                  j                  |       t        |j                    j                  |j                  g|        |D cg c]  }|j                   }
}t        |j                  j                         |
       t        |j                  j                  |       t        j                  |j                  j                  t         j                         sJ |D cg c]  }|j"                   }}t        |j"                  j                         |       t        |j"                  j                  |       t        j                  |j"                  j                  t         j$                        sJ |D cg c]  }|j&                   }}t        |j&                  j                         |       t        t        j(                  |j&                        j                         t        |j&                  j                  |j                  j                         t        j                  |j&                  j                  t         j$                        sJ |D cg c]  }|j*                   }}t        |j*                  j                         |       t        t        j(                  |j*                        j                  dz
         t        |j*                  j                  |j                  j                         t        j                  |j*                  j                  t         j$                        sJ |D cg c]  }|j,                   }}t        |j,                  j                         |       t        |j,                  j                  |       |D cg c]  }|j.                   }}t        |j.                  j                         |       t        |j.                  j                  |       |D cg c]  }|j0                   }}t        |j0                  j                         |       t        |j0                  j                  |       |D cg c]  }|j2                   }}t        |j2                  j                         |       t        |j2                  j                  |       t        |j2                    j                  |j,                  g|        |D cg c]  }|j4                   }}t        |j4                  j                         |       t        |j4                  j                  |       t        |j4                    j                  |j.                  g|        |D cg c]  }|j6                   }}t        |j6                  j                         |       t        |j6                  j                  |       t        |j6                    j                  |j0                  g|        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 c c}w c c}w )NrB   rN   r>   rM   c                 :    t        j                  ddd| f      S )NrP   r   r   rQ   )r   rL   )
loc_singlerI   s    r   chandrupatla_singlezHTestChandrupatlaMinimize.test_vectorization.<locals>.chandrupatla_single   s    )$&&"a*OOr   c                  R    xj                   dz  c_          j                  | i |S Nr   f_evalsrL   rR   kwargsrL   rI   s     r   rL   z6TestChandrupatlaMinimize.test_vectorization.<locals>.f   &    IINI4664*6**r   r   rP   r   rQ   r$   )r   linspacereshape	vectorizerh   r   ravelr   r   r   rY   rX   rL   success
issubdtypedtypebool_statusintegernfevmaxnitxlxmxrflfmfr)rI   rY   rJ   rR   rd   rZ   refsr[   ref_xref_funref_successref_flagref_nfevref_nitref_xlref_xmref_xrref_flref_fmref_frrL   s   `                   @r   test_vectorizationz+TestChandrupatlaMinimize.test_vectorization   s    >Cbkk%r*2259v		P 
	P	+ 	$QAqt<"3'--/"&'3''u-SUU[[%(&*+s377++1SWW]]E*SWWfdffSUU2T23.23ss{{33S[[&&(+6S[[&&.}}S[[..999*./3CJJ//SZZ%%'2SZZ%%u-}}SZZ--rzz:::(,-CHH--SXX^^%x0RVVCHH%qyy1SXX^^SWW]]3}}SXX^^RZZ888&*+s377++SWW]]_g.RVVCGG_aiik2SWW]]CGGMM2}}SWW]]BJJ777$()S#&&))/SVV\\5)$()S#&&))/SVV\\5)$()S#&&))/SVV\\5)$()S#&&))/SVV\\5)svv 5 56$()S#&&))/SVV\\5)svv 5 56$()S#&&))/SVV\\5)svv 5 56q ( ,
 4
 0
 . , * * * *
 *
 *sH   ?\\*\\$\)6\.\34\8\=.]<]
]c                 z   d }t        j                  dt         j                        f}t        |dgdz  dgdz  t         j                  gdz  |d      }t        j
                  t        j                  t        j                  t        j                  t        j                  g      }t        |j                  |       y )Nc                 r    d d d d g}t        | |      D cg c]  \  }} ||   |       c}}S c c}}w )Nc                     | dz
  dz  S )N      @r   r   r   s    r   <lambda>z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>       CA~ r   c                     | dz
  S Nr?   r   r   s    r   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>   
    q2v r   c                     | dz
  dz  S )Nr   r_   r   r   s    r   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>   r   r   c                 "    t         j                  S rF   r   nanr   s    r   r   z@TestChandrupatlaMinimize.test_flags.<locals>.f.<locals>.<lambda>   
    rvv r   zipxsjsfuncsr   js        r   rL   z.TestChandrupatlaMinimize.test_flags.<locals>.f   s?    -%-%'E
 -0BK8DAqHE!HQK888   3r_   rr   r   r   r?   rR   r-   )r   arangeint64r   piarrayeim_ECONVERGED	_ESIGNERR	_ECONVERR
_EVALUEERRr   rt   rI   rL   rR   rZ   	ref_flagss        r   
test_flagsz#TestChandrupatlaMinimize.test_flags   s    	9 		!288,.$QAs1uruugaid-/1 HHcoo!mm!mm!nn. /	 	SZZ+r   c                    t         j                  j                  d      }|j                  d      }d}|f}t        |dddd      }|j	                         }d|d<   t        | j                  g|i |}t        |j                  |j                  z
        }t        |d	|d   z         d
|d<   t        | j                  g|i |}	t        |	j                  |	j                  z
        }
t        |
d	|d   z         t        |
|       |j	                         }d|d<   t        | j                  g|i |}t        |j                  |j                  z
        }t        |d	|d   z  t        |j                        z         d
|d<   t        | j                  g|i |}	t        |	j                  |	j                  z
        }
t        |
d	|d   z  t        |	j                        z         t        |
|       |j	                         }d|d<   t        | j                  g|i |}t        |j                  d|j                  z  z
  |j                  z         }t        |d|d   z         d
|d<   t        | j                  g|i |}	t        |	j                  d|	j                  z  z
  |	j                  z         }t        |d|d   z         t        ||       |j	                         }d|d<   t        | j                  g|i |}t        |j                  d|j                  z  z
  |j                  z         }t        |d|d   z  t        |j                        z         d
|d<   t        | j                  g|i |}	t        |	j                  d|	j                  z  z
  |	j                  z         }t        |d|d   z  t        |	j                        z         t        ||       y )N   FA92 r$   sizerP   r   r   r   rR   xatolxrtolfatolfrtolMbP?r   r_   rS   r   r   r   r   )r   randomdefault_rngdictcopyr   rL   absr{   ry   r   r   r|   r}   r~   rX   )rI   rngpbracketrR   kwargs0rj   res1j1res2j2h1h2s                r   test_convergencez)TestChandrupatlaMinimize.test_convergence   sY   ii##$78JJAJtD!1Ew%dffAwA&A477"#"aw/0w%dffAwA&A477"#"aw/0"b!w%dffAwA&A477"#"aw/DFF;<w%dffAwA&A477"#"aw/DFF;<"b!w%dffAwA&A1tww;&01"aw/0w%dffAwA&A1tww;&01"aw/0"b!w%dffAwA&A1tww;&01"aw/DHH=>w%dffAwA&A1tww;&01"aw/DHH=>"b!r   c                      dddt         j                  gfd}t        j                  |j                        rJ t        j
                  |j                  dz   k(        sJ t        j
                  |j                  k(        sJ  fdt        j                  _	        t        j                  _
        d_        d _        t         j                  gfd}|j                         D ]}  }|d	k(  rS||   t        j                  k(  sJ j                  |   t        j                   k(  sJ ||   t        j"                  k(  rYJ ||   j                  |   cxk(  r
||   k(  rzJ  J  y )
N~,?r   r   r   r$   c                    xj                   dz  c_         | _        t        | d      sJ j                   dk(  r(| j                  | j                  | j
                  fk(  sJ | j                  j                  k(  | j
                  j
                  k7  z  }| j                  j                  k7  | j
                  j
                  k(  z  }t        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   r   r   )iterrZ   hasattrry   rz   r{   r   allrt   r   _EINPROGRESSr   rL   r|   r}   r~   r   rX   StopIteration)rZ   
changed_xr
changed_xlr   callbackrJ   r-   rI   s      r   r   z@TestChandrupatlaMinimize.test_maxiter_callback.<locals>.callback%  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,cff5,cff5,cff5s+SWW5}}'## (r   r2   rR   r   rt   )r   rL   r   anyrp   r   rv   rx   r   ry   r{   r   rZ   keysr   r   r   
_ECALLBACK)rI   rZ   r   keyr   r   rJ   r-   s   `   @@@@r   test_maxiter_callbackz.TestChandrupatlaMinimize.test_maxiter_callback  sk   $TVV 6g 6SF-4666#++&&&vvchh'!)+,,,vvcgg()))	$ 	$, ffff%dff 9w 9cV/79
 88: 	BCh3x3==000||C(C,<,<<<<CyCNN222CyHLL$5ASAAAAA	Br   casec           
          |\  }}}d}||z   }t        |||      \  }}}}}	}
d}d}d}d}t        ||||||||      }t        |j                  |       y )Ng?g-C6?rS   gؗҜ<)r   r   r   r   )r1   r   r   rx   )rI   r   r)   r*   rx   r.   r+   r0   r   r   r   r   r   r   r   rZ   s                   r   test_nit_expectedz*TestChandrupatlaMinimize.test_nit_expectedM  sz    
 b# $Y!1$B!?BBB $T2r2U+0ULSWWc"r   g?gffffff?rr   c           	      ,    |      }fd}t        | d       d       d      |f      }|j                  j                  k(  sJ t        |j                  |t	        j
                  t	        j                        j                               y )Nc                 T    | j                   k(  sJ | |z
  dz  j                        S )Nr   )rr   astype)r   rJ   rr   s     r   rL   z.TestChandrupatlaMinimize.test_dtype.<locals>.fj  s.    77e###WN**511r   r   r   rQ   rT   )r   r   rr   r   r   sqrtfinfoeps)rI   rJ   rr   rL   rZ   s     `  r   
test_dtypez#TestChandrupatlaMinimize.test_dtypec  su    
 Cj	2 %Qb	58U1X+.&2uu{{e###s%1D1D)EFr   c                    d}t        j                  t        |      5  t        d ddd       d d d        d}t        j                  t        |      5  t        d ddd       d d d        d	}t        j                  t        |      5  t        d
 ddgddgg d       d d d        d}t        j                  t        |      5  t        d ddgddgddg       d d d        d}t        j                  t        |      5  t        d dddd       d d d        t        j                  t        |      5  t        d dddt        j
                         d d d        t        j                  t        |      5  t        d dddd       d d d        t        j                  t        |      5  t        d dddt        j
                         d d d        d}t        j                  t        |      5  t        d dddd       d d d        t        j                  t        |      5  t        d  dddd       d d d        d!}t        j                  t        |      5  t        d" dddd#$       d d d        y # 1 sw Y   Kx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   gx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   y xY w)%N`func` must be callable.matchr6   r   r_   3Abscissae and function output must be real numbers.c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>|      Q r               ?+shape mismatch: objects cannot be broadcastc                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r   r4   r   r$   r_   r   z:The shape of the array returned by `func` must be the samec                     | d   | d   | d   gS Nr   r   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  s    adAaD!A$-? r   r   (Tolerances must be non-negative scalars.c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r   r2   r   c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r   r   c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r   ekkir   c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r   r   )`maxiter` must be a non-negative integer.c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r         ?r-   c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r   `callback` must be callable.c                     | S rF   r   r   s    r   r   z@TestChandrupatlaMinimize.test_input_validation.<locals>.<lambda>  r   r   	shrubberyr   )pytestraises
ValueErrorr   r   r   rI   messages     r   test_input_validationz.TestChandrupatlaMinimize.test_input_validations  s    -]]:W5 	3"4Q2	3 H]]:W5 	=";q!<	= @]]:W5 	M";R1a&)L	M O]]:W5 	3"#?"b$%q6Aq63	3 =]]:W5 	D";AqC	D]]:W5 	H";AqG	H]]:W5 	H";AqG	H]]:W5 	H";AqG	H >]]:W5 	G";Aq#F	G]]:W5 	F";Aq"E	F 1]]:W5 	P";Aq;O	P 	PE	3 	3	= 	=
	M 	M	3 	3
	D 	D	H 	H	H 	H	H 	H	G 	G	F 	F	P 	Ps   I6JJJ=J*2 J75K* K/K$K*K66J JJJ'*J47KKKK'*K36K?c                 ,   t        j                  ddd      d d t         j                  f   }t        j                  t	        t        g d                  j                  }t        | j                  g|d|fi}t        j                  t        j                  |j                  |      |j                  | j                  ||      k(  z        sJ |j                  d d df   }t        t        j                  |j                  j                  |      ddi y )	Nr2   r   r   r   rR   r   rU   gV瞯<)r   rl   newaxisr   listr
   Tr   rL   r   iscloser   rX   r   broadcast_arrays)rI   rJ   bracketsrZ   r[   s        r   test_bracket_orderz+TestChandrupatlaMinimize.test_bracket_order  s    kk"a#ArzzM288Dj!9:;==$TVVDhDcVDvvbjj,466#s;K0KLMMMeeAqDk,,SUUWWc:GGr   c           
         d }t        j                  d      5  t        |ddddd      }d d d        j                  sJ t	        |j
                  dd	
       t        |j                  d       d }t        |ddd      }|j                  sJ t        |j
                  d       d }d}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 }t        |dddd      }t	        |j
                  d       d }t        |ddt         j                  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                 r    t        j                  | j                  t         j                        sJ | dz
  dz  S )Nr   r   r   rq   rr   floatingr   s    r   rL   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s,    =="++666aCC<r   ignoreinvalidr   r#   )r   r   r   r   rT   c                     | dz
  dz  S Nr   r   r   r   s    r   rL   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f      aC!8Or   c                     | dz
  dz  S r   r   r   s    r   rL   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  r!  r   )r   皙?r   r-   r$   r4   r#  c                     | |z
  dz  dz
  S Nr   r   r   r   cs     r   rL   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s    aC!8a<r   r2   UUUUUU?rQ   c                 .    t        j                  |        S rF   )r   sinr   s    r   rL   z6TestChandrupatlaMinimize.test_special_cases.<locals>.f  s    FF1I:r   )r   r   r   r   )r   errstater   rp   r   r   r   rX   ry   r{   rx   rv   rt   r   rz   rI   rL   rZ   r   s       r   test_special_casesz+TestChandrupatlaMinimize.test_special_cases  s   
	  [[* 	H(B1AQGC	H{{{qt,SWWa 	 %Q1a0{{{SUUA	 $Q<<!<vv(svv((vww!||xx1}}zzRuu||	  %QAqs;s#	 %Q1bee1A+,A7{{{vv''''''yAcffI236622222Y	H 	Hs   G''G1N)__name__
__module____qualname__rL   r	  markparametrizer   rl   r\   tupler   r   r   r   casesr   float16float32float64r   r  r  r-  r   r   r   rD   rD   r   s   " [[US+"++eT2*F$GH, I, [[Wuwvy&IJJ7 KJ7X,,2"h2Bh [[VU+# ,#* [[UTD#;$78[[Wrzz2::rzz&JKG L 9G'PRH53r   rD   c            	          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ej"                  ej$                  ej&                  f      d               Zd Zd Zy)TestChandrupatlac                 F    t         j                  j                  |      |z
  S rF   )r   rG   cdf)rI   qr   s      r   rL   zTestChandrupatla.f  s    zz~~a 1$$r   r   rM   rB   rN   r?   c                    t        | j                  dd|f      }t        j                         j	                  |      }t
        j                  j                  |j                  |       |j                  j                  |j                  k(  sJ y NrP   r   rQ   )
_chandrupatla_rootrL   r   rG   ppfr   rW   r   r   rY   )rI   r   rZ   r[   s       r   r\   zTestChandrupatla.test_basic  sb     !QaT:jjlq!


""355#.uu{{cii'''r   rY   r]   r^   r`   c           
          |r&t        j                  ddd      j                  |      nd}|f}t         j                   fd       } fdd_        t        dd	|
      } ||      j                         }|D cg c]  }|j                   }}t        |j                  j                         |       t        |j                  j                  |       |D cg c]  }|j                   }	}t        |j                  j                         |	       t        |j                  j                  |       t        |j                    j                  |j                  g|        |D cg c]  }|j                   }
}t        |j                  j                         |
       t        |j                  j                  |       t        j                  |j                  j                  t         j                         sJ |D cg c]  }|j"                   }}t        |j"                  j                         |       t        |j"                  j                  |       t        j                  |j"                  j                  t         j$                        sJ |D cg c]  }|j&                   }}t        |j&                  j                         |       t        t        j(                  |j&                        j                         t        |j&                  j                  |j                  j                         t        j                  |j&                  j                  t         j$                        sJ |D cg c]  }|j*                   }}t        |j*                  j                         |       t        t        j(                  |j*                        j                  dz
         t        |j*                  j                  |j                  j                         t        j                  |j*                  j                  t         j$                        sJ |D cg c]  }|j,                   }}t        |j,                  j                         |       t        |j,                  j                  |       |D cg c]  }|j.                   }}t        |j.                  j                         |       t        |j.                  j                  |       t1        |j,                  |j.                         t        j2                  |j                        }t        j4                  |j                  |   |j,                  |   k(  |j                  |   |j.                  |   k(  z        sJ |D cg c]  }|j6                   }}t        |j6                  j                         |       t        |j6                  j                  |       t        |j6                    j                  |j,                  g|        |D cg c]  }|j8                   }}t        |j8                  j                         |       t        |j8                  j                  |       t        |j8                    j                  |j.                  g|        t        j4                  t        j:                  |j                  |         t        j<                  t        j:                  |j6                  |         t        j:                  |j8                  |               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 )NrB   rN   r>   rM   c                 8    t        j                  dd| f      S r>  )r?  rL   )r   rI   s    r   rd   z@TestChandrupatla.test_vectorization.<locals>.chandrupatla_single  s    %dffb!1$??r   c                  R    xj                   dz  c_          j                  | i |S rf   rg   ri   s     r   rL   z.TestChandrupatla.test_vectorization.<locals>.f  rk   r   r   rP   r   rQ   r   )r   rl   rm   rn   rh   r?  ro   r   r   r   rY   rX   rL   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   r{   r   isfiniter   r|   r~   r   minimum)rI   rY   r   rR   rd   rZ   r   r[   r   r   r   r   r   r   r   r   finiter   r   rL   s   `                  @r   r   z#TestChandrupatla.test_vectorization  s    <ABKKtR(007ct		@ 
	@	+ 	 B5"1%++-"&'3''u-SUU[[%(&*+s377++1SWW]]E*SWWfdffSUU2T23.23ss{{33S[[&&(+6S[[&&.}}S[[..999*./3CJJ//SZZ%%'2SZZ%%u-}}SZZ--rzz:::(,-CHH--SXX^^%x0RVVCHH%qyy1SXX^^SWW]]3}}SXX^^RZZ888&*+s377++SWW]]_g.RVVCGG_aiik2SWW]]CGGMM2}}SWW]]BJJ777$()S#&&))/SVV\\5)$()S#&&))/SVV\\5)#&&#&&)SUU#vvsuuV}v6v#&&.8: ; 	; ; %))S#&&))/SVV\\5)svv 5 56$()S#&&))/SVV\\5)svv 5 56vvbffSWWV_-jjv!7!#v!799 : 	: :m ( ,
 4
 0
 . , * * *
 *s<   >]
])] ]]5]#](3]-#]21]7c                 p   d }t        j                  dt         j                        f}t        |dgdz  t         j                  gdz  |d      }t        j
                  t        j                  t        j                  t        j                  t        j                  g      }t        |j                  |       y )Nc                 r    d d d d g}t        | |      D cg c]  \  }} ||   |       c}}S c c}}w )Nc                     | dz
  S )Nr   r   r   s    r   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>;  s
    q3w r   c                     | dz
  S r   r   r   s    r   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda><  r   r   c                     | dz
  dz  S )Ng?r$   r   r   s    r   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>=  s    C!| r   c                 "    t         j                  S rF   r   r   s    r   r   z8TestChandrupatla.test_flags.<locals>.f.<locals>.<lambda>>  r   r   r   r   s        r   rL   z&TestChandrupatla.test_flags.<locals>.f:  s?    &%+%'E -0BK8DAqHE!HQK888r   r_   r   r   r   r   )r   r   r   r?  r   r   r   r   r   r   r   r   rt   r   s        r   r   zTestChandrupatla.test_flags7  s    	9 		!288,. QCEBEE7194KHHcoo!mm!mm!nn. /	 	SZZ+r   c           	      z   t         j                  j                  d      }|j                  d      }d}|f}t        |dddd      }|j	                         }d|d<   t        | j                  g|i |}t        |j                  |j                  z
  d       d	|d<   t        | j                  g|i |}t        |j                  |j                  z
  d	       t        |j                  |j                  z
  |j                  |j                  z
         |j	                         }d|d
<   t        | j                  g|i |}t        |j                  |j                  z
  dt        j                  |j                        z         d	|d
<   t        | j                  g|i |}t        |j                  |j                  z
  d	t        j                  |j                        z         t        |j                  |j                  z
  |j                  |j                  z
         |j	                         }d|d<   t        | j                  g|i |}t        t        j                  |j                        d       d	|d<   t        | j                  g|i |}t        t        j                  |j                        d	       t        t        j                  |j                        t        j                  |j                               |j	                         }d|d<   |\  }	}
t        j                  t         | j                  |	g|       t         | j                  |
g|             }t        | j                  g|i |}t        t        j                  |j                        d|z         d	|d<   t        | j                  g|i |}t        t        j                  |j                        d	|z         t        t        j                  |j                        t        j                  |j                               y )Nr   r$   r   rP   r   r   r   r   r   rS   r   r   r   )r   r   r   r   r   r?  rL   r   r{   ry   r   r   rX   rE  )rI   r   r   r   rR   r   rj   r   r   r*   r+   f0s               r   r   z!TestChandrupatla.test_convergenceJ  s.   ii##$78JJAJtD!1Ew!$&&=7=f=$''DGG+T2w!$&&=7=f=$''DGG+T2$''DGG+TWWtww->?w!$&&=7=f=$''DGG+TBFF466N-BCw!$&&=7=f=$''DGG+TBFF466N-BC$''DGG+TWWtww->?w!$&&=7=f="&&*D1w!$&&=7=f="&&*D1"&&*BFF488,<=wBZZFDFF2--.FDFF24E4E0FG!$&&=7=f="&&*DG4w!$&&=7=f="&&*DG4"&&*BFF488,<=r   c                     dddfdd _         d _        t        gfd}t        j                  |j
                        rJ t        j                  |j                  dz   k(        sJ t        j                  |j                  k(        sJ  fdd_	        d _
        d _        d _        t        gfd	}|j                         D ]}  }|d
k(  rS||   t        j                  k(  sJ j                  |   t        j                   k(  sJ ||   t        j"                  k(  rYJ ||   j                  |   cxk(  r
||   k(  rzJ  J  y )Nr   rN  r   c                 p    t        j                         j                  |       |z
  }| _        |_        |S rF   )r   rG   r;  r   rX   )r<  r   rZ   rL   s      r   rL   z1TestChandrupatla.test_maxiter_callback.<locals>.f~  s1    **,""1%)CACAEJr   r   r   c                 z   xj                   dz  c_         | _        t        | d      sJ j                   dk(  r| j                  | j                  fk(  sJ | j                  j                  k(  | j                  j                  k7  z  | j                  j                  k7  | j                  j                  k(  z  z  }t        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   rZ   r   ry   r{   r   r   rt   r   r   r   rL   r|   r~   r   rX   r   )rZ   changedr   r   r-   r   rI   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*CFF3*CFF3q)3773}}'## (r   r2   r   rt   )r   rX   r?  r   r   rp   r   rv   rx   r   rZ   ry   r{   r   r   r   r   r   )	rI   rZ   r   r   r   r   rL   r-   r   s	   `   @@@@@r   r   z&TestChandrupatla.test_maxiter_callbackx  sp   	
   3W 3A4*1366#++&&&vvchh'!)+,,,vvcgg()))	$ 	$( !! 6g 6QD,46
 88: 	BCh3x3==000||C(C,<,<<<<CyCNN222CyHLL$5ASAAAAA	Br   r   c                     |\  }}}}}t        |g|ddd}t        |j                   ||      dd       t        |j                  |       y )Ng|=gh㈵>)r   r   g:0yE>gMb`?)rU   rV   )r?  r   rX   r   rv   )rI   r   rL   r   rootnfevalidrZ   s           r   r   z"TestChandrupatla.test_nit_expected  sP    
 (,$7D&"
 !FWFEF4t$?SXXv&r   rU  gCl?gV-?rr   c                     |      }fd}t        | d       d      |fd      }|j                  j                  k(  sJ t        j                  |j                  |d      s%t        j
                  |j                  dk(        sJ y y )Nc                 2    | |z
  dz  j                        S )Nr$   )r   )r   rU  rr   s     r   rL   z&TestChandrupatla.test_dtype.<locals>.f  s    X!O++E22r   r   r   r   )rR   r   )rV   r   )r?  r   rr   r   allcloser   rX   )rI   rU  rr   rL   rZ   s     `  r   r   zTestChandrupatla.test_dtype  s}    
 T{	3 !E"IuQx(,wd<uu{{e###{{355$T2bffSWW\6JJJ6J2r   c                    d}t        j                  t        |      5  t        d dd       d d d        d}t        j                  t        |      5  t        d dd       d d d        d}t        j                  t        |      5  t        d	 d
dgg d       d d d        d}t        j                  t        |      5  t        d ddgddg       d d d        d}t        j                  t        |      5  t        d ddd       d d d        t        j                  t        |      5  t        d ddt        j
                         d d d        t        j                  t        |      5  t        d ddd       d d d        t        j                  t        |      5  t        d ddt        j
                         d d d        d}t        j                  t        |      5  t        d ddd       d d d        t        j                  t        |      5  t        d ddd       d d d        d }t        j                  t        |      5  t        d! dd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   bx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   y xY w)$Nr   r   r6   r_   r   c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>       r   r   r   c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r4   r   r   z,The shape of the array returned by `func`...c                     | d   | d   | d   gS r   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  s    !A$!ad); r   r   r   c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r2   r   c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r   c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r   r   c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r   r   c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r  r  c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r  c                     | S rF   r   r   s    r   r   z8TestChandrupatla.test_input_validation.<locals>.<lambda>  r]  r   r  r  )r	  r
  r  r?  r   r   r  s     r   r  z&TestChandrupatla.test_input_validation  s    -]]:W5 	,tR+	, H]]:W5 	6{E15	6 @]]:W5 	A{RHi@	A A]]:W5 	O;b"X1vN	O =]]:W5 	={B<	=]]:W5 	A{B@	A]]:W5 	A{B@	A]]:W5 	A{B@	A >]]:W5 	@{B3?	@]]:W5 	?{B2>	? 1]]:W5 	I{BKH	I 	IC	, 	,	6 	6
	A 	A	O 	O	= 	=	A 	A	A 	A	A 	A	@ 	@	? 	?	I 	Is   I'I4J=J5J)J(+J5K#KKK''I14I>JJJ%(J25J?KKK$'K0c                    d }t        |dd      }|j                  sJ t        |j                  d       d }t        |dd      }|j                  sJ t	        |j                  d       d }t        j                  d      5  t        |t
        j                  t
        j                        }d d d        |j                  sJ t	        |j                  t
        j                         d	 }d
}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 t        |g|ddi}|j                  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ t        |j                  d       d }t        |ddd      }t        |j                  d       y # 1 sw Y   CxY w)Nc                 r    t        j                  | j                  t         j                        sJ | dz  dz
  S )Nc   r   r  r   s    r   rL   z.TestChandrupatla.test_special_cases.<locals>.f  s,    =="++6667Q;r   r  r   r   c                     | dz  dz
  S r%  r   r   s    r   rL   z.TestChandrupatla.test_special_cases.<locals>.f      a4!8Or   c                     d| z  S rf   r   r   s    r   rL   z.TestChandrupatla.test_special_cases.<locals>.f  s    Q3Jr   r  r  c                     | dz  dz
  S )Nr$   r   r   r   s    r   rL   z.TestChandrupatla.test_special_cases.<locals>.f  rk  r   )r   r   r-   r   r   r4   r   r$   c                     || z  dz
  S rf   r   r&  s     r   rL   z.TestChandrupatla.test_special_cases.<locals>.f)  s    Q37Nr   r2   rQ   r(  )r?  rp   r   r   r   r   r+  infry   r{   rx   rv   rt   r,  s       r   r-  z#TestChandrupatla.test_special_cases  s   
	 !B*{{{q!	 !Aq){{{SUUA	 [[* 	8$Q7C	8{{{SUUBFF#	  8W8a8vv(svv((vww!||xx1}}zzRuu{{ !8W8a8{{{zzQww!||xx1}}q!	 !B2s#=	8 	8s   *G--G7N)r.  r/  r0  rL   r	  r1  r2  r   rl   r\   r3  r   r   r   r   r	   r   r5  r6  r7  r   r  r-  r   r   r   r9  r9    s   % [[S3E4(D"EF( G( [[Wuwvy&IJJ: KJ:X,&,>\8Bt [[V%89' :' [[VeeU^%<=[[Wrzz2::rzz&JK
K L >
K&IP7$r   r9  ) r	  numpyr   numpy.testingr   r   r   scipyr   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipy.optimize._chandrupatlar   r   r?  scipy.optimize._tstutilsr	   	itertoolsr
   
test_zerosr   r   r   r   r!   r&   r1   r4  rD   r9  r   r   r   <module>rz     s     J J  6 6O 8 " -8(%"(8	RL8	RL8	 RL8	 RL	8	
 bM8	 bM8	 bM8	 rN8	 rN8	 rN8	 O8	 QK8	 QK8	 QK8	 QK8	  aL!8	" aL#8	$ aL%8	& rN'8	( rN)8	* rN+8	, O-8	. RL/8	0 RL18	2 RL38	4 RL58	6 bM78	8 bM98	: bM;8	< rN=8	> rN?8	@ rNA8	B OC8	D NE8	F OG8	H OI8	J OK8	L OM8	N NO8	P NQ8	R NS8	T OU8	V OW8	X OY8	Z N[8	\ N]8	^ N_8	` Oa8	b Nc8	d Ne8	f Ng8	h Ni8	j Nk8	l Nm8	n No8	vh3 h3VP$, P$r   