ó
^™xTc           @   s  d  d l  m 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
 j d ƒ d e
 j d k rñ e ƒ  e ƒ  e ƒ  n  e d e
 j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   math(   t   flex(   t   approx_equalNc           C   sU   t  t j d d ƒ d ƒ s! t ‚ t  t j d t j d g ƒ ƒ d g ƒ sQ t ‚ d  S(   Ni   i   g¼“¡ŽÝÛ?(   R   R   t   spherical_besselt   AssertionErrort   spherical_bessel_arrayR   t   double(    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   exercise_interfaces   s    !c         C   s   t  j |  ƒ |  } | S(   N(   t   smatht   sin(   t   xt   result(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   j0   s    c         C   s,   t  j |  ƒ |  |  t  j |  ƒ |  } | S(   N(   R	   R
   t   cos(   R   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   j1   s    (c         C   s@   d |  |  d t  j |  ƒ |  d t  j |  ƒ |  |  } | S(   Ng      @g      ð?(   R	   R
   R   (   R   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   j2   s    <c          C   sô   t  j t d d ƒ ƒ d }  t j d |  ƒ } t j d |  ƒ } t j d |  ƒ } x› t |  | | | ƒ D]„ \ } } } } t | t | ƒ ƒ | d k  s  t ‚ t | t	 | ƒ ƒ | d k  sÆ t ‚ t | t
 | ƒ ƒ | d k  sh t ‚ qh Wd  S(   Ni   id   g     ÀX@i    i   gñhãˆµøä>(   R   R   t   rangeR   R   t   zipt   absR   R   R   R   (   R   t   f0t   f1t   f2t   xxt   fft   ffft   ffff(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   exercise_results   s    (&&c          C   s‡   t  j t d d ƒ ƒ d d }  t j d |  ƒ } xI t |  | ƒ D]8 \ } } t | t | ƒ ƒ t | ƒ d k  sB t ‚ qB Wd GHd  S(   Ni   iÈ   g     àh@g      @gñhãˆµøä>t   OK(	   R   R   R   R   R   R   R   R   R   (   R   R   R   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   tst_sph_bessel_j1#   s
     0c          C   sœ  d }  d d d g } t  j d |  ƒ t  j d |  ƒ t  j d |  ƒ g } d } d	 d
 d g } t  j d | ƒ t  j d | ƒ t  j d | ƒ g } d } d d d g } t  j d | ƒ t  j d | ƒ t  j d | ƒ g } x= t | | ƒ D], \ }	 }
 |	 |
 t |	 ƒ d k  sè t ‚ qè Wx= t | | ƒ D], \ }	 }
 |	 |
 t |	 ƒ d k  s(t ‚ q(Wx= t | | ƒ D], \ }	 }
 |	 |
 t |	 ƒ d k  sht ‚ qhWd  S(   Ngš™™™™™©?gòK|áúï?gQ«�]�—™?g4’’®Éy4?i    i   i   g      à?g[&+Õñî?gE.û§Ï?gzë;@©VŸ?g      @gZü¨±}»Æ¿g±õ#}÷Ô¿gú.Ib×§?gñhãˆµøä>(   R   t   bessel_JR   R   R   (   t   x1R   t   g1t   x2R   t   g2t   x3t   f3t   g3t   at   b(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   tst_bessel_J+   s    333$$c           C   s*   t  t d ƒ s d GHd  St ƒ  t ƒ  d  S(   NR   s0   Skipping tst_bessel.py: functions not available.(   t   hasattrR   R   R   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   exerciseA   s
    c         C   s(   t  |  ƒ d k s t ‚ t ƒ  d GHd  S(   Ni    R   (   t   lenR   R*   (   t   args(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   runH   s    t   __main__i    t   test_j1i   R,   (   t
   __future__R    t   scitbxR   t   stdlibR	   t   scitbx.array_familyR   t   libtbx.test_utilsR   t   sysR   R   R   R   R   R   R(   R*   R-   t   __name__t   exitt   argv(    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_bessel.pyt   <module>   s*   					
				
