+
    LV-jO  ã                   óà  € R t ^ RIHt ^ RIt^ RIHt ^ RIHtH	t	 ^ RI
Ht ^ RIHtHt ^ RIHt ^ RIt^ RIt^ RIHt ^R	IHt R
]P.                  R]P0                  R]P2                  R]P4                  R]P6                  R]P8                  R]P:                  /tR
]P.                  R]P6                  R]P8                  R]P:                  /tR t . R%O] n!        / ] n"        / ] n#        / ] n$        R t%. R&O]%n!        R]P2                  R]P4                  /]%n"        / ]%n#        / ]%n$        R t&. R'O]&n!        / ]&n"        / ]&n#        / ]&n$        R t'. R(O]'n!        / ]'n"        / ]'n#        / ]'n$        R t(R)R*.](n!        R]P2                  R]P4                  R]P0                  /](n"        R0](n#        0 R+m](n$        R t). R,O])n!        R]P4                  R]P2                  R]P0                  /])n"        RR0])n#        R0])n$        R t*R-R.]*n!        R]P4                  R]P2                  R]P0                  /]*n"        / ]*n#        / ]*n$         ! R R4      t+ ! R R4      t, ! R R 4      t- ! R! R"4      t. ! R# R$4      t/R# ).z@Unit tests for nonlinear solvers
Author: Ondrej Certik
May 2007
)Úassert_N)Úpartial)Ú_nonlinÚroot)Ú	csr_array)ÚdiagÚdot)Úinv©Úminres)Úpressure_networkÚandersonÚdiagbroydenÚlinearmixingÚexcitingmixingÚbroyden1Úbroyden2Úkrylovc                 óÖ   € \         P                  ! V 4      P                  p \        . RO4      pRpV) V ,          V\	        V P                  V ,          4      ,          V ,          ,
          pV# )é   ç{®Gáz„?)r   é   g      ø?é   ç      à?)ÚnpÚasarrayÚTr   Úfloat)ÚxÚdÚcÚfs   &   Úq/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/scipy/optimize/tests/test_nonlin.pyÚFr#   "   sN   € Ü
�
Š
�1‹�‰€AÜÒ Ó!€AØ€AØ	
ˆˆQ��”U˜1Ÿ3™3 �7“^Õ# aÕ'Õ'€AØ€Hó    c                 ó   € V # ©N© ©r   s   &r"   ÚF2r)   0   ó   € Ø€Hr$   c                 ó   € V # r&   r'   r(   s   &r"   ÚF2_luckyr,   ;   r*   r$   c                 óŽ   € \         P                  ! . RO. RO. RO.4      p\         P                  ! . RO4      pW,          V,
          # )r   )éþÿÿÿr   ç        )r   r.   r   )é    r   r.   )r   r   ç      @)r   Úarray©r   ÚAÚbs   &  r"   ÚF3r6   E   s1   € Ü
�Š’+šzª:Ð6Ó7€AÜ
�Š’Ó€AØ�5�1�9Ðr$   c                 óú   € R pW^ ,          ,          V ^,          ,          ^,
          \         P                  ! V ^ ,          ) 4      \         P                  ! V ^,          ) 4      ,           ^^V,          ,           ,
          .# )g     ˆÃ@)r   Úexp)r   r4   s   & r"   Ú	F4_powellr9   Q   sR   € Ø€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$   r   Úcgsc                 óH   € \        V ^\        P                  ! . RO4      4      # )é   )r   r   r   r   )r   r   r2   r(   s   &r"   ÚF5r=   a   s   € Ü˜A˜q¤"§(¢(Ò+;Ó"<Ó=Ð=r$   c           	      ód  € V w  r\         P                  ! RR.RR..4      p\         P                  ! V^,           V^,          ^,
          ,          ^,           \         P                  ! V\         P                  ! V4      ,          ^,
          4      .4      p\         P                  P                  W44      ) # )g /Ý$@gffffff-@g+åÌ,Ýê?gr•þ�D0ã?g /Ý$À)r   r2   Úsinr8   ÚlinalgÚsolve)r   Úx1Úx2ÚJ0Úvs   &    r"   ÚF6rF   p   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$   gffffffö?c                   óŠ  a € ] tR t^†t o RtRR ltRR lt]P                  P                  R 4       t
]P                  P                  R4      R 4       t]P                  P                  R4      ]P                  P                  R. RO4      R 4       4       t]P                  P                  R4      R	 4       tR
 tR tR tRtV tR# )Ú
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                ó”  € V\         R ,          8X  dj   R Fc  pWAP                  9   d   K  V! WP                  VRV^È^ R7      p\        \        P
                  ! V! V4      4      P                  4       V8  4       Ke  	  V! WP                  V^È^ R7      p\        \        P
                  ! V! V4      4      P                  4       V8  4       R# )r   N)ÚmethodÚline_searchÚf_tolÚmaxiterÚverbose)rL   rM   rN   ©ÚgmresÚbicgstabr:   r   Útfqmr)ÚSOLVERSÚJAC_KSP_BADÚxinr   r   ÚabsoluteÚmax)Úselfr!   ÚfuncrL   rJ   r   s   &&&&  r"   Ú_check_nonlin_funcÚTestNonlin._check_nonlin_func�   sž   € à”7˜8Õ$Ô$ÛI�ØŸ]™]Ô*Ùá˜ŸE™E¨&¸dØ$¨c¸1ô>�äœŸš¡A a£DÓ)×-Ñ-Ó/°%Ñ7Ö8ñ Jñ �—E‘E °¸QÔ?ˆÜ”—’™A˜a›DÓ!×%Ñ%Ó'¨%Ñ/Ö0r$   c                ó²  € VR 8X  dx   R Fq  pWAP                   9   d   K  \        WP                  VRVR^ÈR^ RRV//R7      p\        \        P
                  ! VP                  4      P                  4       V8  4       Ks  	  \        WP                  VRVR^ÈR^ /R7      p\        \        P
                  ! VP                  4      P                  4       V8  4       R# )	r   ÚftolrM   ÚdispÚjac_optionsrJ   ©rJ   ÚoptionsNrO   )ÚROOT_JAC_KSP_BADr   rU   r   r   rV   ÚfunrW   )rX   r!   rJ   rL   Ú
jac_methodÚress   &&&&  r"   Ú_check_rootÚTestNonlin._check_root�   sÂ   € à�XÔÛM�
Ø×!3Ñ!3Ô3Ùä˜1Ÿe™e¨FØ$*¨E°9¸cØ$*¨AØ$1°H¸jÐ3Ið$KôL�ô œŸš C§G¡GÓ,×0Ñ0Ó2°UÑ:Ö;ñ Nô �1—e‘e FØ" E¨9°c¸6À1ÐEôGˆä”—’˜CŸG™GÓ$×(Ñ(Ó*¨UÑ2Ö3r$   c                ó   € R # r&   r'   )rX   ÚaÚkws   &*,r"   Ú_check_func_failÚTestNonlin._check_func_fail®   s   € ár$   zignore::DeprecationWarningc                óJ  € \         \        \        \        \        \
        \        3 Fy  p\        P                  4        F^  pW!P                  P                  4       9   d-   V\        P                  4       9   d   V P                  W4       KM  V P                  W4       K`  	  K{  	  R # r&   )r#   r)   r,   r6   r9   r=   rF   rS   ÚvaluesÚ	KNOWN_BADÚ	MUST_WORKrk   rZ   )rX   r!   rY   s   &  r"   Útest_problem_nonlinÚTestNonlin.test_problem_nonlin²   so   € ä”Rœ¤2¤y´"´bÓ9ˆAÜŸ™Ö(�ØŸ;™;×-Ñ-Ó/Ô/Øœy×/Ñ/Ó1Ô1Ø×-Ñ-¨aÔ6ÙØ×'Ñ'¨Ö0ó )ó :r$   rJ   c           
     óª   a € R S n         V 3R lp\        P                  ! \        \        P                  VR^È^ VR7       \        S P                   4       R# )Fc                 óZ   <€ R Sn         \        P                  ! V 4      P                  4       # )T)Ú_tol_norm_usedr   rV   rW   )r   rX   s   &€r"   Úlocal_norm_funcÚ8TestNonlin.test_tol_norm_called.<locals>.local_norm_funcÃ   s"   ø€ Ø"&ˆDÔÜ—;’;˜q“>×%Ñ%Ó'Ð'r$   r   )rJ   rL   rM   rN   Útol_normN)ru   ÚnonlinÚnewton_krylovr#   rU   r   )rX   rJ   rv   s   f& r"   Útest_tol_norm_calledÚTestNonlin.test_tol_norm_called¼   sF   ø€ ð
 $ˆÔõ	(ô 	×ÒœQ¤§¡¨f¸DØ%(°!Ø&5õ	7ô 	�×#Ñ#Ö$r$   c                óö   € \         \        \        \        \        \
        \        3 FO  p\         FB  pW!P                  9   d   V\        9   d   V P                  W4       K1  V P                  W4       KD  	  KQ  	  R # r&   )r#   r)   r,   r6   r9   r=   rF   rS   ro   rp   rk   rf   )rX   r!   Úmeths   &  r"   Útest_problem_rootÚTestNonlin.test_problem_rootÌ   sV   € ä”Rœ¤2¤y´"´bÓ9ˆAß�ØŸ;™;Ô&ØœyÔ(Ø×-Ñ-¨aÔ6ÙØ× Ñ  Ö)ó  ó :r$   c                óæ   € R  p\         P                  ! \        P                  P                  4      ;_uu_ 4        \
        P                  ! V^ .^R7       RRR4       R#   + '       g   i     R# ; i)c                 ó   € R V ,           # )g     @�@r'   r(   s   &r"   Úwont_convergeÚ5TestNonlin.test_no_convergence.<locals>.wont_converge×   s   € Ø˜•7ˆNr$   )rU   rM   N)ÚpytestÚraisesÚscipyÚoptimizeÚNoConvergencery   rz   )rX   rƒ   s   & r"   Útest_no_convergenceÚTestNonlin.test_no_convergenceÖ   sE   € ò	ô �]Š]œ5Ÿ>™>×7Ñ7×8Õ8Ü× Ò  °Q°CÀÕC÷ 9×8×8Ò8ús   ºAÁA0	c           	     ó–  € \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! \
        \
        P                  RRR7       RRR4       \        P                  ! \
        \
        P                  R^dR R7       R	 p\        P                  ! \
        \
        P                  VR
7       R#   + '       g   i     Ln; i)zØ
Test for ENH #21986, for behavior of `nonlin.newton_krylov`
Test the following scenarios:
1. Raise warning for invalid inner param
2. No warning for valid inner param
3. No warning for user-provided callable method
z'Please check inner method documentation©Úmatchr   çñhãˆµøä>)rJ   Ú
inner_atolNc                 ó   € R # ).r'   )Ú_s   &r"   Ú<lambda>Ú>TestNonlin.test_warnings_invalid_inner_param.<locals>.<lambda>î   s   € ¹r$   )rJ   Úinner_maxiterÚinner_callbackc                ó   € \        W3/ VB # )z2A dummy user-provided callable method for testing.r
   )ÚopÚrhsÚkwargss   &&,r"   Ú'user_provided_callable_method_enh_21986Ú]TestNonlin.test_warnings_invalid_inner_param.<locals>.user_provided_callable_method_enh_21986ñ   s   € ô ˜"Ñ, VÑ,Ð,r$   )rJ   )r…   ÚwarnsÚUserWarningry   rz   r#   rU   )rX   r›   s   & r"   Ú!test_warnings_invalid_inner_paramÚ,TestNonlin.test_warnings_invalid_inner_paramÝ   s‡   € ô �\Š\œ+Ø I÷Kö Kä× Ò ¤¤A§E¡E°(ÀtÕL÷Kô 	×ÒœQ¤§¡¨hÀcÙ-;õ	=ò	-ô
 	×ÒœQ¤§¡Ø$K÷	M÷K÷ Kús   ¥-B8Â8C	c           	     óà   € \         P                  ! \        R R7      ;_uu_ 4        \        P                  ! \
        \
        P                  RRR7       RRR4       R#   + '       g   i     R# ; i)zUnknown parameterr�   r   r�   )rJ   Úinvalid_paramN)r…   r†   Ú
ValueErrorry   rz   r#   rU   ©rX   s   &r"   Útest_non_inner_prefixÚ TestNonlin.test_non_inner_prefixù   sG   € Ü�]Š]œ:Ø!4÷ö ô × Ò ¤¤A§E¡E°(È$ÕO÷	÷ ÷ ò ús   ¥-AÁA-	)ru   N)r   )ÚlgmresrP   rQ   r:   r   rR   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rZ   rf   r…   ÚmarkÚxfailrk   Úfilterwarningsrq   Úparametrizer{   r   rŠ   rŸ   r¥   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r"   rH   rH   †   sÔ   ø‡ € ñô1ô4ð" ‡[�[×Ññó ðð ‡[�[×ÑÐ <Ó=ñ1ó >ð1ð ‡[�[×ÑÐ <Ó=Ø‡[�[×Ñ˜Xò (;ó <ñ%ó<ó >ð%ð ‡[�[×ÑÐ <Ó=ñ*ó >ð*òDòM÷8Pð Pr$   rH   c                   óÈ  a€ ] tR tRt oRt]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      .t] U u. uF  q ^,          ^,
          NK  	  up tRR lt	R t
R tR tR tR tR	tVtR
# u up i )Ú
TestSecanti  zDCheck that some Jacobian approximations satisfy the secant conditionc           
     ó2  € V! R/ VB pVP                  V P                  ^ ,          V P                  ^ ,          R4       \        \	        V P                  R,          V P                  R,          4      4       EF�  w  pw  rgVP                  Wg4       \        \        W%^,           4      4       F­  pV P                  WX,
          ^,           ,          V P                  WX,
          ,          ,
          p	V P                  WX,
          ^,           ,          V P                  WX,
          ,          ,
          p
\        \        P                  ! W”P                  V
4      4      4       K¯  	  WR8¼  g   Kî  V P                  WR,
          ^,           ,          V P                  WR,
          ,          ,
          p	V P                  WR,
          ^,           ,          V P                  WR,
          ,          ,
          p
\        \        P                  ! W”P                  V
4      4      '       * 4       EK   	  R# )zd
Check that the given Jacobian approximation satisfies secant
conditions for last `npoints` points.
Nºr   NNr'   )ÚsetupÚxsÚfsÚ	enumerateÚzipÚupdateÚrangeÚminr   r   ÚallcloserA   )rX   Újac_clsÚnpointsrj   ÚjacÚjr   r!   ÚkÚdxÚdfs   &&&,       r"   Ú_check_secantÚTestSecant._check_secant  sH  € ñ
 ‰m˜‰mˆØ�	‰	�$—'‘'˜!•*˜dŸg™g a�j¨$Ô/Ü"¤3 t§w¡w¨r¥{°D·G±G¸BµKÓ#@×A‰IˆA‰v�Ø�J‰J�qÔäœ3˜w¨!­Ó,Ö-�Ø—W‘W˜Q�S �U•^ d§g¡g¨a­c¥lÕ2�Ø—W‘W˜Q�S �U•^ d§g¡g¨a­c¥lÕ2�ÜœŸš B¯	©	°"«Ó6Ö7ñ .ð Ž|Ø—W‘W˜Q�Y q�[Õ)¨D¯G©G°AµIÕ,>Õ>�Ø—W‘W˜Q�Y q�[Õ)¨D¯G©G°AµIÕ,>Õ>�ÜœBŸKšK¨¯I©I°b«MÓ:Ô:×;ó Br$   c                óD   € V P                  \        P                  4       R # r&   )rÉ   ry   ÚBroydenFirstr¤   s   &r"   Útest_broyden1ÚTestSecant.test_broyden1#  s   € Ø×Ñœ6×.Ñ.Ö/r$   c                óD   € V P                  \        P                  4       R # r&   )rÉ   ry   ÚBroydenSecondr¤   s   &r"   Útest_broyden2ÚTestSecant.test_broyden2&  s   € Ø×Ñœ6×/Ñ/Ö0r$   c           
     óÀ  € \         P                  ! R R7      pVP                  V P                  ^ ,          V P                  ^ ,          R4       \
        P                  ! ^4      R,          p\        \        V P                  R,          V P                  R,          4      4       F¹  w  pw  rEWPP                  V,          ,
          pW@P                  V,          ,
          pW&\        W'4      ,
          R,          VR	,          ,          \        Ww4      ,          ,          pVP                  WE4       \        \
        P                  ! VP                  4       VRRR7      4       K»  	  R# )
çš™™™™™¹?©ÚalphaNr¸   ç»½×Ùß|Û=ç‚vIhÂ%<=©ÚrtolÚatolg      $À©ºNNNN©NrÝ   )ry   rÌ   r¹   rº   r»   r   Úidentityr¼   r½   r   r¾   r   rÁ   Útodense)rX   rÄ   ÚBÚlast_jr   r!   rÈ   rÇ   s   &       r"   Útest_broyden1_updateÚTestSecant.test_broyden1_update)  sá   € ä×!Ò!¨Ô,ˆØ�	‰	�$—'‘'˜!•*˜dŸg™g a�j¨$Ô/ä�KŠK˜‹N˜fÕ%ˆä'¬¨D¯G©G°B­K¸¿¹À½Ó(EÖF‰NˆF‘F�QØ—W‘W˜V•_Õ$ˆBØ—W‘W˜V•_Õ$ˆBØ”s˜1“z•/ 7Õ+¨b°­kÕ9¼CÀ»KÕGÕGˆAØ�J‰J�qÔÜ”B—K’K §¡£¨q°uÀ5ÔIÖJó Gr$   c           
     óÒ  € \         P                  ! R R7      pVP                  V P                  ^ ,          V P                  ^ ,          R4       \
        P                  ! ^4      R,          p\        \        V P                  R,          V P                  R,          4      4       FÂ  w  pw  rEWPP                  V,          ,
          pW@P                  V,          ,
          pW'\        W&4      ,
          R,          VR	,          ,          \        Wf4      ,          ,          pVP                  WE4       \        \
        P                  ! VP                  4       \        V4      RRR7      4       KÄ  	  R# )
rÔ   rÕ   Nr¸   r×   rØ   rÙ   gš™™™™™¹¿rÜ   rÞ   )ry   rÐ   r¹   rº   r»   r   rß   r¼   r½   r   r¾   r   rÁ   rà   r	   )rX   rÄ   ÚHrâ   r   r!   rÈ   rÇ   s   &       r"   Útest_broyden2_updateÚTestSecant.test_broyden2_update7  så   € ä×"Ò"¨Ô-ˆØ�	‰	�$—'‘'˜!•*˜dŸg™g a�j¨$Ô/ä�KŠK˜‹N˜dÕ#ˆä'¬¨D¯G©G°B­K¸¿¹À½Ó(EÖF‰NˆF‘F�QØ—W‘W˜V•_Õ$ˆBØ—W‘W˜V•_Õ$ˆBØ”s˜1“z•/ 7Õ+¨b°­kÕ9¼CÀ»KÕGÕGˆAØ�J‰J�qÔÜ”B—K’K §¡£¬s°1«v¸EÈÔNÖOó Gr$   c                óL   € V P                  \        P                  ^^ ^R7       R# )r   )ÚMÚw0rÃ   N)rÉ   ry   ÚAndersonr¤   s   &r"   Útest_andersonÚTestSecant.test_andersonE  s   € ð
 	×Ñœ6Ÿ?™?¨a°A¸qÐÖAr$   r'   N)ç      ð?ç       @r1   ç      @ç      @)rð   r1   rñ   rò   rï   )r1   rñ   rò   rï   rð   )rñ   rò   rï   rð   r1   )ç      "@rï   ró   rï   r1   )r/   rï   ró   rï   r1   )rò   rò   ç      @rï   rï   )rï   rð   rô   rò   rï   )r   )r¨   r©   rª   r«   r¬   r   r2   rº   r»   rÉ   rÍ   rÑ   rã   rç   rí   r±   r²   )r   r´   s   0@r"   r¶   r¶     sÂ   ø‡ € ÙNà
�(Š(Ò'Ó
(Ø
�(Š(Ò'Ó
(Ø
�(Š(Ò'Ó
(Ø
�(Š(Ò'Ó
(Ø
�(Š(Ò'Ó
(Ø
�(Š(Ò'Ó
(Ø
�(Š(Ò'Ó
(Ø
�(Š(Ò'Ó
(ð
+€Bñ Ó	™B�qˆQ�$��(ˆ(™BÑ	€Bô<ò*0ò1òKòP÷Bð Bùòs 
 s   Â*Cr¶   c                   óX   a € ] tR tRt o RtRR ltR tR tR tR t	R t
R	 tR
 tRtV tR# )Ú
TestLineariM  zYSolve a linear equation;
some methods find the exact solution in a finite number of stepsc           
     óò  a	a
€ \         P                  P                  ^{4      pVP                  W"34      o	V'       d!   S	RVP                  W"34      ,          ,           o	VP                  V4      o
V'       d    S
RVP                  V4      ,          ,           o
V	V
3R lp\        P
                  ! V\         P                  ! V4      WRR^ R7      p\        \         P                  ! \        S	V4      S
RR7      4       R# )é{   ù              ð?c                 ó*   <€ \        SV 4      S,
          # r&   ©r   r3   s   &€€r"   rY   ÚTestLinear._check.<locals>.func[  s   ø€ Ü�q˜!“9˜q•=Ð r$   ç�íµ ÷Æ°>N©rM   rL   rK   rN   ©rÛ   )
r   ÚrandomÚdefault_rngÚstandard_normalry   Únonlin_solveÚzerosr   rÁ   r   )rX   rÄ   ÚNrM   Úcomplexrj   ÚrngrY   Úsolr4   r5   s   &&&&&,   @@r"   Ú_checkÚTestLinear._checkQ  s½   ù€ Ü�i‰i×#Ñ# CÓ(ˆà×Ñ  Ó'ˆßØ�B�s×*Ñ*¨A¨6Ó2Õ2Õ2ˆAØ×Ñ Ó"ˆßØ�B�s×*Ñ*¨1Ó-Õ-Õ-ˆAö	!ô ×!Ò! $¬¯ª°«°SØ(,¸$ÈôKˆä”—’œC  3›K¨°Ô6Ö7r$   c                óª   € V P                  \        P                  ! R R7      ^^)R4       V P                  \        P                  ! R R7      ^^)R4       R# ©rï   rÕ   FTN)r	  ry   rÌ   r¤   s   &r"   rÍ   ÚTestLinear.test_broyden1b  s<   € à�‰”F×'Ò'¨cÔ2°B¸¸EÔBØ�‰”F×'Ò'¨cÔ2°B¸¸DÖAr$   c                óª   € V P                  \        P                  ! R R7      ^^)R4       V P                  \        P                  ! R R7      ^^)R4       R# r  )r	  ry   rÐ   r¤   s   &r"   rÑ   ÚTestLinear.test_broyden2g  s<   € à�‰”F×(Ò(¨sÔ3°R¸¸UÔCØ�‰”F×(Ò(¨sÔ3°R¸¸TÖBr$   c                ó®   € V P                  \        P                  ! ^2RR7      ^^R4       V P                  \        P                  ! ^2RR7      ^^R4       R# )é2   rï   )rê   rÖ   FTN)r	  ry   rì   r¤   s   &r"   rí   ÚTestLinear.test_andersonl  s<   € à�‰”F—O’O b°Ô4°b¸"¸eÔDØ�‰”F—O’O b°Ô4°b¸"¸dÖCr$   c                ó–   € V P                  \        P                  ^^R^
R7       V P                  \        P                  ^^R^
R7       R# )é   F)Úinner_mTN)r	  ry   ÚKrylovJacobianr¤   s   &r"   Útest_krylovÚTestLinear.test_krylovq  s:   € à�‰”F×)Ñ)¨2¨q°%ÀˆÔDØ�‰”F×)Ñ)¨2¨q°$ÀˆÖCr$   c           
     óÐ  aa€ VV3R  lpV3R lp\         P                  ! V\        P                  ! SP                  ^ ,          4      V^RR^ R7      p\        P
                  P                  SV,          SRR7       \         P                  ! V\        P                  ! SP                  ^ ,          4      S^RR^ R7      p\        P
                  P                  SV,          SRR7       R# )c                 ó4   <€ SP                  V 4      S,
          # r&   rû   r3   s   &€€r"   rY   Ú'TestLinear._check_autojac.<locals>.funcw  s   ø€ Ø—5‘5˜“8˜a•<Ðr$   c                 ó   <€ S# r&   r'   )rE   r4   s   &€r"   rÄ   Ú&TestLinear._check_autojac.<locals>.jacz  s   ø€ ØˆHr$   rý   Nrþ   rÿ   )ry   r  r   r  ÚshapeÚtestingÚassert_allclose)rX   r4   r5   rY   rÄ   r  s   &ff   r"   Ú_check_autojacÚTestLinear._check_autojacv  s«   ù€ ö	 õ	ô ×!Ò! $¬¯ª°·±¸µÓ(<¸cÈ1Ø(,¸$ÈôKˆä
�
‰
×"Ñ" 1 s¥7¨A°DÐ"Ô9ä×!Ò! $¬¯ª°·±¸µÓ(<¸aÈØ(,¸$ÈôKˆä
�
‰
×"Ñ" 1 s¥7¨A°DÐ"Ö9r$   c                óº   € \        ^^.^^..4      p\        P                  ! ^R.4      pV P                  W4       V P                  RV,          RV,          4       R# ©r   Néÿÿÿÿy      ð?       @y       @       @)r   r   r2   r!  ©rX   r4   r5   s   &  r"   Útest_jac_sparseÚTestLinear.test_jac_sparse…  sQ   € Ü˜˜1�v  1˜vÐ&Ó'ˆÜ�HŠH�a˜�WÓˆØ×Ñ˜AÔ!Ø×Ñ˜V q�L¨6°Q­,Ö7r$   c                óÐ   € \         P                  ! ^^.^^..4      p\         P                  ! ^R.4      pV P                  W4       V P                  RV,          RV,          4       R# r$  )r   r2   r!  r&  s   &  r"   Útest_jac_ndarrayÚTestLinear.test_jac_ndarray‹  sU   € Ü�HŠH�q˜!�f˜q !˜fÐ%Ó&ˆÜ�HŠH�a˜�WÓˆØ×Ñ˜AÔ!Ø×Ñ˜V q�L¨6°Q­,Ö7r$   r'   N)F)r¨   r©   rª   r«   r¬   r	  rÍ   rÑ   rí   r  r!  r'  r*  r±   r²   r³   s   @r"   rö   rö   M  s<   ø‡ € ñHô8ò"Bò
Cò
Dò
Dò
:ò8÷8ð 8r$   rö   c                   ób   a € ] tR tRt o RtRR ltRR ltR tR tR t	R	 t
R
 tR tR tRtV tR# )ÚTestJacobianDotSolvei’  zH
Check that solve/dot methods in Jacobian approximations are consistent
Nc                óX   € V^,          ^,
          \         P                  ! W!4      ,           # )r   )r   r   )rX   r   r4   s   &&&r"   Ú_funcÚTestJacobianDotSolve._func—  s   € Ø�!�t�a�xœ"Ÿ&š& ›,Õ&Ð&r$   c           	     ó  aaa€ \         P                  P                  ^{4      o^pVV3R lpV3R lpV! WU4      pSP                  V4      p	V! R/ VB p
V
P                  W�P	                  W˜4      \        V P                  VR7      4       \        ^V,          4       EFk  pV! V4      p\        V
R4      '       Ede   \         P                  ! V
4      p\        V
R4      '       d:   V
P                  V4      p\         P                  P                  WÜ4      pV! WïR4       \        V
R4      '       dS   V
P                  V4      p\         P                  P                  VP                  P                  4       V4      pV! WïR4       \        V
R	4      '       d2   V
P                  V4      p\         P                  ! WÜ4      pV! VVR
4       \        V
R4      '       dK   V
P!                  V4      p\         P                  ! VP                  P                  4       V4      pV! VVR4       \        V
R	4      '       dN   \        V
R4      '       d<   V
P                  V4      pV
P                  V
P                  V4      4      pV! VVR4       \        V
R4      '       dN   \        V
R4      '       d<   V
P!                  V4      pV
P!                  V
P                  V4      4      pV! VVR4       V! V4      pV
P#                  VV P	                  VV4      4       EKn  	  R# )rø   c                  óx   <€ SP                  V 4      pS'       d    VR SP                  V 4      ,          ,           pV# )rù   )r   )ri   Úqr  r  s   * €€r"   ÚrandÚ-TestJacobianDotSolve._check_dot.<locals>.randŸ  s/   ø€ Ø—
‘
˜1“ˆAßØ˜˜3Ÿ:™: a›=Õ(Õ(�ØˆHr$   c                 óÂ   <€ \        W,
          4      P                  4       pS\        V4      P                  4       S,          ,           pW48”  d   \        V R VR 24      hR# )z: err ÚgN)ÚabsrW   ÚAssertionError)ri   r5   Úmsgr   r!   Útols   &&&  €r"   Úassert_closeÚ5TestJacobianDotSolve._check_dot.<locals>.assert_close¥  sP   ø€ Ü�A•E“
—‘Ó ˆAØ”c˜!“f—j‘j“l 3Õ&Õ&ˆAØŒuÜ$¨ u¨F°1°Q°%Ð%8Ó9Ð9ñ r$   )r4   Ú	__array__rA   zsolve vs arrayÚrsolvezrsolve vs arrayÚmatveczdot vs arrayÚrmatveczrmatvec vs arrayzdot vs solvezrmatvec vs rsolveNr'   )r   r   r  r¹   r/  r   r¿   Úhasattrr2   rA   r@   r?  r   Úconjr@  r   rA  r¾   )rX   rÂ   r  r;  rj   r  r4  r<  r4   Úx0rÄ   rÆ   rE   ÚJdÚGvÚGv2ÚJvÚJv2r   r  s   &&ff,              @r"   Ú
_check_dotÚTestJacobianDotSolve._check_dotš  sF  ú€ Ü�i‰i×#Ñ# CÓ(ˆàˆö	õ	:ñ �‹Jˆð �Z‰Z˜‹]ˆÙ‰m˜‰mˆØ�	‰	�"—j‘j Ó'¬°·±¸qÔ)AÔBô �q˜•s—ˆAÙ�Q“ˆAä�s˜K×(Ó(Ü—X’X˜c“]�Ü˜3 ×(Ò(ØŸ™ 1›�BÜŸ)™)Ÿ/™/¨"Ó0�CÙ  Ð*:Ô;Ü˜3 ×)Ò)ØŸ™ A›�BÜŸ)™)Ÿ/™/¨"¯$©$¯)©)«+°qÓ9�CÙ  Ð*;Ô<Ü˜3 ×)Ò)ØŸ™ A›�BÜŸ&š& ›-�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Ò+AØ—[‘[ “^�Ø—k‘k #§*¡*¨R£.Ó1�Ù˜R Ð&9Ô:á�Q“ˆAØ�J‰J�q˜$Ÿ*™* Q¨Ó*×+óC r$   c                óŠ   € V P                  \        P                  R R7       V P                  \        P                  RR7       R# ©F)r  TN)rJ  ry   rÌ   r¤   s   &r"   rÍ   Ú"TestJacobianDotSolve.test_broyden1Ö  ó.   € Ø�‰œ×+Ñ+°UˆÔ;Ø�‰œ×+Ñ+°TˆÖ:r$   c                óŠ   € V P                  \        P                  R R7       V P                  \        P                  RR7       R# rM  )rJ  ry   rÐ   r¤   s   &r"   rÑ   Ú"TestJacobianDotSolve.test_broyden2Ú  s.   € Ø�‰œ×,Ñ,°eˆÔ<Ø�‰œ×,Ñ,°dˆÖ;r$   c                óŠ   € V P                  \        P                  R R7       V P                  \        P                  RR7       R# rM  )rJ  ry   rì   r¤   s   &r"   rí   Ú"TestJacobianDotSolve.test_andersonÞ  s*   € Ø�‰œŸ™°ˆÔ7Ø�‰œŸ™°ˆÖ6r$   c                óŠ   € V P                  \        P                  R R7       V P                  \        P                  RR7       R# rM  )rJ  ry   ÚDiagBroydenr¤   s   &r"   Útest_diagbroydenÚ%TestJacobianDotSolve.test_diagbroydenâ  s.   € Ø�‰œ×*Ñ*°EˆÔ:Ø�‰œ×*Ñ*°DˆÖ9r$   c                óŠ   € V P                  \        P                  R R7       V P                  \        P                  RR7       R# rM  )rJ  ry   ÚLinearMixingr¤   s   &r"   Útest_linearmixingÚ&TestJacobianDotSolve.test_linearmixingæ  rO  r$   c                óŠ   € V P                  \        P                  R R7       V P                  \        P                  RR7       R# rM  )rJ  ry   ÚExcitingMixingr¤   s   &r"   Útest_excitingmixingÚ(TestJacobianDotSolve.test_excitingmixingê  s.   € Ø�‰œ×-Ñ-°uˆÔ=Ø�‰œ×-Ñ-°tˆÖ<r$   c                óŽ   € V P                  \        P                  R RR7       V P                  \        P                  RRR7       R# )Fgü©ñÒMbP?)r  r;  TN)rJ  ry   r  r¤   s   &r"   r  Ú TestJacobianDotSolve.test_krylovî  s2   € Ø�‰œ×-Ñ-°uÀ$ˆÔGØ�‰œ×-Ñ-°tÀˆÖFr$   r'   r&   )Frý   )r¨   r©   rª   r«   r¬   r/  rJ  rÍ   rÑ   rí   rV  rZ  r^  r  r±   r²   r³   s   @r"   r-  r-  ’  s?   ø‡ € ñô'ô:,òx;ò<ò7ò:ò;ò=÷Gð Gr$   r-  c                   ól   a € ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tRtV tR# )ÚTestNonlinOldTestsió  z°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                óø   € \         P                  ! \        \        P                  ^^R7      p\	        \         P
                  ! V4      R8  4       \	        \         P
                  ! \        V4      4      R8  4       R# ©é   ©ÚiterrÖ   ç•Ö&è.>N)ry   r   r#   rU   r   Únorm©rX   r   s   & r"   rÍ   Ú TestNonlinOldTests.test_broyden1ù  óI   € Ü�OŠOœAœqŸu™u¨2°QÔ7ˆÜ”—’˜A“ Ñ%Ô&Ü”—’œA˜a›DÓ! DÑ(Ö)r$   c                óø   € \         P                  ! \        \        P                  ^^R7      p\	        \         P
                  ! V4      R8  4       \	        \         P
                  ! \        V4      4      R8  4       R# re  )ry   r   r#   rU   r   rj  rk  s   & r"   rÑ   Ú TestNonlinOldTests.test_broyden2þ  rm  r$   c                ó¤   € \         P                  ! \        \        P                  ^R^R7      p\	        \         P
                  ! V4      R8  4       R# )rf  ç¸…ëQ¸ž?)rh  rÖ   rê   ç…ëQ¸Õ?N)ry   r   r#   rU   r   rj  rk  s   & r"   rí   Ú TestNonlinOldTests.test_anderson  s1   € Ü�OŠOœAœqŸu™u¨2°T¸QÔ?ˆÜ”—’˜A“ Ñ%Ö&r$   c                óø   € \         P                  ! \        \        P                  ^<RR7      p\	        \         P
                  ! V4      R8  4       \	        \         P
                  ! \        V4      4      R8  4       R# )é<   r   rg  çH¯¼šò×z>N)ry   r   r#   rU   r   rj  rk  s   & r"   rZ  Ú$TestNonlinOldTests.test_linearmixing  sK   € Ü×Ò¤¤1§5¡5¨r¸Ô=ˆÜ”—’˜A“ Ñ%Ô&Ü”—’œA˜a›DÓ! DÑ(Ö)r$   c                óø   € \         P                  ! \        \        P                  ^RR7      p\	        \         P
                  ! V4      R8  4       \	        \         P
                  ! \        V4      4      R8  4       R# )r  r   rg  r�   N)ry   r   r#   rU   r   rj  rk  s   & r"   Útest_excitingÚ TestNonlinOldTests.test_exciting  sK   € Ü×!Ò!¤!¤Q§U¡U°¸3Ô?ˆÜ”—’˜A“ Ñ%Ô&Ü”—’œA˜a›DÓ! DÑ(Ö)r$   c                óø   € \         P                  ! \        \        P                  ^^R7      p\	        \         P
                  ! V4      R8  4       \	        \         P
                  ! \        V4      4      R8  4       R# )é   rg  ç:Œ0âŽyE>N)ry   r   r#   rU   r   rj  rk  s   & r"   rV  Ú#TestNonlinOldTests.test_diagbroyden  sK   € Ü×Òœq¤!§%¡%¨b¸Ô:ˆÜ”—’˜A“ Ñ%Ô&Ü”—’œA˜a›DÓ! DÑ(Ö)r$   c           
     ó  € \        \        \        P                  R R^RR^//R7      p\        \        P
                  ! VP                  4      R8  4       \        \        P
                  ! VP                  4      R8  4       R# )r   Únitr_   rÖ   r`   ri  N©r   r#   rU   r   ry   rj  r   rc   ©rX   re   s   & r"   Útest_root_broyden1Ú%TestNonlinOldTests.test_root_broyden1  ó[   € Ü”1”a—e‘e JØ! 2 }°wÀ°lÐCôEˆä”—’˜CŸE™EÓ" TÑ)Ô*Ü”—’˜CŸG™GÓ$ tÑ+Ö,r$   c           
     ó  € \        \        \        P                  R R^RR^//R7      p\        \        P
                  ! VP                  4      R8  4       \        \        P
                  ! VP                  4      R8  4       R# )r   r€  r_   rÖ   r`   ri  Nr�  r‚  s   & r"   Útest_root_broyden2Ú%TestNonlinOldTests.test_root_broyden2  r…  r$   c                ó°   € \        \        \        P                  R R^RRRR^//R7      p\        \        P
                  ! VP                  4      R8  4       R# )	r   r€  r_   rÖ   rq  rê   r`   rr  N)r   r#   rU   r   ry   rj  r   r‚  s   & r"   Útest_root_andersonÚ%TestNonlinOldTests.test_root_anderson"  sL   € Ü”1”a—e‘e JØ! 2Ø)¨G°T¸3ÀÐ+BðDôEˆô 	”—’˜CŸE™EÓ" TÑ)Ö*r$   c           
     ó  € \        \        \        P                  R R^<RRR//R7      p\        \        P
                  ! VP                  4      R8  4       \        \        P
                  ! VP                  4      R8  4       R# )r   r€  r_   rÖ   r   r`   rv  Nr�  r‚  s   & r"   Útest_root_linearmixingÚ)TestNonlinOldTests.test_root_linearmixing(  s_   € Ü”1”a—e‘e NØ! 2Ø)¨G°S¨>ð;ô<ˆô 	”—’˜CŸE™EÓ" TÑ)Ô*Ü”—’˜CŸG™GÓ$ tÑ+Ö,r$   c           
     ó  € \        \        \        P                  R R^RRR//R7      p\        \        P
                  ! VP                  4      R8  4       \        \        P
                  ! VP                  4      R8  4       R# )r   r€  r_   rÖ   r   r`   r�   Nr�  r‚  s   & r"   Útest_root_excitingmixingÚ+TestNonlinOldTests.test_root_excitingmixing/  s`   € Ü”1”a—e‘eÐ$4Ø! 2Ø)¨G°S¨>ð;ô<ˆô 	”—’˜CŸE™EÓ" TÑ)Ô*Ü”—’˜CŸG™GÓ$ tÑ+Ö,r$   c           
     ó  € \        \        \        P                  R R^RR^//R7      p\        \        P
                  ! VP                  4      R8  4       \        \        P
                  ! VP                  4      R8  4       R# )r   r€  r_   rÖ   r`   r}  Nr�  r‚  s   & r"   Útest_root_diagbroydenÚ(TestNonlinOldTests.test_root_diagbroyden6  s_   € Ü”1”a—e‘e MØ! 2Ø)¨G°Q¨<ð9ô:ˆô 	”—’˜CŸE™EÓ" TÑ)Ô*Ü”—’˜CŸG™GÓ$ tÑ+Ö,r$   r'   N)r¨   r©   rª   r«   r¬   rÍ   rÑ   rí   rZ  ry  rV  rƒ  r‡  rŠ  r�  r�  r“  r±   r²   r³   s   @r"   rc  rc  ó  sK   ø‡ € ñò
*ò
*ò
'ò*ò
*ò
*ò
-ò-ò+ò-ò-÷-ð -r$   rc  )r   r   r   r   r   )r   r   r   r<   é   é   )r0   r0   r0   r0   r0   r0   )r   r   r   r%  r.   >   r:   rP   rR   r   rQ   )rð   r0   r   r0   g      à¿)0r¬   Únumpy.testingr   r…   Ú	functoolsr   Úscipy.optimizer   ry   r   Úscipy.sparser   Únumpyr   r   Únumpy.linalgr	   r   r‡   Úscipy.sparse.linalgr   Útest_minpackr   r   r   r   r   r   r   rz   rS   rp   r#   rU   ro   rT   rb   r)   r,   r6   r9   r=   rF   rH   r¶   rö   r-  rc  r'   r$   r"   Ú<module>rŸ     sˆ  ðñõ "Û Ý ç 2Ý "ß Ý Û Û Ý &å *à�v—‘Ø˜&×,Ñ,Ø˜6×.Ñ.Ø˜V×2Ñ2Ø�v—‘Ø�v—‘Ø�V×)Ñ)ð+€ð ˜Ÿ™¨*°f·o±oØ˜Ÿ™¨(°F×4HÑ4HðJ€	òò 	€„Ø€„Ø€„Ø€Ô òò 
€„Ø × 3Ñ 3Ø  &×"7Ñ"7ð9€„à€„Ø€Ô òò "€„Ø€Ô Ø€Ô Ø€Ô òò 
€„Ø€„Ø€„Ø€Ô òHð
 �R�€	„Ø% v×':Ñ':Ø'¨×)>Ñ)>Ø$ f×&8Ñ&8ð:€	Ô ð "˜
€	Ô ÚL€	Ô ò>ò 
€„Ø  &×"7Ñ"7Ø × 3Ñ 3Ø˜v×1Ñ1ð3€„ð ˜Ð"€„Ø�j€Ô ò#ð �ˆ€„Ø  &×"7Ñ"7Ø × 3Ñ 3Ø˜v×1Ñ1ð3€„ð €„Ø€Ô ÷xPñ xP÷vIBñ IB÷XB8ñ B8÷J^Gñ ^G÷BH-ó H-r$   