§
    fŠtjN-  ã                   óš   — d Z ddlZddlmZmZmZ ddlmc mZ	 ddlm
Z
 ddlZddlZddlZdd„Zdd	„Zd
„ Zd„ Zdd„Z G d„ d¦  «        ZdS )z 
Tests for line search routines
é    N)Úassert_equalÚassert_array_almost_equalÚassert_array_almost_equal_nulp)ÚLineSearchWarningç-Cëâ6?çÍÌÌÌÌÌì?Ú c                 ó  —  || ¦  «        } |d¦  «        } |d¦  «        } || ¦  «        }	d| › d|› d|› d|› d|	› d|› �}
|||| z  |z  z   k    sJ d|
z   ¦   «         ‚t          |	¦  «        t          ||z  ¦  «        k    sJ d	|
z   ¦   «         ‚d
S )z2
    Check that strong Wolfe conditions apply
    r   ús = ú; phi(0) = ú; phi(s) = z; phi'(0) = z; phi'(s) = ú; zWolfe 1 failed: zWolfe 2 failed: N)Úabs)ÚsÚphiÚderphiÚc1Úc2Úerr_msgÚphi1Úphi0Úderphi0Úderphi1Úmsgs              úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_linesearch.pyÚassert_wolfer      sì   € ð ˆ3ˆq‰6Œ6€DØˆ3ˆq‰6Œ6€DØˆf�Q‰iŒi€GØˆf�Q‰iŒi€Gð.�!ð .ð . ð .ð .°ð .ð .À7ð .ð .Ø ð.ð .Ø$+ð.ð .€Cð �4˜"˜Q™$˜w™,Ñ&Ò&Ð&Ð&Ð(:¸SÑ(@Ñ&Ô&Ð&Ýˆw‰<Œ<�3˜r '™z™?œ?Ò*Ð*Ð*Ð,>ÀÑ,DÑ*Ô*Ð*Ð*Ð*ó    c                 ó€   —  || ¦  «        } |d¦  «        }d| › d|› d|› d|› �}|d|| z  z
  |z  k    s
J |¦   «         ‚dS )z-
    Check that Armijo condition applies
    r   r   r   r   r   é   N© )r   r   r   r   r   r   r   s          r   Úassert_armijor!      sn   € ð ˆ3ˆq‰6Œ6€DØˆ3ˆq‰6Œ6€DØ
A�Ð
AÐ
A˜tÐ
AÐ
A°Ð
AÐ
A¸Ð
AÐ
A€CØ�A˜˜1™‘H˜d‘?Ò"Ð"Ð" CÑ"Ô"Ð"Ð"Ð"r   c                 óB   ‡ ‡‡‡— t          |fˆˆˆ fd„ˆˆˆ fd„dœ|¤Ž d S )Nc                 ó&   •—  ‰‰‰| z  z   ¦  «        S ©Nr    ©ÚspÚfÚpÚxs    €€€r   ú<lambda>z#assert_line_wolfe.<locals>.<lambda>)   s   ø€  1 1 Q¨¨2©¡X¡;¤;€ r   c                 óL   •— t          j         ‰‰‰| z  z   ¦  «        ‰¦  «        S r$   ©ÚnpÚdot)r&   Úfprimer(   r)   s    €€€r   r*   z#assert_line_wolfe.<locals>.<lambda>*   s%   ø€ ¥2¤6¨&¨&°°Q°r±T±Ñ*:Ô*:¸AÑ#>Ô#>€ r   )r   r   )r   )r)   r(   r   r'   r/   Úkws   `` `` r   Úassert_line_wolfer1   (   sb   øøøø€ Ý�ð FÐ.Ð.Ð.Ð.Ð.Ð.Ø>Ð>Ð>Ð>Ð>Ð>ðFð FØBDðFð Fð Fð Fð Fr   c                 ó4   ‡ ‡‡— t          |fdˆˆˆ fd„i|¤Ž d S )Nr   c                 ó&   •—  ‰‰‰| z  z   ¦  «        S r$   r    r%   s    €€€r   r*   z$assert_line_armijo.<locals>.<lambda>.   s   ø€  A A a¨!¨B©$¡h¡K¤K€ r   )r!   )r)   r(   r   r'   r0   s   `` ` r   Úassert_line_armijor4   -   s6   øøø€ Ý�!Ð6Ð6Ð/Ð/Ð/Ð/Ð/Ð/Ð6°2Ð6Ð6Ð6Ð6Ð6r   é2   c                 óx   — 	 t          | ||¦  «         dS # t          $ r}t          |› d|› �¦  «        |‚d}~ww xY w)zEAssert two arrays are equal, up to some floating-point rounding errorú
N)r   ÚAssertionError)r)   Úyr   ÚnulpÚes        r   Úassert_fp_equalr<   1   s\   € ð7Ý& q¨!¨TÑ2Ô2Ð2Ð2Ð2øÝð 7ð 7ð 7Ý Ð.Ð. WÐ.Ð.Ñ/Ô/°QÐ6øøøøð7øøøs   ‚ •
9Ÿ4´9c                   ó€   — 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„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestLineSearchc                 ó¼   — t          | j        d¦  «        sd| j        _        | j        xj        dz  c_        | |dz  z
  |dz  z   }dd|dz  z  z
  d|dz  z  z   }||fS )NÚcr   r   é   é   éÿÿÿÿé   )ÚhasattrÚfcountr@   ©Úselfr   r(   Údps       r   Ú_scalar_func_1zTestLineSearch._scalar_func_1;   sp   € Ý�t”{ CÑ(Ô(ð 	ØˆDŒKŒMØŒˆŒ˜ÑˆŒØˆB��A‘‰I˜˜1™ÑˆØ�!�A�q‘D‘&‰[˜1˜Q ™T™6Ñ!ˆØ�"ˆuˆr   c                 óð   — t          | j        d¦  «        sd| j        _        | j        xj        dz  c_        t          j        d|z  ¦  «        |dz  z   }dt          j        d|z  ¦  «        z  d|z  z   }||fS )Nr@   r   r   éüÿÿÿrD   )rE   rF   r@   r-   ÚexprG   s       r   Ú_scalar_func_2zTestLineSearch._scalar_func_2C   sr   € Ý�t”{ CÑ(Ô(ð 	ØˆDŒKŒMØŒˆŒ˜ÑˆŒÝŒF�2�a‘4‰LŒL˜1˜a™4ÑˆØ•”�r˜!‘t‘”‰_˜q ™sÑ"ˆØ�"ˆuˆr   c                 óÚ   — t          | j        d¦  «        sd| j        _        | j        xj        dz  c_        t          j        d|z  ¦  «         }dt          j        d|z  ¦  «        z  }||fS )Nr@   r   r   é
   iöÿÿÿ)rE   rF   r@   r-   ÚsinÚcosrG   s       r   Ú_scalar_func_3zTestLineSearch._scalar_func_3K   sc   € Ý�t”{ CÑ(Ô(ð 	ØˆDŒKŒMØŒˆŒ˜ÑˆŒÝŒV�B�q‘D‰\Œ\ˆMˆØ•”˜˜1™‘”ÑˆØ�"ˆuˆr   c                 óª   — t          | j        d¦  «        sd| j        _        | j        xj        dz  c_        t          j        ||¦  «        }d|z  }||fS )Nr@   r   r   rD   )rE   rF   r@   r-   r.   ©rH   r)   r'   Údfs       r   Ú_line_func_1zTestLineSearch._line_func_1U   sR   € Ý�t”{ CÑ(Ô(ð 	ØˆDŒKŒMØŒˆŒ˜ÑˆŒÝŒF�1�a‰LŒLˆØˆq‰SˆØ�"ˆuˆr   c                 ó$  — t          | j        d¦  «        sd| j        _        | j        xj        dz  c_        t          j        |t          j        | j        |¦  «        ¦  «        dz   }t          j        | j        | j        j        z   |¦  «        }||fS )Nr@   r   r   )rE   rF   r@   r-   r.   ÚAÚTrU   s       r   Ú_line_func_2zTestLineSearch._line_func_2]   sz   € Ý�t”{ CÑ(Ô(ð 	ØˆDŒKŒMØŒˆŒ˜ÑˆŒÝŒF�1•b”f˜TœV QÑ'Ô'Ñ(Ô(¨1Ñ,ˆÝŒV�D”F˜TœVœXÑ% qÑ)Ô)ˆØ�"ˆuˆr   c           	      óˆ  — g | _         g | _        d| _        t          j        ¦   «         | _        d„ }t          t          | ¦  «        ¦  «        D ]¯}|                     d¦  «        rBt          | |¦  «        }| j          
                    | ||d¦  «         ||d¦  «        f¦  «         ŒY|                     d¦  «        rAt          | |¦  «        }| j         
                    | ||d¦  «         ||d¦  «        f¦  «         Œ°t          j                             d¦  «        }|                     | j        | j        f¦  «        | _        d S )Né   c                 ó   ‡ ‡— ˆ ˆfd„S )Nc                  ó    •—  ‰| i |¤Ž‰         S r$   r    )Úar0   ÚfuncÚidxs     €€r   r*   zATestLineSearch.setup_method.<locals>.bind_index.<locals>.<lambda>o   s   ø€  D D¨! N¨r N N°3Ô$7€ r   r    )ra   rb   s   ``r   Ú
bind_indexz/TestLineSearch.setup_method.<locals>.bind_indexm   s   øø€ à7Ð7Ð7Ð7Ð7Ð7r   Ú_scalar_func_r   r   Ú_line_func_i¬1mI)Úscalar_funcsÚ
line_funcsÚNÚ	threadingÚlocalrF   ÚsortedÚdirÚ
startswithÚgetattrÚappendr-   ÚrandomÚdefault_rngÚstandard_normalrY   )rH   rc   ÚnameÚvalueÚrngs        r   Úsetup_methodzTestLineSearch.setup_methodg   s^  € ØˆÔØˆŒØˆŒÝ”oÑ'Ô'ˆŒð	8ð 	8ð 	8õ �3˜t™9œ9Ñ%Ô%ð 	Hð 	HˆDØ�Š˜Ñ/Ô/ð HÝ  dÑ+Ô+�ØÔ!×(Ò(Ø˜:˜: e¨QÑ/Ô/°°¸EÀ1Ñ1EÔ1EÐFñHô Hð Hð Hà—’ Ñ/Ô/ð HÝ  dÑ+Ô+�Ø”×&Ò&Ø˜:˜: e¨QÑ/Ô/°°¸EÀ1Ñ1EÔ1EÐFñHô Hð Høõ Œi×#Ò# JÑ/Ô/ˆØ×$Ò$ d¤f¨d¬fÐ%5Ñ6Ô6ˆŒˆˆr   c              #   ó¤   K  — t           j                             d¦  «        }| j        D ]&\  }}}|                     d¦  «        D ]
}||||fV — ŒŒ'd S )Nì   ¬{
 rA   )r-   rp   rq   rf   rr   )rH   ru   rs   r   r   Úold_phi0s         r   Úscalar_iterzTestLineSearch.scalar_iter   sx   è è € ÝŒi×#Ò# JÑ/Ô/ˆØ!%Ô!2ð 	2ð 	2ÑˆD�#�vØ×/Ò/°Ñ2Ô2ð 2ð 2�Ø˜C ¨Ð1Ð1Ð1Ð1Ð1ð2ð	2ð 	2r   c              #   óŽ  K  — t           j                             d¦  «        }| j        D ]›\  }}}d}|dk     r�|                     | j        ¦  «        }|                     | j        ¦  «        }t          j        | ||¦  «        ¦  «        dk    rŒ]|dz  }t          |                     ¦   «         ¦  «        }||||||fV — |dk     °�Œœd S )Nrx   r   é	   r   )r-   rp   rq   rg   rr   rh   r.   Úfloat)	rH   ru   rs   r'   r/   Úkr)   r(   Úold_fvs	            r   Ú	line_iterzTestLineSearch.line_iter…   sÝ   è è € ÝŒi×#Ò# JÑ/Ô/ˆØ#œð 
	4ð 
	4‰OˆD�!�VØˆAØ�a’%�%Ø×'Ò'¨¬Ñ/Ô/�Ø×'Ò'¨¬Ñ/Ô/�Ý”6˜!˜V˜V A™YœYÑ'Ô'¨1Ò,Ð,àØ�Q‘�Ý˜s×2Ò2Ñ4Ô4Ñ5Ô5�Ø˜A˜v q¨!¨VÐ3Ð3Ð3Ð3ð �a’%�%øð
	4ð 
	4r   c           
      óF  — d}|                       ¦   «         D ]�\  }}}}|dz  }t          j        || |d¦  «        | |d¦  «        ¦  «        \  }}}t          | |d¦  «        |¦  «         t          | ||¦  «        |¦  «         t	          ||||¬¦  «         Œ‚|dk    sJ ‚d S )Nr   r   ©r   rA   )rz   ÚlsÚscalar_search_wolfe1r<   r   )	rH   r@   rs   r   r   ry   r   r   r   s	            r   Útest_scalar_search_wolfe1z(TestLineSearch.test_scalar_search_wolfe1•   sÈ   € ØˆØ+/×+;Ò+;Ñ+=Ô+=ð 	7ð 	7Ñ'ˆD�#�v˜xØ�‰FˆAÝÔ3°C¸ÀÀÀQÁÄØ4<¸f¸fÀQ¹i¼iñIô I‰MˆAˆt�Tå˜D # # a¡&¤&¨$Ñ/Ô/Ð/Ý˜D # # a¡&¤&¨$Ñ/Ô/Ð/Ý˜˜C °Ð6Ñ6Ô6Ð6Ð6à�1Šuˆuˆuˆuˆuˆur   c           
      ón  — |                       ¦   «         D ]Ÿ\  }}}}t          j        || |d¦  «        | |d¦  «        ¦  «        \  }}}}t          | |d¦  «        |¦  «         t          | ||¦  «        |¦  «         |�t          | ||¦  «        |¦  «         t	          ||||› d|d›�¬¦  «         Œ d S ©Nr   ú Úgr‚   )rz   rƒ   Úscalar_search_wolfe2r<   r   )	rH   rs   r   r   ry   r   r   r   r   s	            r   Útest_scalar_search_wolfe2z(TestLineSearch.test_scalar_search_wolfe2¡   sé   € Ø+/×+;Ò+;Ñ+=Ô+=ð 	Ið 	IÑ'ˆD�#�v˜xÝ%'Ô%<Ø�V˜S˜S ™VœV X¨v¨v°a©y¬yñ&:ô &:Ñ"ˆAˆt�T˜7å˜D # # a¡&¤&¨$Ñ/Ô/Ð/Ý˜D # # a¡&¤&¨$Ñ/Ô/Ð/ØÐ"Ý ¨¨°©¬°DÑ9Ô9Ð9Ý˜˜C °DÐ1GÐ1G¸8Ð1GÐ1GÐ1GÐHÑHÔHÐHÐHð	Ið 	Ir   c                 óZ   — d„ }d„ }t          j        ||d¬¦  «        \  }}}}|�J ‚|�J ‚d S )Nc                 ó   — | dz
  dz  S )Né   rD   r    ©Úalphas    r   r   zCTestLineSearch.test_scalar_search_wolfe2_with_low_amax.<locals>.phi¬   s   € Ø˜A‘I !Ñ#Ð#r   c                 ó   — d| dz
  z  S )NrD   rŽ   r    r�   s    r   r   zFTestLineSearch.test_scalar_search_wolfe2_with_low_amax.<locals>.derphi¯   s   € Ø˜ ™	‘?Ð"r   gü©ñÒMbP?©Úamax©rƒ   rŠ   )rH   r   r   Ú
alpha_starÚ_Úderphi_stars         r   Ú'test_scalar_search_wolfe2_with_low_amaxz6TestLineSearch.test_scalar_search_wolfe2_with_low_amax«   sa   € ð	$ð 	$ð 	$ð	#ð 	#ð 	#õ )+Ô(?ÀÀVÐRWÐ(XÑ(XÔ(XÑ%ˆ
�A�q˜+ØÐ!Ð!Ð!ØÐ"Ð"Ð"Ð"Ð"r   c                 óV   — d„ }d„ }t          j        ||¦  «        \  }}}}|dk     sJ ‚d S )Nc                 ó¦   — | dk     rdt           j        z  dz  | dz
  z  S t          j        dt           j        z  dz  | z  t           j        z
  ¦  «        S ©Nr   éýÿÿÿrD   rA   )r-   ÚpirR   r�   s    r   r   z@TestLineSearch.test_scalar_search_wolfe2_regression.<locals>.phi¹   sJ   € Ø�qŠyˆyØ�2œ5‘y ‘{ e¨a¡iÑ0Ð0å”v˜a¥¤™g a™i¨%Ñ/µ"´%Ñ7Ñ8Ô8Ð8r   c                 óÀ   — | dk     rdt           j        z  dz  S dt           j        z  dz  t          j        dt           j        z  dz  | z  t           j        z
  ¦  «        z  S r›   )r-   r�   rQ   r�   s    r   r   zCTestLineSearch.test_scalar_search_wolfe2_regression.<locals>.derphi¿   sP   € Ø�qŠyˆyØ�2œ5‘y ‘{Ð"à�2œ5‘y ‘{¥R¤V¨A­b¬e©G°A©I¸Ñ,=ÅÄÑ,EÑ%FÔ%FÑFÐFr   g      ø?r”   )rH   r   r   r   r–   s        r   Ú$test_scalar_search_wolfe2_regressionz3TestLineSearch.test_scalar_search_wolfe2_regression¶   sR   € ð	9ð 	9ð 	9ð	Gð 	Gð 	Gõ Ô,¨S°&Ñ9Ô9‰
ˆˆ1ˆa�ð �3Šwˆwˆwˆwˆwˆwr   c           	      óø   — |                       ¦   «         D ]d\  }}}}t          j        | |d¦  «         |d¦  «        ¦  «        \  }}t          | ||¦  «        |¦  «         t	          |||› d|d›�¬¦  «         Œed S r‡   )rz   rƒ   Úscalar_search_armijor<   r!   )rH   rs   r   r   ry   r   r   s          r   Útest_scalar_search_armijoz(TestLineSearch.test_scalar_search_armijoÊ   sŸ   € Ø+/×+;Ò+;Ñ+=Ô+=ð 	Bð 	BÑ'ˆD�#�v˜xÝÔ-¨c°3°3°q±6´6¸6¸6À!¹9¼9ÑEÔE‰GˆAˆtÝ˜D # # a¡&¤&¨$Ñ/Ô/Ð/Ý˜!˜S¨TÐ*@Ð*@°HÐ*@Ð*@Ð*@ÐAÑAÔAÐAÐAð	Bð 	Br   c                 ó  — d}d}|                       ¦   «         D ]ç\  }}}}}} ||¦  «        }	 ||¦  «        }
d| j        _        t          j        |||||
|	||¬¦  «        \  }}}}}}t          | j        j        ||z   ¦  «         t          | ||¦  «        ¦  «         |€Œ‡t          | ||||z  z   ¦  «        ¦  «         t          | ||||z  z   ¦  «        d¬¦  «         ||k     r|dz  }t          ||||||¬¦  «         Œè|dk    sJ ‚d S )	Nr   éd   r’   é   ©Údecimalr   r‚   rA   )	r€   rF   r@   rƒ   Úline_search_wolfe1r   r<   r   r1   ©rH   r@   Úsmaxrs   r'   r/   r)   r(   Úold_fÚf0Úg0r   ÚfcÚgcÚfvÚofvÚgvs                    r   Útest_line_search_wolfe1z&TestLineSearch.test_line_search_wolfe1Ò   sN  € ØˆØˆØ,0¯NªNÑ,<Ô,<ð 	Dð 	DÑ(ˆD�!�V˜Q  5Ø��1‘”ˆBØ�˜‘”ˆBØˆDŒKŒMÝ%'Ô%:¸1¸fÀaÈØ;=¸rÀ5Ø@Dð&Fñ &Fô &FÑ"ˆAˆr�2�r˜3 õ ˜œœ¨¨2©Ñ.Ô.Ð.Ý˜C   1¡¤Ñ&Ô&Ð&ØˆyØÝ˜B   ! a¨¡c¡'¡
¤
Ñ+Ô+Ð+Ý% b¨&¨&°°Q°q±S±©/¬/À2ÐFÑFÔFÐFØ�4ŠxˆxØ�Q‘�Ý! ! Q¨¨1¨f¸dÐCÑCÔCÐCøà�1Šuˆuˆuˆuˆuˆur   c                 óÚ  — d}d}|                       ¦   «         D �]H\  }}}}}} ||¦  «        }	 ||¦  «        }
d| j        _        t          j        ¦   «         5  t          j        ddt          ¦  «         t          j        ddt          ¦  «         t          j        |||||
|	||¬¦  «        \  }}}}}}d d d ¦  «         n# 1 swxY w Y   t          | j        j        ||z   ¦  «         t          | ||¦  «        ¦  «         t          | ||||z  z   ¦  «        ¦  «         |�!t          | ||||z  z   ¦  «        d¬¦  «         ||k     r|d	z  }t          ||||||¬
¦  «         �ŒJ|dk    sJ ‚d S )Nr   i   Úignorez3The line search algorithm could not find a solutionz*The line search algorithm did not converger’   r¥   r¦   r   r‚   rA   )r€   rF   r@   ÚwarningsÚcatch_warningsÚfilterwarningsr   rƒ   Úline_search_wolfe2r   r<   r   r1   r©   s                    r   Útest_line_search_wolfe2z&TestLineSearch.test_line_search_wolfe2è   s   € ØˆØˆØ,0¯NªNÑ,<Ô,<ð 	Dñ 	DÑ(ˆD�!�V˜Q  5Ø��1‘”ˆBØ�˜‘”ˆBØˆDŒKŒMÝÔ(Ñ*Ô*ð Jð JÝÔ'ØØIÝ%ñ'ô 'ð 'õ Ô'ØØ@Ý%ñ'ô 'ð 'õ *,Ô)>¸qÀ&È!ÈQØ?AÀ2ÀuØDHð*Jñ *Jô *JÑ&��2�r˜2˜s BðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jõ ˜œœ¨¨2©Ñ.Ô.Ð.Ý˜C   1¡¤Ñ&Ô&Ð&Ý˜B   ! a¨¡c¡'¡
¤
Ñ+Ô+Ð+Øˆ~Ý)¨"¨f¨f°Q¸¸1¹±W©o¬oÀrÐJÑJÔJÐJØ�4ŠxˆxØ�Q‘�Ý! ! Q¨¨1¨f¸dÐCÑCÔCÐCùØ�1Šuˆuˆuˆuˆuˆus   ÁAB>Â>C	ÃC	c           	      óø  — d„ }d„ }t          j        ddg¦  «        }d|z  }d}t          j        ||||d|¬¦  «        \  }}}}}}t	          |||||¦  «         t          j        t          ¦  «        5  t          j        ||||d	|¬¦  «        \  }}}}}}d d d ¦  «         n# 1 swxY w Y   |�J ‚t          j        t          ¦  «        5  t          j        |||||d
¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó,   — t          j        | | ¦  «        S r$   r,   ©r)   s    r   r'   z8TestLineSearch.test_line_search_wolfe2_bounds.<locals>.f  s   € Ý”6˜!˜Q‘<”<Ðr   c                 ó   — d| z  S )NrD   r    r½   s    r   Úfpz9TestLineSearch.test_line_search_wolfe2_bounds.<locals>.fp  s   € Ø�q‘5ˆLr   r   r   iÄÿÿÿg      à?é   )r“   r   é   rŽ   )r   Úmaxiter)r-   Úarrayrƒ   r¹   r1   ÚpytestÚwarnsr   )rH   r'   r¿   r(   r)   r   r   r–   s           r   Útest_line_search_wolfe2_boundsz-TestLineSearch.test_line_search_wolfe2_bounds  sâ  € ð	 ð 	 ð 	 ð	ð 	ð 	åŒH�a˜�VÑÔˆð �!‰GˆØˆåÔ0°°B¸¸1À2È"ÐMÑMÔMÑˆˆ1ˆa��A�qÝ˜!˜Q  1 bÑ)Ô)Ð)åŒ\Õ+Ñ,Ô,ð 	Eð 	EÝ!Ô4°Q¸¸A¸qØ:<Àð Eñ  Eô  EÑˆAˆq�!�Q˜˜1ð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð ˆyˆyˆyõ Œ\Õ+Ñ,Ô,ð 	Að 	AÝÔ! ! R¨¨A°"¸aÐ@Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Að 	As$   Á1"BÂB#Â&B#ÃC/Ã/C3Ã6C3c           	      óv  — d}|                       ¦   «         D ]™\  }}}}}} ||¦  «        } ||¦  «        }	d| j        _        t          j        ||||	|¦  «        \  }
}}|dz  }t          | j        j        |¦  «         t          | |||
|z  z   ¦  «        ¦  «         t          |||
||¬¦  «         Œš|dk    sJ ‚d S )Nr   r   r‚   r|   )r€   rF   r@   rƒ   Úline_search_armijor   r<   r4   )rH   r@   rs   r'   r/   r)   r(   r«   r¬   r­   r   r®   r°   s                r   Útest_line_search_armijoz&TestLineSearch.test_line_search_armijo!  sØ   € ØˆØ,0¯NªNÑ,<Ô,<ð 	9ð 	9Ñ(ˆD�!�V˜Q  5Ø��1‘”ˆBØ�˜‘”ˆBØˆDŒKŒMÝÔ-¨a°°A°r¸2Ñ>Ô>‰IˆAˆr�2Ø�‰FˆAÝ˜œœ¨Ñ+Ô+Ð+Ý˜B   ! a¨¡c¡'¡
¤
Ñ+Ô+Ð+Ý˜q ! Q¨°4Ð8Ñ8Ô8Ð8Ð8Ø�AŠvˆvˆvˆvˆvˆvr   c                 óÌ   ‡— dgŠˆfd„}t          j        | |d¦  «        dd¬¦  «        \  }}t          |d¦  «         t          ‰d         d¦  «         t          ||¦  «         d S )Nr   c                 ó<   •— ‰dxx         dz  cc<   |  d| dz  z  z   S )Nr   r   g{®Gáz„?rD   r    ©r   Úcounts    €r   r   z3TestLineSearch.test_armijo_terminate_1.<locals>.phi5  ó,   ø€ Ø�!ˆHˆHŒH˜‰MˆHˆH‰HØ�2˜˜Q ™T™	‘>Ð!r   rC   r   )Úalpha0rD   )rƒ   r¡   r   r!   )rH   r   r   r   rÍ   s       @r   Útest_armijo_terminate_1z&TestLineSearch.test_armijo_terminate_10  s†   ø€ ð �ˆð	"ð 	"ð 	"ð 	"ð 	"õ Ô)¨#¨s¨s°1©v¬v°rÀ!ÐDÑDÔD‰ˆˆ4Ý�Q˜ÑÔÐÝ�U˜1”X˜qÑ!Ô!Ð!Ý�a˜ÑÔÐÐÐr   c           
      ó>  ‡— ˆfd„}ˆfd„}t           j        t           j        fD ]x}dgŠ ||| |d¦  «        d  |d¦  «        ¦  «        }|d         €J ||f¦   «         ‚‰d         dk    sJ ‰|f¦   «         ‚t          |d         ||t	          |¦  «        ¬¦  «         Œyd S )Nc                 ó<   •— ‰dxx         dz  cc<   |  d| dz  z  z   S )Nr   r   gš™™™™™©?rD   r    rÌ   s    €r   r   z0TestLineSearch.test_wolfe_terminate.<locals>.phiA  rÎ   r   c                 ó4   •— ‰dxx         dz  cc<   dd| z  z   S )Nr   r   rC   gš™™™™™¹?r    rÌ   s    €r   r   z3TestLineSearch.test_wolfe_terminate.<locals>.derphiE  s&   ø€ Ø�!ˆHˆHŒH˜‰MˆHˆH‰HØ˜˜q™‘=Ð r   r   rB   r‚   )rƒ   r„   rŠ   r   Ústr)rH   r   r   ra   ÚrrÍ   s        @r   Útest_wolfe_terminatez#TestLineSearch.test_wolfe_terminate=  sê   ø€ ð	"ð 	"ð 	"ð 	"ð 	"ð	!ð 	!ð 	!ð 	!ð 	!õ Ô,­bÔ.EÐFð 	?ð 	?ˆDØ�CˆEØ��S˜& # # a¡&¤&¨$°°°q±	´	Ñ:Ô:ˆAØ�Q”4Ð#Ð# a¨ YÑ#Ô#Ð#Ø˜”8˜uÒ$Ð$Ð$ u¨d mÑ$Ô$Ð$Ý˜˜1œ˜s FµC¸±I´IÐ>Ñ>Ô>Ð>Ð>ð	?ð 	?r   N)Ú__name__Ú
__module__Ú__qualname__rJ   rN   rS   rW   r[   rv   rz   r€   r…   r‹   r˜   rŸ   r¢   r³   rº   rÆ   rÉ   rÐ   rÖ   r    r   r   r>   r>   9   s:  € € € € € ðð ð ðð ð ðð ð ðð ð ðð ð ð7ð 7ð 7ð02ð 2ð 2ð4ð 4ð 4ð 
ð 
ð 
ðIð Ið Ið	#ð 	#ð 	#ðð ð ð(Bð Bð Bðð ð ð,ð ð ð:Að Að Að8ð ð ðð ð ð?ð ?ð ?ð ?ð ?r   r>   )r   r   r	   )r   r	   )r	   r5   )Ú__doc__r¶   Únumpy.testingr   r   r   Úscipy.optimize._linesearchÚoptimizeÚ_linesearchrƒ   r   Únumpyr-   rÄ   ri   r   r!   r1   r4   r<   r>   r    r   r   ú<module>rà      s7  ððð ð €€€ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð ðEð Eð Eð Eð(ð (ð (ð (ðFð Fð Fð
7ð 7ð 7ð7ð 7ð 7ð 7ðU?ð U?ð U?ð U?ð U?ñ U?ô U?ð U?ð U?ð U?r   