
    (ph                        S SK r S SKJr  S SKJrJr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      RH                  -  r%\" \#5      RH                  r&\RN                  \RP                  \RR                  \RT                  \RV                  /r,\R2                  /r-\,\--   r.S
 r/S r0S r1S r2S r3S r4S r5\S 5       r6 " S S5      r7 " S S\75      r8 " S S\75      r9S r:S r;S r< " S S5      r=S r>\ R~                  R                  S 5       rA\ R~                  R                  S 5       rBS  rCS! rDS" rE\ R~                  R                  S#S$\R                  4S%\R                  4/5      S& 5       rI\ R~                  R                  S' 5       rJ\ R~                  R                  S(/ S)Q5      S* 5       rK\ R~                  R                  S+/ S)Q5      S, 5       rL\ R~                  R                  S(/ S)Q5      \ R~                  R                  S-S.S//5      S0 5       5       rM\ R~                  R                  S1 5       rN\ R~                  R                  S(/ S)Q5      \ R~                  R                  S-S.S//5      S2 5       5       rOS3 rPS4 rQ\ R~                  R                  S+\.5      S5 5       rRg)6    N)	lru_cache)assert_warnsassert_assert_allcloseassert_equalassert_array_equalsuppress_warnings)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    R/var/www/html/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"   f2r1   2       q6CF?r$   c                 0    [        U 5      [        U 5      -   $ r-   )r   r   r    s    r"   f2_1r4   6   r2   r$   c                 0    [        U 5      [        U 5      -   $ r-   r0   r    s    r"   f2_2r6   :   r2   r$   c                     U $ r-   r   r    s    r"   f_lrucachedr8   ?   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)
TestScalarRootFindersD   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_kwargsrF   	func_argsrrrs                r"   _run_one_test#TestScalarRootFinders._run_one_testJ   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   ra   fprime)ra   fprime2tolxtolrtol)rT   rU   r   rH   IDr   re   rf   )rf   atolr?   rG   r   )_getfullargspecr   
kwonlyargslendefaultsrG   rJ   re   rf   listr]   	convergedr   rL   rI   rF   zipr   tuplerS   )!rQ   testsrS   name
known_failrV   sig	nDefaults	nRequiredrT   rU   rR   resultseltnotcvgdnotcvged_IDStolsrf   ri   cvgdapproxcorrectr@   cnotclosearootfulloutfvsfvresultmethod_from_result_expected_methods!                                    r"   	run_testsTestScalarRootFinders.run_testsa   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.
smoothnessrt   N)r   r   )rQ   
collectionrS   rs   r   rt   rV   rr   s           r"   run_collection$TestScalarRootFinders.run_collection   s&    
 *<udLzLVLr$   r   )NNr-   )__name__
__module____qualname____firstlineno__npr
   floatepsre   rf   r]   r   r   __static_attributes__r   r$   r"   r:   r:   D   sV     rxx"""Drxx"""D6:&*V.9:v CG"&Mr$   r:   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g)TestBracketMethods   rS   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      ?   )rS   bracketr=   re   rf         ?ri   rf   )	r   r   r   re   rf   ro   r   rF   rS   rQ   rS   r   r@   rA   r[   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)re   rf   rD   r   r   )r   re   rf   ro   r   )rQ   rS   r   r@   rA   rF   r[   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   arrayre   rf   ro   r   rF   rS   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   )rQ   rS   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)rt   )rN   ridderr   r   )rQ   rS   rt   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)rH   r   TrD   r   )r8   ro   r   )rQ   rS   r@   rA   rF   r[   s         r"   test_lru_cached_individual-TestBracketMethods.test_lru_cached_individual   s1     a={{{a r$   r   N)r   r   r   r   pytestmarkparametrizebracket_methodststutils_functionsr   r   r   r   rN   bisectr   toms748r   r   r   r   r$   r"   r   r      sH   [[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\R                   R"                  S 5       rS rS r\R                   R"                  S 5       rS rS r\R                   R1                  S\" 5       SS0/5      S 5       r\R                   R1                  SSS/5      S 5       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   rt   r   rN   r   rQ   rt   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   ra   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   ư>)rd   r   ri      )r>   rd   )rb   rd   )rb   rc   rd   )	r#   r'   r+   r1   r4   r6   rN   r   r   )rQ   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   )rS   r=   rb   re   r   r   rS   r=   re   N	r#   r'   r+   r1   r4   r6   r   r   rF   rQ   r?   r   r   r[   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   rS   r=   r>   re   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()ra   r   r   )rS   r=   rb   rc   re   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 halleymatchra   r   r   )rS   rb   r=   re   z#fprime must be specified for halley)rS   rc   r=   re   )r   raises
ValueErrorr   r#   r'   r+   )rQ   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@   rA   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_1+  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_2/  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      @g&.>gMbp?gn2d?)
gԩ˰@g9~4b'@gaq(@g0p@gk"z?g4se?gU+F@gwQu%@gd6)@g)i!@)rc   rG   N)r   r   r   rangerN   r   r   )
rQ   r#   r'   r+   a0a1rG   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>.fL  s    q58Or$   c                     gNr   r   r    s    r"   rb   4TestNewton.test_array_newton_complex.<locals>.fprimeO  s    r$   r   r  )rb           )r   fullrN   r   r   ones)rQ   r?   rb   tr!   s        r"   test_array_newton_complex$TestNewton.test_array_newton_complexK  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"   <lambda>>TestNewton.test_array_secant_active_zero_der.<locals>.<lambda>`  s    qsQqTzr$   gˡE}@r         r=   rG   )f~@g      @N)rN   r   r   r   r   rQ   r!   s     r"   !test_array_secant_active_zero_der,TestNewton.test_array_secant_active_zero_der^  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>f  
    aq&jr$         @r   g      .@g      1@r   )gNO@r  c                     XS-  -
  $ r&   r   r  s     r"   r  r  j  r   r$   r      r  )rN   r   r   r  s     r"   test_array_newton_integers%TestNewton.test_array_newton_integersd  sY    LL03%!) $d|o/ABLL01#'"bLABr$   c                    [        [        [        R                  S 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       g = f)	Nc                     U S-  S-
  $ r&   r   r  s    r"   r  @TestNewton.test_array_newton_zero_der_failures.<locals>.<lambda>q  s    q!taxr$   r  c                     SU -  $ r&   r   r(  s    r"   r  r)  q  s    QUr$   c                     U S-  S-
  $ r&   r   r(  s    r"   r  r)  t  s    QTAXr$   c                     SU -  $ r&   r   r(  s    r"   r  r)  u  s    QqSr$   Tr   r   )r   RuntimeWarningrN   r   r   warnsr   rF   zero_derallro   any)rQ   rx   s     r"   #test_array_newton_zero_der_failures.TestNewton.test_array_newton_zero_der_failuresm  s     	^U\\'"b?	D \\.)ll#5Bx#0dDGGLL!,##''))))((,,..... *))s    A4B>>
C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   )rS   r=   rb   T:0yE>r   r   ra   )rS   r=   rb   rc   )rS   r=   rc   )r   r   rF   r   function_calls)rQ   r#   r'   r+   r.   sol0sols          r"   test_newton_combinedTestNewton.test_newton_combinedz  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
-  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)rd   rD   rb   rc   rE   Fr   r   )maxiterrE   z3Failed to converge after %d iterations, value is .*r   )r   r'   r+   rN   r   r#   r   ro   r   rF   
iterationsr>  r   r   RuntimeError)rQ   capsysr=   expected_countsderivsrV   rX   vr!   r[   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-{ LuU]]<s; <<BSDSFSDA <;3 2 <;s   "G
G	c           	          S nS n[        [        [        R                  USUSS9  [        R
                  " [        SS9   [        R                  " USU5        S S S 5        g ! , (       d  f       g = f)Nc                     U S-  S-
  $ )Nr   r*   r   r    s    r"   rB   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rE   zDerivative was zeror   )r   r-  rN   r   r   r   rI  )rQ   rB   rV  s      r"   test_deriv_zero_warning"TestNewton.test_deriv_zero_warning  sN    	 	^U\\4e%P]]</DELLsE* FEEs    A""
A0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   )rQ   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>   rd   rD   r   r   r   )r   r   r   rF   shaperq   rH  r>  )rQ   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$   rV   rS   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   ro   r   rF   )rQ   rV   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    s    r"   r?   )TestNewton.test_int_x0_gh19280.<locals>.f  s    b519r$   r   )r=   rS   g;f?)	r   r   ro   r   absrF   dtyper   float64)rQ   rS   r?   rn  s       r"   test_int_x0_gh19280TestNewton.test_int_x0_gh19280  s^    
	 ""16:}}}CHHw/xx~~"**!5555r$   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$  r   r   thread_unsafer2  rA  rP  rY  r_  ri  r   rK   ro  rx  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 =6r$   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 )Nr\  c                    > U T-
  $ r-   r   )r!   rF   s    r"   r?   test_gh_5555.<locals>.f  s    4xr$   g    חg    cArh   zmethod )ri   rf   err_msg)rN   r   r   TOLr   r   )r?   methodsre   rf   rS   rn  rF   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   rh   r  r   )
_FLOAT_EPSrN   brentqbrenthr   )r?   ri   rf   r  rS   rn  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>1  s    266!9Q;r$   )r   r   rN   r  r  r   )underflow_scenariooverflow_scenarior@   rA   rF   rS   rn  r   s          @r"   'test_brent_underflow_in_root_bracketingr  &  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)TestRootResultsi5  r   ,   .   r   r   )rF   rH  r>  flagrS   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   reprr[   )rQ   expected_reprs     r"   	test_reprTestRootResults.test_repr9  s    I 	T$&&\=1r$   c                 F    [        U R                  [        5      (       d   eg r-   )
isinstancer[   r   )rQ   s    r"   	test_typeTestRootResults.test_type?  s    $&&.1111r$   r   N)
r   r   r   r   rN   rO   r[   r  r  r   r   r$   r"   r  r  5  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>.fE  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_1H  s    1Q4x!|ad""r$   c                 Z    SUS   -  n [        U 5      nU/U-  $ ! [         a    Us $ f = f)Nr   r   )rl   	TypeError)r!   r@   retvalsizes       r"   r    test_complex_halley.<locals>.f_2K  sA    QqT	#q6D 8d?"  	M	s    **r   r*   )r*   g      @r!  r   )rG   rb   rc   rd   r   r   r   N)r   rN   r   r   )r?   r   r   r  coeffsr  s         r"   test_complex_halleyr  C  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[	        5        nUR                  [        S5        [        R                  " S U/S-  S9nSSS5        [        WS	/S-  5        S
n[	        5        nUR                  [        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[	        5        nUR                  [        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N.= 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*   zRMS ofc                     U S-
  S-  $ )Ng      Y@r   r   r(  s    r"   r  %test_zero_der_nz_dp.<locals>.<lambda>m  s    AI>r$   r   r=   Nd   g.ЗK.?Tolerance ofc                     U S-
  S-  $ Nr   r   r   r(  s    r"   r  r  s      AG>r$   F)r=   rE   r   r   c                     U S-
  S-  $ r  r   r(  s    r"   r  r  v  r  r$   Tg.ЗK.c                     U S-   S-  $ r  r   r(  s    r"   r  r  z  r  r$   rH   c                     U S-   S-  $ r  r   r(  s    r"   r  r  }  r  r$   )r   r
   r   r   r	   filterr-  rN   r   r   r   r   rI  )rJ  dxp0supr!   s        r"   test_zero_der_nz_dpr  _  sn    
%			$B "*r	"B		

>8,LL1rdRi@ 
 Aurz"	$B		

>>2LL1buE 
 Aq	|>	:LL1btD 
;	%B		

>>2LL1buE 
 Ar	|>	:LL1btD 
;	:# 
	 
	 
;	: 
	 
;	:s;   1F.F'-F8.G	4G
F$'
F58
G	
G
G(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 expectedr\  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=   rG  rG   rD   Nr  )	r   r.  r-  rN   r   ro   r0  r   rI  )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-
  $ )NrD  r   r   r    s    r"   fder20test_gh8904_zeroder_at_root_fails.<locals>.fder2  s    sQwr$   )r=   rb   )r=   rb   rc   r   N)rN   r   r   _xtol_rtol)r  r[   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.rF  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$   r\  T)rb   rD   rb   rc   rD   N)r   ro   )r?   r  r  r=   rtr[   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$   rs  rv  Tr  Nc                 r    [         R                  " [         R                  " U 5      S[         R                  S9$ )Nr   r  )r   r	  re  float32r    s    r"   	fpp_array4test_gh_9608_preserve_array_shape.<locals>.fpp_array  s!    wwrxx{ARZZ88r$   )
r   r   r  r   ro   r   r   
IndexErrorrN   r0  )	r?   r  r  r=   r  r[   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   TFrC   r   N)rN   r  r  CONVERRrH  	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            	      V   S n S n[        [        [        R                  U SUSS9  [        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       NG= 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>.f(  s    sQwr$   c                     SU -  $ r&   r   r    s    r"   f_p1test_gh9551_raise_error_if_disp_true.<locals>.f_p+  s    s
r$   r   FrX  zY^Derivative was zero\. Failed to converge after \d+ iterations, value is [+-]?\d*\.\d+\.$r   Ng      $@r  )	r   r-  rN   r   r   r   rI  r   r   )r?   r  rF   s      r"   $test_gh9551_raise_error_if_disp_truer	  $  s     q#sG	/
0 	QS!	
0
 <<74.4DD'#s+,
0 
0s    B
B(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>.f=  s    vvr$   zThe function value at x...r   r   r   )getattrrN   r   r   r   )r
  r?   solvers      r"   test_gh3089_8394r  8  s<    
 UK(F	z)E	Fq!Q 
G	F	Fs   A
ArS   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>.fK  s    	Avvr$   r   )r   r   )r   rS   FzThe function value at x)r  r   ro   r  
startswithr>  strrF   )rS   rn  r?   s     @r"   test_gh18171r  E  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@   rA   rV   s       r"   r  %test_function_calls.<locals>.<lambda>]      QA)Gr$   c                 >   > T=R                   S-  sl         U S-  S-
  $ )Nr   r   )callsr  s    r"   r?   test_function_calls.<locals>.f`  s    	1!taxr$   r   r   Tr   r   )r  rN   r"  r>  )r
  r  r  rn  r?   s       @r"   test_function_callsr$  W  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>.lhsp  s     2661"Q$<$&&r$   r  r   r`   g333333ÿr   )rS   r=   r>   Nzconvergence errorFT)r=   r>   rE   rD   r   )r   r.  r-  r   ro   r  r   )r'  rn  s     r"   test_gh_14486_converged_falser)  m  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  r  r  s       r"   r  test_gh5584.<locals>.<lambda>  r   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   r=  r   z-0.0)	r  rN   r   r   r   ro   r   rF   r   )r
  r  r  r?   rn  s        r"   test_gh5584r/  ~  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   rh   r   zrtol too small \(r   gz < z\)r   )	r   r
   r   r   rN   r   r   r   r   )r?   re   r   r>   r#   x4f4r   s           r"   test_gh13407r6    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>   rS   )r   r   r   rF   )r?   rn  s     r"   test_newton_complex_gh10103r:    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@)rG  )r   r   r  r#   )rS   r   s     r"   test_maxiter_int_check_gh10236r<    s2     CG	y	0r3U+ 
1	0	0s	   3
A)Sr   	functoolsr   numpy.testingr   r   r   r   r   r	   numpyr   r
   r   r   r   r   r   r   r   scipyr   scipy.optimizer   rN   r   r   r   scipy._lib._utilr   rj   scipy.optimize._tstutilsr   r   r   r   r   r  r  r   r   r  r  r   r   gradient_methodsall_methodsr#   r'   r+   r.   r1   r4   r6   r8   r:   r   r   r  r  r  r  r  r   rz  r  r  r  r  r  r   r  r  r  r	  r  r  r$  r)  r/  r6  r:  r<  r   r$   r"   <module>rF     s    . .
  A A A , , G P5\
<<u||U\\=="LL>  00#

  ^M ^MB=!. =!@X6& X6v=80'2 218 E 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,r$   