§
    µ³Ùg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j        ej        ej        ej        dœZej        ej        ej        ej        dœZd„ Zg d¢e_        i e_         i e_!        i e_"        d„ Z#g d¢e#_        ej        ej        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j        ej        dœe&_         dhe&_!        h d£e&_"        d„ Z'g d¢e'_        ej        ej        ej        dœe'_         ddhe'_!        dhe'_"        d „ Z(d!d"ge(_        ej        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-dS )-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       úV/granary/edev/quantum/lib/python3.11/site-packages/scipy/optimize/tests/test_nonlin.pyÚFr"   !   sU   € Ý
Œ
�1‰ŒŒ€AÝÐ Ð Ð Ñ!Ô!€AØ€AØ	
ˆˆQ‰�•U˜1œ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                 óx   — 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   sE   € Ý
Œ�+�+�+˜z˜z˜z¨:¨:¨:Ð6Ñ7Ô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 Q q¤T E™]œ]­R¬V°Q°q´T°E©]¬]Ñ:¸aÀ!ÀAÁ#¹gÑFÐGÐGr#   éÿÿÿÿr0   )r   r   r   Úminres>   ÚcgsÚgmresÚtfqmrr<   Úbicgstabc                 óL   — 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                             ||¦  «         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 R™jœj™¨1Ñ,Ñ-Ô-ð/ñ 	0ô 	0€AåŒI�OŠO˜B Ñ"Ô"Ð"Ð"r#   g      à¿gffffffö?c                   ój  — e Zd ZdZdd„Zdd„Zej        j        d„ ¦   «         Z	ej         
                    d¦  «        d„ ¦   «         Zej         
                    d¦  «        ej                             dg d	¢¦  «        d
„ ¦   «         ¦   «         Zej         
                    d¦  «        d„ ¦   «         Zd„ ZdS )Ú
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.

    r   c           
      óž  — |t           d         k    rfdD ]c}||j        v rŒ |||j        |d |dd¬¦  «        }t          t	          j         ||¦  «        ¦  «                             ¦   «         |k     ¦  «         Œd |||j        |dd¬¦  «        }t          t	          j         ||¦  «        ¦  «                             ¦   «         |k     ¦  «         d S )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ð 9�Ø˜Qœ]Ð*Ð*Øà�D˜˜AœE¨&¸dØ$¨c¸1ð>ñ >ô >�å�œ A A a¡D¤DÑ)Ô)×-Ò-Ñ/Ô/°%Ò7Ñ8Ô8Ð8Ð8àˆD��A”E °¸QÐ?Ñ?Ô?ˆÝ•”˜A˜A˜a™DœDÑ!Ô!×%Ò%Ñ'Ô'¨%Ò/Ñ0Ô0Ð0Ð0Ð0r#   c                 ó–  — |dk    rjdD ]g}||j         v rŒt          ||j        ||ddd|idœ¬¦  «        }t          t	          j        |j        ¦  «                             ¦   «         |k     ¦  «         Œht          ||j        ||dddœ¬¦  «        }t          t	          j        |j        ¦  «                             ¦   «         |k     ¦  «         d S )	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¨FØ,1¸cØ,-Ø4<¸jÐ3Ið$Kð $KðLñ Lô L�õ �œ C¤GÑ,Ô,×0Ò0Ñ2Ô2°UÒ:Ñ;Ô;Ð;Ð;å�1�a”e FØ$)°cÀ1ÐEÐEðGñ Gô Gˆå•”˜CœGÑ$Ô$×(Ò(Ñ*Ô*¨UÒ2Ñ3Ô3Ð3Ð3Ð3r#   c                 ó   — d S r%   r&   )r^   ÚaÚkws      r!   Ú_check_func_failzTestNonlin._check_func_fail­   s   € àˆr#   zignore::DeprecationWarningc                 ób  — t           t          t          t          t          t
          t          fD ]�}t                               ¦   «         D ]e}||j	                             ¦   «         v r2|t                               ¦   «         v r|                      ||¦  «         ŒO|                      ||¦  «         ŒfŒ‚d S 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ð 	1ˆAÝŸšÑ(Ô(ð 1ð 1�Ø˜1œ;×-Ò-Ñ/Ô/Ð/Ð/Ø�y×/Ò/Ñ1Ô1Ð1Ð1Ø×-Ò-¨a°Ñ6Ô6Ð6ØØ×'Ò'¨¨4Ñ0Ô0Ð0Ð0ð1ð	1ð 	1r#   rT   )Úlgmresr>   r@   r=   r<   r?   c           	      óœ   ‡ — d‰ _         ˆ fd„}t          j        t          t          j        |ddd|¬¦  «         t          ‰ j         ¦  «         d S )NFc                 ó^   •— d‰_         t          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»   sm   ø€ ð
 $ˆÔð	(ð 	(ð 	(ð 	(ð 	(õ 	Ô�Q¥¤¨f¸DØ%(°!Ø&5ð	7ñ 	7ô 	7ð 	7õ 	�Ô#Ñ$Ô$Ð$Ð$Ð$r#   c                 óö   — t           t          t          t          t          t
          t          fD ]K}t          D ]A}||j        v r |t          v r|  
                    ||¦  «         Œ+|                      ||¦  «         ŒBŒLd S r%   )r"   r(   r.   r7   r:   rB   rN   rY   rr   rs   ro   rk   )r^   r    Úmeths      r!   Útest_problem_rootzTestNonlin.test_problem_rootË   sˆ   € å•R�¥2¥yµ"µbÐ9ð 	*ð 	*ˆAÝð *ð *�Ø˜1œ;Ð&Ð&Ø�yÐ(Ð(Ø×-Ò-¨a°Ñ6Ô6Ð6ØØ× Ò   DÑ)Ô)Ð)Ð)ð*ð	*ð 	*r#   c                 ó´   — d„ }t          j        t          j        j        ¦  «        5  t          j        |dgd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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Õ   sº   € ð	ð 	ð 	õ Œ]�5œ>Ô7Ñ8Ô8ð 	Dð 	DÝÔ  °Q°CÀÐCÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð 	Dð 	Ds   §AÁAÁAN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r`   rk   r„   ÚmarkÚxfailro   Úfilterwarningsrt   Úparametrizer}   r€   r‰   r&   r#   r!   rP   rP   …   s2  € € € € € ðð ð1ð 1ð 1ð 1ð4ð 4ð 4ð 4ð" „[Ôðð ñ Ôðð „[×ÒÐ <Ñ=Ô=ð1ð 1ñ >Ô=ð1ð „[×ÒÐ <Ñ=Ô=Ø„[×Ò˜Xð (;ð (;ð (;ñ <ô <ð%ð %ñ<ô <ñ >Ô=ð%ð „[×ÒÐ <Ñ=Ô=ð*ð *ñ >Ô=ð*ðDð Dð Dð Dð Dr#   rP   c                   ód  — 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d
„ eD ¦   «         Zdd„Zd„ Z	d„ Z
d„ Zd„ Zd„ ZdS )Ú
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”   c                 ó   — g | ]
}|d z  dz
  ‘ŒS )r   r   r&   )Ú.0r   s     r!   ú
<listcomp>zTestSecant.<listcomp>è   s    € Ð	Ð	Ð	�qˆ!ˆQ‰$�‰(Ð	Ð	Ð	r#   r   c           
      óh  —  |di |¤Ž}|                      | j        d         | j        d         d¦  «         t          t	          | j        dd…         | j        dd…         ¦  «        ¦  «        D �]C\  }\  }}|                     ||¦  «         t          t          ||dz   ¦  «        ¦  «        D ]}| j        ||z
  dz            | j        ||z
           z
  }	| j        ||z
  dz            | j        ||z
           z
  }
t          t          j
        |	|                     |
¦  «        ¦  «        ¦  «         Œ€||k    r~| j        ||z
  dz            | j        ||z
           z
  }	| j        ||z
  dz            | j        ||z
           z
  }
t          t          j
        |	|                     |
¦  «        ¦  «         ¦  «         �ŒEdS )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ê   s�  € ð
 ˆgˆmˆm˜ˆmˆmˆØ�	Š	�$”'˜!”*˜dœg aœj¨$Ñ/Ô/Ð/Ý"¥3 t¤w¨q¨r¨r¤{°D´G¸A¸B¸B´KÑ#@Ô#@ÑAÔAð 	<ñ 	<‰IˆA‰v��1Ø�JŠJ�q˜!ÑÔÐå�3˜w¨¨!©Ñ,Ô,Ñ-Ô-ð 8ð 8�Ø”W˜Q˜q™S ™U”^ d¤g¨a°©c¤lÑ2�Ø”W˜Q˜q™S ™U”^ d¤g¨a°©c¤lÑ2�Ý�œ B¨¯	ª	°"©¬Ñ6Ô6Ñ7Ô7Ð7Ð7ð �GŠ|ˆ|Ø”W˜Q˜w™Y q™[Ô)¨D¬G°A°g±IÔ,>Ñ>�Ø”W˜Q˜w™Y q™[Ô)¨D¬G°A°g±IÔ,>Ñ>�Ý�BœK¨¨C¯IªI°b©M¬MÑ:Ô:Ð:Ñ;Ô;Ð;ùð	<ð 	<r#   c                 óD   — |                       t          j        ¦  «         d S r%   )r­   r{   ÚBroydenFirst©r^   s    r!   Útest_broyden1zTestSecant.test_broyden1ÿ   s   € Ø×Ò�6Ô.Ñ/Ô/Ð/Ð/Ð/r#   c                 óD   — |                       t          j        ¦  «         d S r%   )r­   r{   ÚBroydenSecondr°   s    r!   Útest_broyden2zTestSecant.test_broyden2  s   € Ø×Ò�6Ô/Ñ0Ô0Ð0Ð0Ð0r#   c           	      óŽ  — t          j        d¬¦  «        }|                     | 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  }| 
                    ||¦  «         t          t          j        |                     ¦   «         |dd¬	¦  «        ¦  «         Œ´d S )
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  s5  € åÔ!¨Ð,Ñ,Ô,ˆØ�	Š	�$”'˜!”*˜dœg aœj¨$Ñ/Ô/Ð/åŒK˜‰NŒN˜fÑ%ˆå'­¨D¬G°A°B°B¬K¸¼ÀÀÀ¼Ñ(EÔ(EÑFÔFð 	Kð 	K‰NˆF‘F�Q˜Ø�T”W˜V”_Ñ$ˆBØ�T”W˜V”_Ñ$ˆBØ�"•s˜1˜b‘z”z‘/ 1 1 1 d 7Ô+¨b°°q°q°q°¬kÑ9½CÀÀB¹K¼KÑGÑGˆAØ�JŠJ�q˜!ÑÔÐÝ•B”K §¢¡¤¨q°uÀ5ÐIÑIÔIÑJÔJÐJÐJð	Kð 	Kr#   c           	      ó¨  — t          j        d¬¦  «        }|                     | 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  }| 
                    ||¦  «         t          t          j        |                     ¦   «         t          |¦  «        dd¬	¦  «        ¦  «         ŒÁd S )
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 aœj¨$Ñ/Ô/Ð/åŒK˜‰NŒN˜dÑ#ˆå'­¨D¬G°A°B°B¬K¸¼ÀÀÀ¼Ñ(EÔ(EÑFÔFð 	Pð 	P‰NˆF‘F�Q˜Ø�T”W˜V”_Ñ$ˆBØ�T”W˜V”_Ñ$ˆBØ�"•s˜1˜b‘z”z‘/ 1 1 1 d 7Ô+¨b°°q°q°q°¬kÑ9½CÀÀB¹K¼KÑGÑGˆAØ�JŠJ�q˜!ÑÔÐÝ•B”K §¢¡¤­s°1©v¬v¸EÈÐNÑNÔNÑOÔOÐOÐOð	Pð 	Pr#   c                 óL   — |                       t          j        ddd¬¦  «         d S )Nr   r   )ÚMÚw0r§   )r­   r{   ÚAndersonr°   s    r!   Útest_andersonzTestSecant.test_anderson!  s)   € ð
 	×Ò�6œ?¨a°A¸qÐÑAÔAÐAÐAÐAr#   N)r   )rŠ   r‹   rŒ   r�   r   r3   rž   rŸ   r­   r±   r´   rÂ   rÅ   rÊ   r&   r#   r!   r“   r“   Ý   sP  € € € € € ØNÐNà
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(Ø
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(Ø
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(Ø
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(Ø
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(Ø
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(Ø
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(Ø
ˆ"Œ(Ð'Ð'Ð'Ñ
(Ô
(ð
+€Bð 
 Ð	˜BÐ	Ñ	Ô	€Bð<ð <ð <ð <ð*0ð 0ð 0ð1ð 1ð 1ðKð Kð KðPð Pð PðBð Bð Bð Bð Br#   r“   c                   óD   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )Ú
TestLinearz]Solve a linear equation;
    some methods find the exact solution in a finite number of stepsFc           	      ó.  ‡‡	— t           j                             d¦  «         t           j                             ||¦  «        Š|r&‰dt           j                             ||¦  «        z  z   Št           j                             |¦  «        Š	|r%‰	dt           j                             |¦  «        z  z   Š	ˆˆ	fd„}t	          j        |t          j        |¦  «        ||dd d¬¦  «        }t          t          j        t          ‰|¦  «        ‰	d¬¦  «        ¦  «         d S )Né{   ù              ð?c                 ó*   •— t          ‰| ¦  «        ‰z
  S r%   ©r	   r4   s    €€r!   r_   zTestLinear._check.<locals>.func7  s   ø€ Ý�q˜!‘9”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�OŠO˜A˜qÑ!Ô!ˆØð 	-Ø�B•r”y—’ q¨!Ñ,Ô,Ñ,Ñ,ˆAÝŒI�OŠO˜AÑÔˆØð 	*Ø�B•r”y—’ qÑ)Ô)Ñ)Ñ)ˆAð	!ð 	!ð 	!ð 	!ð 	!ð 	!õ Ô! $­¬°©¬°SÀ'Ø(,¸$ÈðKñ Kô Kˆå•”�C  3™KœK¨°Ð6Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7r#   c                 ó²   — |                       t          j        d¬¦  «        ddd¦  «         |                       t          j        d¬¦  «        ddd¦  «         d S ©Nr”   r·   é   é)   FT)rÝ   r{   r¯   r°   s    r!   r±   zTestLinear.test_broyden1>  sT   € à�Š•FÔ'¨cÐ2Ñ2Ô2°B¸¸EÑBÔBÐBØ�Š•FÔ'¨cÐ2Ñ2Ô2°B¸¸DÑAÔAÐAÐAÐAr#   c                 ó²   — |                       t          j        d¬¦  «        ddd¦  «         |                       t          j        d¬¦  «        ddd¦  «         d S rß   )rÝ   r{   r³   r°   s    r!   r´   zTestLinear.test_broyden2C  sT   € à�Š•FÔ(¨sÐ3Ñ3Ô3°R¸¸UÑCÔCÐCØ�Š•FÔ(¨sÐ3Ñ3Ô3°R¸¸TÑBÔBÐBÐBÐBr#   c                 ó¶   — |                       t          j        dd¬¦  «        ddd¦  «         |                       t          j        dd¬¦  «        ddd¦  «         d S )Né2   r”   )rÇ   r¸   rà   é   FT)rÝ   r{   rÉ   r°   s    r!   rÊ   zTestLinear.test_andersonH  sV   € à�Š•F”O b°Ð4Ñ4Ô4°b¸"¸eÑDÔDÐDØ�Š•F”O b°Ð4Ñ4Ô4°b¸"¸dÑCÔCÐCÐCÐCr#   c                 ó–   — |                       t          j        dddd¬¦  «         |                       t          j        dddd¬¦  «         d S )Nrà   r   Fé
   )Úinner_mT)rÝ   r{   ÚKrylovJacobianr°   s    r!   Útest_krylovzTestLinear.test_krylovM  sF   € à�Š•FÔ)¨2¨q°%ÀˆÑDÔDÐDØ�Š•FÔ)¨2¨q°$ÀˆÑCÔCÐCÐCÐCr#   c           	      ó”  ‡‡— ˆˆfd„}ˆfd„}t          j        |t          j        ‰j        d         ¦  «        |ddd d¬¦  «        }t          j                             ‰|z  ‰d¬¦  «         t          j        |t          j        ‰j        d         ¦  «        ‰ddd d¬¦  «        }t          j                             ‰|z  ‰d¬¦  «         d S )Nc                 ó4   •— ‰                      | ¦  «        ‰z
  S r%   rÑ   r4   s    €€r!   r_   z'TestLinear._check_autojac.<locals>.funcS  s   ø€ Ø—5’5˜‘8”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ñ Kô Kˆå
Œ
×"Ò" 1 s¡7¨A°DÐ"Ñ9Ô9Ð9åÔ! $­¬°´¸´Ñ(<Ô(<¸aÈØ(,¸$ÈðKñ Kô Kˆå
Œ
×"Ò" 1 s¡7¨A°DÐ"Ñ9Ô9Ð9Ð9Ð9r#   c                 óÀ   — t          ddgddgg¦  «        }t          j        ddg¦  «        }|                      ||¦  «         |                      d|z  d|z  ¦  «         d S ©Nr   r   r;   y      ð?       @y       @       @)r   r   r3   rñ   ©r^   r5   r6   s      r!   Útest_jac_sparsezTestLinear.test_jac_sparsea  si   € Ý˜˜1�v  1˜vÐ&Ñ'Ô'ˆÝŒH�a˜�WÑÔˆØ×Ò˜A˜qÑ!Ô!Ð!Ø×Ò˜V q™L¨6°Q©,Ñ7Ô7Ð7Ð7Ð7r#   c                 óÊ   — t          j        ddgddgg¦  «        }t          j        ddg¦  «        }|                      ||¦  «         |                      d|z  d|z  ¦  «         d S ró   )r   r3   rñ   rô   s      r!   Útest_jac_ndarrayzTestLinear.test_jac_ndarrayg  sk   € ÝŒH�q˜!�f˜q !˜fÐ%Ñ&Ô&ˆÝŒH�a˜�WÑÔˆØ×Ò˜A˜qÑ!Ô!Ð!Ø×Ò˜V q™L¨6°Q©,Ñ7Ô7Ð7Ð7Ð7r#   N)F)rŠ   r‹   rŒ   r�   rÝ   r±   r´   rÊ   rê   rñ   rõ   r÷   r&   r#   r!   rÌ   rÌ   )  s©   € € € € € ðHð Hð8ð 8ð 8ð 8ð"Bð Bð Bð
Cð Cð Cð
Dð Dð Dð
Dð Dð Dð
:ð :ð :ð8ð 8ð 8ð8ð 8ð 8ð 8ð 8r#   rÌ   c                   óp   — 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dS )Ú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#   FrÒ   c                 ó”  ‡‡‡— t           j                             d¦  «        Šd}ˆˆfd„}ˆfd„} |||¦  «        }‰                     |¦  «        }	 |di |¤Ž}
|
                     |	|                      |	|¦  «        t          | j        |¬¦  «        ¦  «         t          d|z  ¦  «        D �]œ} ||¦  «        }t          |
d¦  «        �rtt          j	        |
¦  «        }t          |
d¦  «        rB|
 
                    |¦  «        }t           j         
                    ||¦  «        } |||d	¦  «         t          |
d
¦  «        rY|
                     |¦  «        }t           j         
                    |j                             ¦   «         |¦  «        } |||d¦  «         t          |
d¦  «        r7|
                     |¦  «        }t          j        ||¦  «        } |||d¦  «         t          |
d¦  «        rN|
                     |¦  «        }t          j        |j                             ¦   «         |¦  «        } |||d¦  «         t          |
d¦  «        rZt          |
d¦  «        rJ|
                     |¦  «        }|
 
                    |
                     |¦  «        ¦  «        } |||d¦  «         t          |
d¦  «        rZt          |
d
¦  «        rJ|
                     |¦  «        }|
                     |
                     |¦  «        ¦  «        } |||d¦  «          ||¦  «        }|
                     ||                      ||¦  «        ¦  «         �Œžd S )NrÎ   rE   c                  ó@   •—  ‰j         | Ž }‰r|d ‰j         | Ž z  z   }|S )NrÏ   )Úrand)rm   ÚqrÛ   Úrngs     €€r!   rþ   z-TestJacobianDotSolve._check_dot.<locals>.rand{  s3   ø€ Ø�”˜!�ˆAØð (Ø˜˜8˜3œ8 Q˜<™Ñ'�ØˆHr#   c                 óÔ   •— t          | |z
  ¦  «                             ¦   «         }‰t          |¦  «                             ¦   «         ‰z  z   }||k    rt          |› d|d›�¦  «        ‚d S )Nz: err Úg)Úabsr]   ÚAssertionError)rm   r6   Úmsgr   r    Útols        €r!   Úassert_closez5TestJacobianDotSolve._check_dot.<locals>.assert_close�  sh   ø€ Ý�A˜‘E‘
”
—’Ñ Ô ˆAØ•c˜!‘f”f—j’j‘l”l 3Ñ&Ñ&ˆAØ�1ŠuˆuÝ$¨Ð%8Ð%8°1Ð%8Ð%8Ð%8Ñ9Ô9Ð9ð ˆur#   )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  s8  øøø€ ÝŒi×#Ò# CÑ(Ô(ˆàˆð	ð 	ð 	ð 	ð 	ð 	ð	:ð 	:ð 	:ð 	:ð 	:ð ˆD��A‰JŒJˆð �XŠX�a‰[Œ[ˆØˆgˆmˆm˜ˆmˆmˆØ�	Š	�"�d—j’j  QÑ'Ô'­°´¸qÐ)AÑ)AÔ)AÑBÔBÐBõ �q˜‘s‘”ð !	,ñ !	,ˆAØ��Q‘”ˆAå�s˜KÑ(Ô(ñ >Ý”X˜c‘]”]�Ý˜3 Ñ(Ô(ð <ØŸš 1™œ�BÝœ)Ÿ/š/¨"¨aÑ0Ô0�CØ �L  SÐ*:Ñ;Ô;Ð;Ý˜3 Ñ)Ô)ð =ØŸš A™œ�BÝœ)Ÿ/š/¨"¬$¯)ª)©+¬+°qÑ9Ô9�CØ �L  SÐ*;Ñ<Ô<Ð<Ý˜3 Ñ)Ô)ð :ØŸš A™œ�BÝœ&  Q™-œ-�CØ �L  S¨.Ñ9Ô9Ð9Ý˜3 	Ñ*Ô*ð >ØŸš Q™œ�BÝœ& ¤§¢¡¤¨aÑ0Ô0�CØ �L  SÐ*<Ñ=Ô=Ð=å�s˜HÑ%Ô%ð 6­'°#°wÑ*?Ô*?ð 6Ø—Z’Z ‘]”]�Ø—i’i §
¢
¨2¡¤Ñ/Ô/�Ø�˜R  nÑ5Ô5Ð5å�s˜IÑ&Ô&ð ;­7°3¸Ñ+AÔ+Að ;Ø—[’[ ‘^”^�Ø—k’k #§*¢*¨R¡.¤.Ñ1Ô1�Ø�˜R Ð&9Ñ:Ô:Ð:à��Q‘”ˆAØ�JŠJ�q˜$Ÿ*š* Q¨Ñ*Ô*Ñ+Ô+Ð+Ñ+ðC!	,ð !	,r#   c                 óŠ   — |                       t          j        d¬¦  «         |                       t          j        d¬¦  «         d S ©NF)rÛ   T)r  r{   r¯   r°   s    r!   r±   z"TestJacobianDotSolve.test_broyden1²  ó:   € Ø�Š�Ô+°UˆÑ;Ô;Ð;Ø�Š�Ô+°TˆÑ:Ô:Ð:Ð:Ð:r#   c                 óŠ   — |                       t          j        d¬¦  «         |                       t          j        d¬¦  «         d S r  )r  r{   r³   r°   s    r!   r´   z"TestJacobianDotSolve.test_broyden2¶  s:   € Ø�Š�Ô,°eˆÑ<Ô<Ð<Ø�Š�Ô,°dˆÑ;Ô;Ð;Ð;Ð;r#   c                 óŠ   — |                       t          j        d¬¦  «         |                       t          j        d¬¦  «         d S r  )r  r{   rÉ   r°   s    r!   rÊ   z"TestJacobianDotSolve.test_andersonº  s8   € Ø�Š�œ°ˆÑ7Ô7Ð7Ø�Š�œ°ˆÑ6Ô6Ð6Ð6Ð6r#   c                 óŠ   — |                       t          j        d¬¦  «         |                       t          j        d¬¦  «         d S r  )r  r{   ÚDiagBroydenr°   s    r!   Útest_diagbroydenz%TestJacobianDotSolve.test_diagbroyden¾  s:   € Ø�Š�Ô*°EˆÑ:Ô:Ð:Ø�Š�Ô*°DˆÑ9Ô9Ð9Ð9Ð9r#   c                 óŠ   — |                       t          j        d¬¦  «         |                       t          j        d¬¦  «         d S r  )r  r{   ÚLinearMixingr°   s    r!   Útest_linearmixingz&TestJacobianDotSolve.test_linearmixingÂ  r  r#   c                 óŠ   — |                       t          j        d¬¦  «         |                       t          j        d¬¦  «         d S r  )r  r{   ÚExcitingMixingr°   s    r!   Útest_excitingmixingz(TestJacobianDotSolve.test_excitingmixingÆ  s:   € Ø�Š�Ô-°uˆÑ=Ô=Ð=Ø�Š�Ô-°tˆÑ<Ô<Ð<Ð<Ð<r#   c                 óŽ   — |                       t          j        dd¬¦  «         |                       t          j        dd¬¦  «         d S )NFgü©ñÒMbP?)rÛ   r  T)r  r{   ré   r°   s    r!   rê   z TestJacobianDotSolve.test_krylovÊ  s>   € à�Š�Ô-°uÀ$ˆÑGÔGÐGØ�Š�Ô-°tÀˆÑFÔFÐFÐFÐ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  sÇ   € € € € € ðð ð'ð 'ð 'ð 'ð:,ð :,ð :,ð :,ðx;ð ;ð ;ð<ð <ð <ð7ð 7ð 7ð:ð :ð :ð;ð ;ð ;ð=ð =ð =ð „[ÔðGð Gñ ÔðGð Gð Gr#   rù   c                   óZ   — 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dS )Ú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     ¦  «         d S ©Né   r   ©Úiterr¸   ç•Ö&è.>)r{   r   r"   r[   r   Únorm©r^   r   s     r!   r±   z TestNonlinOldTests.test_broyden1Ö  ó`   € ÝŒO�A�qœu¨2°QÐ7Ñ7Ô7ˆÝ•”˜A‘” Ò%Ñ&Ô&Ð&Ý•”�A˜a™DœDÑ!Ô! DÒ(Ñ)Ô)Ð)Ð)Ð)r#   c                 ó  — t          j        t          t          j        dd¬¦  «        }t	          t          j        |¦  «        dk     ¦  «         t	          t          j        t          |¦  «        ¦  «        dk     ¦  «         d S r)  )r{   r   r"   r[   r   r.  r/  s     r!   r´   z TestNonlinOldTests.test_broyden2Û  r0  r#   c                 ó    — t          j        t          t          j        ddd¬¦  «        }t	          t          j        |¦  «        dk     ¦  «         d S )Nr*  ç¸…ëQ¸ž?r+   )r,  r¸   rÇ   ç…ëQ¸Õ?)r{   r   r"   r[   r   r.  r/  s     r!   rÊ   z TestNonlinOldTests.test_andersonà  s?   € ÝŒO�A�qœ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     ¦  «         d S )Né<   r   r+  çH¯¼šò×z>)r{   r   r"   r[   r   r.  r/  s     r!   r   z$TestNonlinOldTests.test_linearmixingä  sa   € ÝÔ¥¥1¤5¨r¸Ð=Ñ=Ô=ˆÝ•”˜A‘” Ò%Ñ&Ô&Ð&Ý•”�A˜a™DœDÑ!Ô! DÒ(Ñ)Ô)Ð)Ð)Ð)r#   c                 ó  — t          j        t          t          j        dd¬¦  «        }t	          t          j        |¦  «        dk     ¦  «         t	          t          j        t          |¦  «        ¦  «        dk     ¦  «         d S )Nrà   r   r+  çñhãˆµøä>)r{   r   r"   r[   r   r.  r/  s     r!   Útest_excitingz TestNonlinOldTests.test_excitingé  sa   € ÝÔ!¥!¥Q¤U°¸3Ð?Ñ?Ô?ˆÝ•”˜A‘” Ò%Ñ&Ô&Ð&Ý•”�A˜a™DœDÑ!Ô! DÒ(Ñ)Ô)Ð)Ð)Ð)r#   c                 ó  — t          j        t          t          j        dd¬¦  «        }t	          t          j        |¦  «        dk     ¦  «         t	          t          j        t          |¦  «        ¦  «        dk     ¦  «         d S )Né   r   r+  ç:Œ0âŽyE>)r{   r   r"   r[   r   r.  r/  s     r!   r  z#TestNonlinOldTests.test_diagbroydenî  sa   € ÝÔ�q¥!¤%¨b¸Ð:Ñ:Ô:ˆÝ•”˜A‘” Ò%Ñ&Ô&Ð&Ý•”�A˜a™Dœ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     ¦  «         d S )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ó  ót   € Ý•1•a”e JØ#%°wÀ°lÐCÐCðEñ Eô Eˆå•”˜CœEÑ"Ô" TÒ)Ñ*Ô*Ð*Ý•”˜Cœ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     ¦  «         d S )Nr   r*  r¸   r   r?  re   r-  rA  rB  s     r!   Útest_root_broyden2z%TestNonlinOldTests.test_root_broyden2ù  rD  r#   c           	      óª   — t          t          t          j        dddddœdœ¬¦  «        }t          t	          j        |j        ¦  «        dk     ¦  «         d S )	Nr   r*  r3  r+   )r¸   rÇ   r?  re   r4  )r   r"   r[   r   r{   r.  r   rB  s     r!   Útest_root_andersonz%TestNonlinOldTests.test_root_andersonÿ  sb   € Ý•1•a”e JØ#%Ø59ÀÐ+BÐ+BðDð DðEñ Eô Eˆõ 	•”˜Cœ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     ¦  «         d S )Nr   r6  r¸   r   r?  re   r7  rA  rB  s     r!   Útest_root_linearmixingz)TestNonlinOldTests.test_root_linearmixing  sx   € Ý•1•a”e NØ#%Ø,3°S¨>ð;ð ;ð<ñ <ô <ˆõ 	•”˜CœEÑ"Ô" TÒ)Ñ*Ô*Ð*Ý•”˜Cœ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     ¦  «         d S )Nr   rà   r¸   r   r?  re   r9  rA  rB  s     r!   Útest_root_excitingmixingz+TestNonlinOldTests.test_root_excitingmixing  sy   € Ý•1•a”eÐ$4Ø#%Ø,3°S¨>ð;ð ;ð<ñ <ô <ˆõ 	•”˜CœEÑ"Ô" TÒ)Ñ*Ô*Ð*Ý•”˜Cœ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     ¦  «         d S )Nr   r<  r¸   r   r?  re   r=  rA  rB  s     r!   Útest_root_diagbroydenz(TestNonlinOldTests.test_root_diagbroyden  sx   € Ý•1•a”e MØ#%Ø,3°Q¨<ð9ð 9ð:ñ :ô :ˆõ 	•”˜CœEÑ"Ô" TÒ)Ñ*Ô*Ð*Ý•”˜CœGÑ$Ô$ tÒ+Ñ,Ô,Ð,Ð,Ð,r#   N)rŠ   r‹   rŒ   r�   r±   r´   rÊ   r   r:  r  rC  rF  rH  rJ  rL  rN  r&   r#   r!   r'  r'  Ð  sÒ   € € € € € ðð ð
*ð *ð *ð
*ð *ð *ð
'ð 'ð 'ð*ð *ð *ð
*ð *ð *ð
*ð *ð *ð
-ð -ð -ð-ð -ð -ð+ð +ð +ð-ð -ð -ð-ð -ð -ð-ð -ð -ð -ð -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>rV     s  ððð ð "Ð !Ð !Ð !Ð !Ð !Ø €€€Ø Ð Ð Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€à *Ð *Ð *Ð *Ð *Ð *à”Ø Ô,Ø!Ô.Ø#Ô2Ø”Ø”ØÔ)ð+ð +€ð  œ°f´oØœ°FÔ4HðJð J€	ðð ð ð 	ˆˆ€„Ø€„Ø€„Ø€Ô ðð ð ð 
Ð	Ð	€„Ø &Ô 3Ø"(Ô"7ð9ð 9€„à€„Ø€Ô ðð ð ð "Ð!Ð!€„Ø€Ô Ø€Ô Ø€Ô ðð ð ð 
ˆˆ€„Ø€„Ø€„Ø€Ô ðHð Hð Hð
 �R�€	„Ø'-Ô':Ø)/Ô)>Ø&,Ô&8ð:ð :€	Ô ð "˜
€	Ô ØLÐLÐL€	Ô ð>ð >ð >ð 
ˆˆ€„Ø"(Ô"7Ø &Ô 3Ø%Ô1ð3ð 3€„ð ˜Ð"€„Ø�j€Ô ð#ð #ð #ð �ˆ€„Ø"(Ô"7Ø &Ô 3Ø%Ô1ð3ð 3€„ð €„Ø€Ô ðUDð UDð UDð UDð UDñ UDô UDð UDðpIBð IBð IBð IBð IBñ IBô IBð IBðXB8ð B8ð B8ð B8ð B8ñ B8ô B8ð B8ðJ_Gð _Gð _Gð _Gð _Gñ _Gô _Gð _GðDH-ð H-ð H-ð H-ð H-ñ H-ô H-ð H-ð H-ð H-r#   