Ë
    âQ(h†  ã                   óX   — d Z ddlmZmZ ddlZddlmZmZ ddl	Z
ddlmZ  G d„ d«      Zy)z5
Unit tests for optimization routines from _root.py.
é    )Úassert_Úassert_equalN)ÚraisesÚwarns©Úrootc                   ó¤   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  d„ «       Z
ej                  j                  dg d¢«      d„ «       Zy	)
ÚTestRootc           	      óè  — d„ }d„ }dD ]ç  }|dv rŒ|dv r|}nd }t        |ddg|d|¬«      }t        |ddg|d	|¬«      }|› d
 ||j                  «      › d ||j                  «      › �}t        |j                  |«       t        |j                  |«       t        t	         ||j                  «      «      j                  «       t	         ||j                  «      «      j                  «       k  |«       Œé y )Nc                 óR   — | \  }}t        j                  |dz  dz
  |dz  dz
  g«      S ©Né   é   ©ÚnpÚarray©ÚzÚxÚys      ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test__root.pyÚfuncz)TestRoot.test_tol_parameter.<locals>.func   ó/   € Ø‰DˆAˆqÜ—8‘8˜Q ™T A™X q¨!¡t¨a¡xÐ0Ó1Ð1ó    c                 óZ   — | \  }}t        j                  d|dz  z  dgdd|dz  z  gg«      S )Nr   é   r   r   r   s      r   Údfuncz*TestRoot.test_tol_parameter.<locals>.dfunc   s7   € Ø‰DˆAˆqÜ—8‘8˜a  1¡™f a˜[¨1¨a°°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_parameterzTestRoot.test_tol_parameter   sç   € ò	2ò	8ð0ò 	ˆFàÐ;Ñ;àà˜Ñ'Ø‘à�ä˜˜s 3˜i¨S°dÀ6ÔJˆDÜ˜˜s 3˜i¨S°cÀ&ÔIˆDØ�H˜B™t D§F¡F›|˜n¨E±$°t·v±v³,°Ð@ˆCÜ�D—L‘L #Ô&Ü�D—L‘L #Ô&Ü”C™˜TŸV™V›Ó%×)Ñ)Ó+¬c±$°t·v±v³,Ó.?×.CÑ.CÓ.EÑEØõñ!	r   c                 ó|   — d„ }dD ]4  }t        t        j                  t        j                  d«      |d|i¬«       Œ6 y )Nc                 ó   — t        | d   «      S ©Nr   )r-   ©r   s    r   Únormz$TestRoot.test_tol_norm.<locals>.norm,   s   € Ü�q˜‘t“9Ðr   )r&   r#   r%   r"   r    r!   r$   r   Útol_norm)r*   Úoptions)r   r   Ú
zeros_likeÚzeros)r/   r8   r*   s      r   Útest_tol_normzTestRoot.test_tol_norm*   s<   € ò	ð!ò 		,ˆFô ”—‘¤§¡¨£°FØ# TÐ*ö,ñ		,r   c                 ó,   — dd„}t        |ddgd¬«       y )Nc                 óR   — | \  }}t        j                  |dz  dz
  |dz  |z
  g«      S r   r   )r   Úfr   r   s       r   r   z=TestRoot.test_minimize_scalar_coerce_args_param.<locals>.func<   r   r   r'   g      ø?)Úargs©r   r   )r/   r   s     r   Ú&test_minimize_scalar_coerce_args_paramz/TestRoot.test_minimize_scalar_coerce_args_param:   s   € ó	2ô 	ˆT�C˜�: CÖ(r   c                 óŽ   —  G d„ d«      } |«       }t        t        «      5  t        |ddgd¬«       d d d «       y # 1 sw Y   y xY w)Nc                   ó   — e Zd Zd„ Zd„ Zy)ú!TestRoot.test_f_size.<locals>.func                 ó   — d| _         y r6   ©Úcount)r/   s    r   Ú__init__z*TestRoot.test_f_size.<locals>.fun.__init__F   s	   € Ø�•
r   c                 óè   — | xj                   dz  c_         | j                   dz  s|d   d|d   |d   z
  dz  z  z   dz
  }|S |d   d|d   |d   z
  dz  z  z   dz
  d|d   |d   z
  dz  z  |d   z   g}|S )Nr   é   r   r+   r   g      ð?rH   )r/   r   Úrets      r   Ú__call__z*TestRoot.test_f_size.<locals>.fun.__call__I   s£   € Ø—
’
˜a‘•
àŸ
™
 QšØ˜A™$ ¨¨!©¨q°©t©¸Ñ'9Ñ!9Ñ9¸CÑ?�Cð
 �
ð ˜a™D 3¨!¨A©$°°1±©+¸!Ñ);Ñ#;Ñ;¸cÑAØ ! A¡$¨¨1©¡+°!Ñ!3Ñ3°a¸±dÑ:ð<�Cð �
r   N)Ú__name__Ú
__module__Ú__qualname__rJ   rN   © r   r   ÚfunrF   E   s   „ òó	r   rS   çš™™™™™¹?g        r   )r*   )Úassert_raisesÚ
ValueErrorr   )r/   rS   ÚFs      r   Útest_f_sizezTestRoot.test_f_sizeA   sB   € ÷	ñ 	ñ ‹EˆÜœ:Ó&ñ 	-Ü��S˜#�J tÕ,÷	-÷ 	-ñ 	-ús	   ¡;»Ac                 ó&  ‡‡— d„ Šd„ Šˆˆfd„}t        j                  d«      }t        ‰|dd¬«      }d}t        t        |¬	«      5  t        ‰|dd‰¬
«      }d d d «       t        t        |¬	«      5  t        ||ddd¬
«      }d d d «       t        j                  |j                  «       t        j                  |j                  «       |j                  |j                  cxu r|j                  cxu rdu sJ ‚ J ‚y # 1 sw Y   Œ¥xY w# 1 sw Y   Œ‡xY w)Nc                 ó^   — d| d   z  d| d   dz  z  z
  dz   d| d   dz  z  d| d   z  z   dz
  gS )	Nr   r   g      Ð?r   r   é
   rT   rL   rR   ©r   Úignoreds     r   rS   z#TestRoot.test_gh_10370.<locals>.fun]   sI   € Ø�a˜‘d‘F˜T ! A¡$¨¡'™\Ñ)¨BÑ.°°A°a±D¸!±G±¸aÀÀ!Á¹fÑ0DÀqÑ0HÐIÐIr   c                 ó*   — dd| d   z  gd| d   z  dggS )Nr   r+   r   gš™™™™™É?r   rL   rR   r\   s     r   Úgradz$TestRoot.test_gh_10370.<locals>.grad`   s%   € Ø˜˜a ™d™
�O c¨A¨a©D¡j°! _Ð5Ð5r   c                 ó(   •—  ‰| |«       ‰| |«      fS )NrR   )r   r]   rS   r_   s     €€r   Úfun_gradz(TestRoot.test_gh_10370.<locals>.fun_gradc   s   ø€ Ù�q˜'“?¡D¨¨GÓ$4Ð4Ð4r   r   rB   r$   )rA   r*   z'Method krylov does not use the jacobian)Úmatch)rA   r*   r(   T)r   r<   r   Úassert_warnsÚRuntimeWarningr   r   r,   )	r/   ra   Úx0ÚrefÚmessageÚres1Úres2rS   r_   s	          @@r   Útest_gh_10370zTestRoot.test_gh_10370X   sñ   ù€ ò
	Jò	6õ	5ô �X‰X�a‹[ˆä�3˜ ¨hÔ7ˆØ;ˆÜœ.°Ô8ñ 	GÜ˜˜R d°8ÀÔFˆD÷	Gäœ.°Ô8ñ 	LÜ˜ "¨4¸ÀdÔKˆD÷	Lô 	�T—V‘V˜SŸU™UÔ#Ü�T—V‘V˜SŸU™UÔ#Ø�|‰|˜tŸ|™|ÓB¨s¯{©{ÓB¸dÑBÐBÑBÐBÑB÷	Gð 	Gú÷	Lð 	Lús   ÁC;Á0DÃ;DÄDr*   )
r   r   r    r!   r"   r%   r#   r&   r$   zdf-sanec                 óJ   — d„ }t        |dg|¬«      }|j                  |k(  sJ ‚y )Nc                 ó   — | dz
  S )Nr   rR   r7   s    r   r   z,TestRoot.test_method_in_result.<locals>.funcx   s   € Ø�q‘5ˆLr   r   )re   r*   )r   r*   )r/   r*   r   Úress       r   Útest_method_in_resultzTestRoot.test_method_in_results   s+   € ò
	ô �4˜Q˜C¨Ô/ˆØ�z‰z˜VÒ#Ð#Ñ#r   N)rO   rP   rQ   r3   r=   rC   rX   ÚpytestÚmarkÚthread_unsaferj   Úparametrizern   rR   r   r   r
   r
      s`   „ òò:,ò )ò-ð. ‡[�[×ÑñCó ðCð4 ‡[�[×Ñ˜Xò (=ó >ñ$ó	>ñ$r   r
   )Ú__doc__Únumpy.testingr   r   ro   r   rU   r   rc   Únumpyr   Úscipy.optimizer   r
   rR   r   r   ú<module>rw      s'   ðñ÷ 0Û ß AÛ å ÷p$ò p$r   