ó
(™xTc           @   sì   d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d  d l Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d k rè e d e j d ƒ n  d S(   iÿÿÿÿ(   t   divisionN(   t   flex(   t   approx_equal(   t   prime_factors_of(   t   format_cpu_timesc          C   sH  t  j d d ƒ }  x/t d d ƒ D]} t | ƒ } | d k rX t | ƒ d k rX q" n  |  j d | d ƒ d d j ƒ  } | j ƒ  } t  j d | d d | d | d | f ƒ } t	 j
 d | d	 | d
 | ƒ t j j | ƒ } | j ƒ  } | j | ƒ | j ƒ  } t  j | | ƒ d k r" t | | d d ƒs@t ‚ q" q" Wd  S(   Nt   seedi    i   ie   i   t   sizei   t   xyt   nt   dgñhãˆµøä>t   eps(   R   t   mersenne_twistert   xrangeR   t   maxt   random_doublet   as_floatt	   deep_copyt   intt   ccp4io_dev_extt   fftlib_cmplftt   scitbxt   fftpackt   complex_to_complext	   as_doublet   forwardt   max_absoluteR   t   AssertionError(   t   mtR   t   primest   zt	   cmplft_xyR	   t   fftt
   fftpack_xy(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt   compare_fftpack_with_cmplft_1d   s     $.c    	      C   s(  t  j d d ƒ }  xd d d g D]þ\ } } } |  j d d | | | ƒ d d j ƒ  } | j ƒ  } t  j d | | | d | | d | | | d | | d g ƒ } t j d | d | d | ƒ t  j d | | | d | d | | d | d g ƒ } t j d | d | d | ƒ t  j d | | | d d | | | d | | | d | g ƒ } t j d | d | d | ƒ t j	 j
 | | | f ƒ } | j ƒ  } | j t  j | | d | ƒ ƒ | j | ƒ | j ƒ  j ƒ  } t  j | | ƒ d k r" t | | d d ƒs t ‚ q" q" Wd  S(   NR   i    i   i   i(   i   i   i   i   i   i   R   i   i   R   R   R	   g-Cëâ6?R
   (   i   i   i(   (   i   i   i   (   i   i   i   (   R   R   R   R   R   R   R   R   R   R   t   complex_to_complex_3dR   t   reshapet   gridR   t   as_1dR   R   R   (	   R   t   nxt   nyt   nzR   R   R	   R   R    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt   compare_fftpack_with_cmplft_3d   s"    ,F:F c    
      C   s`  t  j d d ƒ }  xGt d d ƒ D]6} t | ƒ } | d k rX t | ƒ d k rX q" n  | d } | d } |  j d | ƒ d d j ƒ  } | j ƒ  } t  j | d | | | f ƒ } t	 j
 d | d	 | d
 | ƒ t j j | ƒ } | j ƒ  | k sü t ‚ | j ƒ  }	 | j |	 ƒ |	 j ƒ  }	 t  j | |	 ƒ d k r" t | |	 d d ƒsXt ‚ q" q" Wd  S(   NR   i    i   ie   i   i   R   R   R   R	   gñhãˆµøä>R
   (   R   R   R   R   R   R   R   R   R   R   t   fftlib_realftR   R   t   real_to_complext   m_realR   R   R   R   R   (
   R   t   n_cmplR   t   n_realR,   R   t	   realft_xyR	   R   R    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt   compare_fftpack_with_realft_1d0   s$     

 c          C   së  t  j d d ƒ }  xÒt d d ƒ D]Á} t | ƒ } | d k rX t | ƒ d k rX q" n  | d } | d } |  j d | ƒ d d j ƒ  } | j ƒ  } | d | d <d	 | d <t  j | d | | | f ƒ } t	 j
 d
 | d | d | ƒ | d d	 k s t ‚ | d | d k st ‚ d | d <d | d <t j j | ƒ } | j ƒ  | k sXt ‚ | j ƒ  }	 x, t | ƒ D] }
 |	 |
 d d c d 9<qqW| j |	 ƒ |	 j ƒ  }	 t  j | |	 ƒ d k r" t | |	 d d ƒsãt ‚ q" q" Wd  S(   NR   i    i   ie   i   i   R   iþÿÿÿiý   R   R   R	   iÿÿÿÿgñhãˆµøä>R
   (   R   R   R   R   R   R   R   R   R   R   t   fftlib_hermftR   R   R   R+   R,   R   t   backwardR   R   (   R   R-   R   R.   R,   R   t	   hermft_xyR	   R   R    t   i(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt   compare_fftpack_with_hermft_1dC   s4     

 


 c         C   so   |  | | } t  j d | d |  j ƒ  d | d |  j ƒ  ƒ } | rk d G|  | | f Gd G| j ƒ  GHn  d  S(   Nt   xi    t   yi   s   dims:s   complete=true,false cc:(   R   t   linear_correlationR   t   coefficient(   t   nut   nvt   nwt   recycledt   verboset   nuvwt   corr(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt   show_complete_true_false_cce   s    	c         C   sš  | | | d } |  j  d | ƒ d d j ƒ  } | j ƒ  } t j d | d | d | d | d t ƒ | j ƒ  } t j d | d | d | d | ƒ t j d | d | d | d | d t ƒ | d | | | 9} | | | |  }	 | | | |  }
 t j	 |	 |
 ƒ d	 k r-t
 |	 |
 d
 d	 ƒs-t ‚ n  t j j | | | f ƒ } t j t j | j ƒ  ƒ j | j ƒ  ƒ ƒ } | j ƒ  | j ƒ  k s“t ‚ xx t | ƒ D]j } xa t | ƒ D]S } xJ t | d ƒ D]8 } | | | | | | | | | | | d | <qÊWq³Wq W| j | ƒ xÈ t | ƒ D]º } x± t | ƒ D]£ } xš t | d d ƒ D]„ } | d } | d } xg | | g D]Y } | | | | | d | } | | | | | | } t
 | | d
 d ƒs}t ‚ q}WqVWq;Wq(W| j ƒ  } t j d | d | d | d | d t ƒ t j d | d | d | d | ƒ t j d | d | d | d | d t ƒ | d | | | 9} t | | | | | f | ƒ d  S(   Ni   R   i   R6   R:   R;   R<   t   completegñhãˆµøä>R
   g-Cëâ6?(   R   R   R   R   t%   fftlib_real_to_complex_3d_real_imag_wt   Truet"   hermitian_conjugate_3d_real_imag_wt%   fftlib_complex_to_real_3d_real_imag_wR   R   R   R   R   R   t   real_to_complex_3dt   doubleR$   R,   t	   set_focusR.   R   R   R   t   FalseRA   (   R   R:   R;   R<   R>   t   map_sizet   mapR6   t   ft   xfocust   mfocusR   t   gt   ut   vt   wt   wrt   wit   wjt   get   feR7   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt6   exercise_fftlib_real_complex_3d_real_imag_w_given_dimsm   sN     	"	->

+	"	c      	   C   s}   t  j d d ƒ } xd t d d ƒ D]S } xJ t d d ƒ D]9 } x0 t d d d ƒ D] } t | | | | |  ƒ qQ Wq8 Wq" Wd  S(   NR   i    i   i	   i   (   R   R   R   RY   (   R>   R   R:   R;   R<   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt+   exercise_fftlib_real_complex_3d_real_imag_w™   s    c   
      C   s!  t  j d d ƒ } d \ } } } | | | d } | j d | ƒ d d j ƒ  } g  } x« t t g D]� } | j ƒ  }	 t j d	 |	 d
 | d | d | d | ƒ t j	 d	 |	 d
 | d | d | ƒ t j
 d	 |	 d
 | d | d | d | ƒ | j |	 | | |  ƒ qf Wt | | | | |  ƒ d  S(   NR   i    i2   i4   i6   i   R   i   R6   R:   R;   R<   RB   (   i2   i4   i6   (   R   R   R   R   RD   RJ   R   R   RC   RE   RF   t   appendRA   (
   R>   R   R:   R;   R<   RK   RL   R=   RB   R6   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt0   compare_large_3d_real_imag_w_complete_true_false¡   s     	"	c         C   so   |  g  d g g k s t  ‚ t |  ƒ d k } t ƒ  t ƒ  t ƒ  t ƒ  t d | ƒ t d | ƒ t ƒ  GHd  S(   Ns	   --verbosei    R>   (	   R   t   lenR!   R)   R0   R5   RZ   R\   R   (   t   argsR>   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt   run±   s    t   __main__R^   i   (   t
   __future__R    R   t   scitbx.fftpackR   t   scitbx.array_familyR   t   libtbx.test_utilsR   t   libtbx.math_utilsR   t   libtbx.utilsR   t   sysR!   R)   R0   R5   RA   RY   RZ   R\   R_   t   __name__t   argv(    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/ccp4io_adaptbx/dev/tst_fftlib.pyt   <module>   s$   				"		,			