ó
^™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	 m
 Z
 m Z m Z d  d l m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d	 l m Z m Z d  d
 l m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z m Z d  d l m  Z  m! Z! 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 m' Z' 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/ m0 Z0 m1 Z1 m2 Z2 d  d l3 Z4 d  d l5 m6 Z6 d  d l7 m8 Z8 d  d l9 Z9 d  d l: Z: d  d l; Z; d  d l< Z< e4 j= j> d ƒ r‘d  d l? Z? n d Z? d „  ZA d „  ZB d  „  ZC d! „  ZD d" „  ZE d# „  ZF d$ „  ZG d% „  ZH d& „  ZI d' „  ZJ d( „  ZK d) d* „ ZL d+ d, „ ZM d- „  ZN d. „  ZO d/ „  ZP d0 „  ZQ d1 „  ZR d2 „  ZS d3 „  ZT d4 „  ZU d5 „  ZV d6 d7 „ ZW d8 „  ZX d9 „  ZY d: „  ZZ d; „  Z[ d< „  Z\ d= d> „ Z] d? „  Z^ d@ „  Z_ dA „  Z` dB „  Za dC „  Zb dD „  Zc dE „  Zd dF „  Ze dG „  Zf dH „  Zg dI „  Zh dJ „  Zi dK „  Zj dL „  Zk dM „  Zl dN „  Zm dO „  Zn eo dP k rWen ƒ  n  d S(Q   iÿÿÿÿ(   t   divisionN(   t   line_given_points(   t   dihedral_angle(   t   euler_angles_as_matrix(   t   erf_verificationt   erft   erfct   erfcx(   t   bessel_i1_over_i0t	   bessel_i0t	   bessel_i1t   bessel_ln_of_i0t   ei1t   ei0t   parabolic_cylinder_d(   t   bessel_inverse_i1_over_i0(   t   gamma_incompletet   gamma_incomplete_complement(   t   gamma_completet   exponential_integral_e1z(   t   lambertw(   t   golay_24_12_generator(   t   inertia_tensor(   t   principal_axes_of_inertiat   principal_axes_of_inertia_2d(   t	   sphere_3dt   minimum_covering_sphere(   t   signed_phase_errort   phase_errort   nearest_phase(   t   icosahedron(   t   chebyshev_base(   t   chebyshev_polynome(   t   chebyshev_fitter(   t   slatec_dgammat   slatec_dlngam(   t   distributions(   t   flex(   t   matrix(   t   user_plus_sys_time(   t   Exception_expectedt   approx_equalt   eps_eq(   t   StringIO(   t   countt   tntbxc          C   s„  d d l  m }  |  d d ƒ \ } } | d k s7 t ‚ t | d ƒ sL t ‚ |  d d ƒ \ } } | d k ss t ‚ t | d ƒ sˆ t ‚ xm d d d d g D]Y \ } } } | | | } |  | | ƒ \ } } | | k sß t ‚ t | | ƒ s› t ‚ q› W|  d d ƒ d k st ‚ |  d d ƒ d k s.t ‚ |  d d ƒ d k sIt ‚ |  d d ƒ d k sdt ‚ |  d d ƒ d k st ‚ |  d d ƒ d k sšt ‚ |  d d ƒ d k sµt ‚ |  d d ƒ d k sÐt ‚ |  d d ƒ d k sët ‚ |  d d ƒ d k st ‚ |  d d ƒ d  k s!t ‚ |  d d ƒ d! k s<t ‚ |  d d ƒ d" k sWt ‚ |  d d ƒ d# k srt ‚ |  d d ƒ d$ k s�t ‚ |  d d ƒ d% k s¨t ‚ |  d d ƒ d& k sÃt ‚ |  d d ƒ d' k sÞt ‚ |  d d ƒ d( k sùt ‚ |  d d ƒ d) k st ‚ |  d d ƒ d* k s/t ‚ |  d d ƒ d+ k sJt ‚ |  d d ƒ d, k set ‚ |  d d ƒ d- k s€t ‚ d  S(.   Niÿÿÿÿ(   t   divmodg\�Âõ(\@i   gÃõ(\�ÂÕ?g×£p=
×	Àiþÿÿÿg¤p=
×£è?gìQ¸…ë@gÍÌÌÌÌÌô?gìQ¸…ëÀi    i   i   i   iýÿÿÿiûÿÿÿ(   gìQ¸…ë@i   gÍÌÌÌÌÌô?(   gìQ¸…ëÀi   gÍÌÌÌÌÌô?(   gìQ¸…ë@iþÿÿÿgÍÌÌÌÌÌô?(   gìQ¸…ëÀiþÿÿÿgÍÌÌÌÌÌô?(   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   (   iþÿÿÿiÿÿÿÿ(   i    i   (   iþÿÿÿiÿÿÿÿ(   iþÿÿÿi   (   i    iÿÿÿÿ(   i   i   (   i   iÿÿÿÿ(   t   scitbx.mathR.   t   AssertionErrorR)   (   R.   t   qt   rt   yt   xt   q1t   r1(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_div_mod+   sJ    	c          C   sz   t  j j ƒ  }  t  j j ƒ  } d |  d k s4 t ‚ d | d k sJ t ‚ |  | k s\ t ‚ d | d d k sv t ‚ d  S(   Ng      ð?g       @(   t   scitbxt   matht    floating_point_epsilon_float_gett!   floating_point_epsilon_double_getR0   (   t	   float_epst
   double_eps(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_floating_point_epsilonW   s    c          C   s?  t  d d d g ƒ }  t |  j d t j d ƒ ƒ d ƒ s? t ‚ t |  j d t j d ƒ ƒ d ƒ si t ‚ t  d d d g ƒ }  t |  j d t j d ƒ ƒ d ƒ s¨ t ‚ t |  j d t j d ƒ ƒ d ƒ sÒ t ‚ t  d d d g ƒ }  t |  j d t j d ƒ ƒ d ƒ st ‚ t |  j d t j d ƒ ƒ d ƒ s;t ‚ d  S(   Nt   pointsi    t   pointi   i   i   i   g      )@i   g      @(   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    i    i   g«ªªªªª @(   R   R)   t   distance_sqR&   t   colR0   (   t   lgp(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_line_given_points_   s    *****c       	   C   s’  d „  }  |  d d g d ƒ } | d  k s1 t ‚ |  d d d d  d! g ƒ } t | d ƒ sa t ‚ |  d d" d# d$ d% g ƒ } t t | ƒ d ƒ s— t ‚ |  d d& d' d( d) g ƒ } t | d ƒ sÇ t ‚ |  d d* d+ d, d- g ƒ } t | d	 ƒ s÷ t ‚ t j d
 d ƒ } xLt d d ƒ D];} t j | ƒ } t j	 | ƒ t j
 | ƒ } } d | j ƒ  } t j | d d f d. d | d f | | | | | f g ƒ } t d | d t ƒ } t | | ƒ sÆt ‚ | j ƒ  }	 | j ƒ  }
 t d |	 | |
 d t ƒ } t | | d d ƒst ‚ t j d t j |	 | |
 ƒ d t ƒ } t | | ƒ st ‚ qWd/ d0 d1 d2 g } |  d | ƒ } t | d ƒ sŽt ‚ d  S(3   Nc         S   s   t  d |  d t ƒ } t  d t j |  ƒ d t ƒ } | d  k rT | d  k s{ t ‚ n' | d  k	 sf t ‚ t | | ƒ s{ t ‚ | S(   Nt   sitest   deg(   R   t   TrueR%   t   vec3_doublet   NoneR0   R)   (   RE   t   tt   v(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   dihek   s    RE   i    i   i   iÿÿÿÿi´   i¦ÿÿÿiZ   t   seediMÿÿÿi   RF   t   epsg�íµ ÷ÆÀ>g%�•C‹	ÀgX9´Èvþ?gB`åÐ"[@gHáz®Gÿ¿gZd;ßOõ?g)\�Âõ(@g®Gázð¿gmçû©ñÒ@gbX9´È@gú~j¼t“Ø?gh‘í|?5þ?gd;ßO�—	@g¥§À°ÉÆd@(   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    i   i    (   i    i   i   (   i   i    i    (   i    i    i    (   i    i   i    (   i    i   iÿÿÿÿ(   i    i    i    (   g%�•C‹	ÀgX9´Èvþ?gB`åÐ"[@(   gHáz®Gÿ¿gZd;ßOõ?g)\�Âõ(@(   g®Gázð¿gmçû©ñÒ@gbX9´È@(   gú~j¼t“Ø?gh‘í|?5þ?gd;ßO�—	@(   RI   R0   R)   t   absR%   t   mersenne_twistert   xrangeR9   t   radianst   cost   sint   random_doubleRH   R   RG   t    random_double_r3_rotation_matrixt   random_double_point_on_sphereR&   t   _dihedral_anglet   col_list(   RL   t   dt   mtt   adt   art   ct   st   fRE   R2   RJ   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_dihedral_anglej   s>    		?)	c           C   sö  t  t d d d g ƒ j d d d d d d d d d g	 ƒ sB t ‚ t  t d d d g d t ƒj d d d d d d d d d g	 ƒ sŠ t ‚ t  t d d d g d t ƒj d d d d d d d d d g	 ƒ sÒ t ‚ t  t d d d g d t ƒj d d d d d d d d d g	 ƒ st ‚ t  t d d d g d t ƒj d d d d d d d d d g	 ƒ sbt ‚ t  t d d d g d t ƒj d d d d d d d d d g	 ƒ sªt ‚ t  t d d d g d t ƒj d d d d d d d d d g	 ƒ sòt ‚ d  S(   Ni    i   i´   RF   iÿÿÿÿiZ   (   R)   R   t   elemsR0   RG   (    (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_euler_angles–   s    ******c          C   s•  t  ƒ  }  |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d	 d
 ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d ƒ |  t d d  ƒ |  t d! d" ƒ |  t d# d$ ƒ |  t d% d& ƒ |  t d' d( ƒ |  t d) d* ƒ |  t d+ d, ƒ |  t d- d. ƒ |  t d/ d0 ƒ |  t d1 d2 ƒ |  t d3 d4 ƒ |  t d5 d6 ƒ |  t d7 d8 ƒ |  t d9 d: ƒ |  t d; d< ƒ |  t d= d> ƒ |  t d? d@ ƒ |  t dA dB ƒ |  t dC dD ƒ |  t dE dF ƒ |  t dG dH ƒ |  t dI dJ ƒ |  t dK dL ƒ |  t dM dM ƒ |  t dM dM ƒ |  t dM dN ƒ |  t dM dN ƒ |  t dO dP ƒ |  t dQ dR ƒ |  t dO dS ƒ |  t dO dT ƒ |  t dU dV ƒ |  t dN dW ƒ |  t dU dX ƒ |  t dU dY ƒ |  t dZ d[ ƒ |  t d\ d] ƒ |  t dZ d^ ƒ |  t dZ d_ ƒ |  t d` da ƒ |  t db dc ƒ |  t d` dd ƒ |  t d` de ƒ |  t df dg ƒ |  t dh di ƒ |  t df dj ƒ |  t df dk ƒ |  t dl dm ƒ |  t dn do ƒ |  t dl dp ƒ |  t dl dq ƒ |  t dr ds ƒ |  t dt du ƒ |  t dr dv ƒ |  t dr dw ƒ |  t dx dy ƒ |  t dz d{ ƒ |  t dx d| ƒ |  t dx d} ƒ |  t d~ d ƒ |  t d€ d� ƒ |  t d~ d‚ ƒ |  t d~ dƒ ƒ |  t d„ dN ƒ |  t dM dM ƒ |  t dM dN ƒ |  t d… db ƒ |  t d† d‡ ƒ |  t dˆ dM ƒ |  t d‰ dŠ ƒ |  t d‹ dŒ ƒ |  t d� dŽ ƒ |  j |  j k  s‘t ‚ d  S(�   NgŽDec¤æ?g7Ù²Ÿ<N ?g§‰Œj¾?g°¦%êÀ?gc*cxÃÎ?gë@ø«Ð?gBdÒ¦>ŒÖ?gÝät‹mØ?gRprzï?g:¢>ºÅ?gÍ»8±)1å?góp�‰ºUÖ?g¹ª_Lªõ?gô? ¾�k¬?gÚ}r»ð?gî<ïañÏÁ?g�îù+rÎû?gMÔ}1Í¡Œ?güÖ˜µÝö?gì-žk‚'¦?g3„�’Vø @g%¬R´f?g›b
öÿü?gÇ³¿<…?gZ4³ß&ï?g9ßÄrÖÛ?g(Q�YHå?g·¿ÐI#Gá?g­Ûí”G·õ?gXÆB¤.Ö?gŒTZÂÆð?gÚ7óãÏŠÚ?ghãžrÛû?gV­xB5PÒ?gÖi±¼øéö?g0?N¦¾PÕ?g§C÷òŠþ @gù³(ßÏ?gü:¾–ý?gB›HV³Ñ?g†æpÖõ@güx�å¬+?g*�Í\|{@g’yë0c3_=gPË²bûE!@gû{c%Þµõ8g$ÆŸI&@gí—Úc w4gamÆ¬L-@g„¾e…I,gÀâ›Ú&1@gŸòJ0%g³P™¸ª4@g´JÎ{>g¤([nò)7@gð®�"ðE7g6.MY@gŸL@3QÎÉ?g‹Þä~�@gNÉÙÜ¬À?g¼·Ç†�@gn9£rn
´?g'ˆ»éƒÆ!@gR2§sZ&°?g¸“èÙÚL'@g-«†Šg´¨?gc 7Í*@g¦$‹o¥?g‰Úø�(0@gÆ¾'ê¾×¡?gŽáÞ9é1@gËHbXN ?gÌ›ÃÏ4@g<?=I&œ?gÌ›ÃÏÿ3@gÙ`»óÚœ?g        g      ð?g      à¿gÖí\ï§à¿g      à?gÖí\ï§à?gùv®÷Sø?g¡ª0ZÞ<ÿ?g      ð¿gŒA§g÷ê¿gŒA§g÷ê?g/„ Ó³{ý?gúÁ2	@g      ø¿gâzWUêî¿g      ø?gâzWUêî?gm½‰«*uÿ?gÂóõe§2@g       Àgæ•'®Ùï¿g       @gæ•'®Ùï?gåÊ
×ìÿ?g“çÇ7<[@g      Àgê›L�ªüï¿g      @gê›L�ªüï?gßM¦GUþÿ?g;2fB/�@g      Àgö5A¬Ñÿï¿g      @gö5A¬Ñÿï?göš Öèÿÿ?gg’Ä’þ¦Ï@g      ÀgbVqþÿï¿g      @gbVqþÿï?g:«†8ÿÿÿ?gºŸ•°©‚Ag      Àgu¹÷ÿÿï¿g      @gu¹÷ÿÿï?g²ˆÜûÿÿÿ?gÌÙvÎëòpAg      Àg1úäÿÿÿï¿g      @g1úäÿÿÿï?g}òÿÿÿÿ?gï�m×�ÒAg      ðg      ðÿg¤¡=Nè3@gécó„>ágª×ü‹:@g·q>ÛùìÀg gaóÉ½B÷7Àg10»‚ÓÂÈsgÑcàÒô :Àg™»­XñÜï(   R   R   R   R   t	   max_deltat	   toleranceR0   (   t
   erf_verify(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_erf¦   s²    	c           C   sp   t  t d ƒ d ƒ s t ‚ t  t d ƒ d ƒ s6 t ‚ t  t d ƒ d ƒ sQ t ‚ t  t d ƒ d ƒ sl t ‚ d  S(	   Ng      à?g&vPªéá?g      ð?gæÒÅÌ?g      ø?gŒK¦!âš¹?g       @g[`ß|	©?(   R)   R   R0   (    (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt!   exercise_exponential_integral_e1z  s    c          C   s?  t  t d d ƒ d ƒ s t ‚ t  t d d ƒ d ƒ s< t ‚ t  t d d ƒ d ƒ sZ t ‚ t  t d d ƒ d	 ƒ sx t ‚ t  t d d
 ƒ d ƒ s– t ‚ t  t d d ƒ d ƒ s´ t ‚ t  t d d ƒ d ƒ sÒ t ‚ t  t d d ƒ d ƒ sð t ‚ t t d d ƒ d d d ƒst ‚ t t d d ƒ d ƒ s2t ‚ t  t d d
 ƒ d ƒ sPt ‚ t  t d d ƒ d ƒ snt ‚ y t d d d d
 d d ƒ Wn+ t k
 r¸}  t |  ƒ d k s¿t ‚ n Xt ‚ y t d d d d d d ƒ Wn+ t k
 r	}  t |  ƒ d k st ‚ n Xt ‚ t  d t d d ƒ t d d ƒ ƒ s;t ‚ d  S(   Ng       @gš™™™™™¹?g7¢Ž—*s?g      à?g’÷Ä*œ·?g      @g.Õ¾{uÎæ?g      @g`Ñ´î?g      /@gäøl”ùÿï?g      5@g8K÷ÿÿï?g      4@i    gÿÿÿÿ?�Ž=RN   gñhãˆµøä>g   d¹*—>gÆsÄ£eÆÃ?gG½�´ã?t   aR4   t   max_iterationsi   sY   scitbx Error: gamma::incomplete_series(a=20, x=15.5, max_iterations=5) failed to convergeg     €9@se   scitbx Error: gamma::incomplete_continued_fraction(a=20, x=25.5, max_iterations=5) failed to convergei   (   R)   R   R0   R*   t   RuntimeErrort   strR(   R   (   t   e(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_gamma_incomplete  s6     	 	c          C   s.  t  t d ƒ d ƒ s t ‚ t  t d ƒ d ƒ s6 t ‚ t  t d ƒ d ƒ sQ t ‚ t  t d ƒ d ƒ sl t ‚ t  t d	 ƒ d
 ƒ s‡ t ‚ t  t d ƒ d ƒ s¢ t ‚ t  t d d t ƒd ƒ sÃ t ‚ t  t d d t ƒd ƒ sä t ‚ t  t d d t ƒd ƒ st ‚ t  t d d t ƒd ƒ s&t ‚ t  t d	 d t ƒd
 ƒ sGt ‚ t  t d d t ƒd ƒ sht ‚ d t d ƒ d k s„t ‚ y t d ƒ Wn+ t k
 r¿}  t |  ƒ d k sÆt ‚ n Xt ‚ d t d ƒ d k sât ‚ y t d d t ƒWn+ t k
 r#}  t |  ƒ d k s*t ‚ n Xt ‚ d  S(   Ngš™™™™™¹?gv({ê#@g      à?g"ï´‘ø[ü?g      @gé²GmúDõ?g      @g      8@g      /@g×côí{}SBg      5@l     hò t   minimaxs   %.8gg‡ÙÎ÷se@g�íµ ÷Æ°>s   1.7942025e+308s<   scitbx Error: gamma::complete_minimax(171.624): domain errorg'1¬¶a@s   4.1104518e+242s<   scitbx Error: gamma::complete_lanczos(141.691): domain errorg“7ÀÌ÷se@g3Rï©¶a@(   R)   R   R0   t   FalseRk   Rl   R(   (   Rm   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_gamma_complete*  s4    !!!!!! 	 	c          C   sg  t  t d ƒ d ƒ s t ‚ t  t d ƒ d ƒ s6 t ‚ t  t d ƒ d ƒ sQ t ‚ t  t d ƒ d ƒ sl t ‚ t  t d ƒ d ƒ s‡ t ‚ t  t d	 ƒ d
 ƒ s¢ t ‚ t  t d ƒ d ƒ s½ t ‚ t  t d ƒ d ƒ sØ t ‚ t  t d ƒ d	 ƒ só t ‚ d }  x= |  d k r8t  t |  ƒ t |  ƒ ƒ s+t ‚ |  d 7}  qü Wd }  xA |  d k r‚t |  t t |  ƒ ƒ d d ƒsut ‚ |  d 7}  qBWt  t d ƒ d	 ƒ sžt ‚ t  t d ƒ d ƒ s¹t ‚ d }  xT |  d k rt |  ƒ } t |  ƒ t |  ƒ } t  | | d ƒ st ‚ |  d 7}  qÂWd }  xD |  d k rbt  t |  ƒ t j	 t |  ƒ ƒ ƒ sUt ‚ |  d 7}  qWd  S(   Ng    eÍÍÁg      ð¿g�Âõ(\ÿXÀgÆ2ýñÖï¿g      IÀg=›UŸ«­ï¿go»Ð\§‘Ü¿g        g      ð?go»Ð\§‘Ü?g      I@g=›UŸ«­ï?g�Âõ(\ÿX@gÆ2ýñÖï?g    eÍÍAg      Y@g{®Gáz„?g      $@RN   gš™™™™™©?g     @Àg     @@gñhãˆµøä>g      YÀ(
   R)   R   R0   R*   R   R	   R
   R   R9   t   log(   R4   Ri   t   b(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_besselG  s:    #'*c          C   s»   t  j t d ƒ ƒ d }  t  j |  ƒ } x‹ t |  | ƒ D]z \ } } t | ƒ } t | ƒ } t | ƒ } t | ƒ } t	 | | | d d ƒs” t
 ‚ t	 | | | d d ƒs9 t
 ‚ q9 Wd  S(   Ni   g      4@RN   gü©ñÒMbP?(   R%   t   doublet   ranget   expt   zipR	   R
   R   R   R)   R0   (   R4   t   expxt   xxt   ext   tmp_i0t   tmp_i1t   tmp_ei0t   tmp_ei1(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_eixf  s    gñhãˆµøä>c         C   sÊ   t  j t d ƒ ƒ d } | | | | } t  j |  ƒ } t |  | | | ƒ } | j | ƒ } | j | | ƒ } | j | ƒ }	 xC t d ƒ D]5 }
 t |	 |
 | |
 | |
 | d d ƒs� t ‚ q� Wd  S(   Nid   g     @Y@RN   g-Cëâ6?(	   R%   Ru   Rv   RU   R    R`   t   dfdxR)   R0   (   t   n_termst	   low_limitt
   high_limitt   hR4   t   coefst   chebR3   t   y_tmpt   dydxt   ii(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_random_cheb_polynomeq  s    	gH¯¼šò×z>c         C   s5  t  j t d ƒ ƒ d } | | | | } t  j |  ƒ } t |  | | | ƒ } t  j |  d ƒ } xÍ t d ƒ D]¿ } | j | | ƒ }	 | j | | ƒ }
 x� t |  ƒ D]‚ } | | c | 7<| j | ƒ | j | | ƒ } | | c | 8<| |
 | | | <| j | ƒ t |	 | | | ƒ s§ t	 ‚ q§ Wqn Wd  S(   Nid   g     @Y@i    (
   R%   Ru   Rv   RU   R!   t   dfdcoefsR`   t   replaceR)   R0   (   R‚   Rƒ   R„   R…   R4   R†   t   cheb_fittert   finite_diffsRŠ   t   exactR`   t   jjt   df(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_cheb_fitterƒ  s&    	c          C   sÞ  t  j d d ƒ }  t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d g ƒ } t d d d | ƒ } t d d d | ƒ }	 t  j d d d g ƒ }
 t d d d |
 ƒ } t d d d |
 ƒ } t  j d d d d g ƒ } t d d d | ƒ } t d d d | ƒ } xº t d ƒ D]¬ } | d	 d
 |  | <|  | | | <d | | <d |  | |  | d | | <d |  | | | <d |  | |  | |  | d |  | | | <d |  | |  | d | | <qQW| j |  ƒ } | j |  ƒ } | j |  ƒ } |	 j |  ƒ } | j |  ƒ } | j |  ƒ } |	 j |  ƒ } | j |  ƒ } | j |  ƒ } xOt d ƒ D]A} t | | | | d d ƒs¾t ‚ t | | | | d d ƒsát ‚ t | | | | d d ƒst ‚ t | | | | d d ƒs't ‚ t | | | | d d ƒsJt ‚ t | | | | d d ƒsmt ‚ t | | | | d d ƒs�t ‚ t | | | | d d ƒs³t ‚ t | | | | d d ƒs•t ‚ q•Wd  S(   Nid   i    i   i   g      ð¿g      ð?i   i   i2   g     €I@g       @g      @g      @g      (@RN   g-Cëâ6?(	   R%   Ru   R   R    Rv   R`   R�   R)   R0   (   R4   t   y1t   y2t   y3t   dy1t   dy2t   dy3t   cheb_1_coefst   cheb_1t   cheb_1_dt   cheb_2_coefst   cheb_2t   cheb_2_dt   cheb_3_coefst   cheb_3t   cheb_3_dRŠ   t   cheb_1_yt   cheb_2_yt   cheb_3_yt
   cheb_1_d_yt
   cheb_2_d_yt
   cheb_3_d_yt   cheb_1_d_ydxt   cheb_2_d_ydxt   cheb_3_d_ydx(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_cheb_base_and_polynomež  sV    
."########c          C   sà   t  ƒ  xÒ t d ƒ D]Ä }  t d d d d ƒ t d d d d ƒ t d d d d ƒ t d d d d ƒ t d d d d ƒ t d d d d ƒ t d d d	 d
 ƒ t d d d	 d
 ƒ t d d	 d d
 ƒ t d d d	 d
 ƒ q Wd  S(   Ni
   i   iÿÿÿÿi   g:Œ0âŽyE>iöÿÿÿi   g      ð¿g      ð?g•Ö&è.>g      $@g      $À(   R¬   Rv   R“   R‹   (   RŠ   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_cheb_familyÛ  s    c         C   s5   t  d |  ƒ } t | t j | ƒ |  ƒ s1 t ‚ d  S(   NR4   (   R   R*   R9   Rw   R0   (   R4   t   w(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   check_lambertwé  s    c          C   sv  t  t j d ƒ d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ x) t d ƒ D] }  t  d	 |  d
 d ƒ qk WxG t d ƒ D]9 }  t  d	 d |  ƒ t  d	 d |  ƒ t  d	 d
 |  ƒ q— Wy t d	 t j d ƒ d ƒ Wn+ t k
 r } t | ƒ d k s't ‚ n Xt ‚ y t d	 d d d ƒ Wn+ t k
 rk} t | ƒ d k srt ‚ n Xt ‚ d  S(   Niÿÿÿÿg-Cëâ6?gñhãˆµøä¾i    gñhãˆµøä>i   i   id   R4   g      $@gffffffÖ?i   g       @g      @s&   lambertw(x) domain error: x < -exp(-1)Rj   s*   lambertw error: iteration did not convergegwJëÿï?grÄZ|
 ð?gÇ�ÒÁúÿ@g9b-> @(	   R¯   R9   Rw   RQ   R   Rk   Rl   R0   R(   (   t   iRm   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_lambertwí  s0    






  c         C   sš   | | k s t  ‚ g  } x{ t | ƒ D]m } xd t | ƒ D]V } d }	 x: t | ƒ D], }
 |	 |  | | |
 | |
 | | 7}	 qQ W| j |	 ƒ q8 Wq% W| S(   Ni    (   R0   RQ   t   append(   Ri   R]   t   acRs   t   brt   bct   resultR°   t   kR_   t   j(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt
   matrix_mul  s    *c          C   sŽ  d g d }  t  ƒ  } x5 | j ƒ  sM |  t | j ƒ  ƒ j d ƒ c d 7<q W|  d d d d d d d d d d d d d d d d d d d d d d d d d g k s« t ‚ y | j ƒ  Wn+ t k
 ræ } t | ƒ d k sí t ‚ n Xt ‚ d g d }  x0 t  ƒ  D]% } |  t | ƒ j d ƒ c d 7<qW|  d d d d d d d d d d d d d d d d d d d d d d d d d g k sŠt ‚ d  S(   Ni    i   i   i÷  i
  s#   golay_24_12_generator is exhausted.(	   R   t   at_endt   listt   nextR,   R0   t   StopIterationRl   R(   (   t   weightst   ggRm   t   code(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_golay  s    	)]#c       	   C   s  t  d t j ƒ  d d ƒ }  |  d k s- t ‚ t  d t j ƒ  d t j ƒ  d d ƒ }  |  d k sf t ‚ t  d t j d d g ƒ d d ƒ }  t |  d
 d d d d d g ƒ s± t ‚ t  d t j d d g ƒ d t j d d g ƒ d d ƒ }  t |  d d d d d d g ƒ st ‚ d  S(    NR?   t   pivoti    R¾   i   i   i   iÿÿÿÿi   i   i&   i*   i   i
   iüÿÿÿi   i   iU   ia   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   i   (   iÿÿÿÿi   i   (   R   R%   RH   R0   Ru   R)   (   RJ   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_inertia_tensor!  s    !'	c          C   sÌ  t  j  }  xÅt d ƒ D]·} | d k r7 t j ƒ  } nN | d k ra t j d d d g g ƒ } n$ t j |  ƒ  |  ƒ  |  ƒ  g g ƒ } t d | ƒ } | d k rÇ t | j ƒ  d d d g ƒ sæ t ‚ n t | j ƒ  | d ƒ sæ t ‚ t | j ƒ  d d d d d d g ƒ st ‚ | j	 ƒ  } t | j
 ƒ  d d d g ƒ sCt ‚ t | j ƒ  d d d d d d d d d g	 ƒ syt ‚ t | j ƒ  d d d d d d d d d g	 ƒ s¯t ‚ | j d d1 ƒ d k s t ‚ q Wxðt d ƒ D]â} | d k rd d d g } n |  ƒ  |  ƒ  |  ƒ  g } t j t j d d d g d d d g ƒ ƒ } | | 7} t d | ƒ } t | j ƒ  | ƒ s{t ‚ t | j ƒ  d d d d d d g ƒ s¨t ‚ | j	 ƒ  } t | j
 ƒ  d d d g ƒ sØt ‚ | j ƒ  } t t j | ƒ j ƒ  d ƒ st ‚ g  t d	 ƒ D]& } t j | j ƒ  | | d	 !ƒ ^ q} t d | | ƒ }	 t |	 j ƒ  d d d d d d g ƒ s�t ‚ t | j d d2 ƒ d ƒ s¢t ‚ | j d d3 ƒ d k sÞt ‚ qÞWx?t d ƒ D]1} d
 }
 | d k rd d d g } d4 } n$ |  ƒ  |  ƒ  |  ƒ  g } t j ƒ  } t j d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO g ƒ } | | } | | 7} t d | ƒ } | j	 ƒ  } t | j ƒ  | ƒ sÏt ‚ t j | ƒ } | j ƒ  } t | t j d | j ƒ  ƒ | j ƒ  dP d |
 ƒs%t ‚ t | j
 ƒ  d d d g d |
 ƒsOt ‚ dQ dR dS g } x¡ t d	 ƒ D]“ } t j | j ƒ  d	 | d	 | d !ƒ } y- t | | | | d |
 d# d  ƒsÅt ‚ Wqkt k
 rýt | | | | d |
 ƒsþt ‚ qkXqkWqÑWxt d ƒ D]ö} | d k r7d d d g } n |  ƒ  |  ƒ  |  ƒ  g } t j ƒ  } xo t j d d d g d d d g ƒ D]I } | j t j | d | d d | d d	 g ƒ t j | ƒ j ƒ q€Wt d | ƒ } t | j ƒ  | ƒ s÷t ‚ t | j ƒ  d$ d% d& d d d g ƒ s$t ‚ | j	 ƒ  } t | j
 ƒ  d$ d% d& g ƒ sTt ‚ | d k r™t | j ƒ  d d d d d d d d d g	 ƒ s	t ‚ q| j ƒ  } t t j | ƒ j ƒ  d ƒ sÉt ‚ t d | | ƒ }	 t |	 j ƒ  d$ d% d& d d d g ƒ st ‚ qWx¸t d ƒ D]ª} | d k r>d d d g } n |  ƒ  |  ƒ  |  ƒ  g } | d k  r�t j d d d d d d d d d g	 ƒ } n: t d' g  t d	 ƒ D] } t  j d d( ƒ ^ q¢d) t ƒ } t j ƒ  } xÈ d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g D]0 } | j | t j | ƒ t j | ƒ j ƒ ql	Wt d | ƒ } t | j ƒ  | ƒ sÊ	t ‚ | d k  r
t | j ƒ  d d* d+ d d d g ƒ s
t ‚ n  | j	 ƒ  } t | j
 ƒ  d* d+ d g ƒ s6
t ‚ | d k  r{
t | j ƒ  d d d d d d d d d g	 ƒ së
t ‚ np | j ƒ  } t t j | ƒ j ƒ  d ƒ s«
t ‚ t d | | ƒ }	 t |	 j ƒ  d* d+ d d d d g ƒ së
t ‚ t t t j | j ƒ  d d	 !ƒ j | t j d d d g ƒ ƒ ƒ d ƒ d, k  sBt ‚ t t t j | j ƒ  d	 d- !ƒ j | t j d d d g ƒ ƒ ƒ d ƒ d, k  s™t ‚ t t t j | j ƒ  d- d. !ƒ j | t j d d d g ƒ ƒ ƒ d ƒ d, k  sðt ‚ t j  | j! ƒ  d ƒ } | j" ƒ  } xG d d	 d/ d/ d. d d d g D]' } | j | | ƒ | | c d 7<q3Wt d | ƒ }	 t d | d0 | ƒ } t |	 j ƒ  | j ƒ  ƒ s£t ‚ t |	 j ƒ  | j ƒ  ƒ st ‚ qWd  S(T   Ni
   i    i   R?   t   unit_directioniÿÿÿÿi   i$   i   gê-�™—q=iüÿÿÿiþÿÿÿiýÿÿÿi   t   sym_mat3i6   i~   i�   iÊÿÿÿiÜÿÿÿiîÿÿÿRN   g�ç[wìœc@gy\0~œJc@gˆÀ;§p‡)@gúj®Ô¾Ü¿gÍïÂ­�ÂÒ?gi8ŠlJë?gÍæÂ­�ÂÒ¿g{5ŠlJë?gÝ{®Ô¾Ü¿gù9ŠlJë?güu®Ô¾Ü?gïÕÂ­�ÂÒ?t   outiê   i´   iZ   t   anglesih  RF   i   i   gü©ñÒMbP?i   i	   i   R¾   (   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ÿÿÿÿ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   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   (   i6   i~   i�   iÊÿÿÿiÜÿÿÿiîÿÿÿ(   gúj®Ô¾Ü¿gÍïÂ­�ÂÒ?gi8ŠlJë?(   gÍæÂ­�ÂÒ¿g{5ŠlJë?gÝ{®Ô¾Ü¿(   gù9ŠlJë?güu®Ô¾Ü?gïÕÂ­�ÂÒ?(#   t   randomRQ   R%   RH   R   R)   t   center_of_massR0   R   t   eigensystemt   valuest   vectorst   change_of_basis_mx_to_principalt%   distance_to_inertia_ellipsoid_surfacet   nested_loopR&   t   sqrt   determinantRv   RB   RV   t	   transposet   symt   as_sym_mat3RI   R²   Rb   R   t   uniformRG   RO   t   dotRu   t   sizet	   deep_copy(   t   rndt   i_trialR?   t   pait   esRÉ   t   cpR°   RÌ   t   paipRN   t   rotationt   Rt   R_tt   expected_vectorst   vecR@   t   rotR¾   t   points_plust   i_pt   paiw(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt"   exercise_principal_axes_of_inertia1  s   	$'-$63	-
-$$9-										

#	(-0+/-$9$1-+	$$.0$9$-"5"5"5%!c          C   s_  t  j  }  xht d ƒ D]Z} | d k r7 t j ƒ  } nE | d k r^ t j d d g g ƒ } n t j |  ƒ  |  ƒ  g g ƒ } t d | ƒ } | d k r» t | j ƒ  d d g ƒ sÚ t ‚ n t | j ƒ  | d ƒ sÚ t ‚ t | j ƒ  d d d g ƒ sþ t ‚ | j	 ƒ  } t | j
 ƒ  d d g ƒ s+t ‚ t | j ƒ  d d d d g ƒ sRt ‚ | j d d ƒ d k s t ‚ q WxŒt d ƒ D]~} | d k r¢d d g } n |  ƒ  |  ƒ  g } t j ƒ  } xL t j d d g d d g ƒ D], } | j t j | ƒ t j | ƒ j ƒ qßWt d | ƒ } t | j ƒ  | ƒ s9t ‚ t | j ƒ  d d d g ƒ s]t ‚ | j	 ƒ  } t | j
 ƒ  d d g ƒ sŠt ‚ | d k rÀt | j ƒ  d d d d g ƒ sÀt ‚ n  t | j d d ƒ d ƒ sát ‚ | j d d ƒ d k s�t ‚ q�Wx_t d ƒ D]Q} | d k r1d d g } n |  ƒ  |  ƒ  g } t j ƒ  } x^ t j d d g d d g ƒ D]> } | j t j | d | d d g ƒ t j | ƒ j ƒ qnWt d | ƒ } t | j ƒ  | ƒ sÚt ‚ t | j ƒ  d	 d d g ƒ sþt ‚ | j	 ƒ  } t | j
 ƒ  d	 d g ƒ s+t ‚ | d k rt | j ƒ  d d d d g ƒ sat ‚ qqWxót d ƒ D]å} | d k r“d d g } n |  ƒ  |  ƒ  g } | d k  rÏt j d d d d g ƒ } n« t d
 t  j d d ƒ d d g d t ƒ } t j g  d d d d g D] } | j | ^ qƒ } t  j d d ƒ }	 t j |	 ƒ }
 t j |	 ƒ } t j |
 | | |
 g ƒ } t j ƒ  } x’ d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g g
 D]0 } | j | t j | ƒ t j | ƒ j ƒ qçWt d | ƒ } t | j ƒ  | ƒ sEt ‚ | d k  rxt | j ƒ  d d d g ƒ sxt ‚ n  | j	 ƒ  } t | j
 ƒ  d d g ƒ s¥t ‚ | d k  rÛt | j ƒ  d d d d g ƒ sÛt ‚ n  t t t j | j ƒ  d d !ƒ j | t j d d g ƒ ƒ ƒ d ƒ d k  s/t ‚ t t t j | j ƒ  d d !ƒ j | t j d d g ƒ ƒ ƒ d ƒ d k  sƒt ‚ t j | j ƒ  d ƒ } | j ƒ  } xG d d d d d d d d g D]' } | j | | ƒ | | c d 7<qÆWt d | ƒ } t d | d | ƒ } t | j ƒ  | j ƒ  ƒ s6t ‚ t | j ƒ  | j ƒ  ƒ srt ‚ qrWd  S(   Ni
   i    i   R?   RÄ   iÿÿÿÿi   i   i   RÇ   ih  RF   i   i   i   gü©ñÒMbP?i   i   R¾   (   i   i    (   i   i    (   i    i    (   RÈ   RQ   R%   t   vec2_doubleR   R)   RÉ   R0   R   RÊ   RË   RÌ   RÎ   RÏ   R²   R&   RB   Rb   RÐ   R   RÕ   RG   R9   RS   RT   RO   RÖ   Ru   R×   RØ   (   RÙ   RÚ   R?   RÛ   RÜ   RÉ   R@   Rä   R·   t   thetat   cstht   snthR¾   Rå   Ræ   RÞ   Rç   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt%   exercise_principal_axes_of_inertia_2dÒ  s¸    	$$!'	%*$!*	%$$!.	5 ..'!*"2"2%!i
   c      	   C   s“  t  j d d d d d d g ƒ } t  j d d d d d d g ƒ } t j j d | d | ƒ } | j ƒ  } t  j d	 d ƒ } xt |  ƒ D]} t	 j
 | j ƒ  ƒ } d
 | j ƒ  d } t j j d | d | d t ƒ }	 |	 | }
 t j j d |
 d | ƒ } | j ƒ  } t	 j |	 ƒ j ƒ  } t	 j d | j ƒ  ƒ } t | | | j ƒ  j ƒ  | j ƒ  ƒ set ‚ x#t |  ƒ D]} t	 j
 | j ƒ  ƒ } t	 j |	 ƒ | } d „  } d „  } | | | ƒ } | | | ƒ } t | | ƒ såt ‚ | | j ƒ  | ƒ } t | | ƒ st ‚ | | j ƒ  | ƒ } t | | ƒ s9t ‚ | j d | ƒ } t | | ƒ s`t ‚ | j d | ƒ } t | | ƒ srt ‚ qrWqˆ Wd  S(   Niÿÿÿÿi    i   i   i   i   R?   R¾   RM   i
   iM   t   axist   angleRF   RÅ   c   	      S   s˜   t  |  j ƒ  ƒ d k s t ‚ |  j ƒ  \ } } } t j |  j ƒ  ƒ | \ } } } d t j | | | | | | | | | | | | ƒ } | S(   Ni    i   (   t   minRË   R0   R&   RÐ   RÌ   R9   t   sqrt(	   RÜ   RK   Ri   Rs   R^   R4   R3   t   zR`   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt    es_distance_to_ellipsoid_surface\  s
    "?c         S   s6   t  j d |  ƒ j ƒ  | } d t j | j | ƒ ƒ S(   NRÅ   i   (   R&   RÓ   t   inverseR9   Rñ   RÖ   (   R   RK   t   iv(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt    it_distance_to_ellipsoid_surfacee  s    RÄ   (   iÿÿÿÿi    i    (   i   i    i    (   i    iÿÿÿÿi    (   i    i   i    (   i    i    iÿÿÿÿ(   i    i    i   (   R%   RH   Ru   R8   R9   R   RÊ   RP   RQ   R&   RB   RW   RU   t$   r3_rotation_axis_and_angle_as_matrixRG   RÐ   Rô   RÓ   R   R)   RÒ   RÔ   R0   RÎ   (   t   n_trialsR?   R¾   RÛ   RÜ   R[   RÚ   t   rot_axist	   rot_anglet
   rot_matrixt
   rot_pointst   rot_pait   rot_esR^   Rm   t   j_trialRK   t   rot_vRó   Rö   t   d0RZ   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt!   explore_inertia_tensor_properties5  sX    !	
				c       	   C   s  xût  t g D]í}  |  r" d } n t j d } t t d d | d d | d |  ƒ d | ƒ se t ‚ t t d d	 | d d
 | d |  ƒ d | ƒ s› t ‚ t t d d	 | d d
 | d |  ƒ d | ƒ sÑ t ‚ t t d d | d d | d |  ƒ d | ƒ st ‚ t t d t	 j
 d | g ƒ d t	 j
 d | g ƒ d |  ƒ d | g ƒ sXt ‚ t t d t	 j
 d | g ƒ d t	 j
 d | g ƒ d |  ƒ d | g ƒ s©t ‚ t t d t	 j
 d | g ƒ d t	 j
 d | g ƒ d |  ƒ d | g ƒ s t ‚ q Wd  S(   Ni   i´   t   phi1iâÿÿÿt   phi2i  RF   iÄÿÿÿiJ  iv  i<   t	   referencet   otheriO  içÿÿÿiY  iñÿÿÿ(   Rp   RG   R9   t   piR)   R   R0   R   R   R%   Ru   (   RF   R`   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_phase_errorx  s*     	####	2	2	c          C   sî  t  j d ƒ }  |  j t  j d d ƒ ƒ t  j d ƒ } | j t  j d d ƒ ƒ t j j |  | ƒ d k sq t ‚ |  j ƒ  d k s‰ t ‚ t	 |  ƒ d k s¡ t ‚ t	 | ƒ d k s¹ t ‚ t j j
 |  ƒ d k s× t ‚ |  j ƒ  d k sï t ‚ t	 |  ƒ d k st ‚ t  j d ƒ }  |  j t  j d d ƒ ƒ t  j d ƒ } | j t  j d d ƒ ƒ t j j |  | ƒ d k sxt ‚ t	 |  ƒ d k s�t ‚ t	 | ƒ d k s¨t ‚ | j t  j d ƒ ƒ t  j d ƒ } t j j |  | | ƒ d
 k sñt ‚ t	 | ƒ d k s	t ‚ t  j t t t f ƒ } t j j d |  d | ƒ d k sHt ‚ t	 | ƒ t t t f k sit ‚ x~t d d ƒ D]m} xdt d ƒ D]V} xMt d ƒ D]?} t  j ƒ  }  xU t | ƒ D]G } t  j g  t | ƒ D] } t j d d ƒ ^ q×ƒ }	 |  j |	 ƒ q¾W|  j t  j | | ƒ ƒ t j j
 |  ƒ }
 |  j ƒ  d |
 k sPt ‚ |  j ƒ  d | k slt ‚ t  j | t ƒ } t j j d |  d | ƒ t j |  |  j ƒ  ƒ } t j g  t | ƒ D] } t j ƒ  ^ qÂƒ } t  j | d ƒ } | j | t  j | ƒ j | ƒ ƒ t j j d |  d | d t  j | | ƒ ƒ sEt ‚ t | | ƒ sZt ‚ t  j | d ƒ } | j | t  j | ƒ j | ƒ ƒ t j j d |  d | ƒ s¯t ‚ | t j | ƒ } t | d g |
 ƒ sŸt ‚ qŸWqŒWqyWd  S(   Ni   i   i   i    ièÿÿÿi   iýÿÿÿiúÿÿÿi   i   iþÿÿÿt   row_echelon_formt   independent_flagsi   i
   iûÿÿÿt   solutionRK   (   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    i    i    i   (   i    i   i   (   iþÿÿÿi   i   (   R%   t   intt   reshapet   gridR8   R9   t   row_echelon_form_tR0   t   focust   tupleR	  t!   row_echelon_back_substitution_intt   boolRG   Rp   RQ   RÈ   t	   randranget   extendR&   t   recRB   Ru   t   set_selectedt   selectt#   row_echelon_back_substitution_floatR)   (   t   mRJ   t   solt   indept   n_colst   n_rowsRÚ   R°   R¸   t   coeffst   rankt   mmR_   t   zeros(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_row_echelonŽ  sj    !!$!4."("c          C   s"  t  j j }  t j d d d d d d g d d d d d d g d d d d d d g g ƒ } t j | | j ƒ  ƒ } d	 g d } xE t d ƒ D]7 } x. t d ƒ D]  } | | c | | | f 7<qŸ WqŒ W|  d
 | ƒ } t	 | j
 ƒ d d d d d d	 g k st ‚ | j d k st ‚ | j d k s-t ‚ | j ƒ  d7 k sEt ‚ | j d t j | ƒ d d ƒ slt ‚ | d c d 7<| j d t j | ƒ d d ƒ s¤t ‚ | j d t j d d d g ƒ ƒ } t | d d d d d d g ƒ sït ‚ t | t j | ƒ d	 d	 d	 g ƒ st ‚ t j d d d d d d g d d d d d d g d d d d d d g g ƒ } t j | | j ƒ  ƒ } d	 g d } xf t d ƒ D]X } | d | f d | d	 | f | d | f <d | d | f | d	 | f | | <qšW|  d
 | d d ƒ } t	 | j
 ƒ d d d d d d	 g k s8t ‚ | j d k sMt ‚ | j d k sbt ‚ | j d t j | ƒ d d ƒ s‰t ‚ | d c d 7<| j d t j | ƒ d d ƒ sÁt ‚ | j d t j d d d d g ƒ ƒ } t | d d d d d  d! g ƒ st ‚ t | t j | ƒ d	 d	 d g ƒ s:t ‚ y |  d
 t j ƒ  ƒ Wn+ t k
 r~} t | ƒ d" k s…t ‚ n Xt ‚ x:d	 d d g D])} x t d ƒ D]} x	t d ƒ D]û }	 t j t j | |	 ƒ | ƒ }
 |  d
 |
 ƒ } | j t t | ƒ | |	 ƒ k st ‚ | j |	 | j k s1t ‚ t j t j | |	 ƒ | ƒ }
 t j | ƒ } |  d
 |
 d# | ƒ } | j t t | ƒ | |	 ƒ k sšt ‚ | j |	 | j k s»t ‚ q»Wq¨Wq•Wt j d$ d	 ƒ } xít d ƒ D]ß} xÖt d d ƒ D]Å} x¼t d d ƒ D]«}	 | j d% | |	 ƒ d d }
 |
 j t j | |	 ƒ ƒ | j d% |	 ƒ d d } |
 j | ƒ } |
 j ƒ  } | j ƒ  } |  d
 | d# | ƒ } | j t | |	 ƒ k s¾t ‚ | j |	 | j k sÚt ‚ xŒ d	 d d g D]{ } | j d t j | j | ƒ d d& ƒ } | d  k	 s)t ‚ | j ƒ  |	 k sAt ‚ |
 j | ƒ } t | | ƒ sêt ‚ qêW| j d | j t j  t! | j
 | j ƒ ƒ ƒ d d& ƒ } t | | ƒ st ‚ qWq÷WqáWt j d d g d d' g d d( g g ƒ }
 |
 j ƒ  } |  d
 | ƒ } t | d d d	 d) d	 d	 g ƒ s0t ‚ | j d k sEt ‚ |
 j ƒ  } |  d
 | d d* ƒ } | j d k s{t ‚ t | d d d	 d+ d	 d) g ƒ s¢t ‚ | } |
 j ƒ  } |  d
 | d, d ƒ } | j d k sÞt ‚ t | | ƒ sót ‚ |
 j ƒ  } |  d
 | d, d	 ƒ } | j d	 k s)	t ‚ t | |
 ƒ s>	t ‚ d	 } x¯d9 d; d= g D]ž\ } } x�t d ƒ D]�} t j" | j# ƒ  ƒ } t j | t j" | ƒ | j$ ƒ  ƒ }
 |
 j t j d d ƒ ƒ t |
 j% ƒ  d	 d- d. ƒsè	t ‚ t j d/ d0 d1 g ƒ } |
 j | ƒ } |
 j ƒ  } | j ƒ  } |  d
 | d# | d d. ƒ } | j | k sW
t ‚ | j d t j | j d2 ƒ d d. ƒ } | d  k	 s�
t ‚ |
 j | ƒ } t | | ƒ s´
t ‚ | j d t j | j d	 ƒ ƒ } | d  k rm	| d 7} qm	qm	WqT	W| d3 k st ‚ t j g  d4 j& ƒ  D] } t' | ƒ ^ qƒ }
 |
 j t j d5 d ƒ ƒ t j d5 d6 ƒ } |
 j ƒ  } | j ƒ  } t  j j d
 | d# | d d. ƒ } | j d k s¯t ‚ | j d t j | j ƒ d d. ƒ } t |
 j | ƒ | ƒ sñt ‚ t t( | ƒ d d	 d	 d	 d d g ƒ st ‚ d  S(>   Ni   i   i   i   i   i   iÿÿÿÿiýÿÿÿi    t   a_workR4   t   epsilongVçž¯Ò<g:Œ0âŽyE>t   free_valuesg      @gÚ¶mÛ¶mÛ¿g       @g      ð?gTðr
^Nñ¿g}h¬�õñ¿i   i
   i	   i   t   min_abs_pivotg•Ö&è.>iþÿÿÿg       ÀgþÿÿÿÿÿÀg      Àg      @g      ö¿s&   a_work matrix must be two-dimensional.t   b_workRM   R×   g»½×Ùß|Û=g×£p=
×ÿ?g®Gáz®ÿ?g{®Gáz„?gš™™™™™¹?g{®Gázt?t   max_rankRN   gê-�™—q=g333333@gÍÌÌÌÌÌ Àgffffff @gš™™™™™"@i   s(  
    64     2     3    61    60     6
     9    55    54    12    13    51
    17    47    46    20    21    43
    40    26    27    37    36    30
    32    34    35    29    28    38
    41    23    22    44    45    19
    49    15    14    52    53    11
     8    58    59     5     4    62i   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   i    i    i    i    i    i    i   (	   i    i    i    gVçž¯Ò<i    i    i    i    i    (   (	   i    i    i    gVçž¯Ò<i    i    i    i    i    i    ()   R8   R9   t   row_echelon_full_pivotingR%   Ru   R&   R  t   allRQ   R»   t   col_permR0   R   t   nullityt   is_in_row_spacet   back_substitutionR)   RB   Rk   Rl   R(   R  Rð   RO   RP   RU   R  t   matrix_multiplyRØ   RI   R×   R  t   size_tt   iterRÐ   RV   RÒ   t   matrix_determinant_via_lut   splitt   floatt   sorted(   t   refpR  t   m_inpRK   R¸   R°   Rm   R_   t   nrt   ncRi   Rs   R[   RÚ   R4   t   awt   bwR{   t   ebt	   aw_rank_1t   n_no_solution_with_epsilon_zerot
   singular_aR   R2   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt"   exercise_row_echelon_full_pivotingÆ  s   "-'($	+,*-'(''+ ''(			(	!		''&!		! 	%$c             sw  d d d „ ‰  t  j d d ƒ ‰ xEt d ƒ D]7}  d d d g } d	 d
 d g } |  d rq d | d <| d <n  |  d d r” d | d <| d <n  |  d d r· d | d <| d <n  t j | ƒ } t j | ƒ } | | } t j j d | d | ƒ } t	 | | ƒ st
 ‚ xSt d ƒ D]E} | d k rCt j d d ƒ } n t j ˆ j ƒ  ƒ } | | | j ƒ  } | | }	 | | }
 t	 | |	 |
 ƒ s™t
 ‚ t j j d | d |
 ƒ } t	 | |	 ƒ sÉt
 ‚ t j ˆ  d | j ƒ  ƒ ƒ } t	 | |
 |	 ƒ s t
 ‚ t d  k	 rt j | j ƒ  ƒ } t j | ƒ |
 } t	 | |	 ƒ sIt
 ‚ t	 | | ƒ sat
 ‚ qqWq. Wt  j d g g ƒ } t  j d g ƒ } t j j d | d | ƒ } t	 | d g ƒ sÃt
 ‚ t j ˆ  d | ƒ ƒ } | t j | ƒ } t	 | d g ƒ st
 ‚ | d d k st
 ‚ | d d k s2t
 ‚ t j j d | d | d d ƒ } | d d k sit
 ‚ t j ˆ  d | d d ƒ ƒ } | t j | ƒ } | d d k s°t
 ‚ d | d <t j j d | d | d d ƒ } | d  k sít
 ‚ ‡  ‡ f d †  } xq t d ƒ D]c } t  j d d ƒ d d \ } } } t j | | | | | | | | | g	 ƒ } | | d d ƒqWd  S(   Ngê-�™—q=i    c         S   s4   t  j j j d |  d | d | ƒ } | j ƒ  j ƒ  S(   NR  t   relative_epsilont   absolute_epsilon(   R8   t   linalgRÊ   t   real_symmetrict   generalized_inverse_as_packed_ut   matrix_packed_u_as_symmetric(   Ri   t   relative_min_abs_pivott   absolute_min_abs_pivotRÜ   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   girsi  s
    	RM   i   g®Gáz®ó?g¸…ëQ¸@g�Âõ(\�â?gR¸…ëQÈ¿g)\�Âõ(Ü¿g�Âõ(\�ê?i   i   i   Ri   Rs   i
   t   ni   gVçž¯Ò<g›+¡†›„=RI  g»½×Ùß|Û=c   	   	      s  xt  | ƒ D]} | d k r( |  } n) t j ˆ j ƒ  ƒ } | |  | j ƒ  } t j ˆ  d | j ƒ  d d ƒ ƒ } t d  k	 r t j t j | j ƒ  ƒ ƒ } | | j	 ƒ  t
 d t
 g  | D] } t | ƒ ^ q¼ ƒ ƒ } | d k r| j GH| j GH| j GHt | ‚ qq q Wd  S(   Ni    Ri   RI  gê-�™—q=i   g»½×Ùß|Û=(   RQ   R&   RÐ   RV   RÒ   t   as_flex_double_matrixR-   RI   t   generalized_inverset   norm_sqt   maxRO   Rb   R0   (	   Ri   Rø   RÚ   R]   R2   t   arit   aritRm   t   mismatch(   RJ  R[   (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   compare¤  s     	<R×   Rø   (   R%   RP   RQ   R&   t   diagRB   R8   R9   t)   solve_a_x_eq_b_min_norm_given_a_sym_b_colR)   R0   t   identityRÐ   RV   RÒ   RL  R-   RI   RM  Ru   RU   (   t   bitsRZ   R4   Ri   Rs   t   xsRÚ   R2   R]   t   xrR´   RP  RQ  t   aiRS  R3   Rò   (    (   RJ  R[   sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt2   exercise_solve_a_x_eq_b_min_norm_given_a_sym_b_colh  sx    
   


 	
	#		c          C   sô   d }  t  t j j d d d
 |  ƒ |  ƒ s0 t ‚ d } t  t j | ƒ j ƒ  d ƒ sZ t ‚ t j j d | d
 |  ƒ } t  | d d d d d d g ƒ sœ t ‚ t j j d | ƒ } | j	 ƒ  d k sÉ t ‚ t  | j
 t j |  ƒ ƒ | ƒ sð t ‚ d  S(    Ni   i   i   gš™™™™™É?g333333Ó?g      à?Ri   i   i    t   gg¼]wÊÕe¿gO“o+½Ø?gYÝê9Í?gî°‰Ì\àÐ?g˜jf-$å¿gÇF ^×¯ì?gO[#‚qpì?gµ<Lûæï¿gƒR´r/°à¿g�Çº�£Û?g/ÐÌ°@g‚3Ëö@g,1aî,@g¥>þxk$ÀgIÓ˜Mù‡Àgütú°Î&ú?i   (   i   i   i   gš™™™™™É?g333333Ó?g      à?(	   i   i    i    i    i   i    i    i    i   (	   g¼]wÊÕe¿gO“o+½Ø?gYÝê9Í?gî°‰Ì\àÐ?g˜jf-$å¿gÇF ^×¯ì?gO[#‚qpì?gµ<Lûæï¿gƒR´r/°à¿(   i   i   (   R)   R8   R9   t    tensor_rank_2_gradient_transformR0   R&   RÐ   RÑ   t'   tensor_rank_2_gradient_transform_matrixR  R0  R%   Ru   (   R\  Ri   t   gat   gtmx(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_tensor_rank_2¾  s      $	gü©ñÒMbP?c            s  t  d d d d g d d ƒ } t | j ƒ  d d d g ƒ sB t ‚ t | j ƒ  d ƒ s] t ‚ | j d d ƒ } t | j ƒ  d d d g ƒ s“ t ‚ t | j ƒ  d ƒ s® t ‚ t | j d	 d
 ƒ j ƒ  d ƒ sÕ t ‚ | j d d d d g ƒ sö t ‚ | j d d d d g ƒ st ‚ | j d d d  g ƒ s6t ‚ t | j ƒ  d! d" d# g ƒ sZt ‚ t | j	 ƒ  d$ d% d& g ƒ s~t ‚ xIt
 t j j t j j g ƒ D])\ ‰  } ‡  f d †  } | g  ƒ } | d | ƒ } | j ƒ  d k sët ‚ t | j ƒ  d' ƒ st ‚ t | j ƒ  d ƒ s!t ‚ ˆ  d k rK| j | j ƒ  ƒ sKt ‚ n  | d | d d d d d d( ƒ } | j ƒ  d k s„t ‚ t | j ƒ  d) ƒ sŸt ‚ t | j ƒ  d ƒ sºt ‚ | d* g ƒ } | d | d d d d d d+ ƒ } | j ƒ  d k st ‚ t | j ƒ  d, ƒ st ‚ t | j ƒ  d ƒ s8t ‚ | d- d. d/ d0 g ƒ } | d | ƒ } | j ƒ  d k swt ‚ t | j ƒ  d1 d d ƒs˜t ‚ t | j ƒ  t j d ƒ d d d ƒs�t ‚ q�W|  d } | d } x—t j d2 d3 t ƒ D]€\ } }	 }
 xnd4 d5 d6 g D]]} xTt d d ƒ D]C} | d k r#t j g  d7 d d |
 f d |	 d f d |	 |
 f | d d f | d |
 f | |	 d f | |	 |
 f g D]% } t j | ƒ t j | ƒ j ^ qŸƒ } t j | ƒ t j | |	 |
 g ƒ d j } t j | d |	 d |
 d ƒ d } nö d t j d ƒ |
 } t j g  | d | f | d | f d |	 | f d |	 | f g D]) } t j | ƒ d t j | ƒ j ^ q{ƒ } | |	 k r|	 |
 k r| } t g  | D], } t t j | d ƒ t j | ƒ ƒ ^ qÕƒ } n d  } d  } t | d |  ƒ} | d  k rR| j ƒ  } | j ƒ  } n  t | j ƒ  | d | ƒsst ‚ t | j ƒ  | d | ƒs”t ‚ | d k r»| j ƒ  d k s»t ‚ n  | j | ƒ t | d |  ƒ} t | j ƒ  | d | ƒsût ‚ t | j ƒ  | d | ƒst ‚ | d k rC| j ƒ  d k sCt ‚ n  t j } xª t d ƒ D]œ } | j t j | ƒ t j | ƒ  | ƒ  | ƒ  g ƒ j ƒ  | j ƒ t | d |  ƒ} t | j ƒ  | d | ƒsÔt ‚ t | j ƒ  | d | ƒsYt ‚ qYWt d g  | D] } t j | ƒ ^ qd |  ƒ } t | j ƒ  | d | ƒsKt ‚ t | j ƒ  | d | ƒs)t ‚ q)WqWqôWx”t j d8 d9 t ƒ D]}\ } }	 xnd: d; d< g D]]} g  d= d |	 f | d f | |	 f g D]" } t j | ƒ t j | ƒ ^ qÕ} t j | ƒ t j | |	 g ƒ d j } t j | d |	 d ƒ d } t | d |  ƒ} | d  k r~	| j ƒ  } | j ƒ  } n  t | j ƒ  | d | ƒsŸ	t ‚ t | j ƒ  | d | ƒsÀ	t ‚ | j ƒ  d k sØ	t ‚ | j t j | ƒ ƒ t | d |  ƒ} t | j ƒ  | d | ƒs!
t ‚ t | j ƒ  | d | ƒsB
t ‚ | j ƒ  d k sZ
t ‚ t j } x¡ t d ƒ D]“ } | j t j | ƒ t j | ƒ  | ƒ  g ƒ j ƒ  | ƒ t | d |  ƒ} t | j ƒ  | d | ƒsâ
t ‚ t | j ƒ  | d | ƒsp
t ‚ qp
WqªWqŽWd  S(>   Nt   centeri   i   i   t   radiusi   t   additional_radiusi   t   additional_relative_radiusgš™™™™™¹?gffffff@R@   g�íµ ÷Æ°>c            s9   ˆ  d k r t  j |  ƒ Sg  |  D] } t j | ƒ ^ q  S(   Ni    (   R%   RH   R&   RB   (   R?   R@   (   t   i_impl(    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   wrap_pointsÞ  s     R?   i    R%  t   radius_if_one_or_no_pointst   center_if_no_pointsi   g      à?RN   gü©ñÒMbP?gñhãˆµøä>i
   iýÿÿÿiûÿÿÿg       @i	   g¿rÞÿÿ!@i	   gAï�!  "@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   i   i   (   g      à?g      à?g      à?(   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    (    R   R)   Rb  R0   Rc  t   expandt   expand_relativet	   is_insidet   box_mint   box_maxt	   enumerateR8   R9   t   minimum_covering_sphere_3dt   minimum_covering_sphere_ndt   n_iterationsRñ   R%   RÏ   Rp   RQ   RH   R&   RB   Rb   RO  RO   RI   R   R²   RÈ   t	   normalize(   R%  t   s3t   mcs_implRg  R?   t   mcsRN   t	   eps_looseR°   R¸   R·   t   shiftt
   poly_indexRJ   t   expected_centert   expected_radiusRò   R@   R2   t   i_addl(    (   Rf  sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt    exercise_minimum_covering_sphereÎ  s
   $$$!!$$		!2

%>,*C<!!!!	0!%"	!-"		5)!!!!	'!c          C   sw  t  d d ƒ }  xat d ƒ D]S} t  d | ƒ }  |  j | k sF t ‚ | d k rp |  j j ƒ  d k s— t ‚ n' |  j j ƒ  d d | d k s— t ‚ t |  j j ƒ  d d d g ƒ s¾ t ‚ t |  j j ƒ  d g |  j j ƒ  ƒ sì t ‚ |  j	 ƒ  } t
 j |  j d |  j d j ƒ  ƒ d } | d k rGt | | ƒ sot ‚ q | | k sYt ‚ | d	 | k  s t ‚ q Wd  S(
   Nt   leveli    i   i   iP   i   i   g      à?i   (   R   RQ   R~  R0   RE   R×   R)   t   meanRÖ   t   next_neighbors_distanceR%   Rð   (   t   icoR~  RZ   R  (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_icosahedron^  s    ''.+c          C   s	  t  j g  ƒ }  t j j d |  ƒ } | j d k s9 t ‚ t | j d ƒ sQ t ‚ t | j	 d ƒ si t ‚ t | j
 d ƒ s� t ‚ t | j d ƒ s™ t ‚ t | j d ƒ s± t ‚ t | j d ƒ sÉ t ‚ t | j d ƒ sá t ‚ t | j d ƒ sù t ‚ t | j d ƒ st ‚ t | j d ƒ s)t ‚ t | j d ƒ sAt ‚ t | j d ƒ sYt ‚ t | j d ƒ sqt ‚ t  j d g ƒ }  t j j d |  ƒ } | j d k s­t ‚ t | j d ƒ sÅt ‚ t | j	 d ƒ sÝt ‚ t | j
 d ƒ sõt ‚ t | j d ƒ st ‚ t | j d ƒ s%t ‚ t | j d ƒ s=t ‚ t | j d ƒ sUt ‚ t | j d ƒ smt ‚ t | j d ƒ s…t ‚ t | j d ƒ s�t ‚ t | j d ƒ sµt ‚ t | j d ƒ sÍt ‚ t | j d ƒ såt ‚ t  j d d d d	 d
 g ƒ }  t j j d |  ƒ } | j d
 k s-t ‚ t | j d ƒ sEt ‚ t | j	 d
 ƒ s]t ‚ t | j
 d
 ƒ sut ‚ t | j d ƒ s�t ‚ t | j d ƒ s¥t ‚ t | j d ƒ s½t ‚ t | j d ƒ sÕt ‚ t | j t j d ƒ ƒ söt ‚ t | j d ƒ st ‚ t | j t j d ƒ ƒ s/t ‚ t | j d ƒ sGt ‚ t | j d ƒ s_t ‚ t | j d ƒ swt ‚ t  j d d d g ƒ }  t j j d |  ƒ } | j d k s¹t ‚ t | j d ƒ sÑt ‚ t | j	 d ƒ sét ‚ t | j
 d ƒ st ‚ t | j d ƒ st ‚ t | j d ƒ s1t ‚ t | j d ƒ sIt ‚ t | j d ƒ sat ‚ t | j d ƒ syt ‚ t | j d ƒ s‘t ‚ t | j t j d ƒ ƒ s²t ‚ t | j d ƒ sÊt ‚ t | j d ƒ sât ‚ t | j d ƒ sút ‚ t ƒ  } | j d | ƒ t | j ƒ  j ƒ  ƒ d k s7t ‚ xÃt d ƒ D]µ} t  j d d t t j ƒ  d ƒ ƒ }  t j j d |  ƒ } | j |  j ƒ  k s t ‚ t | j t  j |  ƒ ƒ sÁt ‚ t | j	 t  j	 |  ƒ ƒ sât ‚ t | j
 t	 t  j |  ƒ t  j	 |  ƒ ƒ ƒ st ‚ t | j t  j |  ƒ ƒ s7t ‚ t | j t  j |  ƒ ƒ sXt ‚ |  t  j |  ƒ } t | j t  j t  j  | ƒ ƒ ƒ s•t ‚ t | j t  j | | ƒ | j ƒ sÁt ‚ t | j t j | j ƒ ƒ såt ‚ t | j t  j t  j! | ƒ ƒ | j d ƒ st ‚ t | j t j | j ƒ ƒ s>t ‚ t | j t  j | | | ƒ | j t  j | | ƒ | j d ƒ sŠt ‚ t | j t  j | | | | ƒ | j t  j | | ƒ | j d ƒ sÚt ‚ t | j | j d ƒ sDt ‚ qDWd  S(   NRË   i    iÿÿÿÿiùÿÿÿi   i   i   i   i   i   i   g333333ó?g      @g333333û?gÍÌÌÌÌÌô¿R`   i   i
   R×   g       @g      ø?("   R%   Ru   R8   R9   t   basic_statisticsRK  R0   R)   Rð   RO  t   max_absolutet   sumR  t!   mean_absolute_deviation_from_meant   biased_variancet   biased_standard_deviationt   bias_corrected_variancet!   bias_corrected_standard_deviationt   skewt   kurtosist   kurtosis_excessRñ   R+   t   showt   lent   getvaluet
   splitlinesRQ   RU   R  RÈ   R×   RO   t   pow2(   R4   R_   R`   RÚ   RZ   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_basic_statisticsq  s¶    !!!	$&!!4!!	!,		,		C	Gc          C   s!  d d l  m }  y |  t j ƒ  ƒ Wn t k
 r7 n Xt ‚ |  t j d ƒ ƒ } | j d k sh t ‚ | j d k s} t ‚ xS t	 d ƒ D]E } |  t j d ƒ ƒ } | j d k sº t ‚ | j d k sŠ t ‚ qŠ WxS t	 d ƒ D]E } |  t j d ƒ ƒ } | j d k st ‚ | j d k sà t ‚ qà Wt j d ƒ } xh t	 d ƒ D]Z } | j
 t j t | ƒ ƒ ƒ } |  | ƒ } | j d k sŠt ‚ | j d k sEt ‚ qEWt j d ƒ } xh t	 d ƒ D]Z } | j
 t j t | ƒ ƒ ƒ } |  | ƒ } | j d k st ‚ | j d k s¿t ‚ q¿Wd  S(   Niÿÿÿÿ(   t   median_statisticsi   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	   (   R/   R”  R%   Ru   Rk   R(   t   medianR0   t   median_absolute_deviationRQ   R  t   random_permutationR�  (   R”  t   statsR°   t   datat   data_(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_medianÎ  s:    c    
   €   C   s�  d „  }  y t  d d ƒ Wn+ t k
 rG } t | ƒ d k sN t ‚ n Xt ‚ y t  d d ƒ Wn+ t k
 rŒ } t | ƒ d k s“ t ‚ n Xt ‚ x= t d d ƒ D], } | d	 } |  t d | ƒ t | ƒ ƒ q£ Wy t  d d ƒ Wn+ t k
 r} t | ƒ d k st ‚ n Xt ‚ y t  d ƒ Wn+ t k
 rS} t | ƒ d k sZt ‚ n Xt ‚ t t  dƒ d ƒ sut ‚ t t  dƒ d ƒ s�t ‚ t	 t  d ƒ d ƒ s«t ‚ y t  d ƒ Wn+ t k
 ræ} t | ƒ d k sít ‚ n Xt ‚ xY d d g D]K } y t  d | ƒ Wn+ t k
 r>} t | ƒ d k sEt ‚ qúXt ‚ qúWx§d d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€d�d‚dƒd„d…d†d‡dˆd‰dŠd‹dŒd�dŽd�d�d‘d’d“d”d•d–d—d˜d™dšd›dœd�džg D]" \ } } |  | t  d | ƒ ƒ qÍWt
 t j dd  ƒ } | d  k	 r‰dGxj t ddƒ D]Y } | d k rP| dd k rPq(n  | d} t t  | ƒ | | ƒ ddƒs(t ‚ q(Wd} ddŸ} | } xã t r€y t  | ƒ } Wn, t k
 râ} t | ƒ d k sÞt ‚ Pn X| | k  r| | ƒ }	 |  | |	 ƒ n  y t  | ƒ } Wn+ t k
 rI} t | ƒ d k sst ‚ n* X| | k  rs| | ƒ }	 |  | |	 ƒ n  | | 9} qžWdGHn  d  S(¡  Nc         S   sa   t  |  ƒ d k  r0 t |  | d d ƒs] t ‚ n- t |  | t  |  | ƒ d d d ƒs] t ‚ d  S(   Ni   RN   g»½×Ùß|Û=i    (   RO   R)   R0   (   Ri   Rs   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   cmpõ  s    R4   i    s(   slatec: dgamma: x is 0 (nerr=4, level=2)iÿÿÿÿs9   slatec: dgamma: x is a negative integer (nerr=4, level=2)i   i'  g      Y@g:Œ0âŽyE>gnÆá»±k2@g”D½»±k2@g„ƒ=dGWgÂäD°¨ïg„ƒ=dGWÿs9   slatec: dlngam: x is a negative integer (nerr=3, level=2)gïóÄeGWgïóÄeGWÿs@   slatec: dlngam: abs(x) so big dlngam overflows (nerr=2, level=2)gÍÌÌÌÌÌì¿gô0üvUÝ@gš™™™™™é¿gX	¸�ôû?gffffffæ¿gs‘¤CT=÷?g333333ã¿g2/ˆºˆëô?g      à¿gëíð£‰?ô?gš™™™™™Ù¿gÅƒ¹ïJõ?g333333Ó¿g²Þüo÷?gš™™™™™É¿g?Õ	/ü?gš™™™™™¹¿gFxÌÿ¡ó@gš™™™™™¹?g÷Þó5Ž@gš™™™™™É?g¶%¿�bø?g333333Ó?gªAlzcˆñ?gš™™™™™Ù?g=J�zb~é?g      à?g¼¡çHÐPâ?g333333ã?g'N$Ý©|Ù?gffffffæ?g{Þ‰²Ð?gš™™™™™é?g@â±vÃ?gÍÌÌÌÌÌì?gµeä‚þ°?gÍÌÌÌÌìWÀg…Z¨ pjuÀgš™™™™ÙWÀg^ö®:WuÀgš™™™™™WÀgpEáV/uÀg33333“WÀgm–,PuÀgÍÌÌÌÌlVÀgÁy+·sÀg33333SUÀgCIq˜ë{rÀgš™™™™YTÀg‚;e$jqÀgš™™™™ùRÀg·ØÊüü®oÀg33333“QÀgsØ­‚ËlÀg33333³NÀgÝý1}-&hÀgš™™™™™NÀg`
ÈbügÀgffffffLÀg�€»_½eÀg33333sKÀgR'›öj³dÀg33333³JÀgµ8ýÅXdÀgÍÌÌÌÌJÀgdð(|NcÀg33333³FÀgÙåÂÚ¦.`Àg     @EÀg¸˜ú_O ]Àgfffffæ<Àg©^&a&QÀg     €<Àg:O>‘(QÀgffffff!@gæ§u~ï#@gÍÌÌÌÌÌ,@gG­ôd™7@gÍÌÌÌÌH@gâŒ}&a@g333333J@g…1Ãæ›?c@gš™™™™ÙL@gûg¿ƒËåe@gš™™™™YM@g‘‹p.�gf@gfffffS@gÍ<yUŠo@gfffffT@g§< è¨Ûp@gÍÌÌÌÌìV@gh�òt@gÍÌÌÌÌÌW@gÉ}kâ¼u@g33333SX@gKõò¬u@gÍÌÌÌÌÌX@gÔ¥mQ7v@g}r�ù¢(ô¿gö±ØÂIõ?g?n=¥þe	@g¸Nk­ˆë?g?n=¥þe)ÀgbíÏ÷ðj4Àg“r�ù¢(4ÀgüÙ}iywDÀg“r�ù¢(tÀgvÓr¶˜Àg;n=¥þe‰ÀgOÊŠzË²Ài   gU†·áAgHn=¥þe©Ágî±™ž³ÚìÁg7n=¥þe¹Ág§ÌaôýÁg›r�ù¢(ÔÁgMbS;Âg/n=¥þeÙÁgÁYróÝ Âg9n=¥þeùAgBÐ"a‹-ABg|r�ù¢(Âg‡.3¶ÙKÂg�r�ù¢(tÂlüÿÿÿ!({^Ú g=n=¥þe‰Âg­z$Ï!ÖÂg€r�ù¢(´Âlüÿÿÿ�"=] lüÿÿÿ)W1_(

 g.fÉœyDÃg‰r�ù¢(ÄCg|“.Í&Dg‡r�ù¢(Dgª…ÜÃïå[DgöÿÿÿÿÿODg_¯áF™Â§Dgˆr�ù¢(tDgUVIlôÎDg     `Eg¾&œã¦½EgBn=¥þe‰Fgœd÷Ãb«ìFgQn=¥þeIHgDÓ1b�/²Hg�r�ù¢(äKg˜L–H¬ºTLg‘r�ù¢(Lg\þ“Ä‚…LgAn=¥þeYLg2~1 ËLg6n=¥þeiLgLüÕ+gCÛLgˆr�ù¢(„Lg“òãå!ÒõLg      ÀMgÖï3NgóÿÿÿÿÿïMg³òŸzHcNg=n=¥þeiNgžFïâªßNgûÿÿÿÿÿoNghÄ·ìùãNg     �Ngó¸=I&Og5n=¥þeùNgÂ17ÿspOgˆr�ù¢(äOgªrº�6·[Pg�r�ù¢($Pg-µCÿ&œPg     �Pg% ðœìQgðÿÿÿÿÿOSg'Ã ¼ÊSg9n=¥þe9Tg$cˆN:¶Tgìÿÿÿÿÿ?Wg9KÁÎ³ÀWg‡r�ù¢(´Wg¬†f:®4Xg‡r�ù¢(ÔWgDW�,ÊTXg      XgÉ"º£÷³ Xg7n=¥þe‰Xg@§ïh
ù
YgHn=¥þe¹Xg¹Ö„íÚ-;YgPn=¥þeYg²5¯ö{—›Yg‹r�ù¢(”YgŸÿöÑjQZgùÿÿÿÿÿoZg
8'{ONòZg{r�ù¢(„Zg<ñ#[gIn=¥þe‰^gKËÊ}�É_g;n=¥þeÉ^gš•ƒ+ÃìP_gÚÿÿÿÿÿß^güê‚Å¹ae_gôÿÿÿÿÿ__gíÓ~Ñrºå_g8n=¥þe©_gÀYŠÿg1`g‹r�ù¢(Dag;¼Ç¿Íag9n=¥þe™dg’õ‹2c$eg�r�ù¢(Ädg—Æƒ"JPeg      gg¸s@Èx‹gg2n=¥þe™ggjq5WçÅ%hgBn=¥þeégg?n\pêñuhg@n=¥þe‰hghª¢ðIig�r�ù¢($jgXë› d²jg     ðlgzá�6!mg6n=¥þeymgÛ¬ÉT	ng     €ng¤Œ>(og8n=¥þeiogÚ#Ì4úog      €pgw^ùUšÌqg•r�ù¢(qgÆs³¤d•qgWn=¥þeirgÁŸ­ð¸¸ûrgGn=¥þeùtg™¹S%Ÿ!�ug�r�ù¢(vg¯¿NF�“—vg4n=¥þe©vg>óyI>wg     ðxg�Û«3¹ƒyg      {g÷kÎS1p”{gõÿÿÿÿÿo{gá¡I—|g      �|gßˆvÒú$}g>n=¥þe9gPöû›bÑt   cmath_lgammas:   Testing compatibility of cmath_lgamma and slatec_dlngam...iüÿÿiè  i
   g      $@RN   g»½×Ùß|Û=g €à7yÃ1Ci   g      @t   OKgGœ¡úÿÿï¿gÜ1¯  ð¿(   gÍÌÌÌÌÌì¿gô0üvUÝ@(   gš™™™™™é¿gX	¸�ôû?(   gffffffæ¿gs‘¤CT=÷?(   g333333ã¿g2/ˆºˆëô?(   g      à¿gëíð£‰?ô?(   gš™™™™™Ù¿gÅƒ¹ïJõ?(   g333333Ó¿g²Þüo÷?(   gš™™™™™É¿g?Õ	/ü?(   gš™™™™™¹¿gFxÌÿ¡ó@(   gš™™™™™¹?g÷Þó5Ž@(   gš™™™™™É?g¶%¿�bø?(   g333333Ó?gªAlzcˆñ?(   gš™™™™™Ù?g=J�zb~é?(   g      à?g¼¡çHÐPâ?(   g333333ã?g'N$Ý©|Ù?(   gffffffæ?g{Þ‰²Ð?(   gš™™™™™é?g@â±vÃ?(   gÍÌÌÌÌÌì?gµeä‚þ°?(   gÍÌÌÌÌìWÀg…Z¨ pjuÀ(   gš™™™™ÙWÀg^ö®:WuÀ(   gš™™™™™WÀgpEáV/uÀ(   g33333“WÀgm–,PuÀ(   gÍÌÌÌÌlVÀgÁy+·sÀ(   g33333SUÀgCIq˜ë{rÀ(   gš™™™™YTÀg‚;e$jqÀ(   gš™™™™ùRÀg·ØÊüü®oÀ(   g33333“QÀgsØ­‚ËlÀ(   g33333³NÀgÝý1}-&hÀ(   gš™™™™™NÀg`
ÈbügÀ(   gffffffLÀg�€»_½eÀ(   g33333sKÀgR'›öj³dÀ(   g33333³JÀgµ8ýÅXdÀ(   gÍÌÌÌÌJÀgdð(|NcÀ(   g33333³FÀgÙåÂÚ¦.`À(   g     @EÀg¸˜ú_O ]À(   gfffffæ<Àg©^&a&QÀ(   g     €<Àg:O>‘(QÀ(   gffffff!@gæ§u~ï#@(   gÍÌÌÌÌÌ,@gG­ôd™7@(   gÍÌÌÌÌH@gâŒ}&a@(   g333333J@g…1Ãæ›?c@(   gš™™™™ÙL@gûg¿ƒËåe@(   gš™™™™YM@g‘‹p.�gf@(   gfffffS@gÍ<yUŠo@(   gfffffT@g§< è¨Ûp@(   gÍÌÌÌÌìV@gh�òt@(   gÍÌÌÌÌÌW@gÉ}kâ¼u@(   g33333SX@gKõò¬u@(   gÍÌÌÌÌÌX@gÔ¥mQ7v@(   g}r�ù¢(ô¿gö±ØÂIõ?(   g?n=¥þe	@g¸Nk­ˆë?(   g?n=¥þe)ÀgbíÏ÷ðj4À(   g“r�ù¢(4ÀgüÙ}iywDÀ(   g“r�ù¢(tÀgvÓr¶˜À(   g;n=¥þe‰ÀgOÊŠzË²À(   i   gU†·áA(   gHn=¥þe©Ágî±™ž³ÚìÁ(   g7n=¥þe¹Ág§ÌaôýÁ(   g›r�ù¢(ÔÁgMbS;Â(   g/n=¥þeÙÁgÁYróÝ Â(   g9n=¥þeùAgBÐ"a‹-AB(   g|r�ù¢(Âg‡.3¶ÙKÂ(   g�r�ù¢(tÂlüÿÿÿ!({^Ú (   g=n=¥þe‰Âg­z$Ï!ÖÂ(   g€r�ù¢(´Âlüÿÿÿ�"=] (   lüÿÿÿ)W1_(

 g.fÉœyDÃ(   g‰r�ù¢(ÄCg|“.Í&D(   g‡r�ù¢(Dgª…ÜÃïå[D(   göÿÿÿÿÿODg_¯áF™Â§D(   gˆr�ù¢(tDgUVIlôÎD(   g     `Eg¾&œã¦½E(   gBn=¥þe‰Fgœd÷Ãb«ìF(   gQn=¥þeIHgDÓ1b�/²H(   g�r�ù¢(äKg˜L–H¬ºTL(   g‘r�ù¢(Lg\þ“Ä‚…L(   gAn=¥þeYLg2~1 ËL(   g6n=¥þeiLgLüÕ+gCÛL(   gˆr�ù¢(„Lg“òãå!ÒõL(   g      ÀMgÖï3N(   góÿÿÿÿÿïMg³òŸzHcN(   g=n=¥þeiNgžFïâªßN(   gûÿÿÿÿÿoNghÄ·ìùãN(   g     �Ngó¸=I&O(   g5n=¥þeùNgÂ17ÿspO(   gˆr�ù¢(äOgªrº�6·[P(   g�r�ù¢($Pg-µCÿ&œP(   g     �Pg% ðœìQ(   gðÿÿÿÿÿOSg'Ã ¼ÊS(   g9n=¥þe9Tg$cˆN:¶T(   gìÿÿÿÿÿ?Wg9KÁÎ³ÀW(   g‡r�ù¢(´Wg¬†f:®4X(   g‡r�ù¢(ÔWgDW�,ÊTX(   g      XgÉ"º£÷³ X(   g7n=¥þe‰Xg@§ïh
ù
Y(   gHn=¥þe¹Xg¹Ö„íÚ-;Y(   gPn=¥þeYg²5¯ö{—›Y(   g‹r�ù¢(”YgŸÿöÑjQZ(   gùÿÿÿÿÿoZg
8'{ONòZ(   g{r�ù¢(„Zg<ñ#[(   gIn=¥þe‰^gKËÊ}�É_(   g;n=¥þeÉ^gš•ƒ+ÃìP_(   gÚÿÿÿÿÿß^güê‚Å¹ae_(   gôÿÿÿÿÿ__gíÓ~Ñrºå_(   g8n=¥þe©_gÀYŠÿg1`(   g‹r�ù¢(Dag;¼Ç¿Ía(   g9n=¥þe™dg’õ‹2c$e(   g�r�ù¢(Ädg—Æƒ"JPe(   g      gg¸s@Èx‹g(   g2n=¥þe™ggjq5WçÅ%h(   gBn=¥þeégg?n\pêñuh(   g@n=¥þe‰hghª¢ðIi(   g�r�ù¢($jgXë› d²j(   g     ðlgzá�6!m(   g6n=¥þeymgÛ¬ÉT	n(   g     €ng¤Œ>(o(   g8n=¥þeiogÚ#Ì4úo(   g      €pgw^ùUšÌq(   g•r�ù¢(qgÆs³¤d•q(   gWn=¥þeirgÁŸ­ð¸¸ûr(   gGn=¥þeùtg™¹S%Ÿ!�u(   g�r�ù¢(vg¯¿NF�“—v(   g4n=¥þe©vg>óyI>w(   g     ðxg�Û«3¹ƒy(   g      {g÷kÎS1p”{(   gõÿÿÿÿÿo{gá¡I—|(   g      �|gßˆvÒú$}(   g>n=¥þe9gPöû›bÑgUUUUUUÕ?(   s9   slatec: dlngam: x is a negative integer (nerr=3, level=2)s9   slatec: dgamma: x is a negative integer (nerr=4, level=2)(   R#   Rk   Rl   R0   R(   RQ   R"   R   R)   R*   t   getattrR8   R9   RI   RG   (
   Rœ  Rm   R°   R4   R3   R�  t   cmath_lgamma_max_xRK   R_   R  (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_slatec_dlngamô  s`   	  
     	
 
+
	 	 	 c       7   C   sc  t  j j }  y |  d ƒ Wn+ t k
 rG } t | ƒ d k sN t ‚ n Xt ‚ t |  dm ƒ d ƒ si t ‚ t |  d ƒ d ƒ s„ t ‚ t |  d ƒ d ƒ sŸ t ‚ t |  d	 ƒ d
 ƒ sº t ‚ t |  d ƒ d ƒ sÕ t ‚ t |  d ƒ d ƒ sð t ‚ t |  d ƒ d ƒ st ‚ t  j j	 }  y |  d d d d ƒ Wn+ t k
 r[} t | ƒ d k sbt ‚ n Xt ‚ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d" d! d  d d$ d% d& d' d' d& d% d$ d d d( d) d* d+ d* d) d( d d g7 } d } xg t
 d d, ƒ D]V } xM t
 d | d ƒ D]8 } t |  d | d | ƒ | | ƒ skt ‚ | d 7} q=Wq#Wt |  d- d ƒ d. ƒ s›t ‚ t |  d- d/ ƒ d0 ƒ s¹t ‚ t |  d1 d- ƒ d2 ƒ s×t ‚ t |  d1 d3 ƒ d4 ƒ sõt ‚ dn do dp dq dr ds dt du dv dw dx dy dz d{ d| d} d~ d d€ d� d‚ dƒ d„ d… d† d‡ dˆ d‰ dŠ d‹ g } d d& d" d$ d! d d# d d d  dV dW dX dY dZ d[ d\ d] d^ d_ d` da db dc dd de df dg dh di g } x8 t | | ƒ D]' \ } } t |  | Œ  | ƒ sÅt ‚ qÅWt |  d d� d dŽ ƒ dk ƒ st ‚ y |  d d� d d‘ ƒ Wn+ t k
 rX} t | ƒ dl k s_t ‚ n Xt ‚ d  S(’   Niÿÿÿÿs,   slatec: dlnrel: x is le -1 (nerr=2, level=2)g»½×Ùß|Û=gCL?)ž7ÀgV-²�ï×?gÝ> UÔ?gªñÒMbØ?g,ŸmumÔ?gš™™™™™Ù¿g¦�ú®Xà¿i    g        g333333Ó?gN—á{“ÊÐ?gš™™™™™Ù?g”%ÙÂˆÕ?RK  R  i   s(   slatec: dbinom: n lt m (nerr=2, level=2)i   i   i   i   i   i
   i   i   i   i   i#   i   i   i8   iF   i	   i$   iT   i~   i-   ix   iÒ   iü   i   id   g Àˆ²½|¯Bi!   g.:O�qxnEiè  gò†�nrõ\iM  gÝ^ öw±úxi]   i@   i9   iL   iB   i7   i   iZ   iU   iN   iR   i   ic   iG   i½  i  i€  i™  i�  iý   iC  iJ   i�  i‹  i4  iE  i~  i"  i¹  i  i©  i·  iÕ  gKMPiDg   à€ƒÂAg  e@ÇÇkBg nZz|Cg     Þ¢@g    æô„Ag    ùÃ5Ag@éÖˆZ»Cg   Ûz²ÐAg    `ÕhAgv�h‹K\&{g·×ùûºmgÏ¸JËº¼pg�ÕÙèïRžSg    pü	AgõßSžŽ/=lgv9Ì$‰BggËZt3>(ìagÿljØÿ”áog1¥bUD¿úUi    gÖ×½Ò4”xsM   slatec: dbinom: result overflows because n and/or m too big (nerr=3, level=2)g�Aòÿÿÿï¿(   i   i   (   i	   i   (   i   i   (   i	   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i]   iF   (   i@   i9   (   iL   iB   (   i7   i   (   iF   i   (   iZ   iU   (   iN   i   (   iR   i   (   ic   i   (   iG   i   (   i½  i  (   i€  i™  (   i�  iý   (   iC  iJ   (   i�  i‹  (   i4  iE  (   i~  i"  (   i¹  i  (   i©  i·  (   iÕ  iN   l        l   ÿÿ i    l        l   ÿÿ i@   (   R8   R9   t   slatec_dlnrelRk   Rl   R0   R(   R)   R*   t   slatec_dbinomRQ   Rx   (   R`   Rm   t   expectedR°   RK  R  t   nmst   nm(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_slatec_dbinom£  sj     	 <96(	$ 	c         C   sÄ  t  j j } | d d ƒ } | j ƒ  s- t ‚ | d d ƒ } | j ƒ  sO t ‚ d } xD | j ƒ  s› t j | j ƒ  d ƒ j ƒ  d k sŽ t ‚ | d 7} qX W| d k s® t ‚ | d d ƒ j	 ƒ  d k sÏ t ‚ | d d ƒ j	 ƒ  d k sð t ‚ | d d ƒ j	 ƒ  d k st ‚ | d d ƒ j	 ƒ  d k s2t ‚ t
 t | d d ƒ j ƒ  ƒ ƒ d k s_t ‚ x^ t	 ƒ  D]S } t ƒ  } | d | ƒ j	 ƒ  } d	 | | | j ƒ  f GH| d
 k ri|  riPqiqiWd  S(   NRv   i    i   i   i˜  i   ix i8Ç	 s*   unimodular range %d: count=%d, time=%.2f si   (   i   i   (   R8   R9   t   unimodular_generatorRº   R0   R&   R  R¼   RÑ   R,   R�  R»   R+  R'   t   elapsed(   t   forevert   ugR\  RK  Rv   t   timer(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_unimodular_generatorÛ  s,    *!!!!-	c       	      s  g  d d d d d d g D] }  t  j |  ƒ ^ q ‰  ‡  f d †  } t j ˆ  ƒ } t j j | ƒ } t  j | j ƒ } | j } t	 t
 | ƒ d ƒ sš t ‚ | | | ƒ } xg t d ƒ D]Y } | t j d d ƒ } t  j t j ƒ  d ƒ | }	 | |	 | ƒ }
 |
 | k s¶ t ‚ q¶ Wd  S(   Ni   i   i   iÿÿÿÿiþÿÿÿiýÿÿÿg333333ó?gÍÌÌÌÌÌ @g333333@gÍÌÌÌÌÌì¿gÍÌÌÌÌÌ ÀgÍÌÌÌÌÌÀgš™™™™™ñ?gš™™™™™é?c            s.   t  g  ˆ  D] } |  j | ƒ | d ^ q
 ƒ S(   Ni   (   R…  RÖ   (   RK  RZ   R4   (   R?   (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   distance÷  s    iˆ  gš™™™™™¹¿gš™™™™™¹?(   i   i   i   (   iÿÿÿÿiþÿÿÿiýÿÿÿ(   i   i   i   (   g333333ó?gÍÌÌÌÌÌ @g333333@(   gÍÌÌÌÌÌì¿gÍÌÌÌÌÌ ÀgÍÌÌÌÌÌÀ(   gš™™™™™ñ?gš™™™™™é?g333333ó?(   i   i   (   R&   RB   R%   RH   R8   R9   t   least_squares_planet   normalt   distance_to_originR)   RO   R0   RQ   RÈ   RÕ   R  RV   (   R4   R®  t   flex_pointst   pRK  RZ   t   dist0R°   t   d1t   n1t   dist(    (   R?   sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_least_squares_planeó  s    "	c          C   s\  t  j j }  t j j } |  d ƒ } | j ƒ  | d d ƒ k sE t ‚ | j d ƒ | j ƒ  | d d ƒ k ss t ‚ | j d ƒ | j ƒ  | d d ƒ k s¡ t ‚ | j d ƒ | j ƒ  | d d ƒ k sÏ t ‚ |  j	 t j
 d d ƒ} | j ƒ  | d d ƒ k st ‚ |  j	 t j
 d d	 ƒ} | j ƒ  | d
 d ƒ k sAt ‚ |  j	 t j
 d d ƒ} | j ƒ  | d d ƒ k szt ‚ |  j	 t j
 d d ƒ} | j ƒ  | d d ƒ k s´t ‚ |  j	 t j
 d d	 ƒ} | j ƒ  | d d ƒ k sît ‚ |  j	 t j
 d d ƒ} | j ƒ  | d d ƒ k s(t ‚ |  j	 d ƒ } | j ƒ  | d d ƒ k sXt ‚ d  S(   Ni   i   i   i   RN   g{®Gáz„?i   i   g-Cëâ6?iM  ij   gñhãˆµøä>ic  iq   iêÿÿÿi³þÿÿi�þÿÿg      À?i   (   R8   R9   t   continued_fractiont   boostt   rationalR  t   as_rationalR0   R²   t	   from_realR  (   R¹  t   fract   cf(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_continued_fraction  s0    !!!!!!!!!!c          C   s™   t  j j }  d GHd G|  j GHd G|  j GHd G|  j GHd G|  j GHd G|  j GHd G|  j GHd G|  j	 GHd	 G|  j
 GHd
 G|  j GHd G|  j GHd G|  j GHd  S(   Ns   Floating point type 'double':s   	radix: s   	mantissa digits (base 2):s   	mantissa digits (base 10):s   	min exponent (base 2):s   	min exponent (base 10):s   	max exponent (base 2):s   	max exponent (base 10):s   	min:s   	max:s	   	epsilon:s
   	safe min:(   R8   R9   t   double_numeric_limitst   radixt   digitst   digits10t   min_exponentt   min_exponent10t   max_exponentt   max_exponent10Rð   RO  R%  t   safe_min(   t   l(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_numeric_limits  s    c          C   sÙ  t  j ƒ  }  |  j ƒ  d k s$ t ‚ |  j ƒ  d k s< t ‚ |  j ƒ  d k sT t ‚ |  j ƒ  d k sl t ‚ |  j ƒ  t j	 |  j ƒ  d ƒ k s– t ‚ |  j
 ƒ  d k s® t ‚ |  j ƒ  d k sÆ t ‚ t |  j d ƒ d ƒ sä t ‚ t |  j |  j d ƒ ƒ d ƒ st ‚ t |  j d ƒ d ƒ s)t ‚ t  j d d ƒ }  |  j ƒ  d k sSt ‚ |  j ƒ  d k skt ‚ y t  j d ƒ } Wn t k
 rœ} d G| GHn9X| j ƒ  d k sµt ‚ | j ƒ  d k sÍt ‚ | j ƒ  d k såt ‚ | j ƒ  d k sýt ‚ t t j	 | j ƒ  d ƒ d ƒ s$t ‚ t | j ƒ  d ƒ s?t ‚ t | j
 ƒ  d ƒ sZt ‚ | j ƒ  d k srt ‚ t |  j d ƒ d ƒ s�t ‚ t |  j |  j d ƒ ƒ d ƒ s·t ‚ t | j d ƒ d ƒ sÕt ‚ d  S(   Ni    i   i   i   g333333ó?gÿ¾±ÛÈ?gÍÌÌÌÌÌì?i   g3mâ6<�ô¿güÅ‚•ãÇà¿g        gúÅ‚•ãÇà?g3mâ6<�ô?i   i
   s*   Skipping exercise students_t_distribution:g      ô?g      @gš™™™™™Ù?g>a”ÅÇï°?gš™™™™™é?gW®HÝ÷¿gÝ•CÜdæ¿g)Õž²¾¥Ë¿g/Õž²¾¥Ë?gÝ•CÜdæ?gX®HÝ÷?(   g3mâ6<�ô¿güÅ‚•ãÇà¿g        gúÅ‚•ãÇà?g3mâ6<�ô?(   gW®HÝ÷¿gÝ•CÜdæ¿g)Õž²¾¥Ë¿g/Õž²¾¥Ë?gÝ•CÜdæ?gX®HÝ÷?(   R$   t   normal_distributionR  R0   R•  t   modet   standard_deviationt   varianceR9   t   powRŒ  t   skewnessR)   t   pdft   cdft   quantilet	   quantilest   students_t_distributionRk   t   degrees_of_freedom(   t   normt   stuRm   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_distributions.  sD    *' $' c          C   s~   d d l  m }  d d l  m } | |  j d |  j d d d ƒsJ t ‚ | d d d	 ƒ sb t ‚ | d d d ƒ sz t ‚ d  S(   Niÿÿÿÿ(   RÁ  (   t   approx_equal_relativelyi   t   relative_errori   g§èH.ÿï?g      ð?g-Cëâ6?gZõ¹ÚŠýï?y        -Cëâ6:?gü©ñÒMb@?yZõ¹ÚŠýï?-Cëâ6:?(   R/   RÁ  RÛ  Rð   R0   (   t   limitsRÛ  (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_approx_equalU  s    c          C   sÌ  d d l  m }  |  d t j d ƒ d
 t j d ƒ d t j d  ƒ ƒ } d } t | j d | ƒ sg t ‚ t | j d | ƒ s‚ t ‚ t | j d | ƒ s� t ‚ t | j	 d | ƒ s¸ t ‚ t | j
 d | ƒ sÓ t ‚ t | j d | ƒ sî t ‚ | j d d d
 d d d ƒ | j d d d
 d d d ƒ t | j d | ƒ sAt ‚ t | j d | ƒ s\t ‚ t | j d | ƒ swt ‚ t | j	 d | ƒ s’t ‚ t | j
 d | ƒ s­t ‚ t | j d | ƒ sÈt ‚ d  S(!   Niÿÿÿÿ(   t   weighted_covarianceR4   i   i   g-Cëâ6?i   i   i   R3   i   i   i
   R¾   g¬CÒÑ]r2<g„—Áckt@g|´ƒ=dt@g\C¾ö^@g“�²_+@geÝ_@g‘<ûÿÿÿï?t   weightiýÿÿÿgî�SÍmû?gž< @g›pvªX@gÒ³¿Z[-@gqÉKÚ+’@gÕ1ÜV[ëé?(   i   i   g-Cëâ6?i   i   i   (   i   i   g-Cëâ6?i   i   i
   (   i   i   i   i   i   i   (   R/   Rß  R%   Ru   R)   t   mean_xR0   t   mean_yt
   variance_xt
   variance_yt   covariance_xyt   correlationt
   accumulate(   Rß  R˜  RN   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_weighted_covariance`  s&    c          C   sÝ   d d l  m }  d } d } d } d } |  | | | | d ƒ } t | d d d d d ƒsc t ‚ t | d d d d d ƒs† t ‚ d  } d! } d" } d# } |  | | | | d ƒ } t | d d d d d ƒsÙ t ‚ d  S($   Niÿÿÿÿ(   t   interpolate_catmull_rom_splineg33333s@g�—nƒ˜J@g      ð¿gq=
×£p@gî|?5^K@g²�ï§ÆKã?g�Âõ(\�@g¬Zd;¯K@g¢E¶óýÔä?g�•C‹lç@gj¼t“L@gé&1¬î¿i   i   i    gušž@RN   g-Cëâ6?i   i   g      à?g9´Èv¾Ÿæ?g      à¿g9´Èv¾Ÿæ¿gu“VÝ?(   g33333s@g�—nƒ˜J@g      ð¿(   gq=
×£p@gî|?5^K@g²�ï§ÆKã?(   g�Âõ(\�@g¬Zd;¯K@g¢E¶óýÔä?(   g�•C‹lç@gj¼t“L@gé&1¬î¿(   i    i   (   g      à?g9´Èv¾Ÿæ?(   i   i    (   g      à¿g9´Èv¾Ÿæ¿(   R/   Ré  R)   R0   (   Ré  t   p0t   p1t   p2t   p3R?   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_interpolationv  s    ##c          C   s2  d d l  m }  t j d d d g ƒ } t j d d d g ƒ } |  | | ƒ } x0 t d ƒ D]" } | | | f d k s\ t ‚ q\ Wt | d d ƒ s› t ‚ t | d d ƒ s´ t ‚ t | d d ƒ sÍ t ‚ y d d  l } Wn t k
 rð n> X| j	 ƒ  } | d d d k r(t | d d d ƒ s.t ‚ d  S(   Niÿÿÿÿ(   t   distance_difference_matrixg        g      ð?g       @g      @g      @g      @g      @g      @g       @i   i    i   gL
âòV@i   g‘+Pæz¶@(   g        g        g        (   g        g      ð?g       @(   g      @g      @g      @(   g      ð?g      ð?g      ð?(   g      ð?g       @g      @(   g      @g      @g       @(   i    i   (   i   i   (   i    i   (
   R/   Rï  R%   RH   Rv   R0   R)   t   numpyt   ImportErrort   as_numpy_array(   Rï  t   sites1t   sites2t   ddmR°   Rð  Ri   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_misc†  s     c       
   C   sN  t  j j }  d d d g } d d d g } t |  d | d | d d d d  ƒ ƒ } t | d d d g ƒ so t ‚ t |  d | d | d d d d  ƒ ƒ } t | d d d d d g ƒ sº t ‚ t |  d | d | d d  d d ƒ ƒ } t | d d d g ƒ sÿ t ‚ t |  d | d | d d  d d ƒ ƒ } t | d d d d  d! g ƒ sJt ‚ d  S("   Ni   i   i   i   t   startt   endRK  t   stepg      ð?g       @g      @g      @g       @g      @g      @g      @g      ô?(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g       @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g       @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g       @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g      ð?g       @g       @(   R8   R9   t   equally_spaced_points_on_vectorR»   RI   R)   R0   (   t   espovR÷  Rø  R2   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt(   exercise_equally_spaced_points_on_vector˜  s    ''''c       	   C   s›   t  j d ƒ }  t  j d ƒ } xv t |  | ƒ D]e \ } } d } t j d d d d d d d g ƒ } | | } | | } d	 | | t | | ƒ f GHq. Wd  S(
   Nid   i   i    g�íµ ÷Æ°>gü©ñÒMbP?gš™™™™™¹?g     @�@g    €„.As   Dv(%.6g,%.6g)=%.6g(   R%   RU   Rx   RÈ   t   choiceR   (   t   vaR4   t   va_t   x_t   scale1t   scale2(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   exercise_parabolic_cylinder_d¨  s    $

c          C   s]  t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  t
 ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t  ƒ  t! ƒ  t" ƒ  t# ƒ  t$ ƒ  t% ƒ  d t& j' d k }  t( d |  o9d t& j' d k ƒ x t) ƒ  |  s@Pq@q@d GHd  S(   Ns	   --foreveri   Rª  s   --unimodularRž  (*   R  Rü  Rè  RÚ  RÞ  R›  RË  RÀ  R¸  R7   RA  R[  R€   R>   RD   Ra   Rc   Rg   Rn   Rq   Rh   Rt   R±   RÁ   RÃ   Rè   Rí   R  R  R#  Ra  R‚  R“  R­   R¡  R§  Rî  Rö  t   syst   argvR­  R}  (   Rª  (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   run²  s\     t   __main__(p   t
   __future__R    R/   R8   t   boost.rationalRº  R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   t   scitbx.array_familyR%   R&   t   libtbx.utilsR'   t   libtbx.test_utilsR(   R)   R*   t   libtbx.load_envt   libtbxt	   cStringIOR+   t	   itertoolsR,   RÈ   R9   t   timeR  t   envt
   has_moduleR-   RI   R7   R>   RD   Ra   Rc   Rg   Rh   Rn   Rq   Rt   R€   R‹   R“   R¬   R­   R¯   R±   R¹   RÁ   RÃ   Rè   Rí   R  R  R#  RA  R[  Ra  R}  R‚  R“  R›  R¡  R§  R­  R¸  RÀ  RË  RÚ  RÞ  Rè  Rî  Rö  Rü  R  R  t   __name__(    (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_math.pyt   <module>   s¨   "4	,			,		^						=							¡	cC		8	¢	V	�		]	&	¯	8					'						
	/