+
    LV-jK  ã                   ó|  € R t ^ RIt^ RIHtHtHtHt ^ RIt^ RIHt	 ^ RI
t^ RI
HtHt ^ RIHtHt ^ RIHtHtHtHt R tR tR	 tR
 t ! R R]4      tR t ! R R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      t  ! R R4      t!]PD                  PG                  RR7       ! R R4      4       t$R# )zA
Unit tests for the basin hopping global minimization algorithm.
N)Úassert_almost_equalÚassert_equalÚassert_Úassert_allclose)Úraises)ÚcosÚsin)ÚbasinhoppingÚOptimizeResult)ÚStorageÚRandomDisplacementÚ
MetropolisÚAdaptiveStepsizec                 óö   € \        R V ,          R,
          4      V R,           V ,          ,           p\        P                  ! R\        R V ,          R,
          4      ,          RV ,          ,           R,           4      pW3# ©ç      -@ç333333Ó?çš™™™™™É?ç       @g      -À)r   ÚnpÚarrayr   ©ÚxÚfÚdfs   &  Úx/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/scipy/optimize/tests/test__basinhopping.pyÚfunc1dr      sV   € ÜˆD�1�H�s�NÓ˜q 3�w¨!�mÕ+€AÜ	�Š�%œ#˜d Q�h¨�nÓ-Õ-°°QµÕ6¸Õ<Ó	=€BØˆ5€Ló    c                 óÒ   € \        R V ^ ,          ,          R,
          4      V ^,          R,           V ^,          ,          ,           V ^ ,          R,           V ^ ,          ,          ,           pV# )r   r   r   )r   )r   r   s   & r   Úfunc2d_nogradr      sJ   € ÜˆD�1�Q•4�K˜#ÕÓ ! A¥$¨¥*°°!µÕ!4Õ4¸¸!½¸s½
ÀaÈÅdÕ7JÕJ€AØ€Hr   c                 óÀ  € \        R V ^ ,          ,          R,
          4      V ^,          R,           V ^,          ,          ,           V ^ ,          R,           V ^ ,          ,          ,           p\        P                  ! ^4      pR\        R V ^ ,          ,          R,
          4      ,          RV ^ ,          ,          ,           R,           V^ &   RV ^,          ,          R,           V^&   W3# r   )r   r   Úzerosr   r   s   &  r   Úfunc2dr"      s    € ÜˆD�1�Q•4�K˜#ÕÓ ! A¥$¨¥*°°!µÕ!4Õ4¸¸!½¸s½
ÀaÈÅdÕ7JÕJ€AÜ	�Š�!‹€BØ”C˜˜q �t� cÕ)Ó*Õ*¨R°!°Aµ$­YÕ6¸Õ<€B€q�EØ��1•�I˜�O€B€q�EØˆ5€Lr   c                 ó¸  € R V ^ ,          ^,          ,          R V ^ ,          ,          V ^,          ,          ,           R V ^,          ^,          ,          ,           RV ^ ,          ,          ,
          p\         P                  ! ^4      pRV ^ ,          ,          R V ^,          ,          ,           R,
          V^ &   R V ^ ,          ,          RV ^,          ,          ,           V^&   W3# )r   g      @g      @)r   r!   r   s   &  r   Úfunc2d_easyderivr$   %   s›   € ØˆAˆa�D�!�G��c˜!˜A�$•h˜q �t•mÕ# c¨!¨A­$°­'¥kÕ1°C¸¸!½µHÕ<€AÜ	�Š�!‹€BØ��!•�H�s˜1˜Q�4•xÕ #Õ%€B€q�EØ��!•�H�s˜1˜Q�4•xÕ€B€q�Eàˆ5€Lr   c                   óB   a a€ ] tR t^.t oRtV 3R ltV 3R ltRtVtV ;t	# )ÚMyTakeStep1zbuse a copy of displace, but have it set a special parameter to
make sure it's actually being used.c                ó2   <€ R V n         \        SV `	  4        R# ©FN)Úbeen_calledÚsuperÚ__init__)ÚselfÚ	__class__s   &€r   r+   ÚMyTakeStep1.__init__1   s   ø€ Ø ˆÔÜ‰ÑÖr   c                ó0   <€ R V n         \        SV `	  V4      # ©T)r)   r*   Ú__call__)r,   r   r-   s   &&€r   r1   ÚMyTakeStep1.__call__5   s   ø€ ØˆÔÜ‰wÑ Ó"Ð"r   )r)   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r+   r1   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r-   Ú__classdict__s   @@r   r&   r&   .   s   ù‡ € ñ+õ÷#õ #r   r&   c                ó„   € RpV \         P                  P                  V) V\         P                  ! V 4      4      ,          p V # )zoredo RandomDisplacement in function form without the attribute stepsize
to make sure everything still works ok
ç      à?)r   ÚrandomÚuniformÚshape)r   Úss   & r   ÚmyTakeStep2rB   :   s5   € ð 	€AØŒ�‰×	Ñ	˜A˜2˜q¤"§(¢(¨1£+Ó	.Õ.€AØ€Hr   c                   ó0   a € ] tR t^Ct o RtR tR tRtV tR# )ÚMyAcceptTestz‚pass a custom accept test

This does nothing but make sure it's being used and ensure all the
possible return values are accepted
c           	     ó’   € R V n         ^ V n        R RR\        P                  ! R4      \        P                  ! R 4      . / ^ ^.	V n        R# )Fzforce acceptTN)r)   Úncallsr   Úbool_Útestres©r,   s   &r   r+   ÚMyAcceptTest.__init__I   s>   € Ø ˆÔØˆŒØ˜~¨t´R·X²X¸d³^ÜŸš ›¨¨R°°Að7ˆŽr   c                óä   € R V n         V ;P                  ^,          un        V P                  ^,
          \        V P                  4      8  d%   V P                  V P                  ^,
          ,          # R # r0   )r)   rF   ÚlenrH   )r,   Úkwargss   &,r   r1   ÚMyAcceptTest.__call__O   sK   € ØˆÔØ�Š�qÕ�Ø�;‰;˜�?œS §¡Ó.Ô.Ø—<‘< §¡¨a¥Õ0Ð0ár   )r)   rF   rH   N©	r3   r4   r5   r6   r7   r+   r1   r8   r9   ©r;   s   @r   rD   rD   C   s   ø‡ € ñò
7÷ð r   rD   c                   ó0   a € ] tR t^Xt o RtR tR tRtV tR# )Ú
MyCallBackz‹pass a custom callback function

This makes sure it's being used. It also returns True after 10
steps to ensure that it's stopping early.

c                ó"   € R V n         ^ V n        R# r(   ©r)   rF   rI   s   &r   r+   ÚMyCallBack.__init___   s   € Ø ˆÔØˆŽr   c                ól   € R V n         V ;P                  ^,          un        V P                  ^
8X  d   R # R# )TNrT   )r,   r   r   Úaccepteds   &&&&r   r1   ÚMyCallBack.__call__c   s,   € ØˆÔØ�Š�qÕ�Ø�;‰;˜"ÔÙñ r   rT   NrO   rP   s   @r   rR   rR   X   s   ø‡ € ñò÷ð r   rR   c                   óL  a € ] tR t^jt o R tR tR tR tR tR t	R t
R t]P                  P                  ^
4      R	 4       t]P                  P                  ^(4      ]P                  P!                  R
. RO4      R 4       4       tR tR tR tR tR tR tR tR tR tRtV tR# )ÚTestBasinHoppingc                ó¬   € RRR.3V n         R\        P                  ! RR	.4      3V n        ^V n        ^dV n        RV n        RRRR/V n        RR/V n        R# )
zLTests setup.

Run tests based on the 1-D and 2-D functions described above.
ç      ð?FÚmethodúL-BFGS-BÚjacTNgö(\�ÂõÈ¿gš™™™™™¹¿)	Úx0r   r   ÚsolÚtolÚniterÚdisprM   Úkwargs_nogradrI   s   &r   Úsetup_methodÚTestBasinHopping.setup_methodl   s_   € ð
 ˜˜c˜
Ð#ˆŒØœBŸHšH f¨d ^Ó4Ð5ˆŒàˆŒàˆŒ
ØˆŒ	à ¨U°DÐ9ˆŒØ&¨
Ð3ˆÖr   c                ó¾   € ^p\        \        \        \        V P                  V,          ^R7       \        \        \        \        V P                  V,          ^R7       R# )é   )Ú	take_step)Úaccept_testN)Úassert_raisesÚ	TypeErrorr	   r"   r`   ©r,   Úis   & r   Útest_TypeErrorÚTestBasinHopping.test_TypeError|   s?   € àˆä”i¤¬v°t·w±w¸qµzØ !õ	#ô 	”i¤¬v°t·w±w¸qµzØ"#÷	%r   c                óÐ  € R p\        \        VR7      ;_uu_ 4        \        \        V P                  ^ ,          RR7       RRR4       \        \        VR7      ;_uu_ 4        \        \        V P                  ^ ,          RR7       RRR4       Rp\        \        VR7      ;_uu_ 4        \        \        V P                  ^ ,          RR7       RRR4       \        \        VR7      ;_uu_ 4        \        \        V P                  ^ ,          RR7       RRR4       R#   + '       g   i     Lã; i  + '       g   i     L±; i  + '       g   i     L}; i  + '       g   i     R# ; i)z.target_accept_rate has to be in range \(0, 1\))Úmatchç        )Útarget_accept_rateNr\   z+stepwise_factor has to be in range \(0, 1\))Ústepwise_factor)rl   Ú
ValueErrorr	   r   r`   )r,   Úmsgs   & r   Útest_input_validationÚ&TestBasinHopping.test_input_validation†   sÌ   € Ø@ˆÜœ:¨S×1Ö1Üœ §¡¨¥ÀÕC÷ 2äœ:¨S×1Ö1Üœ §¡¨¥ÀÕC÷ 2ð >ˆÜœ:¨S×1Ö1Üœ §¡¨¥¸RÕ@÷ 2äœ:¨S×1Ö1Üœ §¡¨¥¸RÕ@÷ 2Ñ1÷ 2×1úç1×1ú÷ 2×1úç1×1Ð1ús/   œ$DÁ!$D.Â($EÃ-$EÄD+	Ä.D>	ÅE	ÅE%	c                óô   € ^ p\        \        V P                  V,          V P                  V P                  V P
                  R7      p\        VP                  V P                  V,          V P                  4       R# ©é    ©Úminimizer_kwargsrc   rd   N©
r	   r   r`   rM   rc   rd   r   r   ra   rb   ©r,   ro   Úress   &  r   Útest_1d_gradÚTestBasinHopping.test_1d_grad“   sL   € àˆÜœ6 4§7¡7¨1¥:ÀÇÁØ!%§¡°$·)±)ô=ˆä˜CŸE™E 4§8¡8¨A¥;°·±Ö9r   c                ó$  € ^p\        \        V P                  V,          V P                  V P                  V P
                  R7      p\        VP                  V P                  V,          V P                  4       \        VP                  ^ 8„  4       R# ©ri   r~   N)r	   r"   r`   rM   rc   rd   r   r   ra   rb   r   Únfevr�   s   &  r   Útest_2dÚTestBasinHopping.test_2dš   s\   € àˆÜœ6 4§7¡7¨1¥:ÀÇÁØ!%§¡°$·)±)ô=ˆä˜CŸE™E 4§8¡8¨A¥;°·±Ô9Ü�—‘˜1‘Ör   c                ó(  € ^pV P                   P                  4       pRVR&   \        \        V P                  V,          W P
                  V P                  R7      p\        VP                  ^ 8„  4       \        VP                  VP                  4       R# )ri   ÚBFGSr]   r~   N)rM   Úcopyr	   r"   r`   rc   rd   r   r‡   r   Únjev)r,   ro   r   r‚   s   &   r   Ú	test_njevÚTestBasinHopping.test_njev¢   sm   € àˆØŸ;™;×+Ñ+Ó-Ðà%+Ð˜Ñ"Üœ6 4§7¡7¨1¥:Ø,<ÇJÁJØ $§	¡	ô+ˆô 	�—‘˜1‘ÔÜ�S—X‘X˜sŸx™xÖ(r   c                óX  € V P                   P                  4       pR VR&   \        \        RR.WP                  V P
                  R7      p\        \        VP                  R4      4       \        VP                  4      w  r4\        VP                  P                  VV P                  4       R# )r‹   r]   rt   r~   r_   N)rM   rŒ   r	   r$   rc   rd   r   ÚhasattrÚlowest_optimization_resultr   r   r_   rb   )r,   r   r‚   Ú_Újacobians   &    r   Útest_jacÚTestBasinHopping.test_jac®   s‰   € àŸ;™;×+Ñ+Ó-Ðà%+Ð˜Ñ"äÔ+¨c°3¨ZØ,<ÇJÁJØ $§	¡	ô+ˆô 	”˜×6Ñ6¸Ó>Ô?ô ' s§u¡uÓ-‰ˆÜ˜C×:Ñ:×>Ñ>ÀØ ŸH™Hö	&r   c                óô   € ^p\        \        V P                  V,          V P                  V P                  V P
                  R7      p\        VP                  V P                  V,          V P                  4       R# r†   )
r	   r   r`   re   rc   rd   r   r   ra   rb   r�   s   &  r   Útest_2d_nogradÚTestBasinHopping.test_2d_nograd¿   sQ   € àˆÜœ=¨$¯'©'°!­*Ø,0×,>Ñ,>Ø!%§¡°$·)±)ô=ˆô 	˜CŸE™E 4§8¡8¨A¥;°·±Ö9r   c           	     óB  € ^p. ROp\         P                   ! V P                  4      pV Fr  pWCR&   \        \        V P                  V,          VV P
                  V P                  R7      p\        VP                  V P                  V,          V P                  4       Kt  	  R# )ri   r]   r~   N)ÚCGr‹   z	Newton-CGr^   ÚTNCÚSLSQP)rŒ   rM   r	   r"   r`   rc   rd   r   r   ra   rb   )r,   ro   Úmethodsr   r]   r‚   s   &     r   Útest_all_minimizersÚ$TestBasinHopping.test_all_minimizersÇ   sx   € ð ˆÚIˆÜŸ9š9 T§[¡[Ó1ÐÛˆFØ)/˜XÑ&Üœv t§w¡w¨q¥zØ0@Ø%)§Z¡Z°d·i±iôAˆCô   §¡ t§x¡x°¥{°D·H±HÖ=ó r   r]   c           	     óJ  € ^pV P                   P                  4       pWR&   VR9   d   ^
MV P                  p\        \        V P
                  V,          VW@P                  RR7      pVR8X  d   ^MV P                  p\        VP                  V P                  V,          VR7       R# )ri   r]   ÚCOBYLAéÒ  )r   rc   rd   Úseed)ÚdecimalN)r¢   ÚCOBYQA)re   rŒ   rc   r	   r   r`   rd   rb   r   r   ra   )r,   r]   ro   r   rc   r‚   rb   s   &&     r   Útest_all_nograd_minimizersÚ+TestBasinHopping.test_all_nograd_minimizersÕ   sˆ   € ð ˆØ×-Ñ-×2Ñ2Ó4ÐØ%+˜Ñ"àÐ 4Ô4‘¸$¿*¹*ˆäœ=¨$¯'©'°!­*Ø-=Ø"'¯i©i¸dôDˆð ˜XÔ%‰a¨4¯8©8ˆÜ˜CŸE™E 4§8¡8¨A¥;¸×<r   c           	     óz  € \        4       pVP                  p^p\        \        V P                  V,          V P
                  V P                  V P                  VR7      p\        VP                  V P                  V,          V P                  4       \        VP                  4       \        W!P                  8g  4       R# ©ri   )r   rc   rd   rj   N)r&   Ústepsizer	   r"   r`   rM   rc   rd   r   r   ra   rb   r   r)   )r,   ÚtakestepÚinitial_step_sizero   r‚   s   &    r   Útest_pass_takestepÚ#TestBasinHopping.test_pass_takestepé   s†   € ô “=ˆØ$×-Ñ-ÐØˆÜœ6 4§7¡7¨1¥:ÀÇÁØ!%§¡°$·)±)Ø%-ô/ˆô 	˜CŸE™E 4§8¡8¨A¥;°·±Ô9Ü�×$Ñ$Ô%äÐ!×%6Ñ%6Ñ6Ö7r   c           	     ó  € \         p^p\        \        V P                  V,          V P                  V P
                  V P                  VR7      p\        VP                  V P                  V,          V P                  4       R# rª   )rB   r	   r   r`   re   rc   rd   r   r   ra   rb   )r,   r¬   ro   r‚   s   &   r   Útest_pass_simple_takestepÚ*TestBasinHopping.test_pass_simple_takestep÷   sY   € äˆØˆÜœ=¨$¯'©'°!­*Ø,0×,>Ñ,>Ø!%§¡°$·)±)Ø%-ô/ˆô 	˜CŸE™E 4§8¡8¨A¥;°·±Ö9r   c           	     ó¼   € \        4       p^p\        \        V P                  V,          V P                  ^
V P
                  VR7       \        VP                  4       R# )ri   )r   rc   rd   rk   N)rD   r	   r"   r`   rM   rd   r   r)   )r,   rk   ro   s   &  r   Útest_pass_accept_testÚ&TestBasinHopping.test_pass_accept_test  sD   € ô #“nˆØˆä”V˜TŸW™W Q�Z¸$¿+¹+Ø D§I¡I¸;õ	Hä�×'Ñ'Ö(r   c           	     ó&  € \        4       p^p\        \        V P                  V,          V P                  ^V P
                  VR7      p\        VP                  4       \        RVP                  ^ ,          9   4       \        VP                  ^	4       R# )ri   )r   rc   rd   Úcallbackr·   N)rR   r	   r"   r`   rM   rd   r   r)   Úmessager   Únit)r,   r·   ro   r‚   s   &   r   Útest_pass_callbackÚ#TestBasinHopping.test_pass_callback  sk   € ô “<ˆØˆäœ6 4§7¡7¨1¥:ÀÇÁØ!#¨$¯)©)¸hôHˆä�×$Ñ$Ô%Ü�
˜cŸk™k¨!�nÑ,Ô-ô 	�S—W‘W˜aÖ r   c                óþ   € ^p\        ^ R7      V P                  R&   ^
p\        \        V P                  V,          V P                  W P
                  R7      p\        VP                  ^,           VP                  4       R# )ri   )ÚmaxiterÚoptionsr~   N)	ÚdictrM   r	   r"   r`   rd   r   r¹   Úminimization_failures)r,   ro   rc   r‚   s   &   r   Útest_minimizer_failÚ$TestBasinHopping.test_minimizer_fail  s[   € àˆÜ!%¨a¤ˆ�‰�IÑØˆÜœ6 4§7¡7¨1¥:ÀÇÁØ!&¯Y©Yô8ˆô 	�S—W‘W˜q•[ #×";Ñ";Ö<r   c                ó|   € ^ p\        \        V P                  V,          V P                  ^ V P                  R7       R# r|   )r	   r   r`   rM   rd   rn   s   & r   Útest_niter_zeroÚ TestBasinHopping.test_niter_zero'  s*   € àˆÜ”V˜TŸW™W Q�Z¸$¿+¹+Ø 4§9¡9÷	.r   c           	     óú   aa€ R RRR/p. oV3R lp\        \        RR.V^
V^
R7       . oV3R lp\        \        RR.V^
V^
R7       \        \        P                  ! S4      \        P                  ! S4      4       R# )	r]   r^   r_   Tc                 ó*   <€ SP                  V4       R # ©N©Úappend)r   r   rW   Úf_1s   &&&€r   r·   Ú;TestBasinHopping.test_rng_reproducibility.<locals>.callback3  ó   ø€ Ø�J‰J�qŽMr   r\   )r   rc   r·   Úrngc                 ó*   <€ SP                  V4       R # rÈ   rÉ   )r   r   rW   Úf_2s   &&&€r   Ú	callback2Ú<TestBasinHopping.test_rng_reproducibility.<locals>.callback2;  rÍ   r   N)r	   r"   r   r   r   )r,   r   r·   rÑ   rË   rÐ   s   &   @@r   Útest_rng_reproducibilityÚ)TestBasinHopping.test_rng_reproducibility-  sz   ù€ à$ j°%¸Ð>Ðàˆõ	ô 	”V˜c 3˜ZÐ:JØ¨°bõ	:ð ˆõ	ô 	”V˜c 3˜ZÐ:JØ¨	°rõ	;ä”R—X’X˜c“]¤B§H¢H¨S£MÖ2r   c                ó&  € \         P                  P                  ^4      pRRRR/p\        \        RR.V^
VR7      p\         P                  P                  ^4      p\        \        RR.V^
VR7      p\        VP                  VP                  4       R# )ri   r]   r^   r_   Tr\   )r   rc   rÎ   N)r   r>   Údefault_rngr	   r"   r   r   )r,   rÎ   r   Úres1Úres2s   &    r   Útest_random_genÚ TestBasinHopping.test_random_genB  sƒ   € ä�i‰i×#Ñ# AÓ&ˆà$ j°%¸Ð>ÐäœF S¨# JØ-=Ø"$¨#ô/ˆô �i‰i×#Ñ# AÓ&ˆÜœF S¨# JØ-=Ø"$¨#ô/ˆô 	�T—V‘V˜TŸV™VÖ$r   c           	     óö   € ^ p\        \        V P                  V,          V P                  V P                  V P
                  ^ R7      p\        VP                  V P                  V,          V P                  4       R# )r}   )r   rc   rd   ÚTNr€   r�   s   &  r   Útest_monotonic_basin_hoppingÚ-TestBasinHopping.test_monotonic_basin_hoppingR  sO   € àˆäœ6 4§7¡7¨1¥:ÀÇÁØ!%§¡°$·)±)¸qôBˆä˜CŸE™E 4§8¡8¨A¥;°·±Ö9r   )rd   rM   re   rc   ra   rb   r`   N)	r›   r‹   r^   rœ   r�   zNelder-MeadÚPowellr¢   r¦   )r3   r4   r5   r6   rf   rp   ry   rƒ   rˆ   rŽ   r•   r˜   ÚpytestÚmarkÚ	fail_slowrŸ   Úparametrizer§   r®   r±   r´   rº   rÁ   rÄ   rÓ   rÙ   rÝ   r8   r9   rP   s   @r   rZ   rZ   j   sÄ   ø‡ € ò4ò %òAò:òò
)ò&ò":ð ‡[�[×Ñ˜2Óñ>ó ð>ð ‡[�[×Ñ˜2ÓØ‡[�[×Ñ˜Xò (5ó 6ñ=ó6ó ð=ò 8ò:ò	)ò!ò 	=ò.ò3ò*%÷ :ð :r   rZ   c                   ót   a € ] tR tRt o R tR t]P                  P                  RRR.4      R 4       t	Rt
V tR	# )
ÚTest_Storagei[  c                ó¸   € \         P                  ! ^4      V n        ^ V n        \	        RR7      pV P                  Vn        V P                  Vn        \        V4      # )ri   T©Úsuccess)r   r   r`   Úf0r
   r   Úfunr   )r,   Úminress   & r   Úcreate_storageÚTest_Storage.create_storage\  sB   € Ü—(’(˜1“+ˆŒØˆŒä¨Ô-ˆØ—7‘7ˆŒØ—W‘WˆŒ
ä�v‹Ðr   c                ó€  € V P                  4       p\        R R7      pV P                  ^,           Vn        V P                  ^,           Vn        VP                  V4      pVP                  4       p\        V P                  VP                  4       \        V P                  VP
                  4       \        V'       * 4       R# )Trç   N)
rì   r
   r`   r   ré   rê   ÚupdateÚ
get_lowestr   r   )r,   ÚstorageÚ
new_minresÚretrë   s   &    r   Útest_higher_f_rejectedÚ#Test_Storage.test_higher_f_rejectedf  s‚   € Ø×%Ñ%Ó'ˆÜ#¨DÔ1ˆ
Ø—w‘w •{ˆ
ŒØŸ™ 1�ˆ
Œà�n‰n˜ZÓ(ˆØ×#Ñ#Ó%ˆÜ�T—W‘W˜fŸh™hÔ'Ü�T—W‘W˜fŸj™jÔ)Ü�C”Ör   rè   TFc                ón  € V P                  4       p\        VR 7      pV P                  ^,           Vn        V P                  ^,
          Vn        VP                  V4      pVP                  4       pV P                  VP                  8g  V8X  g   Q hV P                  VP
                  8g  V8X  g   Q hWAJ g   Q hR# )rç   N)rì   r
   r`   r   ré   rê   rï   rð   )r,   rè   rñ   rò   ró   rë   s   &&    r   Útest_lower_f_acceptedÚ"Test_Storage.test_lower_f_acceptedr  s”   € à×%Ñ%Ó'ˆÜ#¨GÔ4ˆ
Ø—w‘w •{ˆ
ŒØŸ™ 1�ˆ
Œà�n‰n˜ZÓ(ˆØ×#Ñ#Ó%ˆØ—‘˜6Ÿ8™8Ñ#¨Ô/Ð/Ð/Ø—‘˜6Ÿ:™:Ñ%¨'Ô1Ð1Ð1Ø‹~ÐŠ~r   )ré   r`   N)r3   r4   r5   r6   rì   rô   rà   rá   rã   r÷   r8   r9   rP   s   @r   rå   rå   [  s8   ø‡ € òò
ð ‡[�[×Ñ˜Y¨¨u¨Ó6ñ
ó 7ö
r   rå   c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTest_RandomDisplacementi€  c                ó"   € R V n         RV n        R# )r\   ià“ N)r«   ÚNrI   s   &r   rf   Ú$Test_RandomDisplacement.setup_method�  s   € ØˆŒØˆŽr   c                óŠ  € \         P                  P                  ^ 4      p\         P                  ! V P                  .4      p\        V P                  VR7      pV! V4      pRV P                  ,          ^,          ^,          p\        \         P                  ! V4      R^4       \        \         P                  ! V4      V^4       R# )r}   )r«   rÎ   r   rt   N)
r   r>   ÚRandomStater!   rü   r   r«   r   ÚmeanÚvar)r,   rÎ   r`   Údisplacer   Úvs   &     r   Útest_randomÚ#Test_RandomDisplacement.test_random…  s…   € ô �i‰i×#Ñ# AÓ&ˆÜ�XŠX�t—v‘v�hÓˆÜ%¨t¯}©}À#ÔFˆÙ�R‹LˆØ�$—-‘-Õ AÕ%¨Õ*ˆÜœBŸGšG A›J¨¨AÔ.ÜœBŸFšF 1›I q¨!Ö,r   )rü   r«   N)r3   r4   r5   r6   rf   r  r8   r9   rP   s   @r   rú   rú   €  s   ø‡ € ò÷
-ð 
-r   rú   c                   óP   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V tR# )ÚTest_Metropolisi’  c                ó�   € R V n         \        V P                   4      V n        \        RRR7      V n        \        RRR7      V n        R# )r   Trt   ©rè   rê   r\   N)rÜ   r   Úmetr
   Úres_newÚres_oldrI   s   &r   rf   ÚTest_Metropolis.setup_method“  s5   € ØˆŒÜ˜dŸf™fÓ%ˆŒÜ%¨d¸Ô;ˆŒÜ%¨d¸Ô;ˆŽr   c                ó„   € V P                  V P                  V P                  R 7      p\        V\        4      '       g   Q hR# ©©r  r  N)r
  r  r  Ú
isinstanceÚbool)r,   ró   s   & r   Útest_boolean_returnÚ#Test_Metropolis.test_boolean_return™  s1   € ð �h‰h˜tŸ|™|°T·\±\ˆhÓBˆÜ˜#œt×$Ò$Ð$Ò$r   c                óf   € \        V P                  V P                  V P                  R 7      4       R# r  )r   r
  r  r  rI   s   &r   r÷   Ú%Test_Metropolis.test_lower_f_acceptedŸ  s   € Ü�—‘ §¡°t·|±|�ÓDÖEr   c                óö   € R pR p\        R4       FO  pV'       d   V'       d    M>\        RRR7      p\        RRR7      pV P                  WER7      pV'       d   RpKM  RpKQ  	  \        V4       \        V4       R# )Fiè  Tr\   r	  r=   r  N)Úranger
   r
  r   )r,   Ú
one_acceptÚ
one_rejectro   r  r  ró   s   &      r   Útest_acceptÚTest_Metropolis.test_accept¢  si   € àˆ
Øˆ
Ü�t–ˆAßŸjÙÜ$¨T°rÔ:ˆGÜ$¨T°sÔ;ˆGØ—(‘( 7�(Ó<ˆCßØ!’
à!’
ñ ô 	�
ÔÜ�
Ör   c                óì   € \        ^4      p\        RRR7      p\        RRR7      p\        P                  ! RR7      ;_uu_ 4        VP	                  W#R7       RRR4       R#   + '       g   i     R# ; i)	é   Trt   r	  iÐ  Úraise)Úoverr  N)r   r
   r   ÚerrstateÚaccept_reject©r,   r
  r  r  s   &   r   Útest_GH7495ÚTest_Metropolis.test_GH7495³  sT   € ô ˜‹mˆÜ ¨°2Ô6ˆÜ ¨°4Ô8ˆÜ�[Š[˜g×&Ö&Ø×Ñ gÐÔ?÷ '×&×&Ò&ús   ÁA"Á"A3	c                óæ   aa€ R  oRp^2oRRRVV3R l/3p\        SV^\        P                  P                  R4      RV/R7      pVP                  '       g   Q h\        VP                  SRR	7       R
# )c                 óZ   € V ^,          ^,
          ^,          V ^,           ^,          ,           # )r  © ©r   s   &r   ÚfuncÚ)Test_Metropolis.test_gh7799.<locals>.func¿  s!   € Ø�q•D˜•F˜Q•;  !¥ a�xÕ'Ð'r   ÚtypeÚineqrê   c                 ó"   <€ S! V 4      S,
          # rÈ   r(  )r   r*  Úlimits   &€€r   Ú<lambda>Ú-Test_Metropolis.test_gh7799.<locals>.<lambda>Ä  s   ø€ ±°Q³¸%¶r   r£   Úconstraints)r¤   r   g�íµ ÷Æ°>)ÚrtolNéüÿÿÿ)r	   r   r>   rÿ   rè   r   rê   )r,   r`   Úconr‚   r*  r/  s   &   @@r   Útest_gh7799ÚTest_Metropolis.test_gh7799¼  ss   ù€ ò	(ð ˆØˆØ�v˜uÕ&?Ð@ÐAˆÜØØØÜ—‘×&Ñ& tÓ,Ø+¨SÐ1ô
ˆð �{�{ˆ{Ðˆ{Ü˜Ÿ™ ¨T×2r   c                óÒ   € \        ^ 4      p\        RRR7      p\        RRR7      pV! W#R7      '       g   Q hRVn        V! W#R7      '       d   Q hRVn        V! W#R7      '       g   Q hR# )r}   Trt   r	  r\   r  FN)r   r
   rè   r#  s   &   r   Útest_accept_gh7799Ú"Test_Metropolis.test_accept_gh7799Ï  sh   € ô ˜‹mˆÜ ¨°2Ô6ˆÜ ¨°2Ô6ˆñ ˜7×4Ó4Ð4Ð4àˆŒÙ˜w×8Ó8Ð8Ð8àˆŒÙ˜7×4Ó4Ð4Ò4r   c                óx   € R  pR pRRRRV/RRR.RR/p\        V^^.^
VR	7      pVP                  '       d   Q hR
# )c                 ó   € W ,          # rÈ   r(  r)  s   &r   rê   Ú3Test_Metropolis.test_reject_all_gh7799.<locals>.funâ  s	   € Ø•3ˆJr   c                 ó   € V ^,           # )ri   r(  r)  s   &r   Ú
constraintÚ:Test_Metropolis.test_reject_all_gh7799.<locals>.constraintå  s   € Ø�q•5ˆLr   r2  r,  Úeqrê   Úboundsr]   Úslsqp)r`   rc   r   N)r}   ri   )r	   rè   )r,   rê   r?  rM   r‚   s   &    r   Útest_reject_all_gh7799Ú&Test_Metropolis.test_reject_all_gh7799à  sV   € ò	ò	ð   &¨$°°zÐ!BØ˜V VÐ,¨h¸ðAˆä˜3 A q 6°ÀfÔMˆØ—;—;�;Ðˆ‘;r   )rÜ   r
  r  r  N)r3   r4   r5   r6   rf   r  r÷   r  r$  r6  r9  rD  r8   r9   rP   s   @r   r  r  ’  s4   ø‡ € ò<ò%òFòò"@ò3ò&5÷"ð r   r  zshared state)Úreasonc                   ó>   a € ] tR tRt o R tR tR tR tR tRt	V t
R# )	ÚTest_AdaptiveStepsizeiî  c                ó¦   € R V n         \        V P                   R7      V n        RV n        \	        V P                  RV P                  R7      V n        R# )r\   )r«   r=   F)r¬   ÚverboseÚaccept_rateN)r«   r   Útsru   r   r¬   rI   s   &r   rf   Ú"Test_AdaptiveStepsize.setup_methodð  s?   € ØˆŒÜ$¨d¯m©mÔ<ˆŒØ"%ˆÔÜ(°$·'±'À5Ø59×5LÑ5LôNˆŽr   c                ó^  € R pV P                  V4       V P                   P                  R4       \        V P                   P                  4       F/  pV P                  V4       V P                   P                  R4       K1  	  \	        V P
                  P                  V P                  8„  4       R# )rt   FTN©r¬   Úreportr  Úintervalr   rL  r«   ©r,   r   ro   s   &  r   Útest_adaptive_increaseÚ,Test_AdaptiveStepsize.test_adaptive_increase÷  sy   € àˆØ�‰�aÔØ�‰×Ñ˜UÔ#Ü�t—}‘}×-Ñ-Ö.ˆAØ�M‰M˜!ÔØ�M‰M× Ñ  Ö&ñ /ô 	�—‘× Ñ  4§=¡=Ñ0Ö1r   c                ó^  € R pV P                  V4       V P                   P                  R4       \        V P                   P                  4       F/  pV P                  V4       V P                   P                  R4       K1  	  \	        V P
                  P                  V P                  8  4       R# )rt   TFNrO  rR  s   &  r   Útest_adaptive_decreaseÚ,Test_AdaptiveStepsize.test_adaptive_decrease  sy   € àˆØ�‰�aÔØ�‰×Ñ˜TÔ"Ü�t—}‘}×-Ñ-Ö.ˆAØ�M‰M˜!ÔØ�M‰M× Ñ  Ö'ñ /ô 	�—‘× Ñ  4§=¡=Ñ0Ö1r   c                ó  € R p\        V P                  P                  ^,           4       F/  pV P                  V4       V P                  P                  R4       K1  	  \	        V P
                  P                  V P                  8„  4       R# )rt   TN©r  r¬   rQ  rP  r   rL  r«   rR  s   &  r   Útest_all_acceptedÚ'Test_AdaptiveStepsize.test_all_accepted  s`   € àˆÜ�t—}‘}×-Ñ-°Õ1Ö2ˆAØ�M‰M˜!ÔØ�M‰M× Ñ  Ö&ñ 3ô 	�—‘× Ñ  4§=¡=Ñ0Ö1r   c                ó  € R p\        V P                  P                  ^,           4       F/  pV P                  V4       V P                  P                  R4       K1  	  \	        V P
                  P                  V P                  8  4       R# )rt   FNrY  rR  s   &  r   Útest_all_rejectedÚ'Test_AdaptiveStepsize.test_all_rejected  s`   € àˆÜ�t—}‘}×-Ñ-°Õ1Ö2ˆAØ�M‰M˜!ÔØ�M‰M× Ñ  Ö'ñ 3ô 	�—‘× Ñ  4§=¡=Ñ0Ö1r   )r«   r¬   ru   rL  N)r3   r4   r5   r6   rf   rS  rV  rZ  r]  r8   r9   rP   s   @r   rH  rH  î  s$   ø‡ € òNò2ò2ò2÷2ð 2r   rH  )%r7   rŒ   Únumpy.testingr   r   r   r   rà   r   rl   Únumpyr   r   r   Úscipy.optimizer	   r
   Úscipy.optimize._basinhoppingr   r   r   r   r   r   r"   r$   r&   rB   rD   rR   rZ   rå   rú   r  rá   Úthread_unsaferH  r(  r   r   Ú<module>rd     sÆ   ðñó ÷,ó ,ã Ý *Û ß ç 7÷?ó ?òòò
òô	#Ð$ô 	#ò÷ñ ÷*ñ ÷$n:ñ n:÷b"ñ "÷J-ñ -÷$Yñ Yðx ‡�×Ñ .ÐÓ1÷*2ð *2ó 2ò*2r   