ó
]™xTc           @   s›   d  d l  m Z d  d l m Z d  d l m Z d  d l j Z d  d l 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   flex(   t   approx_equalNc         C   s¶   d } t  j ƒ  } t  j ƒ  } t  j ƒ  } x^ t | ƒ D]P } | j |  j | ƒ d ƒ | j |  j | ƒ d ƒ | j |  j | ƒ ƒ q7 Wt  j | | ƒ | } t  j | ƒ } | S(   Ni    i   (   R   t   doublet   xranget   appendt   coordt   weightt   expt   sum(   t   cubt   n_pointst   resultt   xt   yt   wt   iit   tot(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_quadrature.pyt   twod_integrator   s    c    	      C   sò   t  j ƒ  }  t  j ƒ  } t  j ƒ  } t  j ƒ  } t j t j d ƒ } t |  d ƒ } t | d ƒ } t | d ƒ } t | d ƒ } t	 | | d d ƒs� t
 ‚ t	 | | d d ƒs¸ t
 ‚ t	 | | d d ƒsÓ t
 ‚ t	 | | d d ƒsî t
 ‚ d  S(   Ng      à?i	   i   i   t   epsgš™™™™™©?g{®Gáz„?(   t   smt   five_nine_1001t   five_nine_1110t   seven_twelve_0120t   nine_twentyone_1012t   matht   piR   R   R   t   AssertionError(	   t   fnat   fnbt   ftt   ntot   theoryt   r_fnat   r_fnbt   r_ftt   r_nto(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_quadrature.pyt   tst_cubature   s    c          C   sÁ  t  j d ƒ }  d d g } d d g } d d g } |  j ƒ  d d	 !} |  j ƒ  d d	 !} x8 t | | ƒ D]' \ } } t | | d
 d ƒsi t ‚ qi Wx8 t | | ƒ D]' \ } }	 t | |	 d
 d ƒs¤ t ‚ q¤ Wxë t d	 d ƒ D]Ú }
 t  j |
 ƒ }  |  j ƒ  } d t j	 |
 d ƒ } xŸ t | j
 ƒ  ƒ D]‹ } |  j | | ƒ d } t | d d
 d ƒsbt ‚ xP t | j
 ƒ  ƒ D]< } | | k rut j | | | | ƒ | k s±t ‚ ququWq*Wqß Wd  S(   Ni   g)‡üÏéÉà?gaòÃ�/iú?g9•1ÛÁé?g°ý ëÐ´?g
JOQ�õð?gzˆê÷×ó?i    i   R   g:Œ0âŽyE>i   g      à?g      ð?gñhãˆµøä>(   R   t   gauss_hermite_engineR   R   t   zipR   R   t   rangeR   t   sqrtt   sizet   ft   fabs(   t   ghet   x_ams_55t   w_ams_55t   wexs_ams_55t   x_thist   w_thisR   t   xxR   t   wwt   nt   stept   ixR+   t   jj(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_quadrature.pyt   tst_gauss_hermite_engine)   s(    c          C   sá   xÚ t  d d ƒ D]É }  t j |  ƒ } | j ƒ  } d } xŸ t  | j ƒ  ƒ D]‹ } | j | | ƒ d } t | d d d ƒs‚ t ‚ xP t  | j ƒ  ƒ D]< } | | k r• t j	 | | | | ƒ | k sÑ t ‚ q• q• WqJ Wq Wd  S(   Ni   i_   gñhãˆµøä>i    R   (
   R(   R   t   gauss_legendre_engineR   R*   R+   R   R   R   R,   (   R5   t   gleR1   R6   R7   R+   R8   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_quadrature.pyt   tst_gauss_legendre_engineD   s    c          C   s  t  j d ƒ t  j t  j ƒ }  xv t d d ƒ D]e } t j | ƒ } | j ƒ  } | j ƒ  } t	 j
 t	 j | ƒ | ƒ } t | |  d d ƒs/ t ‚ q/ Wt  j d ƒ t  j d ƒ }  x[ t d d	 ƒ D]J } t j | ƒ } | j ƒ  } | j ƒ  } t	 j
 t	 j | ƒ | ƒ } qÄ Wd  S(
   Ng      Ð?i   i
   R   gñhãˆµøä>i   iÿÿÿÿi   iZ   (   R   R   R)   R   R   R   R&   R   R   R   R	   R   R   R:   (   t   f_theoryR   t   ghqR   R   R+   t   glq(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_quadrature.pyt   examplesT   s    c           C   s%   t  ƒ  t ƒ  t ƒ  t ƒ  d GHd  S(   Nt   OK(   R<   R9   R@   R%   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_quadrature.pyt   runq   s
    t   __main__(   t
   __future__R    t   scitbx.array_familyR   t   libtbx.test_utilsR   t   scitbx.mathR   R   R   R%   R9   R<   R@   RB   t   __name__(    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_quadrature.pyt   <module>   s   						