Ë
    âQ(hØ  ã                   óz   — d Z ddlZddlZddlmZ ddlmZmZm	Z	m
Z
  edd¬«      Z eddd¬	«      Z G d
„ d«      Zy)z>
Unit tests for Krylov space trust-region subproblem solver.

é    N)Úget_trlib_quadratic_subproblem)Úassert_Úassert_almost_equalÚassert_equalÚassert_array_almost_equalg:Œ0âŽyE>ç�íµ ÷Æ°>)Ú	tol_rel_iÚ	tol_rel_bT)r	   r
   Údispc                   ó\   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  d„ «       Z
y)ÚTestKrylovQuadraticSubproblemc                 ó~  ‡‡— t        j                  g d¢g d¢g d¢g«      Št        j                  g d¢«      Šd}t        dd„ ˆfd„d	„ ˆfd
„¬«      }|j                  |«      \  }}t	        |t        j                  g d¢«      «       t        |d«       t        t         j                  j                  ‰j                  |«      |j                  |z  z   ‰z   «      d«       t        t         j                  j                  |«      |«       d}|j                  |«      \  }}t	        |t        j                  g d¢«      «       t        |d«       t        t         j                  j                  ‰j                  |«      |j                  |z  z   ‰z   «      d«       t        t         j                  j                  |«      |«       y )N©ç      ð?ç        ç      @©r   g       @r   ©r   r   g      @)g      @r   r   r   r   c                  ó   — y©Nr   © ©Úxs    új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyú<lambda>zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>    ó   � ó    c                 ó   •— ‰S ©Nr   ©r   Úgs    €r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>!   ó   ø€ ¨€ r   c                  ó   — y r   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>"   r   r   c                 ó&   •— ‰j                  |«      S r   ©Údot©r   ÚyÚHs     €r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>#   ó   ø€ ¨a¯e©e°A«h€ r   ©r   ÚfunÚjacÚhessÚhessp)ç      ð¿r   r   Tr   ç      à?)g�b5m1…Ý¿r   gpë�¬Ó³È¿)ÚnpÚarrayÚKrylovQPÚsolver   r   r   ÚlinalgÚnormr&   Úlam©ÚselfÚtrust_radiusÚsubprobÚpÚhits_boundaryr)   r!   s        @@r   Útest_for_the_easy_casez4TestKrylovQuadraticSubproblem.test_for_the_easy_case   sY  ù€ ô �H‰H’oÚ%Ú%ð'ó (ˆô �H‰H’_Ó%ˆð ˆô ˜QÙ*Û*Ù .Û!6ô	8ˆð
 #Ÿ=™=¨Ó6Ñˆˆ=ä! !¤R§X¡XÒ.>Ó%?Ô@Ü�] DÔ)äÜ—	‘	—‘˜qŸu™u Q›x¨'¯+©+¸©/Ñ9¸AÑ=Ó>Øô	ô 	œBŸI™IŸN™N¨1Ó-¨|Ô<àˆØ"Ÿ=™=¨Ó6Ñˆˆ=ä! !Ü—‘Ò7Ó8ô	:ä�] DÔ)äÜ—	‘	—‘˜qŸu™u Q›x¨'¯+©+¸©/Ñ9¸AÑ=Ó>Øô	ô 	œBŸI™IŸN™N¨1Ó-¨|Õ<r   c                 óN  ‡‡— t        j                  g d¢g d¢g d¢g«      Št        j                  g d¢«      Šd}t        dd„ ˆfd„d„ ˆfd	„¬
«      }|j                  |«      \  }}t	        |t        j                  g d¢«      «       t        t         j                  j                  ‰j                  |«      |j                  |z  z   ‰z   «      d«       t        t         j                  j                  |«      |«       d}|j                  |«      \  }}t	        |t        j                  g d¢«      «       t        t         j                  j                  ‰j                  |«      |j                  |z  z   ‰z   «      d«       t        t         j                  j                  |«      |«       y )Nr   r   r   r   r   c                  ó   — yr   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>J   r   r   c                 ó   •— ‰S r   r   r    s    €r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>K   r"   r   c                  ó   — y r   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>L   r   r   c                 ó&   •— ‰j                  |«      S r   r%   r'   s     €r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>M   r*   r   r+   )r   r0   r   r   r1   )r   g      à¿r   )
r2   r3   r4   r5   r   r   r6   r7   r&   r8   r9   s        @@r   Útest_for_the_hard_casez4TestKrylovQuadraticSubproblem.test_for_the_hard_case<   sB  ù€ ô �H‰H’oÚ%Ú%ð'ó (ˆô �H‰H’_Ó%ˆð ˆô ˜QÙ*Û*Ù .Û!6ô	8ˆð
 #Ÿ=™=¨Ó6Ñˆˆ=ä! !¤R§X¡XÒ.>Ó%?Ô@äÜ—	‘	—‘˜qŸu™u Q›x¨'¯+©+¸©/Ñ9¸AÑ=Ó>Øô	ô 	œBŸI™IŸN™N¨1Ó-¨|Ô<àˆØ"Ÿ=™=¨Ó6Ñˆˆ=ä! !¤R§X¡XÒ.>Ó%?Ô@äÜ—	‘	—‘˜qŸu™u Q›x¨'¯+©+¸©/Ñ9¸AÑ=Ó>Øô	ô 	œBŸI™IŸN™N¨1Ó-¨|Õ<r   c                 ó¤  ‡‡— t        j                  g d¢g d¢g d¢g d¢g d¢g«      Št        j                  g d¢«      Šd}t        dd	„ ˆfd
„d„ ˆfd„¬«      }|j                  |«      \  }}t	        t         j
                  j                  ‰j                  |«      |j                  |z  z   ‰z   «      d«       t        |g d¢«       t        |d«       y )N)gÛn‚ošþü?ç�ž¶¡½uê?ç,wnó)ôË?ç”/ËK¼Ëà¿çÿëš˜GÐ?)rG   gì¼®ÛwO@çÙ¢y¾n*Ô?çr–<8±Ù¿çõ¶Û&ÃŽ¶?)rH   rK   gÓ6›ª
@çøòÄ½CÔ¿ç8Š¤ÄKƒÑ?)rI   rL   rN   gÀc‘‰èù?çò†«>øÚ¿)rJ   rM   rO   rP   gÂ-£Qõ?)g*‹ã<sAè?g³¢¼E�?gM x¾—©Õ?gzý‹˜ÀÊê?gôÒ=€©Þ¿çš™™™™™ñ?r   c                  ó   — yr   r   r   s    r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>o   r   r   c                 ó   •— ‰S r   r   r    s    €r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>p   r"   r   c                  ó   — y r   r   r   s    r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>q   r   r   c                 ó&   •— ‰j                  |«      S r   r%   r'   s     €r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>r   r*   r   r+   r   )g8bÒ„òå¿gåO
©‘L¿?g p4OÇFÌ¿g� Ïqå¿g­oš-7Ô?F©
r2   r3   r4   r5   r   r6   r7   r&   r8   r   r9   s        @@r   Útest_for_interior_convergencez;TestKrylovQuadraticSubproblem.test_for_interior_convergencec   s¿   ù€ ä�H‰HÒQÚSÚRÚUÚSð	Uó Vˆô
 �H‰HÒRÓSˆØˆô ˜QÙ*Û*Ù .Û!6ô	8ˆð
 #Ÿ=™=¨Ó6Ñˆˆ=ô 	Ü—	‘	—‘˜qŸu™u Q›x¨'¯+©+¸©/Ñ9¸AÑ=Ó>Øô	ô 	" !ò &?ô 	@ä! -°Õ7r   c                 óö  ‡‡— t        j                  g d¢g d¢g d¢g d¢g d¢g«      Št        j                  g d¢«      Šd}t        dd	„ ˆfd
„d„ ˆfd„¬«      }|j                  |«      \  }}t	        t         j
                  j                  ‰j                  |«      |j                  |z  z   ‰z   «      d«       t	        t         j
                  j                  |«      |«       t        |g d¢«       t        |d«       y )N)gÝVaÐUì?çø˜›±`A@ç5“ýF€ï?çÔ9Ô)n@é¿ç€îcñÑ¿)rY   gµÚ{ú¥§¿ç.<íøÕ?ç~õýÏËê¿çÔ:]³èÅ?)rZ   r]   g@33ôë¿ç �5Ð:²°¿ç¦ä¤IŒâö¿)r[   r^   r`   gÐ¹ÛõÒTú¿ç¦F¦K°Õ¿)r\   r_   ra   rb   g¬¢&—Rùú¿©r   r   r   r   r   rQ   r   c                  ó   — yr   r   r   s    r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>Š   r   r   c                 ó   •— ‰S r   r   r    s    €r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>‹   r"   r   c                  ó   — y r   r   r   s    r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>Œ   r   r   c                 ó&   •— ‰j                  |«      S r   r%   r'   s     €r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>�   r*   r   r+   r   )g÷iG7ã°±?glµ$“•W�¿gÀü€ÍZæä¿g-ðOˆ|Î¿g¦mô‚/ë¿TrV   r9   s        @@r   Útest_for_very_close_to_zeroz9TestKrylovQuadraticSubproblem.test_for_very_close_to_zero~   s×   ù€ ä�H‰HÒTÚTÚUÚUÚVð	Xó Yˆô
 �H‰HÒ'Ó(ˆØˆô ˜QÙ*Û*Ù .Û!6ô	8ˆð
 #Ÿ=™=¨Ó6Ñˆˆ=ô 	Ü—	‘	—‘˜qŸu™u Q›x¨'¯+©+¸©/Ñ9¸AÑ=Ó>Øô	ô 	œBŸI™IŸN™N¨1Ó-¨|Ô<ä! !ò &3ô 	4ô 	" -°Õ6r   c                 ó,  ‡‡	— t        j                  d«       Št        j                  g d¢«      Š	d}t        dd„ ˆ	fd„d„ ˆfd„¬	«      }|j	                  |«      \  }}|j                  «       \  }}t        |j                  d
«      t        |«      «       y )Né   rc   rQ   r   c                  ó   — yr   r   r   s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>£   r   r   c                 ó   •— ‰S r   r   r    s    €r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>¤   s   ø€ ¨a€ r   c                  ó   — y r   r   r   s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>¥   r   r   c                 ó&   •— ‰j                  |«      S r   r%   r'   s     €r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>¦   s   ø€ °1·5±5¸³8€ r   r+   z  TR Solving trust region problem)	r2   Úeyer3   ÚKrylovQP_dispr5   Ú
readouterrr   Ú
startswithÚrepr)
r:   Úcapsysr;   r<   r=   r>   ÚoutÚerrr)   r!   s
           @@r   Ú	test_dispz'TestKrylovQuadraticSubproblem.test_dispœ   s}   ù€ ä�V‰V�A‹YˆJˆÜ�H‰HÒ'Ó(ˆØˆä !Ù$/Û$/Ù%3Û&;ô	=ˆð
 #Ÿ=™=¨Ó6Ñˆˆ=Ø×$Ñ$Ó&‰ˆˆSÜ�—‘ÐAÓBÄDÈÃIÕNr   N)Ú__name__Ú
__module__Ú__qualname__r?   rE   rW   rh   ÚpytestÚmarkÚthread_unsaferw   r   r   r   r   r      s8   „ ò(=òT%=òN8ò67ð< ‡[�[×ÑñOó ñOr   r   )Ú__doc__r{   Únumpyr2   Úscipy.optimize._trlibr   Únumpy.testingr   r   r   r   r4   rp   r   r   r   r   ú<module>r‚      sN   ðñó Û Ý B÷Dó Dñ *°DÀDÔI€Ù.¸ÈØ48ô:€÷YOò YOr   