Ë
    âQ(hH  ã                   ó²  — d Z ddlmZ ddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZ ddlmZ ddlZddlZd	d
lmZ ej*                  ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  dœZej*                  ej2                  ej4                  ej6                  dœZd„ Zg d¢e_        i e_         i e_!        i e_"        d„ Z#g d¢e#_        ej.                  ej0                  dœe#_         i e#_!        i e#_"        d„ Z$g d¢e$_        i e$_         i e$_!        i e$_"        d„ Z%g d¢e%_        i e%_         i e%_!        i e%_"        d„ Z&ddge&_        ej.                  ej0                  ej,                  dœe&_         dhe&_!        h d£e&_"        d„ Z'g d¢e'_        ej0                  ej.                  ej,                  dœe'_         ddhe'_!        dhe'_"        d „ Z(d!d"ge(_        ej0                  ej.                  ej,                  dœe(_         i e(_!        i e(_"         G d#„ d$«      Z) G d%„ d&«      Z* G d'„ d(«      Z+ G d)„ d*«      Z, G d+„ d,«      Z-y)-zA Unit tests for nonlinear solvers
Author: Ondrej Certik
May 2007
é    )Úassert_N)Úpartial)Ú_nonlinÚroot)Ú	csr_array)ÚdiagÚdot)Úinvé   )Úpressure_network)ÚandersonÚdiagbroydenÚlinearmixingÚexcitingmixingÚbroyden1Úbroyden2Úkrylov)r   r   r   r   c                 ó¬   — t        j                  | «      j                  } t        g d¢«      }d}| | z  |t	        | j                  | z  «      z  | z  z
  }|S )N)é   é   g      ø?r   ç      à?ç{®Gáz„?)ÚnpÚasarrayÚTr   Úfloat)ÚxÚdÚcÚfs       ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_nonlin.pyÚFr"   !   sN   € Ü
�
‰
�1‹�‰€AÜÒ Ó!€AØ€AØ	
ˆˆQ‰�”U˜1Ÿ3™3 ™7“^Ñ# aÑ'Ñ'€AØ€Hó    )r   r   r   r   r   c                 ó   — | S ©N© ©r   s    r!   ÚF2r(   /   ó   € Ø€Hr#   )r   r   r   é   é   é   )r   r   c                 ó   — | S r%   r&   r'   s    r!   ÚF2_luckyr.   :   r)   r#   )r   r   r   r   r   r   c                 ó|   — t        j                  g d¢g d¢g d¢g«      }t        j                  g d¢«      }|| z  |z
  S )N)éþÿÿÿr   ç        )r   r0   r   )r   r   r0   )r   r   ç      @)r   Úarray©r   ÚAÚbs      r!   ÚF3r7   D   s3   € Ü
�‰’+šzª:Ð6Ó7€AÜ
�‰’Ó€AØˆq‰5�1‰9Ðr#   )r   r   r   c                 ó    — d}|| d   z  | d   z  dz
  t        j                  | d    «      t        j                  | d    «      z   dd|z  z   z
  gS )Ng     ˆÃ@r   r   )r   Úexp)r   r5   s     r!   Ú	F4_powellr:   P   sT   € Ø€AØˆa�‰d‰F�1�Q‘4‰K˜!‰OœRŸV™V Q q¡T E›]¬R¯V©V°Q°q±T°E«]Ñ:¸aÀ!ÀAÁ#¹gÑFÐGÐGr#   éÿÿÿÿr0   )r   r   r   Úminres>   ÚcgsÚgmresÚtfqmrr<   Úbicgstabc                 óF   — t        | dt        j                  g d¢«      «      S )Nr*   )r   r   r   r   )r   r   r3   r'   s    r!   ÚF5rB   `   s   € Ü˜A˜q¤"§(¡(Ò+;Ó"<Ó=Ð=r#   )ç       @r   r   r   )r   r   r   r=   c           	      ó(  — | \  }}t        j                  ddgddgg«      }t        j                  |dz   |dz  dz
  z  dz   t        j                  |t        j                  |«      z  d	z
  «      g«      }t         j                  j                  ||«       S )
Ng /Ý$Àgffffff-@g+åÌ,Ýê?gr•þ�D0ã?r   r+   é   é   r   )r   r3   Úsinr9   ÚlinalgÚsolve)r   Úx1Úx2ÚJ0Úvs        r!   ÚF6rN   o   sŒ   € Ø�F€BˆÜ	�‰�F˜D�>Ø˜zÐ*ð,ó 
-€Bä
�‰�2˜‘6˜b !™e a™iÑ(¨3Ñ.Ü—&‘&˜œbŸf™f R›j™¨1Ñ,Ó-ð/ó 	0€Aä�I‰I�O‰O˜B Ó"Ð"Ð"r#   g      à¿gffffffö?c                   óf  — e Zd ZdZdd„Zdd„Zej                  j                  d„ «       Z	ej                  j                  d«      d„ «       Zej                  j                  d«      ej                  j                  dg d¢«      d	„ «       «       Zej                  j                  d«      d
„ «       Zd„ Zy)Ú
TestNonlinzÈ
    Check the Broyden methods for a few test problems.

    broyden1, broyden2, and newton_krylov must succeed for
    all functions. Some of the others don't -- tests in KNOWN_BAD are skipped.

    c           
      ó|  — |t         d   k(  rddD ]_  }||j                  v rŒ |||j                  |d |dd¬«      }t        t	        j
                   ||«      «      j                  «       |k  «       Œa  |||j                  |dd¬«      }t        t	        j
                   ||«      «      j                  «       |k  «       y )Nr   ©r>   r@   r=   r<   r?   éÈ   r   )ÚmethodÚline_searchÚf_tolÚmaxiterÚverbose)rV   rW   rX   )ÚSOLVERSÚJAC_KSP_BADÚxinr   r   ÚabsoluteÚmax)Úselfr    ÚfuncrV   rT   r   s         r!   Ú_check_nonlin_funczTestNonlin._check_nonlin_funcŽ   s¨   € à”7˜8Ñ$Ò$ØIò 9�Ø˜QŸ]™]Ñ*Øá˜˜AŸE™E¨&¸dØ$¨c¸1ô>�äœŸ™¡A a£DÓ)×-Ñ-Ó/°%Ñ7Õ8ð9ñ ��A—E‘E °¸QÔ?ˆÜ”—‘™A˜a›DÓ!×%Ñ%Ó'¨%Ñ/Õ0r#   c                 ó˜  — |dk(  rodD ]j  }||j                   v rŒt        ||j                  ||ddd|idœ¬«      }t        t	        j
                  |j                  «      j                  «       |k  «       Œl t        ||j                  ||dddœ¬«      }t        t	        j
                  |j                  «      j                  «       |k  «       y )	Nr   rR   rS   r   rT   )ÚftolrW   ÚdispÚjac_options©rT   Úoptions)rb   rW   rc   )ÚROOT_JAC_KSP_BADr   r[   r   r   r\   Úfunr]   )r^   r    rT   rV   Ú
jac_methodÚress         r!   Ú_check_rootzTestNonlin._check_rootœ   s¾   € à�XÒØMò <�
Ø ×!3Ñ!3Ñ3Øä˜1˜aŸe™e¨FØ,1¸cØ,-Ø4<¸jÐ3Iñ$KôL�ô œŸ™ C§G¡GÓ,×0Ñ0Ó2°UÑ:Õ;ð<ô �1�a—e‘e FØ$)°cÀ1ÑEôGˆä”—‘˜CŸG™GÓ$×(Ñ(Ó*¨UÑ2Õ3r#   c                  ó   — y r%   r&   )r^   ÚaÚkws      r!   Ú_check_func_failzTestNonlin._check_func_fail­   s   € àr#   zignore::DeprecationWarningc                 ó8  — t         t        t        t        t        t
        t        fD ]r  }t        j                  «       D ]Y  }||j                  j                  «       v r)|t        j                  «       v r| j                  ||«       ŒH| j                  ||«       Œ[ Œt y r%   )r"   r(   r.   r7   r:   rB   rN   rY   ÚvaluesÚ	KNOWN_BADÚ	MUST_WORKro   r`   )r^   r    r_   s      r!   Útest_problem_nonlinzTestNonlin.test_problem_nonlin±   s   € ä”Rœ¤2¤y´"´bÐ9ò 	1ˆAÜŸ™Ó(ò 1�Ø˜1Ÿ;™;×-Ñ-Ó/Ñ/Øœy×/Ñ/Ó1Ñ1Ø×-Ñ-¨a°Ô6ØØ×'Ñ'¨¨4Õ0ñ1ñ	1r#   rT   )Úlgmresr>   r@   r=   r<   r?   c           	      ó¤   ‡ — d‰ _         ˆ fd„}t        j                  t        t        j                  |ddd|¬«       t        ‰ j                   «       y )NFc                 óX   •— d‰_         t        j                  | «      j                  «       S )NT)Ú_tol_norm_usedr   r\   r]   )r   r^   s    €r!   Úlocal_norm_funcz8TestNonlin.test_tol_norm_called.<locals>.local_norm_funcÂ   s"   ø€ Ø"&ˆDÔÜ—;‘;˜q“>×%Ñ%Ó'Ð'r#   r   rS   r   )rT   rV   rW   rX   Útol_norm)rx   ÚnonlinÚnewton_krylovr"   r[   r   )r^   rT   ry   s   `  r!   Útest_tol_norm_calledzTestNonlin.test_tol_norm_called»   sF   ø€ ð
 $ˆÔô	(ô 	×ÑœQ¤§¡¨f¸DØ%(°!Ø&5õ	7ô 	�×#Ñ#Õ$r#   c                 óä   — t         t        t        t        t        t
        t        fD ]H  }t        D ]=  }||j                  v r|t        v r| j                  ||«       Œ,| j                  ||«       Œ? ŒJ y r%   )r"   r(   r.   r7   r:   rB   rN   rY   rr   rs   ro   rk   )r^   r    Úmeths      r!   Útest_problem_rootzTestNonlin.test_problem_rootË   sf   € ä”Rœ¤2¤y´"´bÐ9ò 	*ˆAÜò *�Ø˜1Ÿ;™;Ñ&ØœyÑ(Ø×-Ñ-¨a°Ô6ØØ× Ñ   DÕ)ñ*ñ	*r#   c                 óÀ   — d„ }t        j                  t        j                  j                  «      5  t        j                  |dgd¬«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — d| z   S )Ng     @�@r&   r'   s    r!   Úwont_convergez5TestNonlin.test_no_convergence.<locals>.wont_convergeÖ   s   € Ø˜‘7ˆNr#   r   r   )r[   rW   )ÚpytestÚraisesÚscipyÚoptimizeÚNoConvergencer{   r|   )r^   rƒ   s     r!   Útest_no_convergencezTestNonlin.test_no_convergenceÕ   sL   € ò	ô �]‰]œ5Ÿ>™>×7Ñ7Ó8ñ 	DÜ× Ñ  °Q°CÀÕC÷	D÷ 	Dñ 	Dús   ±AÁAN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r`   rk   r„   ÚmarkÚxfailro   Úfilterwarningsrt   Úparametrizer}   r€   r‰   r&   r#   r!   rP   rP   …   s¿   „ ñó1ó4ð" ‡[�[×Ññó ðð ‡[�[×ÑÐ <Ó=ñ1ó >ð1ð ‡[�[×ÑÐ <Ó=Ø‡[�[×Ñ˜Xò (;ó <ñ%ó<ó >ð%ð ‡[�[×ÑÐ <Ó=ñ*ó >ð*óDr#   rP   c                   ó¦  — e Zd ZdZ ej
                  g d¢«       ej
                  g d¢«       ej
                  g d¢«       ej
                  g d¢«       ej
                  g d¢«       ej
                  g d¢«       ej
                  g d¢«       ej
                  g d	¢«      gZeD � �cg c]
  }|d
z  dz
  ‘Œ c}} Zdd„Zd„ Z	d„ Z
d„ Zd„ Zd„ Zyc c}} w )Ú
TestSecantzDCheck that some Jacobian approximations satisfy the secant condition)ç      ð?rC   r2   ç      @ç      @)rC   r2   r•   r–   r”   )r2   r•   r–   r”   rC   )r•   r–   r”   rC   r2   )ç      "@r”   r—   r”   r2   )r1   r”   r—   r”   r2   )r–   r–   ç      @r”   r”   )r”   rC   r˜   r–   r”   r   r   c           
      óJ  —  |di |¤Ž}|j                  | j                  d   | j                  d   d«       t        t	        | j                  dd | j                  dd «      «      D �];  \  }\  }}|j                  ||«       t        t        ||dz   «      «      D ]€  }| j                  ||z
  dz      | j                  ||z
     z
  }	| j                  ||z
  dz      | j                  ||z
     z
  }
t        t        j                  |	|j                  |
«      «      «       Œ‚ ||k\  sŒ½| j                  ||z
  dz      | j                  ||z
     z
  }	| j                  ||z
  dz      | j                  ||z
     z
  }
t        t        j                  |	|j                  |
«      «       «       �Œ> y)z|
        Check that the given Jacobian approximation satisfies secant
        conditions for last `npoints` points.
        r   Nr   r&   )ÚsetupÚxsÚfsÚ	enumerateÚzipÚupdateÚrangeÚminr   r   ÚallcloserI   )r^   Újac_clsÚnpointsrn   ÚjacÚjr   r    ÚkÚdxÚdfs              r!   Ú_check_secantzTestSecant._check_secantê   sq  € ñ
 ‰m˜‰mˆØ�	‰	�$—'‘'˜!‘*˜dŸg™g a™j¨$Ô/Ü"¤3 t§w¡w¨q¨r {°D·G±G¸A¸B°KÓ#@ÓAó 	<‰IˆA‰v��1Ø�J‰J�q˜!Ôäœ3˜w¨¨!©Ó,Ó-ò 8�Ø—W‘W˜Q˜q™S ™U‘^ d§g¡g¨a°©c¡lÑ2�Ø—W‘W˜Q˜q™S ™U‘^ d§g¡g¨a°©c¡lÑ2�ÜœŸ™ B¨¯	©	°"«Ó6Õ7ð8ð �G‹|Ø—W‘W˜Q˜w™Y q™[Ñ)¨D¯G©G°A°g±IÑ,>Ñ>�Ø—W‘W˜Q˜w™Y q™[Ñ)¨D¯G©G°A°g±IÑ,>Ñ>�ÜœBŸK™K¨¨C¯I©I°b«MÓ:Ð:Ö;ñ	<r#   c                 óB   — | j                  t        j                  «       y r%   )rª   r{   ÚBroydenFirst©r^   s    r!   Útest_broyden1zTestSecant.test_broyden1ÿ   s   € Ø×Ñœ6×.Ñ.Õ/r#   c                 óB   — | j                  t        j                  «       y r%   )rª   r{   ÚBroydenSecondr­   s    r!   Útest_broyden2zTestSecant.test_broyden2  s   € Ø×Ñœ6×/Ñ/Õ0r#   c           	      óZ  — t        j                  d¬«      }|j                  | j                  d   | j                  d   d «       t        j                  d«      dz  }t        t        | j                  dd  | j                  dd  «      «      D ]ž  \  }\  }}|| j                  |   z
  }|| j                  |   z
  }||t        ||«      z
  d d …d f   |d d d …f   z  t        ||«      z  z  }|j                  ||«       t        t        j                  |j                  «       |dd¬	«      «       Œ  y )
Nçš™™™™™¹?©Úalphar   r+   g      $Àr   ç»½×Ùß|Û=ç‚vIhÂ%<=©ÚrtolÚatol)r{   r¬   rš   r›   rœ   r   Úidentityr�   rž   r	   rŸ   r   r¢   Útodense)r^   r¥   ÚBÚlast_jr   r    r©   r¨   s           r!   Útest_broyden1_updatezTestSecant.test_broyden1_update  s  € ä×!Ñ!¨Ô,ˆØ�	‰	�$—'‘'˜!‘*˜dŸg™g a™j¨$Ô/ä�K‰K˜‹N˜fÑ%ˆä'¬¨D¯G©G°A°B¨K¸¿¹ÀÀ¸Ó(EÓFò 	K‰NˆF‘F�Q˜Ø�T—W‘W˜V‘_Ñ$ˆBØ�T—W‘W˜V‘_Ñ$ˆBØ�"”s˜1˜b“z‘/¢1 d 7Ñ+¨b°²q°©kÑ9¼CÀÀB»KÑGÑGˆAØ�J‰J�q˜!ÔÜ”B—K‘K §¡£¨q°uÀ5ÔIÕJñ	Kr#   c           	      ól  — t        j                  d¬«      }|j                  | j                  d   | j                  d   d «       t        j                  d«      dz  }t        t        | j                  dd  | j                  dd  «      «      D ]§  \  }\  }}|| j                  |   z
  }|| j                  |   z
  }||t        ||«      z
  d d …d f   |d d d …f   z  t        ||«      z  z  }|j                  ||«       t        t        j                  |j                  «       t        |«      dd¬	«      «       Œ© y )
Nr³   r´   r   r+   gš™™™™™¹¿r   r¶   r·   r¸   )r{   r°   rš   r›   rœ   r   r»   r�   rž   r	   rŸ   r   r¢   r¼   r
   )r^   r¥   ÚHr¾   r   r    r©   r¨   s           r!   Útest_broyden2_updatezTestSecant.test_broyden2_update  s  € ä×"Ñ"¨Ô-ˆØ�	‰	�$—'‘'˜!‘*˜dŸg™g a™j¨$Ô/ä�K‰K˜‹N˜dÑ#ˆä'¬¨D¯G©G°A°B¨K¸¿¹ÀÀ¸Ó(EÓFò 	P‰NˆF‘F�Q˜Ø�T—W‘W˜V‘_Ñ$ˆBØ�T—W‘W˜V‘_Ñ$ˆBØ�"”s˜1˜b“z‘/¢1 d 7Ñ+¨b°²q°©kÑ9¼CÀÀB»KÑGÑGˆAØ�J‰J�q˜!ÔÜ”B—K‘K §¡£¬s°1«v¸EÈÔNÕOñ	Pr#   c                 óJ   — | j                  t        j                  ddd¬«       y )Nr   r   )ÚMÚw0r¤   )rª   r{   ÚAndersonr­   s    r!   Útest_andersonzTestSecant.test_anderson!  s   € ð
 	×Ñœ6Ÿ?™?¨a°A¸qÐÕAr#   N)r   )rŠ   r‹   rŒ   r�   r   r3   r›   rœ   rª   r®   r±   r¿   rÂ   rÇ   )Ú.0r   s   00r!   r“   r“   Ý   sÅ   „ ÙNà
ˆ"�(‰(Ò'Ó
(Ø
ˆ"�(‰(Ò'Ó
(Ø
ˆ"�(‰(Ò'Ó
(Ø
ˆ"�(‰(Ò'Ó
(Ø
ˆ"�(‰(Ò'Ó
(Ø
ˆ"�(‰(Ò'Ó
(Ø
ˆ"�(‰(Ò'Ó
(Ø
ˆ"�(‰(Ò'Ó
(ð
+€Bð ×	�qˆ!ˆQ‰$�‹(Ó	€Bó<ò*0ò1òKòPóBùós 
 s   Â&Cr“   c                   óB   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)Ú
TestLinearz]Solve a linear equation;
    some methods find the exact solution in a finite number of stepsc           	      ó"  ‡‡	— t         j                  j                  d«       t         j                  j                  ||«      Š|r&‰dt         j                  j                  ||«      z  z   Št         j                  j                  |«      Š	|r%‰	dt         j                  j                  |«      z  z   Š	ˆˆ	fd„}t	        j
                  |t        j                  |«      ||dd d¬«      }t        t        j                  t        ‰|«      ‰	d¬«      «       y )Né{   ù              ð?c                 ó"   •— t        ‰| «      ‰z
  S r%   ©r	   r4   s    €€r!   r_   zTestLinear._check.<locals>.func7  s   ø€ Ü�q˜!“9˜q‘=Ð r#   ç�íµ ÷Æ°>r   ©rW   rV   rU   rX   ©rº   )
r   ÚrandomÚseedÚrandnr{   Únonlin_solveÚzerosr   r¢   r	   )
r^   r¥   ÚNrW   Úcomplexrn   r_   Úsolr5   r6   s
           @@r!   Ú_checkzTestLinear._check-  sÃ   ù€ Ü
�	‰	�‰�sÔä�I‰I�O‰O˜A˜qÓ!ˆÙØ�B”r—y‘y—‘ q¨!Ó,Ñ,Ñ,ˆAÜ�I‰I�O‰O˜AÓˆÙØ�B”r—y‘y—‘ qÓ)Ñ)Ñ)ˆAõ	!ô ×!Ñ! $¬¯©°«°SÀ'Ø(,¸$ÈôKˆä”—‘œC  3›K¨°Ô6Õ7r#   c                 ó¤   — | j                  t        j                  d¬«      ddd«       | j                  t        j                  d¬«      ddd«       y ©Nr”   r´   é   é)   FT)rÛ   r{   r¬   r­   s    r!   r®   zTestLinear.test_broyden1>  s<   € à�‰”F×'Ñ'¨cÔ2°B¸¸EÔBØ�‰”F×'Ñ'¨cÔ2°B¸¸DÕAr#   c                 ó¤   — | j                  t        j                  d¬«      ddd«       | j                  t        j                  d¬«      ddd«       y rÝ   )rÛ   r{   r°   r­   s    r!   r±   zTestLinear.test_broyden2C  s<   € à�‰”F×(Ñ(¨sÔ3°R¸¸UÔCØ�‰”F×(Ñ(¨sÔ3°R¸¸TÕBr#   c                 ó¨   — | j                  t        j                  dd¬«      ddd«       | j                  t        j                  dd¬«      ddd«       y )Né2   r”   )rÄ   rµ   rÞ   é   FT)rÛ   r{   rÆ   r­   s    r!   rÇ   zTestLinear.test_andersonH  s<   € à�‰”F—O‘O b°Ô4°b¸"¸eÔDØ�‰”F—O‘O b°Ô4°b¸"¸dÕCr#   c                 ó”   — | j                  t        j                  dddd¬«       | j                  t        j                  dddd¬«       y )NrÞ   r   Fé
   )Úinner_mT)rÛ   r{   ÚKrylovJacobianr­   s    r!   Útest_krylovzTestLinear.test_krylovM  s:   € à�‰”F×)Ñ)¨2¨q°%ÀˆÔDØ�‰”F×)Ñ)¨2¨q°$ÀˆÕCr#   c           	      ó¢  ‡‡— ˆˆfd„}ˆfd„}t        j                  |t        j                  ‰j                  d   «      |ddd d¬«      }t        j
                  j                  ‰|z  ‰d¬«       t        j                  |t        j                  ‰j                  d   «      ‰ddd d¬«      }t        j
                  j                  ‰|z  ‰d¬«       y )Nc                 ó,   •— ‰j                  | «      ‰z
  S r%   rÏ   r4   s    €€r!   r_   z'TestLinear._check_autojac.<locals>.funcS  s   ø€ Ø—5‘5˜“8˜a‘<Ðr#   c                 ó   •— ‰S r%   r&   )rM   r5   s    €r!   r¥   z&TestLinear._check_autojac.<locals>.jacV  s   ø€ ØˆHr#   r   r   rÐ   rÑ   rÒ   )r{   rÖ   r   r×   ÚshapeÚtestingÚassert_allclose)r^   r5   r6   r_   r¥   rÚ   s    ``   r!   Ú_check_autojaczTestLinear._check_autojacR  s«   ù€ õ	 ô	ô ×!Ñ! $¬¯©°·±¸±Ó(<¸cÈ1Ø(,¸$ÈôKˆä
�
‰
×"Ñ" 1 s¡7¨A°DÐ"Ô9ä×!Ñ! $¬¯©°·±¸±Ó(<¸aÈØ(,¸$ÈôKˆä
�
‰
×"Ñ" 1 s¡7¨A°DÐ"Õ9r#   c                 ó¨   — t        ddgddgg«      }t        j                  ddg«      }| j                  ||«       | j                  d|z  d|z  «       y ©Nr   r   r;   y      ð?       @y       @       @)r   r   r3   rï   ©r^   r5   r6   s      r!   Útest_jac_sparsezTestLinear.test_jac_sparsea  sS   € Ü˜˜1�v  1˜vÐ&Ó'ˆÜ�H‰H�a˜�WÓˆØ×Ñ˜A˜qÔ!Ø×Ñ˜V q™L¨6°Q©,Õ7r#   c                 ó¼   — t        j                  ddgddgg«      }t        j                  ddg«      }| j                  ||«       | j                  d|z  d|z  «       y rñ   )r   r3   rï   rò   s      r!   Útest_jac_ndarrayzTestLinear.test_jac_ndarrayg  sW   € Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ˆÜ�H‰H�a˜�WÓˆØ×Ñ˜A˜qÔ!Ø×Ñ˜V q™L¨6°Q©,Õ7r#   N)F)rŠ   r‹   rŒ   r�   rÛ   r®   r±   rÇ   rè   rï   ró   rõ   r&   r#   r!   rÊ   rÊ   )  s4   „ ñHó8ò"Bò
Cò
Dò
Dò
:ò8ó8r#   rÊ   c                   ó|   — e Zd ZdZdd„Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zej                  j                  d„ «       Zy)ÚTestJacobianDotSolvezP
    Check that solve/dot methods in Jacobian approximations are consistent
    Nc                 ó@   — |dz  dz
  t        j                  ||«      z   S )Nr   r   )r   r	   )r^   r   r5   s      r!   Ú_funczTestJacobianDotSolve._funcs  s   € Ø�!‰t�a‰xœ"Ÿ&™&  A›,Ñ&Ð&r#   c                 ó¤  ‡‡‡— t         j                  j                  d«      Šd}ˆˆfd„}ˆfd„} |||«      }‰j                  |«      }	 |di |¤Ž}
|
j	                  |	| j                  |	|«      t        | j
                  |¬«      «       t        d|z  «      D �]5  } ||«      }t        |
d«      �rMt        j                  |
«      }t        |
d«      r;|
j                  |«      }t         j                  j                  ||«      } |||d	«       t        |
d
«      rS|
j                  |«      }t         j                  j                  |j                  j                  «       |«      } |||d«       t        |
d«      r1|
j                  |«      }t        j                   ||«      } |||d«       t        |
d«      rI|
j#                  |«      }t        j                   |j                  j                  «       |«      } |||d«       t        |
d«      rGt        |
d«      r;|
j                  |«      }|
j                  |
j                  |«      «      } |||d«       t        |
d«      rGt        |
d
«      r;|
j#                  |«      }|
j#                  |
j                  |«      «      } |||d«        ||«      }|
j%                  || j                  ||«      «       �Œ8 y )NrÌ   rE   c                  óT   •—  ‰j                   | Ž }‰r|d ‰j                   | Ž z  z   }|S )NrÍ   )Úrand)rm   ÚqrÙ   Úrngs     €€r!   rü   z-TestJacobianDotSolve._check_dot.<locals>.rand{  s2   ø€ Ø�—‘˜!�ˆAÙØ˜˜8˜3Ÿ8™8 Q˜<™Ñ'�ØˆHr#   c                 ó¨   •— t        | |z
  «      j                  «       }‰t        |«      j                  «       ‰z  z   }||kD  rt        |› d|d›�«      ‚y )Nz: err Úg)Úabsr]   ÚAssertionError)rm   r6   Úmsgr   r    Útols        €r!   Úassert_closez5TestJacobianDotSolve._check_dot.<locals>.assert_close�  sT   ø€ Ü�A˜‘E“
—‘Ó ˆAØ”c˜!“f—j‘j“l 3Ñ&Ñ&ˆAØ�1ŠuÜ$¨ u¨F°1°Q°%Ð%8Ó9Ð9ð r#   )r5   r   Ú	__array__rI   zsolve vs arrayÚrsolvezrsolve vs arrayÚmatveczdot vs arrayÚrmatveczrmatvec vs arrayzdot vs solvezrmatvec vs rsolver&   )r   rÓ   ÚRandomStaterü   rš   rù   r   r    Úhasattrr3   rI   rH   r  r   Úconjr  r	   r	  rŸ   )r^   r£   rÙ   r  rn   rØ   rü   r  r5   Úx0r¥   r§   rM   ÚJdÚGvÚGv2ÚJvÚJv2r   rþ   s     ``               @r!   Ú
_check_dotzTestJacobianDotSolve._check_dotv  s>  ú€ Ü�i‰i×#Ñ# CÓ(ˆàˆõ	ô	:ñ ��A‹Jˆð �X‰X�a‹[ˆÙ‰m˜‰mˆØ�	‰	�"�d—j‘j  QÓ'¬°·±¸qÔ)AÔBô �q˜‘s“ó !	,ˆAÙ�Q“ˆAä�s˜KÕ(Ü—X‘X˜c“]�Ü˜3 Ô(ØŸ™ 1›�BÜŸ)™)Ÿ/™/¨"¨aÓ0�CÙ   SÐ*:Ô;Ü˜3 Ô)ØŸ™ A›�BÜŸ)™)Ÿ/™/¨"¯$©$¯)©)«+°qÓ9�CÙ   SÐ*;Ô<Ü˜3 Ô)ØŸ™ A›�BÜŸ&™&  Q›-�CÙ   S¨.Ô9Ü˜3 	Ô*ØŸ™ Q›�BÜŸ&™& §¡§¡£¨aÓ0�CÙ   SÐ*<Ô=ä�s˜HÔ%¬'°#°wÔ*?Ø—Z‘Z “]�Ø—i‘i §
¡
¨2£Ó/�Ù˜R  nÔ5ä�s˜IÔ&¬7°3¸Ô+AØ—[‘[ “^�Ø—k‘k #§*¡*¨R£.Ó1�Ù˜R Ð&9Ô:á�Q“ˆAØ�J‰J�q˜$Ÿ*™* Q¨Ó*Ö+ñC!	,r#   c                 óˆ   — | j                  t        j                  d¬«       | j                  t        j                  d¬«       y ©NF)rÙ   T)r  r{   r¬   r­   s    r!   r®   z"TestJacobianDotSolve.test_broyden1²  ó.   € Ø�‰œ×+Ñ+°UˆÔ;Ø�‰œ×+Ñ+°TˆÕ:r#   c                 óˆ   — | j                  t        j                  d¬«       | j                  t        j                  d¬«       y r  )r  r{   r°   r­   s    r!   r±   z"TestJacobianDotSolve.test_broyden2¶  s.   € Ø�‰œ×,Ñ,°eˆÔ<Ø�‰œ×,Ñ,°dˆÕ;r#   c                 óˆ   — | j                  t        j                  d¬«       | j                  t        j                  d¬«       y r  )r  r{   rÆ   r­   s    r!   rÇ   z"TestJacobianDotSolve.test_andersonº  s*   € Ø�‰œŸ™°ˆÔ7Ø�‰œŸ™°ˆÕ6r#   c                 óˆ   — | j                  t        j                  d¬«       | j                  t        j                  d¬«       y r  )r  r{   ÚDiagBroydenr­   s    r!   Útest_diagbroydenz%TestJacobianDotSolve.test_diagbroyden¾  s.   € Ø�‰œ×*Ñ*°EˆÔ:Ø�‰œ×*Ñ*°DˆÕ9r#   c                 óˆ   — | j                  t        j                  d¬«       | j                  t        j                  d¬«       y r  )r  r{   ÚLinearMixingr­   s    r!   Útest_linearmixingz&TestJacobianDotSolve.test_linearmixingÂ  r  r#   c                 óˆ   — | j                  t        j                  d¬«       | j                  t        j                  d¬«       y r  )r  r{   ÚExcitingMixingr­   s    r!   Útest_excitingmixingz(TestJacobianDotSolve.test_excitingmixingÆ  s.   € Ø�‰œ×-Ñ-°uˆÔ=Ø�‰œ×-Ñ-°tˆÕ<r#   c                 óŒ   — | j                  t        j                  dd¬«       | j                  t        j                  dd¬«       y )NFgü©ñÒMbP?)rÙ   r  T)r  r{   rç   r­   s    r!   rè   z TestJacobianDotSolve.test_krylovÊ  s2   € à�‰œ×-Ñ-°uÀ$ˆÔGØ�‰œ×-Ñ-°tÀˆÕFr#   r%   )FrÐ   )rŠ   r‹   rŒ   r�   rù   r  r®   r±   rÇ   r  r  r!  r„   rŽ   Úthread_unsaferè   r&   r#   r!   r÷   r÷   n  sP   „ ñó'ó:,òx;ò<ò7ò:ò;ò=ð ‡[�[×ÑñGó ñGr#   r÷   c                   óX   — e 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y)ÚTestNonlinOldTestsz½ Test case for a simple constrained entropy maximization problem
    (the machine translation example of Berger et al in
    Computational Linguistics, vol 22, num 1, pp 39--72, 1996.)
    c                 óð   — t        j                  t        t        j                  dd¬«      }t	        t        j
                  |«      dk  «       t	        t        j
                  t        |«      «      dk  «       y ©Né   r   ©Úiterrµ   ç•Ö&è.>)r{   r   r"   r[   r   Únorm©r^   r   s     r!   r®   z TestNonlinOldTests.test_broyden1Ö  óI   € Ü�O‰OœAœqŸu™u¨2°QÔ7ˆÜ”—‘˜A“ Ñ%Ô&Ü”—‘œA˜a›DÓ! DÑ(Õ)r#   c                 óð   — t        j                  t        t        j                  dd¬«      }t	        t        j
                  |«      dk  «       t	        t        j
                  t        |«      «      dk  «       y r'  )r{   r   r"   r[   r   r,  r-  s     r!   r±   z TestNonlinOldTests.test_broyden2Û  r.  r#   c                 óž   — t        j                  t        t        j                  ddd¬«      }t	        t        j
                  |«      dk  «       y )Nr(  ç¸…ëQ¸ž?r+   )r*  rµ   rÄ   ç…ëQ¸Õ?)r{   r   r"   r[   r   r,  r-  s     r!   rÇ   z TestNonlinOldTests.test_andersonà  s1   € Ü�O‰OœAœqŸu™u¨2°T¸QÔ?ˆÜ”—‘˜A“ Ñ%Õ&r#   c                 óð   — t        j                  t        t        j                  dd¬«      }t	        t        j
                  |«      dk  «       t	        t        j
                  t        |«      «      dk  «       y )Né<   r   r)  çH¯¼šò×z>)r{   r   r"   r[   r   r,  r-  s     r!   r  z$TestNonlinOldTests.test_linearmixingä  sK   € Ü×Ñ¤¤1§5¡5¨r¸Ô=ˆÜ”—‘˜A“ Ñ%Ô&Ü”—‘œA˜a›DÓ! DÑ(Õ)r#   c                 óð   — t        j                  t        t        j                  dd¬«      }t	        t        j
                  |«      dk  «       t	        t        j
                  t        |«      «      dk  «       y )NrÞ   r   r)  çñhãˆµøä>)r{   r   r"   r[   r   r,  r-  s     r!   Útest_excitingz TestNonlinOldTests.test_excitingé  sK   € Ü×!Ñ!¤!¤Q§U¡U°¸3Ô?ˆÜ”—‘˜A“ Ñ%Ô&Ü”—‘œA˜a›DÓ! DÑ(Õ)r#   c                 óð   — t        j                  t        t        j                  dd¬«      }t	        t        j
                  |«      dk  «       t	        t        j
                  t        |«      «      dk  «       y )Né   r   r)  ç:Œ0âŽyE>)r{   r   r"   r[   r   r,  r-  s     r!   r  z#TestNonlinOldTests.test_diagbroydenî  sK   € Ü×Ñœq¤!§%¡%¨b¸Ô:ˆÜ”—‘˜A“ Ñ%Ô&Ü”—‘œA˜a›DÓ! DÑ(Õ)r#   c                 óü   — t        t        t        j                  ddddidœ¬«      }t        t	        j
                  |j                  «      dk  «       t        t	        j
                  |j                  «      dk  «       y )Nr   r(  rµ   r   ©Únitrd   re   r+  ©r   r"   r[   r   r{   r,  r   rh   ©r^   rj   s     r!   Útest_root_broyden1z%TestNonlinOldTests.test_root_broyden1ó  óW   € Ü”1”a—e‘e JØ#%°wÀ°lÑCôEˆä”—‘˜CŸE™EÓ" TÑ)Ô*Ü”—‘˜CŸG™GÓ$ tÑ+Õ,r#   c                 óü   — t        t        t        j                  ddddidœ¬«      }t        t	        j
                  |j                  «      dk  «       t        t	        j
                  |j                  «      dk  «       y )Nr   r(  rµ   r   r=  re   r+  r?  r@  s     r!   Útest_root_broyden2z%TestNonlinOldTests.test_root_broyden2ù  rB  r#   c           	      ó¨   — t        t        t        j                  dddddœdœ¬«      }t        t	        j
                  |j                  «      dk  «       y )	Nr   r(  r1  r+   )rµ   rÄ   r=  re   r2  )r   r"   r[   r   r{   r,  r   r@  s     r!   Útest_root_andersonz%TestNonlinOldTests.test_root_andersonÿ  sD   € Ü”1”a—e‘e JØ#%Ø59ÀÑ+BñDôEˆô 	”—‘˜CŸE™EÓ" TÑ)Õ*r#   c                 óü   — t        t        t        j                  ddddidœ¬«      }t        t	        j
                  |j                  «      dk  «       t        t	        j
                  |j                  «      dk  «       y )Nr   r4  rµ   r   r=  re   r5  r?  r@  s     r!   Útest_root_linearmixingz)TestNonlinOldTests.test_root_linearmixing  s[   € Ü”1”a—e‘e NØ#%Ø,3°S¨>ñ;ô<ˆô 	”—‘˜CŸE™EÓ" TÑ)Ô*Ü”—‘˜CŸG™GÓ$ tÑ+Õ,r#   c                 óü   — t        t        t        j                  ddddidœ¬«      }t        t	        j
                  |j                  «      dk  «       t        t	        j
                  |j                  «      dk  «       y )Nr   rÞ   rµ   r   r=  re   r7  r?  r@  s     r!   Útest_root_excitingmixingz+TestNonlinOldTests.test_root_excitingmixing  s\   € Ü”1”a—e‘eÐ$4Ø#%Ø,3°S¨>ñ;ô<ˆô 	”—‘˜CŸE™EÓ" TÑ)Ô*Ü”—‘˜CŸG™GÓ$ tÑ+Õ,r#   c                 óü   — t        t        t        j                  ddddidœ¬«      }t        t	        j
                  |j                  «      dk  «       t        t	        j
                  |j                  «      dk  «       y )Nr   r:  rµ   r   r=  re   r;  r?  r@  s     r!   Útest_root_diagbroydenz(TestNonlinOldTests.test_root_diagbroyden  s[   € Ü”1”a—e‘e MØ#%Ø,3°Q¨<ñ9ô:ˆô 	”—‘˜CŸE™EÓ" TÑ)Ô*Ü”—‘˜CŸG™GÓ$ tÑ+Õ,r#   N)rŠ   r‹   rŒ   r�   r®   r±   rÇ   r  r8  r  rA  rD  rF  rH  rJ  rL  r&   r#   r!   r%  r%  Ð  sC   „ ñò
*ò
*ò
'ò*ò
*ò
*ò
-ò-ò+ò-ò-ó-r#   r%  ).r�   Únumpy.testingr   r„   Ú	functoolsr   Úscipy.optimizer   r{   r   Úscipy.sparser   Únumpyr   r	   Únumpy.linalgr
   r   r†   Útest_minpackr   r   r   r   r   r   r   r|   rY   rs   r"   r[   rr   rZ   rg   r(   r.   r7   r:   rB   rN   rP   r“   rÊ   r÷   r%  r&   r#   r!   ú<module>rT     sY  ðñõ "Û Ý ç 2Ý "ß Ý Û Û å *à—‘Ø ×,Ñ,Ø!×.Ñ.Ø#×2Ñ2Ø—‘Ø—‘Ø×)Ñ)ñ+€ð  Ÿ™°f·o±oØŸ™°F×4HÑ4HñJ€	òò 	€„Ø€„Ø€„Ø€Ô òò 
€„Ø &× 3Ñ 3Ø"(×"7Ñ"7ñ9€„à€„Ø€Ô òò "€„Ø€Ô Ø€Ô Ø€Ô òò 
€„Ø€„Ø€„Ø€Ô òHð
 �R�€	„Ø'-×':Ñ':Ø)/×)>Ñ)>Ø&,×&8Ñ&8ñ:€	Ô ð "˜
€	Ô ÚL€	Ô ò>ò 
€„Ø"(×"7Ñ"7Ø &× 3Ñ 3Ø%×1Ñ1ñ3€„ð ˜Ð"€„Ø�j€Ô ò#ð �ˆ€„Ø"(×"7Ñ"7Ø &× 3Ñ 3Ø%×1Ñ1ñ3€„ð €„Ø€Ô ÷UDñ UD÷pIBñ IB÷XB8ñ B8÷J_Gñ _G÷DH-ò H-r#   