
    (ph                     X    S r SSKJrJr  SSKrSSKJrJr  SSK	r
SSKJr   " S S5      rg)z5
Unit tests for optimization routines from _root.py.
    )assert_assert_equalN)raiseswarnsrootc                       \ rS rSrS rS rS rS r\R                  R                  S 5       r\R                  R                  S/ SQ5      S	 5       rS
rg)TestRoot   c           	         S nS nS H  nUS;   a  M  US;   a  UnOS n[        USS/USUS9n[        USS/US	US9nU S
U" UR                  5       SU" UR                  5       3n[        UR                  U5        [        UR                  U5        [        [	        U" UR                  5      5      R                  5       [	        U" UR                  5      5      R                  5       :  U5        M     g )Nc                 R    U u  p[         R                  " US-  S-
  US-  S-
  /5      $ N      nparrayzxys      R/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test__root.pyfunc)TestRoot.test_tol_parameter.<locals>.func   -    DA88QTAXq!tax011    c                 Z    U u  p[         R                  " SUS-  -  S/SSUS-  -  //5      $ )Nr      r   r   r   s      r   dfunc*TestRoot.test_tol_parameter.<locals>.dfunc   s5    DA88a1fa[1a1f+677r   )hybrlmbroyden1broyden2andersondiagbroydenkrylov)linearmixingexcitingmixing)r!   r"   皙?g-C6?)jactolmethod      ?z: z vs. )r   r   r   successabsmax)selfr   r   r-   r+   sol1sol2msgs           r   test_tol_parameterTestRoot.test_tol_parameter   s    	2	80F;;'s3iSd6JDs3iSc&IDHBtDFF|nE$tvv,@CDLL#&DLL#&CTVV%))+c$tvv,.?.C.C.EE!0r   c                 |    S nS H3  n[        [        R                  [        R                  " S5      USU0S9  M5     g )Nc                     [        U S   5      $ Nr   )r0   r   s    r   norm$TestRoot.test_tol_norm.<locals>.norm,   s    qt9r   )r)   r&   r(   r%   r#   r$   r'   r   tol_norm)r-   options)r   r   
zeros_likezeros)r2   r<   r-   s      r   test_tol_normTestRoot.test_tol_norm*   s7    	!F F#T*,!r   c                 (    SS jn[        USS/SS9  g )Nc                 R    U u  p#[         R                  " US-  S-
  US-  U-
  /5      $ r   r   )r   fr   r   s       r   r   =TestRoot.test_minimize_scalar_coerce_args_param.<locals>.func<   r   r   r*   g      ?)argsr   r   )r2   r   s     r   &test_minimize_scalar_coerce_args_param/TestRoot.test_minimize_scalar_coerce_args_param:   s    	2 	TC:C(r   c                      " S S5      nU" 5       n[        [        5         [        USS/SS9  S S S 5        g ! , (       d  f       g = f)Nc                        \ rS rSrS rS rSrg)!TestRoot.test_f_size.<locals>.funE   c                     SU l         g r:   count)r2   s    r   __init__*TestRoot.test_f_size.<locals>.fun.__init__F   s	    
r   c                     U =R                   S-  sl         U R                   S-  (       d  US   SUS   US   -
  S-  -  -   S-
  nU$ US   SUS   US   -
  S-  -  -   S-
  SUS   US   -
  S-  -  US   -   /nU$ )Nr      r   r.   r   g      ?rQ   )r2   r   rets      r   __call__*TestRoot.test_f_size.<locals>.fun.__call__I   s    

a


QA$!qt'9!99C?C
 
 aD3!A$1+!);#;;cA!A$1+!!33ad:<C 
r   rQ   N)__name__
__module____qualname____firstlineno__rS   rX   __static_attributes__ r   r   funrN   E   s    	r   r`   皙?g        r"   )r-   )assert_raises
ValueErrorr   )r2   r`   Fs      r   test_f_sizeTestRoot.test_f_sizeA   s9    	 	 E:&S#Jt, '&&s	   8
Ac           	      $  ^^ S mS mUU4S jn[         R                  " S5      n[        TUSSS9nSn[        [        US	9   [        TUSSTS
9nS S S 5        [        [        US	9   [        XSSSS
9nS S S 5        [        WR                  UR                  5        [        WR                  UR                  5        UR                  UR                  s=L a  UR                  s=L a  SL d   e   eg ! , (       d  f       N= f! , (       d  f       N= f)Nc                 ^    SU S   -  SU S   S-  -  -
  S-   SU S   S-  -  SU S   -  -   S-
  /$ )	Nr   r   g      ?r   r   
   ra   rV   r_   r   ignoreds     r   r`   #TestRoot.test_gh_10370.<locals>.fun]   sI    adFT!A$'\)B.AaD!Ga!f0Dq0HIIr   c                 *    SSU S   -  /SU S   -  S//$ )Nr   r.   r   g?r   rV   r_   rj   s     r   grad$TestRoot.test_gh_10370.<locals>.grad`   s%    ad
OcAaDj!_55r   c                 $   > T" X5      T" X5      4$ )Nr_   )r   rk   r`   rn   s     r   fun_grad(TestRoot.test_gh_10370.<locals>.fun_gradc   s    q?D$444r   r   rI   r'   )rH   r-   z'Method krylov does not use the jacobian)match)rH   r-   r+   T)r   rA   r   assert_warnsRuntimeWarningr   r   r/   )	r2   rq   x0refmessageres1res2r`   rn   s	          @@r   test_gh_10370TestRoot.test_gh_10370X   s    
	J	6	5 XXa[3h7;.8Rd8FD 9.84dKD 9 	TVVSUU#TVVSUU#||t||Bs{{BdBBBBB 9888s   C0&D0
C>
Dr-   )
r!   r"   r#   r$   r%   r(   r&   r)   r'   zdf-sanec                 F    S n[        US/US9nUR                  U:X  d   eg )Nc                     U S-
  $ )Nr   r_   r;   s    r   r   ,TestRoot.test_method_in_result.<locals>.funcx   s    q5Lr   r   )rv   r-   )r   r-   )r2   r-   r   ress       r   test_method_in_resultTestRoot.test_method_in_results   s+    
	 4QC/zzV###r   r_   N)rZ   r[   r\   r]   r6   rB   rJ   re   pytestmarkthread_unsafer{   parametrizer   r^   r_   r   r   r
   r
      s`    :, )-. [[C C4 [[X (= >$	>$r   r
   )__doc__numpy.testingr   r   r   r   rb   r   rt   numpyr   scipy.optimizer   r
   r_   r   r   <module>r      s'    0  A  p$ p$r   