ó
V™xTc           @   sq   d  d l  m Z d  d l Z d  d l m Z d  d l m Z d „  Z d „  Z d „  Z	 e
 d k rm e	 ƒ  n  d S(	   iÿÿÿÿ(   t   divisionN(   t   flex(   t   lbfgsc          C   sN  t  j ƒ  }  |  j ƒ  d k s$ t ‚ |  j ƒ  d k s< t ‚ |  j ƒ  d k sT t ‚ |  j ƒ  j ƒ  d k sr t ‚ |  j ƒ  d k sŠ t ‚ t  j d d ƒ }  t  j d d d d ƒ }  t  j d d d d d d ƒ }  |  j ƒ  d k sê t ‚ |  j ƒ  d k st ‚ |  j ƒ  d k st ‚ |  j ƒ  j ƒ  d k s8t ‚ |  j ƒ  d k sPt ‚ x÷ d D]ï } t  j | d ƒ }  |  j ƒ  | k s‡t ‚ g  } x1 t	 d
 ƒ D]# } | j
 |  t j | ƒ ƒ ƒ qšW|  j ƒ  j ƒ  d
 k | d k r| d d d d d d d d d d g
 k sFt ‚ qW| d d d d d d d d d d g
 k sWt ‚ qWWd  S(   Ni    t   n_test_pointsi   t   max_drop_epsgü©ñÒMbP?t   iteration_coefficienti   i   i   i
   i   (   i   i   (   R   t   drop_convergence_testR   t   AssertionErrorR   R   t   objective_function_valuest   sizet   max_dropt   xranget   appendt   matht   exp(   t   cR   t	   convergedt   x(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lbfgs/tst_ext.pyt   exercise_drop_convergence_test   s2    	!3c   
      C   st  d } t  j | ƒ } t  j | ƒ } x2 t d | d ƒ D] } d | | <d | | d <q7 Wt j | ƒ } t j | ƒ } |  r­ d G| j ƒ  GHd G| j ƒ  GHd	 G| j ƒ  GHn  xAd
 } x” t d | d ƒ D]€ } d | | } d | | d | | | | }	 d |	 | | d <d | | | | d | | | <| | | |	 |	 } qÉ W| j	 | | | ƒ rhq° n  |  rªd G| Gd G| j
 | ƒ GH| j ƒ  G| j ƒ  G| j ƒ  GHn  | | | ƒ r½Pn  | j ƒ  d k rÓPn  | j	 | | | ƒ s° t ‚ q° | d k  st ‚ | j
 | ƒ d k  st ‚ | j ƒ  d k  s6t ‚ | j ƒ  d k  sNt ‚ t | j ƒ  d ƒ d k  spt ‚ d  S(   Nid   i    i   g333333ó¿g      ð?i   s   n: s   m: s   xtol: g        g      $@g      4@g       Às   f:s   gnorm:iÐ  gê-�™—q=g-Cëâ6?i(   i2   g�íµ ÷Æ°>(   R   t   doubleR   R   t	   minimizert   traditional_convergence_testt   nt   mt   xtolt   runt   euclidean_normt   itert   nfunt   stpR   t   abs(
   t   verboseR   R   t   gt   jR   t   is_convergedt   ft   t1t   t2(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lbfgs/tst_ext.pyt   exercise_minimization"   sF    
"" "  c          C   ss   d d  l  }  d d  l } d | j k } d | j k o: | } t ƒ  x t | ƒ | sG PqG qG |  j ƒ  } d GHd  S(   Niÿÿÿÿs	   --Endlesss	   --Verboset   OK(   t   ost   syst   argvR   R&   t   times(   R(   R)   t   EndlessR   t   t(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lbfgs/tst_ext.pyR   D   s    
 t   __main__(   t
   __future__R    R   t   scitbx.array_familyR   t   scitbxR   R   R&   R   t   __name__(    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lbfgs/tst_ext.pyt   <module>   s   		"	