ó
B™xTc           @   ss   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d	 S(
   iÿÿÿÿ(   t   division(   t   iteration_limit_exceeded(   t   reduction_base(   t   minimum_reduction_mixint	   reductionc           B   sq   e  Z d d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z RS(   c         C   s-   t  j |  | | | ƒ x |  j ƒ  r( q Wd  S(   N(   R   t   __init__t   step(   t   selft	   unit_cellt   relative_epsilont   iteration_limit(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR      s     c         C   s   d S(   Ns   Krivy-Gruber(    (   R   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyt   _name   s    c         C   s  |  j  } |  j } |  j } | |  j |  j ƒ sf | |  j |  j ƒ rs | t |  j ƒ t |  j ƒ ƒ rs |  j ƒ  n  | |  j |  j	 ƒ s¾ | |  j |  j	 ƒ rÌ | t |  j ƒ t |  j
 ƒ ƒ rÌ |  j ƒ  t S|  j ƒ  rå |  j ƒ  n
 |  j ƒ  | t |  j ƒ |  j ƒ sc| |  j |  j ƒ r;| |  j |  j |  j
 ƒ sc| |  j |  j ƒ rq| |  j
 d ƒ rq|  j ƒ  t S| t |  j ƒ |  j ƒ så| |  j |  j ƒ r½| |  j |  j |  j
 ƒ så| |  j |  j ƒ ró| |  j
 d ƒ ró|  j ƒ  t S| t |  j
 ƒ |  j ƒ sg| |  j
 |  j ƒ r?| |  j |  j |  j ƒ sg| |  j
 |  j ƒ ru| |  j d ƒ ru|  j ƒ  t S| |  j |  j |  j
 |  j |  j d ƒ sÿ| |  j |  j |  j
 |  j |  j d ƒ r| |  j |  j |  j |  j |  j
 d ƒ r|  j ƒ  t St S(   Ni    (   t   eps_eqt   eps_ltt   eps_gtt   at   bt   abst   dt   et	   a1_actiont   ct   ft	   a2_actiont   Truet   def_gt_0t	   a3_actiont	   a4_actiont	   a5_actiont	   a6_actiont	   a7_actiont	   a8_actiont   False(   t   st   eqt   ltt   gt(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR      s>    			KK

1(
1(
1(
.\
c         C   s   |  j  ƒ  d  S(   N(   t	   n1_action(   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   9   s    c         C   s   |  j  ƒ  d  S(   N(   t	   n2_action(   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   <   s    c         C   s   |  j  ƒ  d  S(   N(   t   n3_true_action(   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   ?   s    c         C   s   |  j  ƒ  d  S(   N(   t   n3_false_action(   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   B   s    c      
   C   sÍ   |  j  d k rc |  j d ƒ |  j |  j |  j  7_ |  j  |  j |  j 8_  |  j |  j 8_ nQ |  j d ƒ |  j |  j |  j  7_ |  j  |  j |  j 7_  |  j |  j 7_ |  j d k sÉ t ‚ d  S(   Ni    i   iÿÿÿÿ(	   i   i    i    i    i   iÿÿÿÿi    i    i   (	   i   i    i    i    i   i   i    i    i   (   R   t	   cb_updateR   R   R   R   t   AssertionError(   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   E   s    c      
   C   sÍ   |  j  d k rc |  j d ƒ |  j |  j |  j  7_ |  j |  j 8_ |  j  |  j |  j 8_  nQ |  j d ƒ |  j |  j |  j  7_ |  j |  j 7_ |  j  |  j |  j 7_  |  j d k sÉ t ‚ d  S(   Ni    i   iÿÿÿÿ(	   i   i    iÿÿÿÿi    i   i    i    i    i   (	   i   i    i   i    i   i    i    i    i   (   R   R)   R   R   R   R   R*   (   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   R   s    c      
   C   sÍ   |  j  d k rc |  j d ƒ |  j |  j |  j  7_ |  j |  j 8_ |  j  |  j |  j 8_  nQ |  j d ƒ |  j |  j |  j  7_ |  j |  j 7_ |  j  |  j |  j 7_  |  j d k sÉ t ‚ d  S(   Ni    i   iÿÿÿÿ(	   i   iÿÿÿÿi    i    i   i    i    i    i   (	   i   i   i    i    i   i    i    i    i   (   R   R)   R   R   R   R   R*   (   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   _   s    c      
   C   s”   |  j  d ƒ |  j |  j |  j |  j |  j |  j 7_ |  j |  j |  j |  j 7_ |  j |  j |  j |  j 7_ |  j d k s� t ‚ d  S(   Ni   i    (	   i   i    i   i    i   i   i    i    i   (   R)   R   R   R   R   R   R   R*   (   R!   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   l   s
    .  N(   t   __name__t
   __module__t   NoneR   R   R   R   R   R   R   R   R   R   R   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR      s   		*							t   minimum_reductionc           B   s#   e  Z d  Z d d „ Z d „  Z RS(   st   Development and regression test code. Do not use for applications.
     Use uctbx.fast_minimum_reduction instead.
  c         C   s   t  j |  | | ƒ d  S(   N(   R   R   (   R   R   R
   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   x   s    c         C   s&   t  j |  ƒ |  j ƒ  s" t ‚ n  d  S(   N(   R   R   t   significant_change_testt   StopIteration(   R   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR   {   s    N(   R+   R,   t   __doc__R-   R   R   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyR.   s   s   N(   t
   __future__R    t   cctbx.uctbx.reduction_baseR   R   R   R   R.   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/krivy_gruber_1976.pyt   <module>   s
   m