§
    ¢éUg¤*  ã                   óŠ   — d Z ddlmZmZmZmZmZ ddlmc m	Z
 ddlm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
é    )Úassert_equalÚassert_array_almost_equalÚassert_array_almost_equal_nulpÚassert_warnsÚsuppress_warningsN)Ú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              úc/var/www/surfInsights/venv3-11/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)   r1   Úkws   `` `` r   Úassert_line_wolfer3   %   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)   r2   s   `` ` r   Úassert_line_armijor6   *   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>   .   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                 óp   — | xj         dz  c_         | |dz  z
  |dz  z   }dd|dz  z  z
  d|dz  z  z   }||fS )Nr!   é   é   éÿÿÿÿé   )Úfcount©Úselfr   r*   Údps       r   Ú_scalar_func_1zTestLineSearch._scalar_func_18   sQ   € ØˆŒ�qÑˆŒØˆB��A‘‰I˜˜1™ÑˆØ�!�A�q‘D‘&‰[˜1˜Q ™T™6Ñ!ˆØ�"ˆuˆr   c                 ó¤   — | xj         dz  c_         t          j        d|z  ¦  «        |dz  z   }dt          j        d|z  ¦  «        z  d|z  z   }||fS )Nr!   éüÿÿÿrE   )rF   r/   ÚexprG   s       r   Ú_scalar_func_2zTestLineSearch._scalar_func_2>   sS   € ØˆŒ�qÑˆŒÝŒF�2�a‘4‰LŒL˜1˜a™4ÑˆØ•”�r˜!‘t‘”‰_˜q ™sÑ"ˆØ�"ˆuˆr   c                 óŽ   — | xj         dz  c_         t          j        d|z  ¦  «         }dt          j        d|z  ¦  «        z  }||fS )Nr!   é
   iöÿÿÿ)rF   r/   ÚsinÚcosrG   s       r   Ú_scalar_func_3zTestLineSearch._scalar_func_3D   sD   € ØˆŒ�qÑˆŒÝŒV�B�q‘D‰\Œ\ˆMˆØ•”˜˜1™‘”ÑˆØ�"ˆuˆr   c                 ó^   — | xj         dz  c_         t          j        ||¦  «        }d|z  }||fS )Nr!   rE   )rF   r/   r0   ©rH   r+   r)   Údfs       r   Ú_line_func_1zTestLineSearch._line_func_1L   s3   € ØˆŒ�qÑˆŒÝŒF�1�a‰LŒLˆØˆq‰SˆØ�"ˆuˆr   c                 óØ   — | xj         dz  c_         t          j        |t          j        | j        |¦  «        ¦  «        dz   }t          j        | j        | j        j        z   |¦  «        }||fS )Nr!   )rF   r/   r0   ÚAÚTrU   s       r   Ú_line_func_2zTestLineSearch._line_func_2R   s[   € ØˆŒ�qÑˆŒÝŒF�1•b”f˜TœV QÑ'Ô'Ñ(Ô(¨1Ñ,ˆÝŒV�D”F˜TœVœXÑ% qÑ)Ô)ˆØ�"ˆuˆr   c           	      óx  — g | _         g | _        d| _        d| _        d„ }t	          t          | ¦  «        ¦  «        D ]¯}|                     d¦  «        rBt          | |¦  «        }| j                              | ||d¦  «         ||d¦  «        f¦  «         ŒY|                     d¦  «        rAt          | |¦  «        }| j                             | ||d¦  «         ||d¦  «        f¦  «         Œ°t          j
                             d¦  «         t          j
                             | j        | j        ¦  «        | _        d S )Né   r   c                 ó   ‡ ‡— ˆ ˆfd„S )Nc                  ó    •—  ‰| i |¤Ž‰         S r&   r"   )Úar2   ÚfuncÚidxs     €€r   r,   zATestLineSearch.setup_method.<locals>.bind_index.<locals>.<lambda>b   s   ø€  D D¨! N¨r N N°3Ô$7€ r   r"   )ra   rb   s   ``r   Ú
bind_indexz/TestLineSearch.setup_method.<locals>.bind_index`   s   øø€ à7Ð7Ð7Ð7Ð7Ð7r   Ú_scalar_func_r!   Ú_line_func_iÒ  )Úscalar_funcsÚ
line_funcsÚNrF   ÚsortedÚdirÚ
startswithÚgetattrÚappendr/   ÚrandomÚseedÚrandnrY   )rH   rc   ÚnameÚvalues       r   Úsetup_methodzTestLineSearch.setup_methodZ   sR  € ØˆÔØˆŒØˆŒØˆŒð	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øõ 	Œ	�Š�tÑÔÐÝ”—’ ¤¨¬Ñ0Ô0ˆŒˆˆr   c              #   óz   K  — | j         D ]0\  }}}t          j                             d¦  «        D ]
}||||fV — ŒŒ1d S )NrB   )rf   r/   rn   rp   )rH   rq   r   r   Úold_phi0s        r   Úscalar_iterzTestLineSearch.scalar_iterq   sc   è è € Ø!%Ô!2ð 	2ð 	2ÑˆD�#�vÝœIŸOšO¨AÑ.Ô.ð 2ð 2�Ø˜C ¨Ð1Ð1Ð1Ð1Ð1ð2ð	2ð 	2r   c              #   óŒ  K  — | j         D ]¹\  }}}d}|dk     r«t          j                             | j        ¦  «        }t          j                             | j        ¦  «        }t          j        | ||¦  «        ¦  «        dk    rŒq|dz  }t          t          j                             ¦   «         ¦  «        }||||||fV — |dk     °«Œºd S )Nr   é	   r!   )rg   r/   rn   rp   rh   r0   Úfloat)rH   rq   r)   r1   Úkr+   r*   Úold_fvs           r   Ú	line_iterzTestLineSearch.line_iterv   sÈ   è è € Ø#œð 
	4ð 
	4‰OˆD�!�VØˆAØ�a’%�%Ý”I—O’O D¤FÑ+Ô+�Ý”I—O’O D¤FÑ+Ô+�Ý”6˜!˜V˜V A™YœYÑ'Ô'¨1Ò,Ð,àØ�Q‘�Ý�rœyŸšÑ0Ô0Ñ1Ô1�Ø˜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   rB   )rv   ÚlsÚscalar_search_wolfe1r>   r   )	rH   Úcrq   r   r   ru   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~   )rv   r   Úscalar_search_wolfe2r>   r   )	rH   rq   r   r   ru   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é   rE   r"   ©Úalphas    r   r   zCTestLineSearch.test_scalar_search_wolfe2_with_low_amax.<locals>.phiœ   s   € Ø˜A‘I !Ñ#Ð#r   c                 ó   — d| dz
  z  S )NrE   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!   éýÿÿÿrE   rB   )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„   )rv   r   Úscalar_search_armijor>   r#   )rH   rq   r   r   ru   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| _        t          j        |||||
|	||¬¦  «        \  }}}}}}t	          | 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~   rB   )r|   rF   r   Úline_search_wolfe1r   r>   r   r3   )rH   r�   Úsmaxrq   r)   r1   r+   r*   Úold_fÚf0Úg0r   ÚfcÚgcÚfvÚofvÚgvs                    r   Útest_line_search_wolfe1z&TestLineSearch.test_line_search_wolfe1Â   sJ  € ØˆØˆØ,0¯NªNÑ,<Ô,<ð 	Dð 	DÑ(ˆD�!�V˜Q  5Ø��1‘”ˆBØ�˜‘”ˆBØˆDŒKÝ%'Ô%:¸1¸fÀaÈØ;=¸rÀ5Ø@Dð&Fñ &Fô &FÑ"ˆAˆr�2�r˜3 õ ˜œ b¨¡eÑ,Ô,Ð,Ý˜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 �]9\  }}}}}} ||¦  «        }	 ||¦  «        }
d| _        t          ¦   «         5 }|                     t          d¦  «         |                     t          d¦  «         t          j        |||||
|	||¬¦  «        \  }}}}}}d d d ¦  «         n# 1 swxY w Y   t          | j        ||z   ¦  «         t          | ||¦  «        ¦  «         t          | ||||z  z   ¦  «        ¦  «         |�!t          | ||||z  z   ¦  «        d¬¦  «         ||k     r|dz  }t          ||||||¬	¦  «         �Œ;|d
k    sJ ‚d S )Nr   i   z3The line search algorithm could not find a solutionz*The line search algorithm did not converger�   r¢   r£   r!   r~   rB   )r|   rF   r   Úfilterr   r   Úline_search_wolfe2r   r>   r   r3   )rH   r�   r¦   rq   r)   r1   r+   r*   r§   r¨   r©   Úsupr   rª   r«   r¬   r­   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Ý"Ñ$Ô$ð J¨Ø—
’
Õ,ØPñRô Rð Rà—
’
Õ,ØGñIô Ið 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õ ˜œ b¨¡eÑ,Ô,Ð,Ý˜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B4Â4B8	Â;B8	c           
      ób  — d„ }d„ }t          j        ddg¦  «        }d|z  }d}t          j        ||||d|¬¦  «        \  }}}}}}t	          |||||¦  «         t          t          t          j        ||||d	|¬¦  «        \  }}}}}}|�J ‚t          t          t          j        |||||d
¬¦  «         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 )NrE   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²   r3   r   r   )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Ñ)Ô)Ð)å'Õ(9Ý(*Ô(=¸qÀ"ÀaÈØ-/°Bð8ñ 8ô 8Ñˆˆ1ˆa��A�qð ˆyˆyˆyõ 	Õ&­Ô(=¸qÀ"ÀaÈØ Að	'ñ 	'ô 	'ð 	'ð 	'ð 	'r   c           	      ób  — d}|                       ¦   «         D ]�\  }}}}}} ||¦  «        } ||¦  «        }	d| _        t          j        ||||	|¦  «        \  }
}}|dz  }t	          | j        |¦  «         t          | |||
|z  z   ¦  «        ¦  «         t          |||
||¬¦  «         Œ�|dk    sJ ‚d S )Nr   r!   r~   rx   )r|   rF   r   Úline_search_armijor   r>   r6   )rH   r�   rq   r)   r1   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ÝÔ-¨a°°A°r¸2Ñ>Ô>‰IˆAˆr�2Ø�‰FˆAÝ˜œ bÑ)Ô)Ð)Ý˜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„?rE   r"   ©r   Úcounts    €r   r   z3TestLineSearch.test_armijo_terminate_1.<locals>.phi!  ó,   ø€ Ø�!ˆHˆHŒH˜‰MˆHˆH‰HØ�2˜˜Q ™T™	‘>Ð!r   rD   r!   )Úalpha0rE   )r   rž   r   r#   )rH   r   r   r   rÅ   s       @r   Útest_armijo_terminate_1z&TestLineSearch.test_armijo_terminate_1  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š™™™™™©?rE   r"   rÄ   s    €r   r   z0TestLineSearch.test_wolfe_terminate.<locals>.phi-  rÆ   r   c                 ó4   •— ‰dxx         dz  cc<   dd| z  z   S )Nr   r!   rD   gš™™™™™¹?r"   rÄ   s    €r   r   z3TestLineSearch.test_wolfe_terminate.<locals>.derphi1  s&   ø€ Ø�!ˆHˆHŒH˜‰MˆHˆH‰HØ˜˜q™‘=Ð r   r   rC   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[   rs   rv   r|   r‚   rˆ   r•   rœ   rŸ   r¯   r´   r¾   rÁ   rÈ   rÎ   r"   r   r   r@   r@   6   s7  € € € € € ðð ð ðð ð ðð ð ðð ð ðð ð ð1ð 1ð 1ð.2ð 2ð 2ð
4ð 4ð 4ð
ð 
ð 
ðIð Ið Ið	#ð 	#ð 	#ðð ð ð(Bð Bð Bðð ð ð,ð ð ð2'ð 'ð 'ð8ð ð ðð ð ð?ð ?ð ?ð ?ð ?r   r@   )r	   r
   r   )r	   r   )r   r7   )Ú__doc__Únumpy.testingr   r   r   r   r   Úscipy.optimize._linesearchÚoptimizeÚ_linesearchr   r   Únumpyr/   r   r#   r3   r6   r>   r@   r"   r   r   ú<module>rØ      s-  ððð ð.ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð ðEð Eð Eð Eð(ð (ð (ð (ðFð Fð Fð
7ð 7ð 7ð7ð 7ð 7ð 7ðD?ð D?ð D?ð D?ð D?ñ D?ô D?ð D?ð D?ð D?r   