ó
]xTc           @   sĄ   d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 Z
 d d d     YZ d   Z e d	 k r e d
 d e
 j d k  n  d S(   i˙˙˙˙(   t   divisionN(   t   flex(   t   approx_equal(   t   StringIOt   test_function_5_1c           B   s&   e  Z d  d  Z d   Z d   Z RS(   i   c         C   s   | |  _  d  S(   N(   t   beta(   t   selfR   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_line_search.pyt   __init__
   s    c         C   s6   | j    d k s t  | d } | | d |  j S(   Ni   i    i   (   t   sizet   AssertionErrorR   (   R   t   xt   alpha(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_line_search.pyt
   functional   s    
c         C   sP   | j    d k s t  | d } t j | d |  j | d |  j d g  S(   Ni   i    i   (   R   R	   R   t   doubleR   (   R   R
   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_line_search.pyt	   gradients   s    
(   t   __name__t
   __module__R   R   R   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_line_search.pyR      s   	c         C   sň  t  j j   } |  r! t j } n	 t   } | j d |  | J| j d k sS t  d | _	 | j	 d k sq t  t
 j d g  } t
 j d g  } t   } | j d | d | j |  d | j |  d	 | d
 d  | j d k sí t  | j d |  | d It |  IJ| Jx | j d k rŚ| j d | d | j |  d | j |   |  r| j d |  | d It |  IJ| d I| j |  IJ| JqqW| j d k sźt  | j d k sŃt  t | j d  sét  d GHd  S(   Nt   fi   g{ŽGáz?i    i   R
   R   R   t   search_directiont,   initial_estimate_of_satisfactory_step_lengthi˙˙˙˙s   x:s   functional:i   gCÝ9¸ö?t   OK(   t   scitbxt   matht   line_search_more_thuente_1994t   syst   stdoutR   t   show_statust   maxfevR	   t   gtolR   R   R   t   startR   R   t	   info_codet   listt   nextt   nfevR   t   stp(   t   verboset   line_searcht   outR
   R   t   tf(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_line_search.pyt   exercise   sH    					t   __main__R#   s	   --verbosei   (    (   t
   __future__R    t   scitbx.mathR   t   scitbx.array_familyR   t   libtbx.test_utilsR   t	   cStringIOR   R   R   R'   R   t   argv(    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_line_search.pyt   <module>   s   	'