ó
U™xTc           @   s  d  d l  m Z d  d l m Z d  d l m Z d  d l Z d  d l m Z d  d l	 Z
 d  d l Z d  d l Z d  d l 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 e d k re ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   fftpack(   t   flexN(   t   approx_equalc         C   s%   d |  f } | d k r! | d S| S(   Ns   %.1fs   -0.0i   (    (   t   ft   s(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   fmtfloat   s     c         C   sK   xC t  t |  ƒ ƒ D]/ } d t |  | j ƒ t |  | j ƒ f GHq WHd  S(   Ns   (%s,%s)(   t   xranget   lenR   t   realt   imag(   t   vct   i(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt	   show_cseq   s    -c         C   s+   x# t  | ƒ D] } t |  | ƒ GHq WHd  S(   N(   R   R   (   t   vrt   nR   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt	   show_rseq   s    c         C   s}   xu t  | d ƒ D]c } xZ t  | d ƒ D]H } x? t  | d ƒ D]- } t |  | | d | | d | ƒ GHq? Wq( Wq WHd  S(   Ni    i   i   (   R   R   (   t   at   mR   R   t   jt   k(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   show_rseq_3d   s
    3c         C   sg   x` t  |  j ƒ  ƒ D]L } |  | j | d | k s: t ‚ |  | j | d | d k s t ‚ q Wd  S(   Ni   i   (   R   t   sizeR	   t   AssertionErrorR
   (   R   t   vdR   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   assert_complex_eq_real!   s    !c         C   s  t  j d ƒ } t j | j ƒ  ƒ } t j | j ƒ  d ƒ } xe t | j ƒ  ƒ D]Q } t d | d | d ƒ | | <d | | d | <d | d | d | d <qP W| j | ƒ } | j | ƒ } xp | | f D]b } | j	 ƒ  d k sî t
 ‚ | j ƒ  d | j ƒ  k st
 ‚ | j ƒ  d | j ƒ  k sÐ t
 ‚ qÐ W|  rIt | ƒ n  t | | ƒ | j | ƒ } | j | ƒ } xp | | f D]b } | j	 ƒ  d k sŸt
 ‚ | j ƒ  d | j ƒ  k sÁt
 ‚ | j ƒ  d | j ƒ  k s�t
 ‚ q�W|  rút | ƒ n  t | | ƒ d  S(	   Ni   i   g       @g      ð?i   i    (   i    (   i    (   R   t   complex_to_complexR   t   complex_doubleR   t   doubleR   t   complext   forwardt   originR   t   allt   focusR   R   t   backward(   t   verboset   fftR   R   R   t   vctt   vdtt   t(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   test_complex_to_complex&   s2    "& "& c   
      C   s`  t  j d ƒ } | j ƒ  } t j t j | ƒ ƒ } t j t j | d d | d f ƒ ƒ } x9 t | j ƒ  ƒ D]% } t	 d | d | d ƒ | | <qp Wx$ t | j ƒ  ƒ D] } | | | <q¬ W| j
 | ƒ } | j
 | ƒ } xh | | f D]Z } | j ƒ  d k s	t ‚ | j ƒ  | j ƒ  k s't ‚ | j ƒ  | j ƒ  k së t ‚ që W|  r\t | ƒ n  t | | ƒ | j | ƒ } | j | ƒ } xh | | f D]Z } | j ƒ  d k s²t ‚ | j ƒ  | j ƒ  k sÐt ‚ | j ƒ  | j ƒ  k s”t ‚ q”W|  rt | ƒ n  t | | ƒ | j ƒ  d }	 x7 t | j ƒ  ƒ D]# } t | | |	 | ƒ s5t ‚ q5Wd  S(	   Ni   i
   i    i   i   (   i   i
   (   i    i    (   i    i    (   R   t   complex_to_complex_2dR   R   R   t   gridR   R   R   R   R   R   R   R    R!   R   R   R"   R   (
   R#   R$   R   R   R   R   R%   R&   R'   R   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   test_complex_to_complex_2d?   s:    *#" " c   	      C   s  t  j d ƒ } | j ƒ  } t j t j | ƒ ƒ } t j t j | d | d d | d f ƒ ƒ } x9 t | j ƒ  ƒ D]% } t	 d | d | d ƒ | | <qw Wx$ t | j ƒ  ƒ D] } | | | <q³ W| j
 | ƒ } | j
 | ƒ } xh | | f D]Z } | j ƒ  d k st ‚ | j ƒ  | j ƒ  k s.t ‚ | j ƒ  | j ƒ  k sò t ‚ qò W|  rct | ƒ n  t | | ƒ | j | ƒ } | j | ƒ } xh | | f D]Z } | j ƒ  d	 k s¹t ‚ | j ƒ  | j ƒ  k s×t ‚ | j ƒ  | j ƒ  k s›t ‚ q›W|  rt | ƒ n  t | | ƒ d  S(
   Ni   i   i   i    i   i   (   i   i   i   (   i    i    i    (   i    i    i    (   R   t   complex_to_complex_3dR   R   R   R*   R   R   R   R   R   R   R   R    R!   R   R   R"   (	   R#   R$   R   R   R   R   R%   R&   R'   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   test_complex_to_complex_3d\   s4    1#" " c   
      C   s'  t  j d ƒ } t j | j ƒ  ƒ } t j | j ƒ  ƒ } x( t | j ƒ  ƒ D] } d | | | <qL WxA t | j ƒ  ƒ D]- } t	 | d | | d | d ƒ | | <qw W| j
 | ƒ } | j
 | ƒ } xp | | f D]b } | j ƒ  d k sñ t ‚ | j ƒ  d | j ƒ  k st ‚ | j ƒ  d | j ƒ  k sÓ t ‚ qÓ W|  rUt | | j ƒ  ƒ n  t | | ƒ | j | ƒ } | j | ƒ } xp | | f D]b } | j ƒ  d k s«t ‚ | j ƒ  d | j ƒ  k sÍt ‚ | j ƒ  d | j ƒ  k s�t ‚ q�W|  rt | | j ƒ  ƒ n  t | | ƒ t  j d ƒ } | j ƒ  d k sCt ‚ t j | j ƒ  d ƒ } d | d	 <| j | ƒ }	 xC t d | j ƒ  d	 ƒ D]) } t |	 | | d	 !ƒ d k s�t ‚ q�Wt j | j ƒ  d ƒ } d | d <| j | ƒ }	 x¾ t d | j ƒ  d ƒ D]¤ } t |	 | | d !ƒ d k s-t ‚ t |	 | d d
 t j d ƒ ƒ sWt ‚ t |	 | d	 | d !ƒ d k s~t ‚ t |	 | d d t j d ƒ ƒ st ‚ qWt j | j ƒ  d ƒ } d | d <| j | ƒ }	 xC t d | j ƒ  d ƒ D]) } t |	 | | d !ƒ d k söt ‚ qöWd  S(   Ni   g      ð?i   i   i    i   i	   y              ð?i   iþÿÿÿi   i   i   iÿÿÿÿ(   i    (   i    y      ð?      ð?(   i   iþÿÿÿiþÿÿÿi   y      ð?      ð?(   i   i    iþÿÿÿ(   iþÿÿÿi    i   (   i   iÿÿÿÿ(   R   t   real_to_complexR   R   t   m_realR   t	   n_complexR   t   n_realR   R   R   R   R    R!   R   R   R"   t   tupleR   t   matht   sqrt(
   R#   R$   R   R   R   R&   R%   R'   t   xt   y(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   test_real_to_complexv   sZ    +"& "& 
'
#*'.
c          C   sÀ  t  j d d ƒ }  x§t d d ƒ D]–} t j | ƒ } | j ƒ  | k sO t ‚ | j ƒ  | d d k so t ‚ | j ƒ  | j ƒ  d k s‘ t ‚ | j ƒ  } |  j	 d | ƒ d d } | j
 ƒ  } | j | ƒ | d d k rü t | d d ƒ sü t ‚ n  | j
 ƒ  } | j | ƒ | d | 9} t | |  | |  ƒ s@t ‚ | d d k r" t | | d d g ƒ sot ‚ | j
 ƒ  } d | d <| j | ƒ | d | 9} t | | ƒ s¸t ‚ q" q" Wd  S(	   Nt   seedi   ie   i   R   i    iÿÿÿÿi{   (   R   t   mersenne_twisterR   R   R.   R1   R   R0   R/   t   random_doublet	   deep_copyR   R   R"   (   t   mtR1   R$   R/   t   zt   ct   rt   q(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt%   exercise_real_to_complex_padding_area¬   s.     "
c         C   sY  xRd d g D]D} x;d d g D]-} x$d d g D]} t  j | | | f ƒ } | j ƒ  } t j t j | ƒ ƒ } t j t j | d | d | d d f ƒ ƒ } | j ƒ  d | j ƒ  k sÈ t ‚ x2 t	 | j ƒ  ƒ D] } t
 j
 ƒ  d d | | <qÛ W| j ƒ  }	 xA t	 | j ƒ  ƒ D]- } t | d | | d | d ƒ | | <qW| j | ƒ }
 | j | ƒ } xh |
 | f D]Z } | j ƒ  d	 k s–t ‚ | j ƒ  | j ƒ  k s´t ‚ | j ƒ  | j ƒ  k sxt ‚ qxW|  rût | | j ƒ  | j ƒ  ƒ n  t | | ƒ | j | ƒ }
 | j | ƒ } xh |
 | f D]Z } | j ƒ  d
 k sQt ‚ | j ƒ  | j ƒ  k sot ‚ | j ƒ  | j ƒ  k s3t ‚ q3W|  r¶t | | j ƒ  | j ƒ  ƒ n  t | | ƒ | | | } xu t	 | ƒ D]g } x^ t	 | ƒ D]P } xG t	 | ƒ D]9 } t |
 | | | f |	 | | | f | ƒ st ‚ qWqñWqÞWq3 Wq  Wq Wd  S(   Ni   i   i   i   i   i    i   i   (   i    i    i    (   i    i    i    (   R   t   real_to_complex_3dR/   R   R   R*   R   R   R   R   t   randomR;   R   R   R   R    R0   R!   R   R   R"   R1   R   (   R#   t   nxt   nyt   nzR$   R   R   R   R   t   vd_origR&   R%   R'   R   t   ixt   iyt   iz(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   test_real_to_complex_3dÅ   sH    1"+" " c         C   sc   x\ t  | ƒ D]N } | | |  } t | | | ƒ d k  s t d | |  | | | f ƒ ‚ q Wd  S(   Ng�íµ ÷Æ°>s   %d/%d %.6g %.6g(   R   t   absR   (   R   R   t   v_int   v_trR   R5   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   compare_vectorsé   s    c   	      C   sÙ   xÒ t  d |  d ƒ D]½ } t j | ƒ } | d } t j ƒ  } x' t  | ƒ D] } | j t j ƒ  ƒ qL Wxe | j | j f | j | j f f D]? \ } } | j	 ƒ  } | | ƒ | | ƒ t
 | | | | ƒ qŽ Wq Wd  S(   Ni   i   (   R   R   R   R   R   t   appendRC   R   R"   R;   RO   (	   t   max_transform_sizeR   R$   R   RM   R   R   t   bRN   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   test_comprehensive_cc_1dî   s    
1

c         C   sE  x>t  d |  d ƒ D])} t j | ƒ } | j ƒ  } t j ƒ  } x' t  | ƒ D] } | j t j ƒ  ƒ qN Wx$ t  | | ƒ D] } | j d ƒ q{ W| j ƒ  } | j	 | ƒ | j
 | ƒ t | | | | ƒ | d | | <d | d <| d d k rd | | d <n  | j ƒ  } | j
 | ƒ | j	 | ƒ t | | | | ƒ q Wd  S(   Ni   iç  i    i   (   R   R   R.   R/   R   R   RP   RC   R;   R   R"   RO   (   RQ   R   R$   R   RM   R   RN   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   test_comprehensive_rc_1dû   s(    
 c          C   sŠ  t  j j ƒ  }  d d l m } | j t j d d d g ƒ } | j sW t	 j
 d ƒ n  t j d d ƒ d	 k su t ‚ t j d d d
 ƒ d k s– t ‚ t j d d ƒ d k s´ t ‚ t j d d d ƒ d k sÕ t ‚ t j d t ƒ } | j ƒ  d k sÿ t ‚ t | j ƒ  ƒ d k st ‚ t | j ƒ t | j ƒ t | j ƒ t | j ƒ t | j ƒ t ƒ  d } t | ƒ t | ƒ |  ƒ  d  S(   Niÿÿÿÿ(   t   command_linei   t
   RandomSeedt   Verbosei    i   i   i   i   i   i   i"   i   i$   i
   i   i   i(   i   i   i,  (   i   i   i"   (   i   i   i$   (   i   i   i"   (   i   i
   i   (   i   i   i(   (   i   i   i   (   t   libtbxt   utilst
   show_timest   scitbx.python_utilsRU   t   parse_optionst   syst   argvRV   RC   R8   R   t   adjust_griddingR   t   adjust_gridding_triplet   factorizationt   FalseR   R2   t   factorsR(   RW   R7   R+   R-   RK   RA   RS   RT   (   RZ   RU   t   flagsR   RQ   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   run  s0    	 !!

t   __main__(   t
   __future__R    t   scitbxR   t   scitbx.array_familyR   t   omptbxt   libtbx.test_utilsR   t   libtbx.utilsRX   RC   R3   R]   R   R   R   R   R   R(   R+   R-   R7   RA   RK   RO   RS   RT   Re   t   __name__(    (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/fftpack/boost_python/tst_fftpack.pyt   <module>   s2   									6		$				