
     ho                        d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ d dlZd dlmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZ m!Z" d	 ej        e#          j$        z  Z% ee#          j$        Z&d
 Z'd Z(d Z)d Z*d Z+d Z,d Z- e            d             Z. G d d          Z/d Z0d Z1d Z2 G d d          Z3d Z4d Z5d Z6d Z7d Z8d Z9e j:        ;                    dd ej<        fd!ej=        fg          d"             Z>d# Z?dS )$    N)sqrtexpsincos)	lru_cache)assert_warnsassert_assert_allcloseassert_equalassert_array_equalsuppress_warnings)finfopowernanisclose)	_zeros_pynewtonroot_scalar)getfullargspec_no_self)	get_tests	functionsfstrings   c                     | dz  d| z  z
  dz
  S N       xs    [/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_zeros.pyf1r"      s    6AE>A    c                     d| z  dz
  S Nr   r   r   s    r!   f1_1r&       s    q519r#   c                     dd| z  z   S N       @r   r   r   s    r!   f1_2r*   $   s    Q;r#   c                 Z    t          |           t          |           t          |           fS N)r"   r&   r*   r   s    r!   f1_and_p_and_ppr-   (   s!    a55$q''477""r#   c                 @    t          |           t          |           z
  S r,   r   r   r   s    r!   f2r0   -       q66CFF?r#   c                 @    t          |           t          |           z   S r,   r   r   r   s    r!   f2_1r4   1   r1   r#   c                 @    t          |           t          |           z   S r,   r/   r   s    r!   f2_2r6   5   r1   r#   c                     | S r,   r   r   s    r!   f_lrucachedr8   :   s    Hr#   c                   l   e Zd Zd&dZd Zd Z	 	 d'dZdez  dez  dfdZdddez  dez  fd	Z	d
 Z
d Zd Zd Zd Zd Zd Zed             Zed             Zed             Zed             Zed             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&dS )(	TestBasicr   c                    d}t          d          }dt          j        t                    j        z  }dt          j        t                    j        z  }t          t          t                    D ]Z\  }}	|dk    r|	dv rt          |f|||g|||d|}
|
j	        }t          |
j                   t          |d||d|d	|	
           [d S )N      ?   r   r   )f4f5f6)methodbracketx0xtolrtol      ?method , function atolrE   err_msg)r   npr   floatepsziptstutils_functionststutils_fstringsr   rootr	   	convergedr
   )selfname
smoothnesskwargsabrD   rE   functionfnamerzeros               r!   run_check_by_namezTestBasic.run_check_by_nameA   s   GG%$$%$$"#57HII 	N 	NOHeA~~%+="="=H <TAq6a!%D< <4:< <A6DAK   D#Dtt@Dee$LN N N N N	N 	Nr#   c                    d}t          d          }dt          z  }dt          z  }t          t          t                    D ]G\  }} ||||||d          \  }	}
t          |
j                   t          |	d||d|d|	           Hd S )
Nr<   r=   r   T)rD   rE   full_outputrF   rG   rH   rI   )r   
_FLOAT_EPSrO   rP   rQ   r	   rS   r
   )rT   rA   rU   rX   rY   rD   rE   rZ   r[   r]   r\   s              r!   	run_checkzTestBasic.run_checkP   s    GG:~:~"#57HII 	N 	NOHefXq!$T)-/ / /GD!AK   D#Dtt@Dee$LN N N N N		N 	Nr#   c                     d}d} |t           ||d          \  }}t          |j                   t          |dd|dd	           d S )
Nr   Tr`   r   rG   rH   r8   )rK   )r8   r	   rS   r
   )rT   rA   rU   rX   rY   r]   r\   s          r!   run_check_lru_cachedzTestBasic.run_check_lru_cached\   ss    &a===aaa<@DD-- P	R 	R 	R 	R 	R 	Rr#   Nc                    g }|pg D ];}||vrdddd                     ||          }|                    ||                    <t          d
i |}|                    ddd           |pg D ]}||         ||<   |                     d          }	|                     d	d
          }
	  ||d	|
i|\  }}|	||fS # t          $ r, |	t          j        t          ddt
          j                  |fcY S w xY w)NrC   x1f)rX   rY   funcTFr`   disprR   argsr   rd   )	getappenddictupdate	ExceptionzerosRootResultsr   
_EVALUEERR)rT   tcrA   sig_args_keyssig_kwargs_keysrW   method_argskmethod_kwargsrR   	func_argsr\   rrs                r!   _run_one_testzTestBasic._run_one_teste   sE   $" 	& 	&A{{T377;;AqAAr!u%%%%vT5AABBB &B 	% 	%A!!uM!vvf~~FF62&&		NFKIiI=IIEArR< 	N 	N 	N*3B8HII2MMMM	Ns   %B7 73C-,C-r   c                     t                    }t          |j                    t          |j                  }	t          |j                  |	z
  }
|j        d|
         g |dv r8|dv r.                    d           |dv r                    d           |d<   n
|d<   d	<    fd
|D             }pg d |D             }fd|D             }d |D             }t          t          |          |gdg g           dt          z  dt          z  d} |j	        di  |d	         |
                    d|d                   d |D             }d |D             }d |D             }fdt          |||          D             }d |D             }d t          ||          D             }t          |t          |          gg dg           dS )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tolrD   rE   c           
      N    g | ]!}t           j        |fd           "S ))rw   rx   )listr~   ).0rv   rW   rA   rT   rw   rx   s     r!   
<listcomp>z'TestBasic.run_tests.<locals>.<listcomp>   sh     I I I<> **7&3+7 7/57 7 8 8 I I Ir#   c                 ,    g | ]}|d          j         |S r   rS   r   elts     r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s$    BBB3Q1AB3BBBr#   c                 4    g | ]}|d          d         v|S rd   IDr   )r   r   
known_fails     r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s+    MMM3SWT]*-L-L3-L-L-Lr#   c                 *    g | ]}|d          d         S r   r   r   s     r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s     999#B999r#   r   r   rD   rE   c                 ,    g | ]}|d          j         |S r   r   r   s     r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s$    ;;;#a&*:;;;;r#   c                 (    g | ]}|d          j         S r   )rR   r   s     r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s    ...##a&+...r#   c                     g | ]
}|d          S r   r   r   s     r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s    ***c3q6***r#   c                 j    g | ]/\  }}}t          ||           s|d         d         v)|g|z   0S ))rE   rJ   rd   r   )r   )r   rX   cr   rJ   r   rE   s       r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   sZ     9 9 9)!Q14d;;;9BZ77 C#I777r#   c                 B    g | ]\  }}}} |d          |g|d         R  S )ri   rm   r   )r   arootr   fulloutrv   s        r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s;    SSS1F7Bwr#wu,6
,,,SSSr#   c                 ,    g | ]\  }}|d k    |g|z   S r   r   )r   fvr   s      r!   r   z'TestBasic.run_tests.<locals>.<listcomp>   s'    LLL72sB!GGRD3JGGGr#   r   )_getfullargspecr	   
kwonlyargslendefaultsrm   ro   r   ra   rq   rn   rO   )rT   testsrA   rU   rD   rE   r   rW   sig	nDefaults	nRequiredresultsnotcvgdnotcvged_IDStolscvgdapproxcorrectnotclosefvsrJ   rw   rx   s   ` `  ```            @@@r!   	run_testszTestBasic.run_tests|   s    f%%CN"###%%	MMI-	),111+++&&x000:%%#**9555 F5MM!F6N!F6NI I I I I I I IBGI I I
  %2
BB'BBBMMMM'MMM99999c,''6B@@@ JJ??fF|xxtF|,,;;w;;;.....**T***9 9 9 9 9 9s67D/I/I 9 9 9 TS(SSSLLc#x.@.@LLLhH.Q88888r#   c                 P    t          ||          }	 | j        |	||f|||d| dS )zuRun a collection of tests using the specified method.

        The name is used to determine some optional arguments.rV   )rD   rE   r   N)r   r   )
rT   
collectionrA   rU   rV   r   rD   rE   rW   r   s
             r!   run_collectionzTestBasic.run_collection   sU     *<<<ufd 	8D",	8 	806	8 	8 	8 	8 	8r#   c                     |                      t          j        d           |                     t          j        d           |                     d           |                     dt          j        dd           d S )Nbisectapsr   r   )rb   rs   r   rf   r^   r   rT   s    r!   test_bisectzTestBasic.test_bisect   i    u|X...!!%,999x(((E5<aHHHHHr#   c                     |                      t          j        d           |                     t          j        d           |                     d           |                     dt          j        dd           d S )Nridderr   r   r   )rb   rs   r   rf   r^   r   r   s    r!   test_ridderzTestBasic.test_ridder   r   r#   c                     |                      t          j        d           |                     t          j        d           |                     d           |                     dt          j        dddd           d S )Nbrentqr   r   +=rV   rD   rE   )rb   rs   r   rf   r^   r   r   s    r!   test_brentqzTestBasic.test_brentq   sz    u|X...!!%,999x(((E5<a!&U 	 	4 	4 	4 	4 	4r#   c                     |                      t          j        d           |                     t          j        d           |                     d           |                     dt          j        dddd           d S )Nbrenthr   r   r   r   )rb   rs   r   rf   r^   r   r   s    r!   test_brenthzTestBasic.test_brenth   sz    u|X...!!%,999x(((E5<a!&U 	 	4 	4 	4 	4 	4r#   c                     |                      t          j        d           |                     t          j        d           |                     d           |                     dt          j        dd           d S )Ntoms748r   r   r   )rb   rs   r   rf   r^   r   r   s    r!   test_toms748zTestBasic.test_toms748   si    u}i000!!%-;;;y)))E5=)JJJJJr#   c                 l    dg}|ddgz  }dD ]&}|                      |t          j        dd|           'd S )N	aps.13.00z	aps.12.05	aps.12.17r   complexr   r   rV   r   r   rs   r   rT   r   r   s      r!   test_newton_collectionsz!TestBasic.test_newton_collections   sh    !]
{K00
, 	E 	EJ
EL(+,   E E E E	E 	Er#   c                 `    g d}dD ]&}|                      |t          j        dd|           'd S )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_collectionsz!TestBasic.test_halley_collections   se    0 0 0
 - 	E 	EJ
EL(+,   E E E E	E 	Er#   c                     | dz  d| z  z
  dz
  S r   r   r   s    r!   r"   zTestBasic.f1   s    !taczA~r#   c                     d| z  dz
  S r%   r   r   s    r!   r&   zTestBasic.f1_1   s    sQwr#   c                     dd| z  z   S r(   r   r   s    r!   r*   zTestBasic.f1_2   s    QqSyr#   c                 @    t          |           t          |           z
  S r,   r/   r   s    r!   r0   zTestBasic.f2       1vvAr#   c                 @    t          |           t          |           z   S r,   r3   r   s    r!   r4   zTestBasic.f2_1   r   r#   c                 @    t          |           t          |           z   S r,   r/   r   s    r!   r6   zTestBasic.f2_2  r   r#   c                    | j         | j        | j        f| j        | j        | j        ffD ]\  }}}t          j        |dd          }t           ||          dd           t          j        |ddd          }t           ||          dd           t          j        |d|d          }t           ||          dd           t          j        |d||d	          }t           ||          dd           d S )
Nr=   ư>)r   r   rJ      )rh   r   )r   r   )r   r   r   )	r"   r&   r*   r0   r4   r6   rs   r   r
   )rT   ri   f_1f_2r    s        r!   test_newtonzTestBasic.test_newton  s   !Wdi;!Wdi;= 		0 		0KAsCQt,,,AAAaDD!$////QaT222AAAaDD!$////Q#4888AAAaDD!$////Q#sEEEAAAaDD!$/////		0 		0r#   c                     t           t          t          ft          t          t
          ffD ]:\  }}}t          |dd|d          }t           ||j                  dd           ;dS )z#Invoke newton through root_scalar()r   r=   r   )rA   rC   r   rD   r   r   N	r"   r&   r*   r0   r4   r6   r   r
   rR   rT   ri   r   r   r\   s        r!   test_newton_by_namezTestBasic.test_newton_by_name  sn    t,r4.>? 	5 	5KAsCAh1StLLLAAAafIIqt44444	5 	5r#   c                 4   t           t          t          ft          t          t
          ffD ]n\  }}}t          |dddd          }t           ||j                  dd           t          |dddd          }t           ||j                  dd           od	S )
z#Invoke secant through root_scalar()r   r=   r   r   )rA   rC   rh   rD   r   r   r   Nr   r   s        r!   test_secant_by_namezTestBasic.test_secant_by_name  s    t,r4.>? 	5 	5KAsCAh1FFFAAAafIIqt4444Ah1FFFAAAafIIqt44444		5 	5r#   c           	          t           t          t          ft          t          t
          ffD ];\  }}}t          |dd||d          }t           ||j                  dd           <dS )z#Invoke halley through root_scalar()r   r=   r   )rA   rC   r   r   rD   r   r   Nr   r   s        r!   test_halley_by_namezTestBasic.test_halley_by_name   sz    t,r4.>? 	5 	5KAsCAh1#&$@ @ @AAAafIIqt44444	5 	5r#   c                 h   t          j        t                    5  t          t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t          dt
          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t          dt          dd           d d d            d S # 1 swxY w Y   d S )	Nr   r=   r   )rA   rC   rD   r   r   )rA   r   rC   rD   )rA   r   rC   rD   )pytestraises
ValueErrorr   r"   r&   r*   r   s    r!   test_root_scalar_failzTestBasic.test_root_scalar_fail'  s*   ]:&& 	> 	>8====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:&& 	> 	>8====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:&& 	K 	K8DQTJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K]:&& 	L 	L8TadKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	LsE   ?AA#BBB,CCC;D''D+.D+c                    d }d }d }t          j        g d          }t          j        t          d                    dz   dz  }||dd	dd
f}dgdz  }t	          j        ||||          }d}	t          ||	           t	          j        |||||          }t          ||	           t	          j        |||          }t          ||	           dS )ztest newton with arrayc                     |d         | |d         z  z   }|d         |d         t          j        ||d         z            dz
  z  z
  ||d         z  z
  | z
  S )Nr   r=   r   r   r   rF   r   rL   r   r    rX   rY   s      r!   r"   z'TestBasic.test_array_newton.<locals>.f14  sX    !q1Q4xAQ4!A$"&QqT"2"2S"899A!HDqHHr#   c                     |d         |d         z  }|d          t          j        |d         |d         z  | |z  z             z  |z  |d         |d         z  z
  dz
  S )Nr=   r   r   r   r   r   r   r   s      r!   r&   z)TestBasic.test_array_newton.<locals>.f1_18  s^    !qtAaD526!A$1+A"5666:QqTAaD[H1LLr#   c                     |d         |d         z  }|d          t          j        |d         |d         z  | |z  z             z  |dz  z  S )Nr=   r   r   r   r   r   s      r!   r*   z)TestBasic.test_array_newton.<locals>.f1_2<  sL    !qtAaD526!A$1+A"56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Ӎ@
   rF   g      @g&.>gMbp?gn2d?)
gԩ˰@g9~4b'@gaq(@g0p@gk"z?g4se?gU+F@gwQu%@gd6)@g)i!@)r   rm   N)rL   arrayr   rangers   r   r
   )
rT   r"   r&   r*   a0a1rm   rC   r    
x_expecteds
             r!   test_array_newtonzTestBasic.test_array_newton1  s   	I 	I 	I	M 	M 	M	> 	> 	> X 
 
 
   fU2YY#%,Bub'2URZLRt,,

 	:&&&LRtT::::&&&LRd+++:&&&&&r#   c                    d }d }t          j        dd          }t          j        |||          }t	           ||          d           t          j        d          }t          j        |||          }t	           ||          d           t          j        ||          }t	           ||          d           d S )Nc                     | dz   dz   S )Nr                 ?r   r   s    r!   ri   z.TestBasic.test_array_newton_complex.<locals>.fY  s    q58Or#   c                     dS NrF   r   r   s    r!   r   z3TestBasic.test_array_newton_complex.<locals>.fprime\  s    3r#   r   r   )r           )rL   fullrs   r   r
   ones)rT   ri   r   tr    s        r!   test_array_newton_complexz#TestBasic.test_array_newton_complexX  s    	 	 		 	 	 GArNNLAf---!b!!! GAJJLAf---!b!!!LA!b!!!!!r#   c                     t          j        d ddgt          j        ddg          g          }t	          |d           dS )	z8test secant doesn't continue to iterate zero derivativesc                     | | z  |d         z
  S )Nr   r   r    rX   s     r!   <lambda>z=TestBasic.test_array_secant_active_zero_der.<locals>.<lambda>m  s    qsQqTz r#   gˡE}@r         )rC   rm   )f~@g      @N)rs   r   rL   r   r
   rT   r    s     r!   !test_array_secant_active_zero_derz+TestBasic.test_array_secant_active_zero_derk  sO    L11uaj!xR1124 4 4344444r#   c                     t          j        d dgdz  ddgf          }t          |d           t          j        d d	gdz  d
dgf          }t          |d           d S )Nc                     || dz  z
  S r%   r   yzs     r!   r
  z6TestBasic.test_array_newton_integers.<locals>.<lambda>s      a!q&j r#         @r   g      .@g      1@r   )gNO@r  c                     || dz  z
  S r%   r   r  s     r!   r
  z6TestBasic.test_array_newton_integers.<locals>.<lambda>w  r  r#   r      r  )rs   r   r
   r  s     r!   test_array_newton_integersz$TestBasic.test_array_newton_integersq  s}    L003%!) $d|o/ / /ABBBL001#'"bLLLABBBBBr#   c                    t          t          t          j        d ddgd            t	          j        t                    5  t          j        d ddgd d          }t          |j        d           |j        	                                sJ |j
                                        rJ 	 d d d            d S # 1 swxY w Y   d S )	Nc                     | dz  dz
  S r%   r   r  s    r!   r
  z?TestBasic.test_array_newton_zero_der_failures.<locals>.<lambda>}  s    q!tax r#   r  c                     d| z  S r%   r   r  s    r!   r
  z?TestBasic.test_array_newton_zero_der_failures.<locals>.<lambda>}  s
    QU r#   c                     | dz  dz
  S r%   r   r  s    r!   r
  z?TestBasic.test_array_newton_zero_der_failures.<locals>.<lambda>  s    QTAX r#   c                     d| z  S r%   r   r  s    r!   r
  z?TestBasic.test_array_newton_zero_der_failures.<locals>.<lambda>  s
    QqS r#   Tre   r   )r   RuntimeWarningrs   r   r   warnsr
   rR   zero_derallrS   any)rT   r   s     r!   #test_array_newton_zero_der_failuresz-TestBasic.test_array_newton_zero_der_failuresz  s   ^U\''"b??	D 	D 	D \.)) 	/ 	/l#5#5Bx#0=dD D DGGL!,,,#'')))))(,,......	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s    A(B66B:=B:c                    d }d }d }d }t          |dd|          }t          |ddd          }t          |j        |j        d	
           t          d|j        z  |j                   t          |dd||          }t          |ddd          }t          |j        |j        d	
           t          d|j        z  |j                   d S )Nc                     | dz  d| z  z
  dz
  S r   r   r   s    r!   r
  z0TestBasic.test_newton_combined.<locals>.<lambda>  s    q!taczA~ r#   c                     d| z  dz
  S r%   r   r   s    r!   r
  z0TestBasic.test_newton_combined.<locals>.<lambda>  s    1q r#   c                     dd| z  z   S r(   r   r   s    r!   r
  z0TestBasic.test_newton_combined.<locals>.<lambda>  s    qs r#   c                 0    | dz  d| z  z
  dz
  d| z  dz
  dfS )Nr   r   r)   r   r   s    r!   r-   z7TestBasic.test_newton_combined.<locals>.f1_and_p_and_pp  s'    a4!A#:a<1Q++r#   r   r=   )rA   rC   r   Tg:0yE>r   r   r   )rA   rC   r   r   )rA   rC   r   )r   r
   rR   r   function_calls)rT   r"   r&   r*   r-   sol0sols          r!   test_newton_combinedzTestBasic.test_newton_combined  s    %%  ""	, 	, 	, 2h1TBBB/(qNNN	38$7777Qs))4+>???2h1T4PPP/(q$OOO	38$7777Qs))4+>?????r#   c                 X   d}g d}t          d          D ]}ddd}d| j        gd| j        ggd |         D ]
\  }}|||<   t          j        | j        |fdd	i|\  }}t          |j                   t          ||j	                   t          |j
        |j        f||                    |d
k    r|j        |j
        dz   k    sJ n t          |j        |dz   |j
        z             |j
        dz
  }	t          j        | j        |f|	d	d|\  }}t          |j                    t          ||j	                   t          |j
        |	           |dk    rTt          j        t          d|	z            5  t          j        | j        |f|	dd|\  }}d d d            n# 1 swxY w Y   d S )Nr=   ))      )r   r   )r=   	   r   T)r   r`   r   r   rl   Fr   r   )maxiterrl   z3Failed to converge after %d iterations, value is .*match)r   r&   r*   rs   r   r"   r	   rS   r   rR   
iterationsr+  r   r   RuntimeError)
rT   rC   expected_countsderivsrW   rz   vr    r\   iterss
             r!   test_newton_full_outputz!TestBasic.test_newton_full_output  sS   
 333Ahh 	Y 	YF!$99F"DI.DI0FGP  1q		<BB%B6BBDAqAK   AF###!,(89?6;RSSS{{'1<!+;;;;;;Q-
al/JKKK L1$E<QUQQ&QQDAqO$$$AF###u---{{ ] OSXY[ [ [ Y Y !<XUXXQWXXDAqY Y Y Y Y Y Y Y Y Y Y Y Y Y Y1	Y 	Ys   2FF!	$F!	c                     d }d }t          t          t          j        |d|d           t	          j        t          d          5  t          j        |d|           d d d            d S # 1 swxY w Y   d S )Nc                     | dz  dz
  S )Nr   r)   r   r   s    r!   r
  z3TestBasic.test_deriv_zero_warning.<locals>.<lambda>  s    A r#   c                     d| z  S r%   r   r   s    r!   r
  z3TestBasic.test_deriv_zero_warning.<locals>.<lambda>  s
    !A# r#   r  Frl   zDerivative was zeror4  )r   r   rs   r   r   r   r7  )rT   rj   dfuncs      r!   test_deriv_zero_warningz!TestBasic.test_deriv_zero_warning  s    ##^U\4e%PPPP]</DEEE 	+ 	+LsE***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A**A.1A.c                     t          j        ddg          }|                                }t          t           j        |t           j                   t          ||           d S )N皙?r=   )rL   r   copyr   r   r   r   )rT   rC   x0_copys      r!   test_newton_does_not_modify_x0z(TestBasic.test_newton_does_not_modify_x0  sN    XsAh''))rvr26"""2w'''''r#   c                 "   t           j        t           j        t           j        t           j        t           j        t           j        fD ]I}t          j        t          d          5   |t          ddd           d d d            n# 1 swxY w Y   Jd S )Nz2'float' object cannot be interpreted as an integerr4  r  rF   gR@)r3  )rs   r   r   r   r   r   r   r   r   	TypeErrorr"   )rT   rA   s     r!   test_maxiter_int_checkz TestBasic.test_maxiter_int_check  s    |U\5<|U]4 	4 	4FyNP P P 4 4r3U33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4s   "BB	
B	r   )NN)'__name__
__module____qualname__r^   rb   rf   r~   ra   r   r   r   r   r   r   r   r   r   staticmethodr"   r&   r*   r0   r4   r6   r   r   r   r   r   r   r  r  r  r%  r.  r<  rB  rG  rJ  r   r#   r!   r:   r:   ?   s       N N N N
N 
N 
NR R R 7;&*N N N N0 :~A
N!49 49 49 49l CG"&
NZ	8 	8 	8 	8I I II I I4 4 44 4 4K K KE E EE E E   \   \   \   \   \   \
0 
0 
05 5 55 5 55 5 5L L L%' %' %'N" " "&5 5 5C C C
/ 
/ 
/@ @ @$#Y #Y #YJ+ + +( ( (4 4 4 4 4r#   r:   c            	          dfd} t           j        t           j        g}t          x}}|D ].} || dd||          }t	          |||d|j        z             /d S )NrD  c                     | z
  S r,   r   )r    rR   s    r!   ri   ztest_gh_5555.<locals>.f  s    4xr#   g    חg    cAr   z	method %srI   )rs   r   r   TOLr
   rK  )ri   methodsrD   rE   rA   resrR   s         @r!   test_gh_5555rT    s    D     |U\*GD4 ? ?fQc4888c4 +fo =	? 	? 	? 	? 	?? ?r#   c                      d } d}dt           z  }t          j        t          j        g}|D ]%} || dd||          }t	          d|||           &d S )	Nc                     | dk     rdS | dz
  S )Nr<   g333333?r   r   s    r!   ri   ztest_gh_5557.<locals>.f  s    s774s7Nr#   gRQ?r   r   r   r   rW  rJ   rE   )ra   rs   r   r   r
   )ri   rJ   rE   rR  rA   rS  s         r!   test_gh_5557rY    s|       Dz>D|U\*G 8 8fQ14d333St$777778 8r#   c                      d} d}| |fD ]U\  }}}t          j        |          t          j        t          j        fD ]"} |fd||          }t          ||           #Vd S )N)g      |g     ug      y)g     u@g      |@g      y@c                 2    t          j        |           z
  S r,   r   )r    r   s    r!   r
  z9test_brent_underflow_in_root_bracketing.<locals>.<lambda>  s    26!99Q; r#   )rL   r   rs   r   r   r
   )underflow_scenariooverflow_scenariorX   rY   rR   rA   rS  r   s          @r!   'test_brent_underflow_in_root_bracketingr^    s    
 2-)+<= ' '
1dF4LL|U\2 	' 	'F&....155CD#&&&&	'' 'r#   c                       e Zd Zd ZdS )TestRootResultsc                 t    t          j        dddd          }d}t          t          |          |           d S )NrF   ,   .   r   )rR   r6  r+  flagzo      converged: True
           flag: 'converged'
 function_calls: 46
     iterations: 44
           root: 1.0)rs   rt   r   repr)rT   r\   expected_reprs      r!   	test_reprzTestRootResults.test_repr	  sI    3)+-/#$& & &0 	T!WWm,,,,,r#   N)rK  rL  rM  rg  r   r#   r!   r`  r`    s#        - - - - -r#   r`  c                     d } d }d }t          dd          }d}t          j        | ||||d          }t           | |g|R  d	d
           |gdz  }d}t          j        | ||||d          }t           | |g|R  d	d
           dS )z&Test Halley's works with complex rootsc                 H    |d         | dz  z  |d         | z  z   |d         z   S )Nr   r   r   r   r	  s     r!   ri   ztest_complex_halley.<locals>.f  s*    tad{QqTAX%!,,r#   c                 0    d|d         z  | z  |d         z   S )Nr   r   r   r   r	  s     r!   r   z test_complex_halley.<locals>.f_1  s    1Q4x!|ad""r#   c                 h    d|d         z  }	 t          |           }|g|z  S # t          $ r |cY S w xY w)Nr   r   )r   rI  )r    rX   retvalsizes       r!   r   z test_complex_halley.<locals>.f_2  sS    QqT	#q66D 8d?"  	 	 	MMM	s   " 11rF   r)   )r)   g      @r  r   )rm   r   r   r   r   r   r   N)r   rs   r   r
   )ri   r   r   r  coeffsr  s         r!   test_complex_halleyro    s    - - -# # ## # # 	SAFQsCTJJJAAAaM&MMM140000	
bAFQsCTJJJAAAaM&MMM14000000r#   c                     t          j        t                    j        dz  } d| z
  d| z   z  }t	                      5 }|                    t          d           t          j        d |gdz            }ddd           n# 1 swxY w Y   t          |d	gdz             d
}t	                      5 }|                    t          d           t          j        d |d          }ddd           n# 1 swxY w Y   t          |d           t          j        t          d          5  t          j        d |d          }ddd           n# 1 swxY w Y   d}t	                      5 }|                    t          d           t          j        d |d          }ddd           n# 1 swxY w Y   t          |d           t          j        t          d          5  t          j        d |d          }ddd           dS # 1 swxY w Y   dS )zBTest secant method with a non-zero dp, but an infinite newton stepgQ?g      i@r)   zRMS ofc                     | dz
  dz  S )Ng      Y@r   r   r  s    r!   r
  z%test_zero_der_nz_dp.<locals>.<lambda>=  s    AI> r#   r   rC   Nd   g.ЗK.?zTolerance ofc                     | dz
  dz  S NrF   r   r   r  s    r!   r
  z%test_zero_der_nz_dp.<locals>.<lambda>C      AG> r#   F)rC   rl   r   r4  c                     | dz
  dz  S ru  r   r  s    r!   r
  z%test_zero_der_nz_dp.<locals>.<lambda>F  rv  r#   Tg.ЗK.c                     | dz   dz  S ru  r   r  s    r!   r
  z%test_zero_der_nz_dp.<locals>.<lambda>J  rv  r#   rd   c                     | dz   dz  S ru  r   r  s    r!   r
  z%test_zero_der_nz_dp.<locals>.<lambda>M  rv  r#   )rL   r   rM   rN   r   filterr   rs   r   r
   r   r   r7  )dxp0supr    s       r!   test_zero_der_nz_dpr~  0  s    
%		$B "*r	"B			 A

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

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

>>222L11buEEEF F F F F F F F F F F F F F F Ar	|>	:	:	: E EL11btDDDE E E E E E E E E E E E E E E E E EsY   7A>>BB-4C--C14C1#EEE#4F##F'*F'G??HHc                     d} dd}d}d}||z  | z  |z  }fd}t          j        t                    5  t          j        |g dd|| gd	
          }|j                                        rJ 	 ddd           n# 1 swxY w Y   t          j        t                    5  t          j        |dgdz  d|| gd	
          }ddd           dS # 1 swxY w Y   dS )z(Test that array newton fails as expectedrD  ga2U0*#?g@g\mJA?gCl@c           	          dt          j        |           z  dt          j        dz  |z  d|z  t          j        |           z  z             z  z   S )Nr   r   g@gGz@)rL   r   log10)darcy_frictionredia	roughnesss      r!   colebrook_eqnz1test_array_newton_failures.<locals>.colebrook_eqn]  sa    BGN+++BHY_s2!BY)@)@@A B B BB 	Cr#   ){Gz?g?gvÖ?g333333?r   T)rC   r3  rm   r`   Nr  )	r   r!  r   rs   r   rS   r#  r   r7  )diameterrhomuureynolds_numberr  resultr  s          @r!   test_array_newton_failuresr  P  s   
 HI
C	BAAg(2-OC C C C C 
n	%	% * *777!8,$
 
 
 #''))))))* * * * * * * * * * * * * * * 
|	$	$ 
 
tfqj!!8,$
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s#   9A;;A?A? CCCc                     d } t          j        | d          }t          |dt           j        t           j                   t          j        | dgdz            }t          |dt           j        t           j                   d }d }t          j        | d|          }t          |dt           j        t           j                   t          j        | d||	          }t          |dt           j        t           j                   t          j        | dgdz  |          }t          |dt           j        t           j                   t          j        | dgdz  ||	          }t          |dt           j        t           j                   t          j        | d
|          }t          |dt           j        t           j                   t          j        | d
gdz  |          }t          |dt           j        t           j                   dS )z@Test that Newton or Halley don't warn if zero derivative at rootc                     | dz  | dz  z
  S Nr=   r   r   r   s    r!   f_zeroder_rootz9test_gh8904_zeroder_at_root_fails.<locals>.f_zeroder_rootv  s    !tad{r#   r   rr  rX  r   c                     d| dz  z  d| z  z
  S r  r   r   s    r!   fderz/test_gh8904_zeroder_at_root_fails.<locals>.fder  s    1a4x!a%r#   c                     d| z  dz
  S )Nr0  r   r   r   s    r!   fder2z0test_gh8904_zeroder_at_root_fails.<locals>.fder2      sQwr#   )rC   r   )rC   r   r   r<   N)rs   r   r
   _xtol_rtol)r  r\   r  r  s       r!   !test_gh8904_zeroder_at_root_failsr  r  s      	^***AAqu{====^B///AAqu{====        	^$777AAqu{====^$"	$ 	$ 	$AAqu{====^Bt<<<AAqu{====^Bt"	$ 	$ 	$AAqu{==== 	^D999AAqu{====^b>>>AAqu{======r#   c                      dfd} fd}fd}d}t          | ||d          \  }}|j        sJ t          | |||d          \  }}|j        sJ d	S )
zzTest that Halley's method realizes that the 2nd order adjustment
    is too big and drops off to the 1st order adjustment.r2  c                 R    t          | dz            t          dz            z
  S r  r   r    ns    r!   ri   ztest_gh_8881.<locals>.f  s&    QAq#a%00r#   c                 6    t          | dz
  z            z  S r  r  r  s    r!   fpztest_gh_8881.<locals>.fp  s     QQ	""1$$r#   c                 T    t          | ddz  z
  z            dz  z  dz
  z  z  S ru  r  r  s    r!   fppztest_gh_8881.<locals>.fpp  s6    QQqS!$$A.#a%8::r#   rD  T)r   r`   r   r   r`   N)r   rS   )ri   r  r  rC   rtr\   r  s         @r!   test_gh_8881r    s     	
A1 1 1 1 1% % % % %; ; ; ; ; 
B 1b666EB;; 1bSdCCCEB;;r#   c                     d } d }d }t          j        dgt           j                  }t          | |||d          \  }}|j        sJ t          j        ddgt           j                  }t          j        t                    5  t          j        | |||d          }d	d	d	           n# 1 swxY w Y   d
 }t          j        | |||d          }|j        	                                sJ d	S )z_
    Test that shape is preserved for array inputs even if fprime or fprime2 is
    scalar
    c                     | dz  S r%   r   r   s    r!   ri   z,test_gh_9608_preserve_array_shape.<locals>.f  s    !tr#   c                     d| z  S r%   r   r   s    r!   r  z-test_gh_9608_preserve_array_shape.<locals>.fp  s    1ur#   c                     dS r%   r   r   s    r!   r  z.test_gh_9608_preserve_array_shape.<locals>.fpp  s    qr#   dtypeTr  Nc                 h    t          j        t          j        |           dt           j                  S )Nr   r  )rL   r  shapefloat32r   s    r!   	fpp_arrayz4test_gh_9608_preserve_array_shape.<locals>.fpp_array  s#    wrx{{ARZ8888r#   )
rL   r   r  r   rS   r   r   
IndexErrorrs   r#  )	ri   r  r  rC   r  r\   x0_arrayr  r  s	            r!   !test_gh_9608_preserve_array_shaper    sg   
       
2$bj	)	)	)B1bSdCCCEB;;xR
333H	z	"	" 
 
xCT
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

9 9 9 \	8B	t  F !!!!!!!s   B,,B03B0z maximum_iterations,flag_expectedr   rs  c                     t          j        d ddddd| dd	  	        }|d	         j        |k    sJ |t           j        k    r|d	         j        | k    sJ d
S |t           j        k    r|d	         j        | k     sJ d
S d
S )z]
    Test that if the maximum iterations is exceeded that the flag is not
    converged.
    c                 *    d| z  dz
  | z  dz   | z  dz
  S )Ng333333?gffffff@g333333@g      @r   r   s    r!   r
  z6test_gh9254_flag_if_maxiter_exceeded.<locals>.<lambda>  s!    CECK?S(!+c1 r#   i   r   r   TFrk   r   N)rs   r   rd  CONVERRr6  	CONVERGED)maximum_iterationsflag_expectedr  s      r!   $test_gh9254_flag_if_maxiter_exceededr    s     \11RT4!3u& & &F !9>]****%%ay#'9999999	%/	)	)ay#&88888 
*	)88r#   c                  p   d } d }t          t          t          j        | d|d           t	          j        t          d          5  t          j        | d|           ddd           n# 1 swxY w Y   t          j        | t          d	d	          |          }t          |t          d
d                     dS )zBTest that if disp is true then zero derivative raises RuntimeErrorc                     | | z  dz   S )Nr   r   r   s    r!   ri   z/test_gh9551_raise_error_if_disp_true.<locals>.f  r  r#   c                     d| z  S r%   r   r   s    r!   f_pz1test_gh9551_raise_error_if_disp_true.<locals>.f_p  s    s
r#   rF   Fr@  zY^Derivative was zero\. Failed to converge after \d+ iterations, value is [+-]?\d*\.\d+\.$r4  Ng      $@r  )	r   r   rs   r   r   r   r7  r   r
   )ri   r  rR   s      r!   $test_gh9551_raise_error_if_disp_truer    s	        q#sGGGG	n
p 
p 
p " " 	QS!!!" " " " " " " " " " " " " " " <74..44DD'#s++,,,,,s   A))A-0A-)@r   mathr   r   r   r   	functoolsr   numpy.testingr   r	   r
   r   r   r   numpyrL   r   r   r   r   scipy.optimizer   rs   r   r   scipy._lib._utilr   r   scipy.optimize._tstutilsr   r   rP   r   rQ   rM   rN   rQ  ra   r"   r&   r*   r-   r0   r4   r6   r8   r:   rT  rY  r^  r`  ro  r~  r  r  r  r  markparametrizer  r  r  r  r   r#   r!   <module>r     s    $ $ $ $ $ $ $ $ $ $ $ $      . . . . . . . . . . . . . . . .
     , , , , , , , , , , , , C B B B B B B B B B F F F F F F o n n n n n n n n nU5\\
      # # #
      
   Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4h? ? ?8 8 80' ' '	- 	- 	- 	- 	- 	- 	- 	-1 1 18E E E@
 
 
D,> ,> ,>`  4" " "D &%-3013 39 93 39$- - - - -r#   