
    doiC                     x   S SK r S SKJr  S SKrS SKJrJrJrJr  S SK	r
S SK	JrJrJrJrJrJrJrJr  S SKJr  S SKJrJrJrJr  S SKJr  S SKJrJ r!  S	\
R                  " \"5      RF                  -  r$\" \"5      RF                  r%\RL                  \RN                  \RP                  \RR                  \RT                  /r+\R0                  /r,\+\,-   r-S
 r.S r/S r0S r1S r2S r3S r4\S 5       r5 " S S5      r6 " S S\65      r7 " S S\65      r8S r9S r:S r; " S S5      r<S r=S r>S r?S  r@S! rAS" rB\R                  R                  S#S$\R                  4S%\R                  4/5      S& 5       rGS' rH\R                  R                  S(/ S)Q5      S* 5       rI\R                  R                  S+/ S)Q5      S, 5       rJ\R                  R                  S(/ S)Q5      \R                  R                  S-S.S//5      S0 5       5       rKS1 rL\R                  R                  S(/ S)Q5      \R                  R                  S-S.S//5      S2 5       5       rMS3 rNS4 rO\R                  R                  S+\-5      S5 5       rP\R                  R                  S+\RL                  \RN                  \RP                  \RR                  /5      S6 5       rQg)7    N)	lru_cache)assert_assert_allcloseassert_equalassert_array_equal)finfopowernanisclosesqrtexpsincos)optimize)	_zeros_pynewtonroot_scalarOptimizeResult)getfullargspec_no_self)	get_tests	functions   c                     U S-  SU -  -
  S-
  $ N       xs    [/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_zeros.pyf1r!   "   s    6AE>A    c                     SU -  S-
  $ Nr   r   r   s    r    f1_1r%   &   s    q519r"   c                     SSU -  -   $ N       @r   r   r   s    r    f1_2r)   *   s    Q;r"   c                 B    [        U 5      [        U 5      [        U 5      4$ N)r!   r%   r)   r   s    r    f1_and_p_and_ppr,   .   s    a5$q'47""r"   c                 0    [        U 5      [        U 5      -
  $ r+   r   r   r   s    r    f2r/   3       q6CF?r"   c                 0    [        U 5      [        U 5      -   $ r+   )r   r   r   s    r    f2_1r2   7   r0   r"   c                 0    [        U 5      [        U 5      -   $ r+   r.   r   s    r    f2_2r4   ;   r0   r"   c                     U $ r+   r   r   s    r    f_lrucachedr6   @   s    Hr"   c                       \ rS rSrS\R
                  " \5      R                  -  rS\R
                  " \5      R                  -  r	  SS jr
S	S jr  SS jrSrg)
TestScalarRootFindersE   r   Nc           	         / nU=(       d    /  H0  nXq;  a  SSSS.R                  Xw5      nUR                  X   5        M2     [        S
0 UD6nUR                  SSS.5        U=(       d    /  H	  nX   X'   M     UR                  S5      n	UR                  S	S
5      n
 U" US	U
0UD6u  pXU4$ ! [         a2    U	[
        R                  " [        SS[
        R                  U5      U4s $ f = f)Nx0x1f)abfuncTFfull_outputdisprootargsr   )	getappenddictupdate	ExceptionzerosRootResultsr
   
_EVALUEERR)selftcmethodsig_args_keyssig_kwargs_keyskwargsmethod_argskmethod_kwargsrD   	func_argsrrrs                r    _run_one_test#TestScalarRootFinders._run_one_testK   s    $"$A{T37;;AAru%	 % vT5AB &B&A!uM ' vvf~FF62&		VKIiI=IEAR< 	V**3B8H8H&QSUUU	Vs   B- -9C)(C)c                    [        U5      n[        UR                  (       + 5        [        UR                  5      n[        UR
                  5      U-
  nUR
                  SU n	/ n
US;   a>  US;   a(  U
R                  S5        US;   a  U
R                  S5        U R                  US'   OU R                  US'   U R                  US	'   U Vs/ s H"  n[        U R                  " X4U	U
S
.UD65      PM$     nnU=(       d    / nU Vs/ s H  oS   R                  (       a  M  UPM     nnU Vs/ s H  oS   S   U;  d  M  UPM     nnU Vs/ s H
  oS   S   PM     nn[        [        U5      U/S/ /5        U R                  U R                  S.nUR                  " S0 UD6  US	   nUR                  SUS   5      nU Vs/ s H  oS   R                  (       d  M  UPM     nnU Vs/ s H  oS   R                  PM     nnU Vs/ s H  oS   PM	     nn[!        UUU5       VVVs/ s H.  u  nnn[#        UUUUS9(       a  M  US   S   U;  d  M(  U/U-   PM0     nnnnU VVVVs/ s H,  u  nnnnUS   " U/UR                  S[%        5       5      Q76 PM.     nnnnn[!        UU5       VVs/ s H  u  nnUS:w  d  M  U/U-   PM     nnn[        U[        U5      // S/5        U Vs/ s H  nUS   R&                  PM     nnU Vs/ s H  nUPM     n n[        UU 5        gs  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snnnf s  snnnnf s  snnf s  snf s  snf )zRun test-cases using the specified method and the supplied signature.

Extract the arguments for the method call from the test case
dictionary using the supplied keys for the method's signature.N)secantr   halley)r   r_   fprime)r_   fprime2tolxtolrtol)rR   rS   r   rF   IDr   rc   rd   )rd   atolr=   rE   r   )_getfullargspecr   
kwonlyargslendefaultsrE   rH   rc   rd   listr[   	convergedr   rJ   rG   rD   zipr   tuplerQ   )!rO   testsrQ   name
known_failrT   sig	nDefaults	nRequiredrR   rS   rP   resultseltnotcvgdnotcvged_IDStolsrd   rg   cvgdapproxcorrectr>   cnotclosearootfulloutfvsfvresultmethod_from_result_expected_methods!                                    r    	run_testsTestScalarRootFinders.run_testsb   sY    f%CNN"#%	MI-	),11++&&x0:%#**95 IIF5M!YYF6N!YYF6N CHIBGB **7&3+7/57 8BG 	 I
  %2
")B'3Q1A1A3'B")M'3WT]*-L3'M189#B9c,'6B@ 		4995fF|xxtF|,&;wa&*:*:w;)-.#a&++.%)*Tcq6T*/267D/I 9/I)!Q14d; BZ7 QC#I/I 9
 -56,4(5!Wb #wu7rvvfeg67,4 	 6.1#x.@L.@72sB!GJRD3J.@LhH.Q8=DEW6fQi..WE)01A41'9?I CM9 <.*96LE1sl   
)L!L&L&+L+>L+
L0?L5L5&L:L?%M
M
M%3M
,M=
M'MMc                 B    [        XS9nU R                  " XrU4SU0UD6  g)zmRun a collection of tests using the specified method.

The name is used to determine some optional arguments.
smoothnessrr   N)r   r   )rO   
collectionrQ   rq   r   rr   rT   rp   s           r    run_collection$TestScalarRootFinders.run_collection   s&    
 *<udLzLVLr"   r   )NNr+   )__name__
__module____qualname____firstlineno__npr   floatepsrc   rd   r[   r   r   __static_attributes__r   r"   r    r8   r8   E   sV     rxx"""Drxx"""D6:&*V.9:v CG"&Mr"   r8   c                      \ rS rSr\R
                  R                  S\5      \R
                  R                  S\5      S 5       5       r	\R
                  R                  S\5      \R
                  R                  S\5      S 5       5       r
\R
                  R                  S\5      \R
                  R                  S\5      S 5       5       r\R
                  R                  S\5      S 5       r\R
                  R                  S\R                  \R                  \R                   /5      S 5       r\R
                  R                  S\5      S	 5       rS
 rSrg)TestBracketMethods   rQ   functionc           	      &   S[        S5      pC[        X!R                  X4/UU R                  U R                  S9nUR
                  (       d   e[        UR                  SU R                  U R                  S9  UR                  UR                  :X  d   eg N      ?   )rQ   bracketr;   rc   rd         ?rg   rd   )	r   r   r   rc   rd   rm   r   rD   rQ   rO   rQ   r   r>   r?   rY   s         r    test_basic_root_scalar)TestBracketMethods.test_basic_root_scalar   sn     4711&Q!YYTYY8{{{$))$))Dxx6??***r"   c           	          S[        S5      pCU" X#X@R                  U R                  SS9u  pVUR                  (       d   e[	        USU R                  U R                  S9  g )Nr   r   T)rc   rd   rB   r   r   )r   rc   rd   rm   r   )rO   rQ   r   r>   r?   rD   rY   s          r    test_basic_individual(TestBracketMethods.test_basic_individual   sP     471aiidii%)+ {{{c				Br"   c           	      L   S[        S5      pC[        X!R                  [        R                  " X4/5      X0R
                  U R                  S9nUR                  (       d   e[        UR                  SU R
                  U R                  S9  UR                  UR                  :X  d   eg r   )r   r   r   r   arrayrc   rd   rm   r   rD   rQ   r   s         r    test_bracket_is_array(TestBracketMethods.test_bracket_is_array   sx     471 "! 0QYY!YY( {{{$))$))Dxx6??***r"   c                 :    U R                  SXR                  SS9  g )Napsr   r   )r   r   )rO   rQ   s     r    test_aps_collection&TestBracketMethods.test_aps_collection   s    E6??qIr"   c                 l    U[         R                  :X  a  S1O0 nU R                  SXR                  US9  g )Nzfun7.4chandrupatla)rr   )rL   ridderr   r   )rO   rQ   rr   s      r    test_chandrupatla_collection/TestBracketMethods.test_chandrupatla_collection   s6     $*U\\#9hZr
NFOO'1 	 	3r"   c                 f    Su  p#U" [         X#SS9u  pEUR                  (       d   e[        US5        g )N)rF   r   TrB   r   )r6   rm   r   )rO   rQ   r>   r?   rD   rY   s         r    test_lru_cached_individual-TestBracketMethods.test_lru_cached_individual   s1     a={{{a r"   c                     [         R                  " [        SS9   [        R                  " S SSSS9  S S S 5        g ! , (       d  f       g = f)Nzmaxiter must be >= 0matchc                     U S-  S-
  $ r   r   r   s    r    <lambda>2TestBracketMethods.test_gh_22934.<locals>.<lambda>       1a4!8r"   r   rF   maxiter)pytestraises
ValueErrorrL   brentqrO   s    r    test_gh_22934 TestBracketMethods.test_gh_22934   s1    ]]:-CDLL+RB? EDDs	   <
A
r   N)r   r   r   r   r   markparametrizebracket_methodststutils_functionsr   r   r   r   rL   bisectr   toms748r   r   r   r   r   r"   r    r   r      sN   [[X7[[Z);<
+ = 8
+ [[X7[[Z);<	C = 8	C [[X7[[Z);<+ = 8+ [[X7J 8J [[Xell(-(7 8383
 [[X7! 8!@r"   r   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS r\R,                  R/                  S\" 5       SS0/5      S 5       r\R,                  R/                  SSS/5      S 5       rS rSrg)
TestNewton   c           	      l    S/nUSS/-  nS H$  nU R                  U[        R                  SSUS9  M&     g )N	aps.13.00z	aps.12.05	aps.12.17r   complexr   r   r   rr   r   rL   r   rO   rr   r   s      r    test_newton_collections"TestNewton.test_newton_collections   sE    !]
{K00
,J
ELL(+,   E -r"   c           	      `    / SQnS H$  nU R                  U[        R                  SSUS9  M&     g )N)z	aps.12.06z	aps.12.07z	aps.12.08z	aps.12.09z	aps.12.10z	aps.12.11z	aps.12.12z	aps.12.13z	aps.12.14z	aps.12.15z	aps.12.16r   z	aps.12.18r   r   r_   r   r   r   r   s      r    test_halley_collections"TestNewton.test_halley_collections   s8    0
 -J
ELL(+,   E -r"   c           	         [         [        [        4[        [        [
        44 H  u  pn[        R                  " USSS9n[        U" U5      SSS9  [        R                  " USSSS9n[        U" U5      SSS9  [        R                  " USUSS9n[        U" U5      SSS9  [        R                  " USX#SS	9n[        U" U5      SSS9  M     g )
Nr   ư>rb   r   rg      )r<   rb   )r`   rb   )r`   ra   rb   )	r!   r%   r)   r/   r2   r4   rL   r   r   )rO   r=   f_1f_2r   s        r    test_newtonTestNewton.test_newton   s    t,r4.>?KACQt,AAaD!$/QaT2AAaD!$/Q#48AAaD!$/Q#EAAaD!$/ @r"   c           	      R   [         [        [        4[        [        [
        44 H.  u  pn[        USSUSS9n[        U" UR                  5      SSS9  M0     [         [        [        4[        [        [
        44 H-  u  pn[        USSSS9n[        U" UR                  5      SSS9  M/     g)	z#Invoke newton through root_scalar()r   r   r   )rQ   r;   r`   rc   r   r   rQ   r;   rc   N	r!   r%   r)   r/   r2   r4   r   r   rD   rO   r=   r   r   rY   s        r    test_newton_by_nameTestNewton.test_newton_by_name  s    t,r4.>?KACAh1StLAAaffIqt4 @  t,r4.>?KACAh14@AAaffIqt4 @r"   c           	         [         [        [        4[        [        [
        44 HV  u  pn[        USSSSS9n[        U" UR                  5      SSS9  [        USSSSS9n[        U" UR                  5      SSS9  MX     [         [        [        4[        [        [
        44 H-  u  pn[        USSSS	9n[        U" UR                  5      SSS9  M/     g
)z#Invoke secant through root_scalar()r^   r   r   r   rQ   r;   r<   rc   r   r   r   r   Nr   r   s        r    test_secant_by_nameTestNewton.test_secant_by_name  s    t,r4.>?KACAh1FAAaffIqt4Ah1FAAaffIqt4	 @
  t,r4.>?KACAh14@AAaffIqt4 @r"   c           
          [         [        [        4[        [        [
        44 H.  u  pn[        USSX#SS9n[        U" UR                  5      SSS9  M0     g)z#Invoke halley through root_scalar()r_   r   r   )rQ   r;   r`   ra   rc   r   r   Nr   r   s        r    test_halley_by_nameTestNewton.test_halley_by_name  sN    t,r4.>?KACAh1#&$@AAaffIqt4 @r"   c           	      ,   Sn[         R                  " [        US9   [        [        S[
        SSS9  S S S 5        Sn[         R                  " [        US9   [        [        S[        SSS9  S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = f)	Nz$fprime2 must be specified for halleyr   r_   r   r   )rQ   r`   r;   rc   z#fprime must be specified for halley)rQ   ra   r;   rc   )r   r   r   r   r!   r%   r)   )rO   messages     r    test_root_scalar_fail TestNewton.test_root_scalar_fail!  sg    8]]:W58DQTJ 67]]:W58TadK 65 65 65s   A4B4
B
Bc                 t   S nS nS n[         R                  " / SQ5      n[         R                  " [        S5      5      S-   S-  nXESS	SS
4nS/S-  n[        R
                  " XX&5      nSn	[        X5        [        R
                  " XX&US9n[        X5        [        R
                  " XUS9n[        X5        g)ztest newton with arrayc                     US   XS   -  -   nUS   US   [         R                  " X!S   -  5      S-
  -  -
  X!S   -  -
  U -
  $ )Nr   r   r   r   r   r   r   r   r   r   r>   r?   s      r    r!   (TestNewton.test_array_newton.<locals>.f1,  sQ    !qQ4xAQ4!A$"&&qT"2S"899A!HDqHHr"   c                     US   US   -  nUS   * [         R                  " US   US   -  X-  -   5      -  U-  US   US   -  -
  S-
  $ )Nr   r   r   r   r   r   r   r   s      r    r%   *TestNewton.test_array_newton.<locals>.f1_10  s[    !qtAaD5266!A$1+"566:QqTAaD[H1LLr"   c                 z    US   US   -  nUS   * [         R                  " US   US   -  X-  -   5      -  US-  -  $ )Nr   r   r   r   r   r   s      r    r)   *TestNewton.test_array_newton.<locals>.f1_24  sI    !qtAaD5266!A$1+"566A==r"   )
g4O@gNk@g]0J@g]Qݚt@g~EO5@g$J ?g~5,@gXCڭ@gͮ9@@gӍ@
   r   g      @&.>Mbp?n2d?)
gԩ˰@g9~4b'@gaq(@g0p@gk"z?g4se?gU+F@gwQu%@gd6)@g)i!@)ra   rE   N)r   r   r   rangerL   r   r   )
rO   r!   r%   r)   a0a1rE   r;   r   
x_expecteds
             r    test_array_newtonTestNewton.test_array_newton)  s    	I	M	> XX 
  ffU2Y#%,ub'2URZLL,

 	&LLT:&LLd+&r"   c                 V   S nS n[         R                  " SS5      n[        R                  " XUS9n[	        U" U5      S5        [         R
                  " S5      n[        R                  " XUS9n[	        U" U5      S5        [        R                  " X5      n[	        U" U5      S5        g )Nc                     U S-   S-   $ )Nr                 ?r   r   s    r    r=   /TestNewton.test_array_newton_complex.<locals>.fQ  s    q58Or"   c                     gNr   r   r   s    r    r`   4TestNewton.test_array_newton_complex.<locals>.fprimeT  s    r"   r   r  )r`           )r   fullrL   r   r   ones)rO   r=   r`   tr   s        r    test_array_newton_complex$TestNewton.test_array_newton_complexP  s    		 GGArNLLf-!b! GGAJLLf-!b!LL!b!r"   c                 |    [         R                  " S SS/[        R                  " SS/5      /S9n[	        US5        g)	z8test secant doesn't continue to iterate zero derivativesc                     X -  US   -
  $ )Nr   r   r   r>   s     r    r   >TestNewton.test_array_secant_active_zero_der.<locals>.<lambda>e  s    qsQqTzr"   gˡE}@r         r;   rE   )f~@g      @N)rL   r   r   r   r   rO   r   s     r    !test_array_secant_active_zero_der,TestNewton.test_array_secant_active_zero_derc  s7    LL1uaj!xxR12434r"   c                     [         R                  " S S/S-  SS/4S9n[        US5        [         R                  " S S	/S-  S
S/4S9n[        US5        g )Nc                     XS-  -
  $ r$   r   yzs     r    r   7TestNewton.test_array_newton_integers.<locals>.<lambda>k  
    aq&jr"         @r   g      .@g      1@r  )gNO@r#  c                     XS-  -
  $ r$   r   r)  s     r    r   r,  o  r-  r"   r      r   )rL   r   r   r$  s     r    test_array_newton_integers%TestNewton.test_array_newton_integersi  sY    LL03%!) $d|o/ABLL01#'"bLABr"   c                    [         R                  " [        5         [        R                  " S SS/S 5        S S S 5        [         R                  " [        5         [        R                  " S SS/S SS9n[        UR                  S5        UR                  R                  5       (       d   eUR                  R                  5       (       a   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nc                     U S-  S-
  $ r$   r   r*  s    r    r   @TestNewton.test_array_newton_zero_der_failures.<locals>.<lambda>u  r   r"   r  c                     SU -  $ r$   r   r5  s    r    r   r6  u  s    Qr"   c                     U S-  S-
  $ r$   r   r5  s    r    r   r6  x  s    QTAXr"   c                     SU -  $ r$   r   r5  s    r    r   r6  y  s    QqSr"   Tr   r   )r   warnsRuntimeWarningrL   r   r   rD   zero_derallrm   any)rO   rv   s     r    #test_array_newton_zero_der_failures.TestNewton.test_array_newton_zero_der_failuresr  s    \\.)LL+b"XG * \\.)ll#5Bx#0dDGGLL!,##''))))((,,..... *) *) *)s   CA4C)
C&)
C7c                    S nS nS nS n[        USSUS9n[        USSSS9n[        UR                  UR                  S	S
9  [        SUR                  -  UR                  5        [        USSX#S9n[        USSSS9n[        UR                  UR                  S	S
9  [        SUR                  -  UR                  5        g )Nc                     U S-  SU -  -
  S-
  $ r   r   r   s    r    r!   +TestNewton.test_newton_combined.<locals>.f1  s    6AE>A%%r"   c                     SU -  S-
  $ r$   r   r   s    r    r%   -TestNewton.test_newton_combined.<locals>.f1_1  s    q519r"   c                     SSU -  -   $ r'   r   r   s    r    r)   -TestNewton.test_newton_combined.<locals>.f1_2  s    Q;r"   c                 0    U S-  SU -  -
  S-
  SU -  S-
  S4$ )Nr   r   r(   r   r   s    r    r,   8TestNewton.test_newton_combined.<locals>.f1_and_p_and_pp  s'    a4!A#:a<1Q++r"   r   r   )rQ   r;   r`   T:0yE>r   r   r_   )rQ   r;   r`   ra   )rQ   r;   ra   )r   r   rD   r   function_calls)rO   r!   r%   r)   r,   sol0sols          r    test_newton_combinedTestNewton.test_newton_combined~  s    	&			, 2h1TB/(qN		388$7Qs)))4+>+>?2h1TP/(q$O		388$7Qs)))4+>+>?r"   c                    Sn/ SQn[        S5       GH  nSSS.nS[        /S[        //S U  H	  u  pgXuU'   M     [        R                  " [
        U4SS	0UD6u  p[        U	R                  5        [        XR                  5        [        U	R                  U	R                  4X4   5        US
:X  a   U	R                  U	R                  S-   ::  d   eO&[        U	R                  US-   U	R                  -  5        U	R                  S-
  n
[        R                  " [
        U4U
S	S.UD6u  p[        U	R                  (       + 5        [        XR                  5        [        U	R                  U
5        US:X  d  GMa  SU
 S3n[        R                  " [        US9   [        R                  " [
        U4U
SS.UD6u  pS S S 5        GM     g ! , (       d  f       GM  = f)Nr   ))      )r   r  )r   	   r   T)rb   rB   r`   ra   rC   Fr   r   )r   rC   zFailed to converge after z iterations, value is .*r   )r	  r%   r)   rL   r   r!   r   rm   r   rD   
iterationsrK  r   r   RuntimeError)rO   capsysr;   expected_countsderivsrT   rV   vr   rY   itersmsgs               r    test_newton_full_output"TestNewton.test_newton_full_output  s   
 3AhF!$9F"D)It+<=gvFq	 G <<B=U=f=DAAKK FF#!,,(8(89?;RS{''1<<!+;;;;Q--
all/JK LL1$E<<BLELVLDAO$FF#u-{ 2%8PQ]]<s; <<BSDSFSDA <;3 2 <;s   "G
G	c                 <   S nS n[         R                  " [        5         [        R                  " USUSS9  S S S 5        [         R
                  " [        SS9   [        R                  " USU5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)Nc                     U S-  S-
  $ )Nr   r(   r   r   s    r    r@   0TestNewton.test_deriv_zero_warning.<locals>.func  s    6C<r"   c                     SU -  $ r$   r   r   s    r    dfunc1TestNewton.test_deriv_zero_warning.<locals>.dfunc  s    q5Lr"   r  FrC   zDerivative was zeror   )r   r:  r;  rL   r   r   rU  )rO   r@   rb  s      r    test_deriv_zero_warning"TestNewton.test_deriv_zero_warning  sg    	 	\\.)LLsE6 *]]</DELLsE* FE *)EEs   A<B<
B

Bc                     [         R                  " SS/5      nUR                  5       n[        [         R                  U[         R
                  5        [        X5        g )N皙?r   )r   r   copyr   r   r   r   )rO   r;   x0_copys      r    test_newton_does_not_modify_x0)TestNewton.test_newton_does_not_modify_x0  s;    XXsAh'')rvvr266"2'r"   c                    S n[        USSSS9n[        USSSSS9n[        USSSS	S
9S   n[        U" UR                  5      SSS9  UR                  R                  [        5       :X  d   e[        U" UR                  5      SSS9  UR                  R                  [        5       :X  d   e[        U" UR                  5      SSS9  UR                  R                  [        5       :X  d   eUR                  UR                  s=:X  a  UR                  :w  d   e   eUR                  UR                  S-
  s=:X  a6  UR                  s=:X  a%  UR                  s=:w  a  UR                  S-  :X  d   e   eg )Nc                 R    [         R                  " U 5      (       d   e[        U 5      $ r+   )r   isscalarr!   r   s    r    r=   +TestNewton.test_gh17570_defaults.<locals>.f  s    ;;q>>!>a5Lr"   r   r   r   r   r^   r   r   T)r;   r<   rb   rB   r   r   r   )r   r   r   rD   shapero   rT  rK  )rO   r=   res_newton_defaultres_secant_default
res_secants        r    test_gh17570_defaults TestNewton.test_gh17570_defaults  s   	 )8M(8a.24 A!tFqI
 	,112ADA!&&,,777,112ADA!&&,,777*//*AD9$$/// #''??1%001 	2 1 	2 1 #--%44q87((7 &007 &44Q6	7 	8 7 	8 7r"   rT   rQ   r   c                     S n[         R                  " U4SSS.UD6nUR                  (       d   e[        UR                  S5        g )Nc                 0    US:X  d   eUS:X  d   eX-  U-
  $ )Nr   r   r   r   s      r    r=   'TestNewton.test_args_gh19090.<locals>.f  s$    6M66M6FQJr"   r   )r   r   r"  r   )r   r   rm   r   rD   )rO   rT   r=   ress       r    test_args_gh19090TestNewton.test_args_gh19090  s?    	 
 ""1BB6B}}}!$r"   r^   c                    S n[         R                  " USUS9nUR                  (       d   e[        [	        UR
                  5      S5        UR
                  R                  [        R                  " [        R                  5      :X  d   eg )Nc                     U S-  S-
  $ )Nr   r   r   r   s    r    r=   )TestNewton.test_int_x0_gh19280.<locals>.f  s    b519r"   r   )r;   rQ   g;f?)	r   r   rm   r   absrD   dtyper   float64)rO   rQ   r=   rz  s       r    test_int_x0_gh19280TestNewton.test_int_x0_gh19280  s^    
	 ""16:}}}CHHw/xx~~"**!5555r"   c                    [         R                  " [        SS9   [        R                  " [
        SSS9  S S S 5        [         R                  " [        SS9   [        R                  " [
        SSSS	9  S S S 5        [         R                  " [        S
S9   [        R                  " [
        SSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N\= f! , (       d  f       g = f)Nztol too smallr   r   ưr   zmaxiter must be greater than 0r   i)rb   r   zx1 and x0 must be different)r<   )r   r   r   rL   r   r!   r   s    r    test_newton_special_parameters)TestNewton.test_newton_special_parameters  s     ]]:_=LLQE* > ]]:-MNLLQD#6 O ]]:-JLLLQ1% ML >= ON MLs#   B7CC7
C
C
C'r   N)r   r   r   r   r   r   r   r   r   r   r   r  r  r%  r1  r?  rN  r\  re  rk  ru  r   r   r   rI   r{  r  r  r   r   r"   r    r   r      s    EE	05	55L%'N"&5C
/@*"TH+( 8D [[X80D'EF% G% [[X(';<6 =6
&r"   r   c            	         ^ SmU4S jn [         R                  [         R                  /n[        =p#U H%  nU" U SSX#S9n[	        TXRUSUR
                   3S9  M'     g )Nrh  c                    > U T-
  $ r+   r   r   rD   s    r    r=   test_gh_5555.<locals>.f      4xr"       ח    cArf   zmethod )rg   rd   err_msg)rL   r   r   TOLr   r   )r=   methodsrc   rd   rQ   rz  rD   s         @r    test_gh_5555r    s`    D ||U\\*GDQc8c4")&//): ;	= r"   c            	          S n SnS[         -  n[        R                  [        R                  /nU H  nU" U SSXS9n[	        SXQUS9  M     g )	Nc                     U S:  a  gU S-
  $ )Nr   g333333?r   r   s    r    r=   test_gh_5557.<locals>.f(  s    s7s7Nr"   gRQ?r   r   r   rf   r  r   )
_FLOAT_EPSrL   r   brenthr   )r=   rg   rd   r  rQ   rz  s         r    test_gh_5557r    sO     Dz>D||U\\*GQ143S$7 r"   c                     ^ Sn SnX4 H[  u  p#n[         R                  " U5      m[        R                  [        R                  4 H  nU" U4S jX#5      n[        XF5        M     M]     g )N)g      |g     ug      y)g     u@g      |@g      y@c                 6   > [         R                  " U 5      T-
  $ r+   r   )r   r~   s    r    r   9test_brent_underflow_in_root_bracketing.<locals>.<lambda>A  s    266!9Q;r"   )r   r   rL   r  r   r   )underflow_scenariooverflow_scenarior>   r?   rD   rQ   rz  r~   s          @r    'test_brent_underflow_in_root_bracketingr  6  s[    
 2-)=
dFF4L||U\\2F.5CD& 3 >r"   c                   H    \ rS rSr\R
                  " SSSSSS9rS rS	 rS
r	g)TestRootResultsiE  r   ,   .   r   r   )rD   rT  rK  flagrQ   c                 F    Sn[        [        U R                  5      U5        g )Nz      converged: True
           flag: converged
 function_calls: 46
     iterations: 44
           root: 1.0
         method: newton)r   reprrY   )rO   expected_reprs     r    	test_reprTestRootResults.test_reprI  s    I 	T$&&\=1r"   c                 F    [        U R                  [        5      (       d   eg r+   )
isinstancerY   r   r   s    r    	test_typeTestRootResults.test_typeO  s    $&&.1111r"   r   N)
r   r   r   r   rL   rM   rY   r  r  r   r   r"   r    r  r  E  s'    sr"1!)	+A22r"   r  c            	          S n S nS n[        SS5      nSn[        R                  " XXAUSS9n[        U " U/UQ76 S	SS
9  U/S-  nSn[        R                  " XXAUSS9n[        U " U/UQ76 S	SS
9  g)z&Test Halley's works with complex rootsc                 6    US   U S-  -  US   U -  -   US   -   $ )Nr   r   r   r   r  s     r    r=   test_complex_halley.<locals>.fU  s*    tad{QqTAX%!,,r"   c                 $    SUS   -  U -  US   -   $ )Nr   r   r   r   r  s     r    r    test_complex_halley.<locals>.f_1X  s    1Q4x!|ad""r"   c                 Z    SUS   -  n [        U 5      nU/U-  $ ! [         a    Us $ f = f)Nr   r   )rj   	TypeError)r   r>   retvalsizes       r    r    test_complex_halley.<locals>.f_2[  sA    QqT	#q6D 8d?"  	M	s    **r   r(   )r(   g      @r.  r   )rE   r`   ra   rb   r   r   r  N)r   rL   r   r   )r=   r   r   r+  coeffsr*  s         r    test_complex_halleyr  S  s    -## 	SAFQCTJAAaM&M140	
bAFQCTJAAaM&M140r"   c                 <   [         R                  " [        5      R                  S-  nSU-
  SU-   -  n[        R
                  " 5          [        R                  " SS[        5        [        R                  " S U/S-  S9nS	S	S	5        [        WS
/S-  5        Sn[        R
                  " 5          [        R                  " SS[        5        [        R                  " S USS9nS	S	S	5        [        US5        [        R                  " [        SS9   [        R                  " S USS9nS	S	S	5        Sn[        R
                  " 5          [        R                  " SS[        5        [        R                  " S USS9nS	S	S	5        [        US5        [        R                  " [        SS9   [        R                  " S USS9nS	S	S	5        g	! , (       d  f       GNP= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g	= f)zBTest secant method with a non-zero dp, but an infinite newton stepgQ?g      i@r(   ignorezRMS ofc                     U S-
  S-  $ )Ng      Y@r   r   r5  s    r    r   %test_zero_der_nz_dp.<locals>.<lambda>|  s    AI>r"   r  r;   Nd   g.ЗK.?Tolerance ofc                     U S-
  S-  $ Nr   r   r   r5  s    r    r   r        AG>r"   F)r;   rC   r   r   c                     U S-
  S-  $ r  r   r5  s    r    r   r    r  r"   Tg.ЗK.c                     U S-   S-  $ r  r   r5  s    r    r   r    r  r"   rF   c                     U S-   S-  $ r  r   r5  s    r    r   r    r  r"   )r   r   r   r   warningscatch_warningsfilterwarningsr;  rL   r   r   r   r   rU  )rV  dxp0r   s       r    test_zero_der_nz_dpr  o  s    
%			$B "*r	"B		 	 	"(NCLL1rdRi@ 
# Aurz"	$B		 	 	"..ILL1buE 
# Aq	|>	:LL1btD 
;	%B		 	 	"..ILL1buE 
# Ar	|>	:LL1btD 
;	:# 
#	" 
#	" 
;	: 
#	" 
;	:s<   7G.4GG+4G<'H
G
G(+
G9<
H

Hc            	        ^ Sn SmSnSnSnX-  U -  U-  nU4S jn[         R                  " [        5         [        R                  " U/ SQSX@/S	S
9nUR
                  R                  5       (       a   e SSS5        [         R                  " [        5         [        R                  " US/S-  SX@/S	S
9nSSS5        g! , (       d  f       NO= f! , (       d  f       g= f)z(Test that array newton fails as expectedrh  ga2U0*#?g@g\mJA?gCl@c           	         > S[         R                  " U 5      -  S[         R                  " TS-  U-  SU-  [         R                  " U 5      -  -   5      -  -   $ )Nr   r   g@gGz@)r   r   log10)darcy_frictionredia	roughnesss      r    colebrook_eqn1test_array_newton_failures.<locals>.colebrook_eqn  s[    BGGN++BHHY_s2!BY)@@A B BB 	Cr"   ){Gz?g?gvÖ?g333333?r   T)r;   r   rE   rB   Nr  )	r   r:  r;  rL   r   rm   r=  r   rU  )diameterrhomuureynolds_numberr  r   r  s          @r    test_array_newton_failuresr    s    
 HI
C	BAg(2-OC 
n	%7!,$
 ##''))))) 
& 
|	$tfqj!!,$
 
%	$ 
&	% 
%	$s   =B=C=
C
Cc                     S n [         R                  " U SS9n[        US[         R                  [         R                  S9  [         R                  " U S/S-  S9n[        US[         R                  [         R                  S9  S nS n[         R                  " U SUS9n[        US[         R                  [         R                  S9  [         R                  " U SUUS	9n[        US[         R                  [         R                  S9  [         R                  " U S/S-  US9n[        US[         R                  [         R                  S9  [         R                  " U S/S-  UUS	9n[        US[         R                  [         R                  S9  [         R                  " U S
US9n[        US[         R                  [         R                  S9  [         R                  " U S
/S-  US9n[        US[         R                  [         R                  S9  g)z@Test that Newton or Halley don't warn if zero derivative at rootc                     U S-  U S-  -
  $ Nr   r   r   r   s    r    f_zeroder_root9test_gh8904_zeroder_at_root_fails.<locals>.f_zeroder_root  s    !tad{r"   r   r  r   r  c                     SU S-  -  SU -  -
  $ r  r   r   s    r    fder/test_gh8904_zeroder_at_root_fails.<locals>.fder  s    1a4x!a%r"   c                     SU -  S-
  $ )NrQ  r   r   r   s    r    fder20test_gh8904_zeroder_at_root_fails.<locals>.fder2  s    sQwr"   )r;   r`   )r;   r`   ra   r   N)rL   r   r   _xtol_rtol)r  rY   r  r  s       r    !test_gh8904_zeroder_at_root_failsr    su    	^*AAqu{{=^B/AAqu{{=  	^$7AAqu{{=^$"	$AAqu{{=^Bt<AAqu{{=^Bt"	$AAqu{{= 	^D9AAqu{{=^b>AAqu{{=r"   c                     ^ SmU4S jn U4S jnU4S jnSn[        XUSS9u  pEUR                  (       d   e[        XXSS9u  pEUR                  (       d   eg	)
zvTest that Halley's method realizes that the 2nd order adjustment
is too big and drops off to the 1st order adjustment.rS  c                 B   > [        U ST-  5      [        TST-  5      -
  $ r  r	   r   ns    r    r=   test_gh_8881.<locals>.f  s"    QAq#a%00r"   c                 .   > [        U ST-
  T-  5      T-  $ r  r  r  s    r    fptest_gh_8881.<locals>.fp  s    QQ	"1$$r"   c                 L   > [        U SST-  -
  T-  5      ST-  -  ST-
  -  T-  $ r  r  r  s    r    fpptest_gh_8881.<locals>.fpp  s3    QQqS!$A.#a%8::r"   rh  T)r`   rB   r`   ra   rB   N)r   rm   )r=   r  r  r;   rtrY   r  s         @r    test_gh_8881r    s\     	
A1%; 
B 16EB;;; 1dCEB;;;r"   c            	         S n S nS n[         R                  " S/[         R                  S9n[        XXSS9u  pEUR                  (       d   e[         R                  " SS/[         R                  S9n[
        R                  " [        5         [        R                  " XXSS9nS	S	S	5        S
 n[        R                  " XXSS9nUR                  R                  5       (       d   eg	! , (       d  f       NI= f)zS
Test that shape is preserved for array inputs even if fprime or fprime2 is
scalar
c                     U S-  $ r$   r   r   s    r    r=   ,test_gh_9608_preserve_array_shape.<locals>.f   s    !tr"   c                     SU -  $ r$   r   r   s    r    r  -test_gh_9608_preserve_array_shape.<locals>.fp      1ur"   c                     gr$   r   r   s    r    r  .test_gh_9608_preserve_array_shape.<locals>.fpp  s    r"   r   r  Tr  Nc                 r    [         R                  " [         R                  " U 5      S[         R                  S9$ )Nr   r  )r   r  rq  float32r   s    r    	fpp_array4test_gh_9608_preserve_array_shape.<locals>.fpp_array  s!    wwrxx{ARZZ88r"   )
r   r   r  r   rm   r   r   
IndexErrorrL   r=  )	r=   r  r  r;   r  rY   x0_arrayr   r  s	            r    !test_gh_9608_preserve_array_shaper    s    
 
2$bjj	)B1dCEB;;;xxR

3H	z	"T
 
#
9 \\	BtF !!!! 
#	"s   C''
C5z maximum_iterations,flag_expectedr  r  c                    [         R                  " S SSSSSU SSS9	nUS	   R                  U:X  d   eU[         R                  :X  a  US	   R                  U :X  d   eg
U[         R
                  :X  a  US	   R                  U :  d   eg
g
)zQ
Test that if the maximum iterations is exceeded that the flag is not
converged.
c                 *    SU -  S-
  U -  S-   U -  S-
  $ )Ng333333?gffffff@g333333@g      @r   r   s    r    r   6test_gh9254_flag_if_maxiter_exceeded.<locals>.<lambda>&  s    CECK?S(!+c1r"   i   r   r   TFrA   r   N)rL   r   r  CONVERRrT  	CONVERGED)maximum_iterationsflag_expectedr   s      r    $test_gh9254_flag_if_maxiter_exceededr    s     \\1RT4!3u&F !9>>]***%ay##'9999	%//	)ay##&8888 
*r"   c                     S n S n[         R                  " [        5         [        R                  " U SUSS9  SSS5        [         R
                  " [        SS9   [        R                  " U SU5        SSS5        [        R                  " U [        S	S	5      U5      n[        U[        S
S5      5        g! , (       d  f       N= f! , (       d  f       NX= f)zBTest that if disp is true then zero derivative raises RuntimeErrorc                     X -  S-   $ Nr   r   r   s    r    r=   /test_gh9551_raise_error_if_disp_true.<locals>.f5  s    sQwr"   c                     SU -  $ r$   r   r   s    r    f_p1test_gh9551_raise_error_if_disp_true.<locals>.f_p8  s    s
r"   r   Frd  NzY^Derivative was zero\. Failed to converge after \d+ iterations, value is [+-]?\d*\.\d+\.$r   g      $@r  )	r   r:  r;  rL   r   r   rU  r   r   )r=   r  rD   s      r    $test_gh9551_raise_error_if_disp_truer  2  s     
n	%QSu- 
&	/
0 	QS!	
0
 <<74.4DD'#s+, 
&	%
0 
0s   B4C4
C
Csolver_name)r   r  r   r   r   c                     S n[        [        U 5      n[        R                  " [        SS9   U" USS5        S S S 5        g ! , (       d  f       g = f)Nc                 "    [         R                  $ r+   )r   r
   r   s    r    r=   test_gh3089_8394.<locals>.fK  s    vvr"   zThe function value at x...r   r   r   )getattrrL   r   r   r   )r  r=   solvers      r    test_gh3089_8394r#  F  s<    
 UK(F	z)E	Fq!Q 
G	F	Fs   A
ArQ   c                   ^ U4S jmSTl         [        TSU S9nUR                  SL d   eUR                  R	                  S5      (       d   eUR
                  TR                   :X  d   e[        UR                  5      UR                  ;   d   eg )Nc                 N   > T=R                   S-  sl         [        R                  $ r  )_countr   r
   r   r=   s    r    r=   test_gh18171.<locals>.fY  s    	Avvr"   r   )r   r   )r   rQ   FzThe function value at x)r&  r   rm   r  
startswithrK  strrD   )rQ   rz  r=   s     @r    test_gh18171r+  S  s     AH
a
7C==E!!!8889999)))sxx=CHH$$$r"   rs_interfaceTFc                    ^ U(       a  S O[        [        U 5      nU4S jmSTl        U" TSSSS9nU(       a  UR                  TR                  :X  d   eg US   R                  TR                  :X  d   eg )Nc                     [        XU4S9$ N)r   r   r=   r>   r?   rT   s       r    r   %test_function_calls.<locals>.<lambda>k      QA)Gr"   c                 >   > T=R                   S-  sl         U S-  S-
  $ )Nr   r   )callsr'  s    r    r=   test_function_calls.<locals>.fn  s    	1!taxr"   r   r  Tr   r   )r!  rL   r5  rK  )r  r,  r"  rz  r=   s       @r    test_function_callsr7  e  sr      H#*5+#>  AG
Art
,C!!QWW,,,1v$$///r"   c            	         S n [         R                  " [        SS9   [        U SSSS9nSSS5        WR                  (       a   eUR
                  S	:X  d   e[         R                  " [        SS9   [        U SSS
SS9S   nSSS5        UR                  (       a   eUR
                  S	:X  d   eg! , (       d  f       N= f! , (       d  f       NE= f)zDTest that zero slope with secant method results in a converged=Falsec                 B    U [         R                  " U * U -  5      -  S-
  $ )NgQ?r   r   s    r    lhs*test_gh_14486_converged_false.<locals>.lhs}  s     2661"Q$<$&&r"   r  r   r^   g333333ÿr   )rQ   r;   r<   Nzconvergence errorFT)r;   r<   rC   rB   r   )r   r:  r;  r   rm   r  r   )r:  rz  s     r    test_gh_14486_converged_falser<  {  s    ' 
nN	;#h5SA 
<}}88****	nN	;SUsDI!L 
<}}88**** 
<	;
 
<	;s   B/0C /
B= 
Cc                    U(       a  S O[        [        U 5      nS n[        R                  " [        SS9   U" USSSS9  S S S 5        U" USS	SS9nU(       a  UOUS
   nUR
                  (       d   e[        UR                  SSS9  U" US[        S5      SS9nU(       a  UOUS
   nUR
                  (       d   e[        UR                  SSS9  g ! , (       d  f       N= f)Nc                     [        XU4S9$ r/  r0  r1  s       r    r   test_gh5584.<locals>.<lambda>  r3  r"   c                     SU -  $ )NgN~hr   r   s    r    r=   test_gh5584.<locals>.f  s    axr"   z...must have different signsr   g      gٿTr   g?r   r   rJ  r   z-0.0)	r!  rL   r   r   r   rm   r   rD   r   )r  r,  r"  r=   rz  s        r    test_gh5584rB    s      H#*5+#>  
z)G	Hq$$/ 
I D#4
0C#3q6C===CHHad+ D%-T
:C#3q6C===CHHad+ 
I	Hs   
C
Cc            	         S n Sn[         R                  " [        5      R                  n[        R
                  " U SSUSU-  S9nU " U5      n[        R
                  " U SSUSU-  S9nU " U5      nXF:  d   eSUS	-  S
 SUS
 S3n[        R                  " [        US9   [        R
                  " U SSXS	-  S9  S S S 5        g ! , (       d  f       g = f)Nc                     U S-  SU -  -
  S-
  $ )Nr   r   r   r   r   s    r    r=   test_gh13407.<locals>.f  s    !taczA~r"   gYng|=g    _Br   rf   r   zrtol too small \(r   gz < z\)r   )	r   r   r   r   rL   r   r   r   r   )r=   rc   r   r<   r!   x4f4r   s           r    test_gh13407rI    s     D
((5/

C	q%Dqu	=B	
2B	q%Dqu	=B	
2B7N7 #3q5)3s1gR8G	z	1a4!e< 
2	1	1s   C
Cc                  z    S n [        U S5      n[        USSS9  [        U SSSS9n[        UR                  SSS9  g )	Nc                     U S-
  $ r  r   )r+  s    r    r=   &test_newton_complex_gh10103.<locals>.f  r   r"   y      ?      ?r   g-q=r   y       @      ?r^   )r;   r<   rQ   )r   r   r   rD   )r=   rz  s     r    test_newton_complex_gh10103rM    s>    
D/CC'
aDVH
=CCHHae,r"   c                     Sn[         R                  " [        US9   U " [        SSSS9  S S S 5        g ! , (       d  f       g = f)Nz2'float' object cannot be interpreted as an integerr   r  r   gR@r   )r   r   r  r!   )rQ   r   s     r    test_maxiter_int_check_gh10236rO    s2     CG	y	0r3U+ 
1	0	0s	   3
Ac           
      n  ^ SmSnS[         R                  " [        5      R                  -  S-  nU4S jn[        R
                  " [        SS9   U " USS	US
[        S9  S S S 5        [        R
                  " [        SS9   U " USS	USUS9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nrh  )r  r  r  r  r   r   c                    > U T-
  $ r+   r   r  s    r    r=   (test_bisect_special_parameter.<locals>.f  r  r"   zxtol too smallr   r  r  r  )rE   rc   rd   zrtol too smallr   )r   r   r   r   r   r   r   r  )rQ   rE   rtolbadr=   rD   s       @r    test_bisect_special_parameterrT    s    
 D&D"((5/%%%)G 
z)9	:asE< 
;	z)9	:asDw? 
;	: 
;	:	:	:s   B B&
B#&
B4)Rr  	functoolsr   r   numpy.testingr   r   r   r   numpyr   r   r	   r
   r   r   r   r   r   scipyr   scipy.optimizer   rL   r   r   r   scipy._lib._utilr   rh   scipy.optimize._tstutilsr   r   r   r   r   r  r  r   r   r   r  r   r   gradient_methodsall_methodsr!   r%   r)   r,   r/   r2   r4   r6   r8   r   r   r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r#  r+  r7  r<  rB  rI  rM  rO  rT  r   r"   r    <module>r^     s     / /  A A A , , G P5\
<<u||U\\=="LL>  00#

  ^M ^MBA@. A@Hc&& c&L	=80'2 218E@
D,>`4"D &%--3013939$-( LNN LN%N%  LN$70 8N0&+  LN$7, 8N,4=.
- ;/, 0, ELL%,,$)LL%,,$@ A@A@r"   