ó
<Zc           @   sÏ   d  Z  d d l Z d e f d „  ƒ  YZ d d l m Z d „  Z d „  Z d	 „  Z d
 „  Z	 d d „ Z
 d g d „ Z d d „ Z d d „ Z d d „ Z d d „ Z e d d „ ƒ Z e d d „ ƒ Z d S(   sI  
---------------------------------------------------------------------
.. sectionauthor:: Juan Arias de Reyna <arias@us.es>

This module implements zeta-related functions using the Riemann-Siegel
expansion: zeta_offline(s,k=0)

* coef(J, eps): Need in the computation of Rzeta(s,k)

* Rzeta_simul(s, der=0) computes Rzeta^(k)(s) and Rzeta^(k)(1-s) simultaneously
  for  0 <= k <= der. Used by zeta_offline and z_offline

* Rzeta_set(s, derivatives) computes Rzeta^(k)(s) for given derivatives, used by
  z_half(t,k) and zeta_half

* z_offline(w,k): Z(w) and its derivatives of order k <= 4
* z_half(t,k): Z(t) (Riemann Siegel function) and its derivatives of order k <= 4
* zeta_offline(s): zeta(s) and its derivatives of order k<= 4
* zeta_half(1/2+it,k):  zeta(s)  and its derivatives of order k<= 4

* rs_zeta(s,k=0) Computes zeta^(k)(s)   Unifies zeta_half and zeta_offline
* rs_z(w,k=0)    Computes Z^(k)(w)      Unifies z_offline and z_half
----------------------------------------------------------------------

This program uses Riemann-Siegel expansion even to compute
zeta(s) on points s = sigma + i t  with sigma arbitrary not
necessarily equal to 1/2.

It is founded on a new deduction of the formula, with rigorous
and sharp bounds for the  terms and rest of this expansion.

More information on the papers:

 J. Arias de Reyna, High Precision Computation of Riemann's
 Zeta Function by the Riemann-Siegel Formula I, II

 We refer to them as I, II.

 In them we shall find detailed explanation of all the
 procedure.

The program uses Riemann-Siegel expansion.
This  is useful when t is big, ( say  t > 10000 ).
The precision is limited, roughly it can compute zeta(sigma+it)
with an error less than exp(-c t) for some constant c depending
on sigma.  The program gives an error when the Riemann-Siegel
formula can not compute to the wanted precision.

iÿÿÿÿNt   RSCachec           B   s   e  Z d  „  Z RS(   c         C   s   d d i  i  g |  _  d  S(   Ni    i
   (   t	   _rs_cache(   t   ctx(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   __init__6   s    (   t   __name__t
   __module__R   (    (    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyR    5   s   i   (   t   defunc         C   s|  | d } | d } t  |  j d | d ƒ d | d |  j | ƒ ƒ } |  j d | ƒ } t  |  j d | ƒ |  j | ƒ d | ƒ } | |  _ i  } |  j | d <|  j | d	 <x8 t d d | d	 ƒ D] }	 | |	 d	 |  j | |	 <qÊ W| d |  _ i  }
 i  } xl t d | d	 ƒ D]W }	 d
 |	 |  j d |	 ƒ } |  j | ƒ |  j d |	 ƒ } | | d |	 |
 |	 <qWxU t d d | d	 ƒ D]< }	 |  j |  j |	 ƒ } | d |	 } | | |	 | |	 <qWd |  _ d |  j | ƒ } i  } xÀ t d | d	 ƒ D]« }	 d |  _ t  |  j d |	 d ƒ d |	 | ƒ } | |  _ d } xE t d |	 d	 ƒ D]0 } | d
 | |
 | | d |	 d | 7} q]Wd
 |	 d	 |  j	 | | |	 <qWi  } x¬ t d | d	 ƒ D]— }	 d |  _ t  |  j d |	 d ƒ d |	 | ƒ } | |  _ d } xD t d |	 d	 ƒ D]/ } | |  j	 |	 | |
 | | |	 | 7} q&W| | |	 <qÌWd |  _ d |  j | ƒ } t  d d | | ƒ } | |  _ |  j
 |  j d ƒ ƒ d } |  j d d ƒ d } i  } xb t d | ƒ D]Q }	 d |  _ t  d d |	 | ƒ } | |  _ | | |	 | | |	 | d |	 <qìWx( t d	 d | d ƒ D] }	 d | |	 <qXW| | | | g S(   sì  
    Computes the coefficients  `c_n`  for `0\le n\le 2J` with error less than eps

    **Definition**

    The coefficients c_n are defined by

    .. math ::

        \begin{equation}
        F(z)=\frac{e^{\pi i
        \bigl(\frac{z^2}{2}+\frac38\bigr)}-i\sqrt{2}\cos\frac{\pi}{2}z}{2\cos\pi
        z}=\sum_{n=0}^\infty c_{2n} z^{2n}
        \end{equation}

    they are computed applying the relation

    .. math ::

        \begin{multline}
        c_{2n}=-\frac{i}{\sqrt{2}}\Bigl(\frac{\pi}{2}\Bigr)^{2n}
        \sum_{k=0}^n\frac{(-1)^k}{(2k)!}
        2^{2n-2k}\frac{(-1)^{n-k}E_{2n-2k}}{(2n-2k)!}+\\
        +e^{3\pi i/8}\sum_{j=0}^n(-1)^j\frac{
        E_{2j}}{(2j)!}\frac{i^{n-j}\pi^{n+j}}{(n-j)!2^{n-j+1}}.
        \end{multline}
    i   g       @i
   i   i   i   i(   i    i   iÿÿÿÿi   i	   i   t   2g      @i   (   t   maxt   magt	   _eulernumt   prect   onet   pit   ranget   mpft   fact   jt   sqrtt   expjpi(   R   t   Jt   epst   newJt   neweps6t   wpvwt   Et   wppit   pipowert   nt   vt   wt   vat   wat   wpp1at   P1t   wpp1t   sumpt   kt   P2t   wpp2t   wpc0t   wpct   mut   nut   c(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   _coefN   sr    

5-	 		(	.!	(	-				&c            sø   ˆ  j  } | | d k r; | | d k r; | d | d f Sˆ  j j } z t ˆ  j | | ƒ } Wd  | ˆ  j _ Xˆ  ˆ  j k	 rÖ t ‡  f d †  | d j ƒ  Dƒ ƒ | d <t ‡  f d †  | d j ƒ  Dƒ ƒ | d <n  | ˆ  j  (ˆ  j  d ˆ  j  d f S(   Ni    i   i   i   c         3   s*   |  ]  \ } } | ˆ  j  | ƒ f Vq d  S(   N(   t   convert(   t   .0R%   R   (   R   (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pys	   <genexpr>Î   s    c         3   s*   |  ]  \ } } | ˆ  j  | ƒ f Vq d  S(   N(   R.   (   R/   R%   R   (   R   (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pys	   <genexpr>Ï   s    (   R   t   _mpR   R-   t   dictt   items(   R   R   R   t   _cachet   origt   data(    (   R   s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   coefÄ   s    	 *-
c         C   s4  d | | } |  j  | ƒ } d |  j  |  j ƒ |  j  | ƒ |  j  | ƒ d |  j  d |  j ƒ d } d | d } |  j | d ƒ |  j | d d ƒ d |  j | d d ƒ }	 xo | | | |	 k  r)| d k r)| d } |  j | d ƒ |  j | d d ƒ d |  j | d d ƒ }	 q» W| }
 |
 S(   Ngb—òk5„_@i   i   i   g      @g       @(   t   lnR   t   loggamma(   R   t   xAt   xeps4t   at   xB1t   xLt   aux1t   aux2t   mt   aux3t   xM(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   aux_M_Fpß   s    LA#
Ec   	      C   sY   | d | } | | d } | |  j  | | d | d d ƒ | } t | | ƒ } | S(   Nix  gJ¤R”_@i   i   i   (   t   powert   min(	   R   R9   R:   R;   R<   RB   t   h1t   h2t   h3(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   aux_J_neededí   s
    *i    c   ˆ   
      sr"  ˆ  j  } ˆ  j | ƒ } ˆ  j | ƒ } d | } d ˆ  _  ˆ  j | d ˆ  j ƒ } | | } | | }	 ˆ  j d ˆ  j | ƒ d ƒ }
 ˆ  j d ˆ  j |	 ƒ d ƒ } ˆ  j d | ƒ } | d } | |
 d } | | d } d ˆ  _  | d k r+d } t j d | ƒ d	 } t j d | ƒ } d } n6 d
 } t j d | ƒ d	 } t j d | ƒ } d } | d k r¤d } t j d | ƒ d	 } t j d | ƒ } d } n6 d
 } t j d | ƒ d	 } t j d | ƒ } d } d ˆ  _  d } xD d | ˆ  j	 | d ƒ ˆ  j | | | ƒ | k r/| d } qìWt
 d | ƒ } d } xD d | ˆ  j	 | d ƒ ˆ  j | | | ƒ | k r‹| d } qHWt
 d | ƒ } d | d | | d k s/d | d | d k  s/t | ƒ | d k s/d | d | | d k s/d | d | d k  s/t | ƒ | d k rG| ˆ  _  t d ƒ ‚ n  t
 | | ƒ } | d | } | d | } | d | } | d | } t ˆ  | | | | | ƒ } t ˆ  | | | | | ƒ }  t
 | |  ƒ }! t ˆ  | | | | | ƒ }" t ˆ  | | | | |  ƒ }# t |" |# ƒ }" d }$ d ˆ  j |$ ˆ  j	 |$ d ƒ }% x/ |% |" k rq|$ d }$ d ˆ  j |% |$ }% qCWi  }& t j t j | | }' t j t j | | }( x´ t d d ƒ D]£ }) t j |' |) d ƒ d | }* t j |( |) d ƒ d | }+ t |* |+ ƒ }, ˆ  j	 |) d ƒ ˆ  j	 |) d d ƒ }- t j |- ƒ }- |, |- t | | ƒ |& |) <q¸Wt d | d d ƒ d }. d |$ }/ ˆ  j d |$ ƒ }0 xH t d |. ƒ D]7 }) t
 |0 ˆ  j |/ ˆ  j	 |) d ƒ |& |) ƒ ƒ }0 q§W|0 ˆ  j | ƒ d ˆ  _  ˆ  j | d ˆ  j ƒ } ˆ  j | ƒ }1 d d | |1 }2 ˆ  j |2 ˆ  j d ƒ |0 ƒ }3 |2 ˆ  j d ƒ |0 |3 }4 |4 d k  r‡|3 }3 n
 |3 d }3 ˆ  j |3 ˆ  j d ƒ |0 ƒ }2 ˆ  j ˆ  j d ˆ  j ƒ |$ ƒ ˆ  j	 |$ d ƒ d |$ }5 i  }6 i  }7 t ˆ  |$ |5 ƒ \ }7 }8 |7 j ƒ  }6 i  }9 x) t |! d | d ƒ D] }: d |9 |: <q;Wi  }9 |0 ˆ  _  x¦ t d |! d ƒ D]‘ }) d }; x8 t d |$ |) d d d ƒ D] }< |; |2 |6 |< }; qW|; |9 |) <x= t d d |$ |) d ƒ D]  }< |< d |6 |< d |6 |< <qßWqrWi  }= t
 d ˆ  j d | | ƒ ƒ }> d ˆ  j d t | ƒ | ƒ ˆ  j | ƒ d }? ˆ  j d ˆ  j ˆ  j | | | | ƒ d }@ xd t d | ƒ D]S }: ˆ  j ˆ  j ˆ  j	 |: d ƒ ƒ ƒ ˆ  j |: |@ ƒ |? }A t
 |A |> ƒ |= |: <q W|= d d ˆ  _  d d | }B i  }C d |C d( <d |C d) <d |C d* <d |C d+ <d |C d, <d |C d- <d |C d. <d |C d/ <xât d | ƒ D]Ñ}: |= |: d ˆ  _  xrt d d |: d d ƒ D]U}< d |: d |< }) |) d k rh
ˆ  j |) }D |D d }E |B |D d }F |) d }G |G |C d |: d |< d f |E |C d |: d |< f |F |C d |: d |< d f |C d |: |< f <q¯	d |C d |: |< f <x† t d |< ƒ D]u }H |C d |: |H f ˆ  j d  ƒ ˆ  j d |< d |H ƒ ˆ  j |< |H ƒ }I |C d |: |< f c d |< |H |I 8<q‹
Wq¯	Wd |C d |: d f <d |C d |: d f <d |C d |: d |: d d f <q|	Wx² t d | d ƒ D] }J x” t d | ƒ D]ƒ }: xz t d! t
 d d |: d d ƒ ƒ D]T }< |J d k  sä|: d k  sä|< d k  sä|< d |: d k r¦d |C |J |: |< f <q¦q¦Wq{WqeWxô t d | d ƒ D]ß }J xÖ t d | ƒ D]Å }: |= |: d ˆ  _  x« t d d |: d d ƒ D]Ž }< d |J d |C |J d |: d |< d f d | |: d |C |J d |: d |< d f }/ |/ |C |J d |: d |< d f |C |J |: |< f <qcWq0WqWi  }K t
 d ˆ  j d | | ƒ ƒ }> d ˆ  j d t | ƒ | ƒ ˆ  j | ƒ d }L ˆ  j d ˆ  j ˆ  j | | | | ƒ d }M xd t d | ƒ D]S }: ˆ  j ˆ  j ˆ  j	 |: d ƒ ƒ ƒ ˆ  j |: |M ƒ |L }N t
 |N |> ƒ |K |: <q–W|K d d ˆ  _  d d | }O i  }P d |P d0 <d |P d1 <d |P d2 <d |P d3 <d |P d4 <d |P d5 <d |P d6 <d |P d7 <xât d | ƒ D]Ñ}: |K |: d ˆ  _  xrt d d |: d d ƒ D]U}< d |: d |< }) |) d k r^ˆ  j |) }D |D d }E |O |D d }F |) d }G |G |P d |: d |< d f |E |P d |: d |< f |F |P d |: d |< d f |P d |: |< f <q¥d |P d |: |< f <x† t d |< ƒ D]u }H |P d |: |H f ˆ  j d  ƒ ˆ  j d |< d |H ƒ ˆ  j |< |H ƒ }I |P d |: |< f c d |< |H |I 8<qWq¥Wd |P d |: d f <d |P d |: d f <d |P d |: d |: d d f <qrWx² t d | d ƒ D] }J x” t d | ƒ D]ƒ }: xz t d! t
 d d |: d d ƒ ƒ D]T }< |J d k  sÚ|: d k  sÚ|< d k  sÚ|< d |: d k rœd |P |J |: |< f <qœqœWqqWq[Wxô t d | d ƒ D]ß }J xÖ t d | ƒ D]Å }: |K |: d ˆ  _  x« t d d |: d d ƒ D]Ž }< d |J d |P |J d |: d |< d f d | |: d |P |J d |: d |< d f }/ |/ |P |J d |: d |< d f |P |J |: |< f <qYWq&WqWi  }Q i  }R d ˆ  _  ˆ  j d | d ƒ }E ˆ  j d" | d | ƒ }S ˆ  j | | t j ˆ  j ƒ ƒ d }T x° t d | ƒ D]Ÿ }< |S |< |T ˆ  j ˆ  j |< d ƒ ƒ d }U t
 |E |U ˆ  j | ƒ d ƒ d d d# |Q |< <t
 |E ˆ  j | d ƒ |U ˆ  j | ƒ d ƒ d d |R |< <qqWi  }V i  }W d ˆ  _  ˆ  j d | d ƒ }E ˆ  j d" | d | ƒ }X ˆ  j | | t j ˆ  j ƒ ƒ d }Y x¬ t d | ƒ D]› }< |X |< |Y ˆ  j ˆ  j |< d ƒ ƒ d }Z t
 |E |Z ˆ  j | ƒ d ƒ d d# |V |< <t
 |E ˆ  j | d ƒ |Z ˆ  j | ƒ d ƒ d d |W |< <q’Wi  }[ xn t d | d ƒ D]Y }J xP t d | ƒ D]? }< x6 t d d |< d d ƒ D] }\ d |[ |J |< |\ f <qƒWqaWqKWxÛ t d | d ƒ D]Æ }J x½ t d | ƒ D]¬ }< |Q |< ˆ  _  x– t d d |< d d ƒ D]y }\ |C |J |< |\ f |9 d |< d |\ |8 d |< |\ |[ |J |< |\ f <|[ |J |< |\ f d ˆ  j |\ |[ |J |< |\ f <qWqÒWq¼W‡  f d$ †  }] i  }^ xn t d | d ƒ D]Y }J xP t d | ƒ D]? }< x6 t d d |< d d ƒ D] }\ d |^ |J |< |\ f <qçWqÅWq¯Wt
 |Q d |V d ƒ d ˆ  _  |] | ƒ }_ ˆ  j |_ ƒ }` xé t d | d ƒ D]Ô }a xË t d | ƒ D]º }< |Q |< ˆ  _  x¤ t d d |< d d ƒ D]‡ }\ d |^ |a |< |\ f <xk t d |a d ƒ D]V }J ˆ  j |a |J ƒ ˆ  j |` |J ƒ |[ |a |J |< |\ f }b |^ |a |< |\ f c |b 7<qÌWqŸWqpWqZWi  }c xn t d | d ƒ D]Y }J xP t d | ƒ D]? }< x6 t d d |< d d ƒ D] }\ d |c |J |< |\ f <q„WqbWqLWxÛ t d | d ƒ D]Æ }J x½ t d | ƒ D]¬ }< |V |< ˆ  _  x– t d d |< d d ƒ D]y }\ |P |J |< |\ f |9 d |< d |\ |8 d |< |\ |c |J |< |\ f <|c |J |< |\ f d ˆ  j |\ |c |J |< |\ f <qWqÓWq½Wi  }d xn t d | d ƒ D]Y }a xP t d | ƒ D]? }< x6 t d d |< d d ƒ D] }\ d |d |a |< |\ f <qÙWq·Wq¡Wxé t d | d ƒ D]Ô }a xË t d | ƒ D]º }< |V |< ˆ  _  x¤ t d d |< d d ƒ D]‡ }\ d |d |a |< |\ f <xk t d |a d ƒ D]V }J ˆ  j |a |J ƒ ˆ  j |` |J ƒ |c |a |J |< |\ f }b |d |a |< |\ f c |b 7<q„WqWWq(WqWt
 |Q d |V d ƒ d ˆ  _  i  }e d |e d <|e d | |e d <t
 |Q d |V d ƒ ˆ  _  x1 t d | ƒ D]  }< |e |< d |e d |e |< <qTWi  }f x t d | d ƒ D]{ }a xr t d | ƒ D]a }< |Q |< ˆ  _  xK t d d |< d d ƒ D]. }\ |^ |a |< |\ f |e |< |f |a |< |\ f <q×Wq¨Wq’Wi  }g x t d | d ƒ D]{ }a xr t d | ƒ D]a }< |V |< ˆ  _  xK t d d |< d d ƒ D]. }\ |d |a |< |\ f |e |< |g |a |< |\ f <qpWqAWq+Wi  }h x• t d | d ƒ D]€ }a xw t d | ƒ D]f }: |R |: ˆ  _  d }i x: t d d |: d d ƒ D] }< |i |f |a |: |< f 7}i qW|i |h |a |: f <qÚWqÄWi  }j x• t d | d ƒ D]€ }a xw t d | ƒ D]f }: |W |: ˆ  _  d }i x: t d d |: d d ƒ D] }< |i |g |a |: |< f 7}i q­W|i |j |a |: f <qxWqbWi  }k d ˆ  _  t j ˆ  j ƒ | | | }l d ˆ  _  ˆ  j d% | d d |l | ƒ }m t
 |m ˆ  j d | d ƒ ƒ }m |m ˆ  _  xa t d | d ƒ D]L }a d |k |a <x9 t d | d ƒ D]$ }< |k |a c |h |a | |< f 7<q Wq|Wi  }n d ˆ  _  t j ˆ  j ƒ | | | }o d ˆ  _  ˆ  j d% | d d |o | ƒ }p t
 |p ˆ  j d | d ƒ ƒ }p |p ˆ  _  xa t d | d ƒ D]L }a d |n |a <x9 t d | d ƒ D]$ }< |n |a c |j |a | |< f 7<q†WqbWd ˆ  _  d t
 ˆ  j t |k d ƒ ƒ ˆ  j t |n d ƒ ƒ ƒ }q | d |q }r | ˆ  j | d ˆ  j ƒ }s d& ˆ  j d d |r ˆ  j | | ƒ |s ƒ }t d& ˆ  j d d |r ˆ  j | | ƒ |s ƒ }u t
 |t |u ƒ ˆ  _  | d ˆ  j }v | d ˆ  j |v ƒ | d ˆ  j d }w ˆ  j |w ƒ }x |] | ƒ } ˆ  j | | ƒ } ˆ  j | | ƒ }	 d |1 d | |x }y d |1 d |	 |x }z d ˆ  _  d ˆ  j |1 ˆ  j |1 d | ƒ ˆ  j |1 ƒ | ƒ }{ d ˆ  j |1 ˆ  j |1 d | ƒ ˆ  j |1 ƒ | ƒ }| t
 |{ || ƒ }} |} d ˆ  _  ˆ  j | d t |1 ƒ d t d | d ƒ t ƒ \ }~ } d ˆ  _  t |~ | ƒ }€ t |k | |y ƒ } t
 d | ˆ  j d d |€ d' | ƒ ƒ }‚ |‚ ˆ  _  i  }ƒ x5 t d | d ƒ D]  }a |~ |a |k |a |y |ƒ |a <q„!Wd ˆ  _  t | | ƒ }„ t |n | |z ƒ }… t
 d | ˆ  j d d |„ d' |… ƒ ƒ }† |† ˆ  _  i  }‡ xL t d | d ƒ D]7 }a | |a |n |a |z |‡ |a <ˆ  j |‡ |a ƒ |‡ |a <q$"W| ˆ  _  |ƒ |‡ f S(8   Ni   i   i   g      @g      @i    g       @i	   g½5°U‚Å@gŸ`<@gYÝê¹ñ?i   g      à?g      9@s2   Riemann-Siegel can not compute with such precisioni   i   i   g     Às@i   iœ  i,   i   R   iÿÿÿÿi   i(   i   i   i
   iþÿÿÿs   1.0iýÿÿÿiD   g      ø?c            s=   ˆ  j  } | d ˆ  _  ˆ  j |  d ˆ  j ƒ } | ˆ  _  | S(   Ni   (   R   R   R   (   t   tt   wpt   aa(   R   (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   trunc_a0  s
    		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    iÿÿÿÿi   (    R   t   _imt   _reR   R   RD   R	   t   matht   powt   gammaR   t   abst   NotImplementedErrorRC   RI   RE   R   t   floorR   R.   R6   t   copyR7   R   R   R   t   binomialt   expjt   _zetasumt   intt   Truet   conj(ˆ   R   t   st   dert	   wpinitialRJ   t   xsigmat   ysigmaR;   t   xasigmat   yasigmat   xA1t   yA1R   t   eps1t   xeps2t   yeps2t   xbt   xcR9   R<   t   ybt   yct   yAt   yB1R=   t   yLt   Lt   xeps3t   yeps3R:   t   yeps4RB   t   yMt   MRH   t   h4R   t   jvaluet   eps5t   xforeps5t   yforeps5R@   t   xaux1t   yaux1R>   R?   t   twentyt   auxt   wpfpt   Nt   pt   numt
   differencet   eps6t   cct   contt   pipowerst   FpR   t   sumPR%   t   xwpdt   d1t   xd2t   xconstt   xd3t   xpsigmat   xdt   m1t   c1t   c2t   c3t   rt   addR*   t   ywpdt   yd2t   yconstt   yd3t   ypsigmat   ydt   xwptcoeft   xwptermt   xc2t   xc4t   xc3t   ywptcoeft   ywptermt   yc2t   yc4t   yc3t	   xfortcoeft   ellRM   t   xtcoefRL   t   lat   chit   tcoeftert	   yfortcoeft   ytcoeft   avt   xtvt   ytvt   xtermt   tet   ytermt   xrssumt   xrsboundt   xwprssumt   yrssumt   yrsboundt   ywprssumt   A2t   eps8t   Tt   xwps3t   ywps3t   tpit   argt   Ut   xS3t   yS3t   xwpsumt   ywpsumt   wpsumt   xS1t   yS1t   xabsS1t   xabsS2t   xwpendt   xrzt   yabsS1t   yabsS2t   ywpendt   yrz(    (   R   s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   Rzeta_simulø   sÚ   	
	


				99JJ	"
(
5 	
!;	%
"" 21:
 
 
 

 
 
 
"
eJ-  #+8""X< 21:
 
 
 

 
 
 
"
eJ-  #+8""X<	',0A	',,A""D;""7)""D;""7)
"4"4""		# 	
&		# 	
&	900*	888	,		,		c   \   
      s¸  t  | ƒ } ˆ  j } ˆ  j | ƒ } ˆ  j | ƒ } d ˆ  _ ˆ  j | d ˆ  j ƒ } ˆ  j | | ƒ } ˆ  j d ˆ  j | ƒ d ƒ }	 ˆ  j d | ƒ }
 |
 d } |
 |	 d } d ˆ  _ | d k rþ d } t j	 d | ƒ d	 } t j	 d | ƒ } d } n6 d
 } t j	 d | ƒ d	 } t j	 d | ƒ } d } d ˆ  _ d } xD d | ˆ  j
 | d ƒ ˆ  j | | | ƒ | k r‰| d } qFWt  d | ƒ } d | d | | d k sãd | d | d k  sãt | ƒ | d k rû| ˆ  _ t d ƒ ‚ n  | d | } | d | } t ˆ  | | | | | ƒ } i  } x) t | d | d ƒ D] } d | | <qPW| d | } ˆ  j ˆ  j | | ˆ  j d ƒ t j t j } | ˆ  j | | d | d d ƒ | } t | | ƒ } d } d ˆ  j | ˆ  j
 | d ƒ } x/ | | k r7| d } d ˆ  j | | } q	Wi  } t j t j | | } x~ t d d ƒ D]m } t j	 | | d ƒ d | } ˆ  j
 | d ƒ ˆ  j
 | d d ƒ }  t j |  ƒ }  | |  | | | <qfWt d | d d ƒ d }! d | }" ˆ  j d | ƒ }# xH t d |! ƒ D]7 } t  |# ˆ  j |" ˆ  j
 | d ƒ | | ƒ ƒ }# qW|# ˆ  j | ƒ d ˆ  _ ˆ  j | d ˆ  j ƒ } ˆ  j | ƒ }$ d d | |$ }% ˆ  j |% ˆ  j d ƒ |# ƒ }& |% ˆ  j d ƒ |# |& }' |' d k  rÿ|& }& n
 |& d }& ˆ  j |& ˆ  j d ƒ |# ƒ }% ˆ  j d ˆ  j | ƒ ˆ  j
 | d ƒ d | }( i  }) i  }* t ˆ  | |( ƒ \ }* }+ |* j ƒ  }) i  } x) t | d | d ƒ D] } d | | <qªW|# ˆ  _ x¦ t d | d ƒ D]‘ } d }, x8 t d | | d d d ƒ D] }- |, |% |) |- }, qW|, | | <x= t d d | | d ƒ D]  }- |- d |) |- d |) |- <qHWqÛWi  }. t  d ˆ  j d | | ƒ ƒ }/ d ˆ  j d t | ƒ | ƒ ˆ  j | ƒ d }0 ˆ  j d ˆ  j ˆ  j | | | | ƒ d }1 xd t d | ƒ D]S } ˆ  j ˆ  j ˆ  j
 | d ƒ ƒ ƒ ˆ  j | |1 ƒ |0 }2 t  |2 |/ ƒ |. | <q	W|. d d ˆ  _ d d | }3 i  }4 d |4 d& <d |4 d' <d |4 d( <d |4 d) <d |4 d* <d |4 d+ <d |4 d, <d |4 d- <xÜt d | ƒ D]Ë} |. | d ˆ  _ xlt d d | d d ƒ D]O}- d | d |- } | d k rÑˆ  j | }5 |5 d }6 |3 |5 d }7 | d }8 |8 |4 d | d |- d f |6 |4 d | d |- f |7 |4 d | d |- d f |4 d | |- f <qd |4 d | |- f <x€ t d |- ƒ D]o }9 |4 d | |9 f ˆ  j ˆ  j d |- d |9 ƒ ˆ  j |- |9 ƒ }: |4 d | |- f c d |- |9 |: 8<qôWqWd |4 d | d f <d |4 d | d f <d |4 d | d | d d f <qåWx² t d | d ƒ D] }; x” t d | ƒ D]ƒ } xz t d  t  d d | d d ƒ ƒ D]T }- |; d k  sG
| d k  sG
|- d k  sG
|- d | d k r	
d |4 |; | |- f <q	
q	
WqÞ	WqÈ	Wxô t d | d ƒ D]ß }; xÖ t d | ƒ D]Å } |. | d ˆ  _ x« t d d | d d ƒ D]Ž }- d |; d |4 |; d | d |- d f d | | d |4 |; d | d |- d f }" |" |4 |; d | d |- d f |4 |; | |- f <qÆ
Wq“
Wq}
Wi  }< i  }= d ˆ  _ ˆ  j d | d ƒ }6 ˆ  j d! | d | ƒ }7 ˆ  j | | t j ˆ  j ƒ ƒ d }> x¬ t d | ƒ D]› }- |7 |- |> ˆ  j ˆ  j |- d ƒ ƒ d }8 t  |6 |8 ˆ  j | ƒ d ƒ d d |< |- <t  |6 ˆ  j | d ƒ |8 ˆ  j | ƒ d ƒ d d |= |- <qÞWi  }? xa | D]Y }; xP t d | ƒ D]? }- x6 t d d |- d d ƒ D] }@ d |? |; |- |@ f <qÂWq WqŠWxÎ | D]Æ }; x½ t d | ƒ D]¬ }- |< |- ˆ  _ x– t d d |- d d ƒ D]y }@ |4 |; |- |@ f | d |- d |@ |+ d |- |@ |? |; |- |@ f <|? |; |- |@ f d ˆ  j |@ |? |; |- |@ f <q3WqWqîW‡  f d" †  }A i  }B xa | D]Y }C xP t d | ƒ D]? }- x6 t d d |- d d ƒ D] }@ d |B |C |- |@ f <qWqêWqÔW|< d d ˆ  _ |A | ƒ }D ˆ  j |D ƒ }E xÔ | D]Ì }C xÃ t d | ƒ D]² }- |< |- ˆ  _ xœ t d d |- d d ƒ D] }@ d |B |C |- |@ f <xc t d |C d ƒ D]N }; ˆ  j |C |; ƒ |E |; |? |C |; |- |@ f }F |B |C |- |@ f c |F 7<q×WqªWq{WqeW|< d d ˆ  _ i  }G d |G d <|G d | |G d <|< d ˆ  _ x1 t d | ƒ D]  }- |G |- d |G d |G |- <q…Wi  }H xƒ | D]{ }C xr t d | ƒ D]a }- |< |- ˆ  _ xK t d d |- d d ƒ D]. }@ |B |C |- |@ f |G |- |H |C |- |@ f <qûWqÌWq¶Wi  }I xˆ | D]€ }C xw t d | ƒ D]f } |= | ˆ  _ d }J x: t d d | d d ƒ D] }- |J |H |C | |- f 7}J qW|J |I |C | f <qXWqBWi  }K d ˆ  _ t j ˆ  j ƒ | | | }L d ˆ  _ ˆ  j d# | d d |L | ƒ }M t  |M ˆ  j d | d ƒ ƒ }M |M ˆ  _ xT | D]L }C d |K |C <x9 t d | d ƒ D]$ }- |K |C c |I |C | |- f 7<qsWqOWd ˆ  _ d ˆ  j |K d ƒ }N |
 d |N }O | ˆ  j | d ˆ  j ƒ }P d$ ˆ  j d d |O ˆ  j | | ƒ |P ƒ }Q |Q ˆ  _ | d ˆ  j }R | d ˆ  j |R ƒ | d ˆ  j d }S ˆ  j |S ƒ }T |A | ƒ } ˆ  j | | ƒ } d |$ d | |T }U d ˆ  _ d ˆ  j |$ ˆ  j |$ d | ƒ ˆ  j |$ ƒ | ƒ }V |V d ˆ  _ ˆ  j | d t |$ ƒ d | ƒ d }W d ˆ  _ t |W | ƒ }X t |K | |U ƒ }Y t  d | ˆ  j d d |X d% |Y ƒ ƒ }Z |Z ˆ  _ i  }[ x( | D]  }C |W |C |K |C |U |[ |C <q‡W| ˆ  _ |[ S(.   s  
    Computes several derivatives of the auxiliary function of Riemann `R(s)`.

    **Definition**

    The function is defined by

    .. math ::

        \begin{equation}
        {\mathop{\mathcal R }\nolimits}(s)=
        \int_{0\swarrow1}\frac{x^{-s} e^{\pi i x^2}}{e^{\pi i x}-
        e^{-\pi i x}}\,dx
        \end{equation}

    To this function we apply the Riemann-Siegel expansion.
    i   i   i   g      @g      @i    g       @i	   g½5°U‚Å@gŸ`<@gYÝê¹ñ?i   g      à?g      9@s2   Riemann-Siegel can not compute with such precisioni   ix  i   i   g     Às@i   iœ  i,   i   iÿÿÿÿi   i(   i   i   i
   iþÿÿÿiýÿÿÿiD   c            s=   ˆ  j  } | d ˆ  _  ˆ  j |  d ˆ  j ƒ } | ˆ  _  | S(   Ni   (   R   R   R   (   RJ   RK   RL   (   R   (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyRM   ô  s
    		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   (   R   R   RN   RO   R   R   RD   R	   RP   RQ   RR   RS   RT   RC   R   t   eRE   RU   R   R.   R6   RV   R7   R   R   R   RW   RX   RY   RZ   (\   R   R]   t   derivativesR^   R_   RJ   t   sigmaR;   t   asigmat   A1R   Rf   t   eps2t   bR,   t   At   B1Rp   t   eps3t   eps4Ru   Rˆ   R   RF   RG   RH   R   Rw   Rx   t   foreps5R@   R>   R?   R}   R~   R   R€   R   R‚   Rƒ   R„   R…   R†   R‡   R‰   R%   t   wpdR‹   t   d2t   constt   d3t   psigmat   dR‘   R’   R“   R”   R•   R–   R*   t   wptcoeft   wptermt   c4t   fortcoefR¨   RM   t   tcoefR«   RL   Rª   R¬   R¯   t   tvt   termR³   t   rssumt   rsboundt   wprssumR»   R¼   R½   t   wps3RÀ   RÁ   RÂ   t   S3RÇ   t   S1t   absS1t   absS2t   wpendt   rz(    (   R   s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt	   Rzeta_setþ  sÂ   		
			9J	3*"
(
5 	
!2	%
"" 21:
 
 
 

 
 
 
"
eD-  #+8""X<	',,A""D;"")
"4"		# 	
&	0	*	8&	,		c         C   s'  |  j  d ƒ |  j | } |  j } d |  _ | d |  j } | d |  j d | d |  j | ƒ ƒ } | d |  j d | |  j | ƒ ƒ } | |  _ |  j | ƒ } | |  _ t |  | t | d ƒ ƒ }	 | d k r|  j	 |  j
 d | d ƒ d |  j |  j ƒ d ƒ }
 n  | d k rM|  j	 |  j |  j
 d | d ƒ d	 ƒ } n  | d k r€|  j	 |  j
 d | d ƒ d
 ƒ } n  | d k rº|  j	 |  j |  j
 d | d ƒ d ƒ } n  |  j | ƒ } | d k rêd | |	 d } n  | d k rd | } | |
 |	 d |	 d } n  | d k rxd | } | d |	 d |
 |	 d |
 d |	 d |  j |	 d | } n  | d k r	d | } d |	 d |
 d |	 d |
 d d |
 |	 d } | | d |	 d | d |	 d |
 | |	 d |	 d | } n  | d	 k r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	 |  j |	 d | } | | } n  | |  _ |  j	 | ƒ S(   s-   
    z_half(t,der=0) Computes Z^(der)(t)
    s   0.5i   i   i   i   g      ø?i   i    i   i   i   y               @y               Ày              @i   y              (@y              @(   R   R   R   R   R	   R7   t   siegelthetaRö   R   RO   t   psiRX   (   R   RJ   R^   R]   R_   t   ttt   wpthetat   wpzt   thetaRõ   t   ps1t   ps2t   ps3t   ps4t   expthetat   zt   zf(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   z_halfr  sN    		,(		 : - ' .

E
6E
:VU	c         C   s—  |  j  } |  j | ƒ } |  j | ƒ } d |  _  | d k rT |  j t | ƒ ƒ } n+ d |  j | d t d | ƒ d | } | d k r¬ d |  j | d |  j ƒ } n d | | } t d | ƒ } d | t j | ƒ }	 t d d |  j	 | ƒ ƒ }
 d |  j	 d	 | d
 | | d | | |	 ƒ | d } t |
 | ƒ }
 t d d |  j	 d | | ƒ | d ƒ } d |  j	 d d | ƒ | d } | |  _  |  j
 | |  j | |  j d ƒ ƒ } | d k r|  j |  j d | d ƒ ƒ d |  j |  j ƒ d } n  | d k r?|  j |  j d | d ƒ ƒ d } n  | d k rr|  j |  j d | d ƒ ƒ d } n  | d k r¤|  j |  j d | d ƒ ƒ d } n  | |  _  t |  | t | d ƒ ƒ } i  } x2 t d | d ƒ D] } |  j | | ƒ | | <qãW|
 |  _  |  j d | ƒ } | d k rE| d | | d } n  | d k r| d d | d | } | d | | } n  | d k ràd | d | d | d | d | d d | d | } | d | | } n  | d k r}d | d | d d | d | d d | d | d | d | } | d | d | | | d d | d | } | d | | } n  | d k rŠ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 | | } n  | |  _  | S(   s?   
    zeta_half(s,k=0) Computes zeta^(k)(s) when Re s = 0.5
    i5   i    i   i   g      à?i   i   i   gö(\Âõ @g3333335@gÍÌÌÌÌÌô?gš™™™™™@gš™™™™™ñ?s   0.5i   i   iþÿÿÿy               @iôÿÿÿy              @y              (@i    i   y              H@i   (   R   RO   RN   R   RS   R   RP   t   logR   R	   R÷   R   R   Rø   R7   Rö   R   R\   RX   (   R   R]   R%   R_   RÕ   RJ   t   Xt   M1t   abstR½   t   wpbasict   wpbasic2Rú   t   wpRRü   Rý   Rþ   Rÿ   R   RÍ   RÑ   R«   R  t   zvt   zv1(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt	   zeta_halfš  sl    		+!;,#	' : ' ' &		>J2>2J2	c         C   s;  |  j  } |  j | ƒ } |  j | ƒ } d |  _  | d k rW |  j t | ƒ d ƒ } n; |  j d |  j | d ƒ |  j t d | ƒ d | ƒ } | d k r¿ d |  j | d |  j ƒ } n d | | } d | d k rþ d |  j | d |  j ƒ } n< d | |  j d |  j | ƒ |  j t | ƒ | d ƒ } t d | ƒ }	 d |	 t j |	 ƒ }
 t	 d d |  j
 | ƒ ƒ } d |  j
 d	 | d
 | | d | | |
 ƒ | d } t	 | | ƒ } t	 d d |  j
 d | | ƒ | d ƒ } d |  j
 d d | ƒ | d } | |  _  |  j | |  j | |  j d ƒ ƒ } | } |  j d | ƒ } | |  _  t |  | | ƒ \ } } | d k rÕ|  j d | d ƒ |  j d d | d ƒ d |  j |  j ƒ d } n  | d k r|  j |  j d | d ƒ |  j d d | d ƒ d } n  | d k r_|  j d | d ƒ |  j d d | d ƒ d } n  | d k r¨|  j |  j d | d ƒ |  j d d | d ƒ d } n  | |  _  |  j d | ƒ } | d k ré| d | | d } n  | d k r%| d d | d | } | d | | } n  | d k r„d | d | d | d | d | d d | d | } | d | | } n  | d k r!d | d | d d | d | d d | d | d | d | } | d | d | | | d d | d | } | d | | } n  | d k r.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 | | } n  | |  _  | S(   s+   
    Computes zeta^(k)(s) off the line
    i5   i    g      à?i   i   i   i   i   gö(\Âõ @g3333335@gÍÌÌÌÌÌô?gš™™™™™@gš™™™™™ñ?s   0.5i   i   i    iþÿÿÿy               @iôÿÿÿy              @y              (@i   y              H@i   (   R   RO   RN   RD   RS   R   R   RP   R  R   R	   R÷   R   R   R\   RÒ   Rø   R7   RX   (   R   R]   R%   R_   RÕ   RJ   R  R  t   M2R  R½   R	  R
  Rú   R  Rü   t   s1t   s2RÍ   RÑ   Rý   Rþ   Rÿ   R   R  R  R  (    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   zeta_offlineØ  sp    		;!!<;,#	'	 I < 6 =	>J2>2J2	c         C   s«  |  j  d ƒ |  j | } | } |  j d | ƒ } |  j } d |  _ |  j | ƒ d k r™ d |  j |  j | ƒ d |  j ƒ } |  j t | ƒ ƒ } nT d |  j |  j | ƒ d t d | ƒ d |  j | ƒ } d |  j | ƒ | } |  j | ƒ d k r,d |  j |  j | ƒ d |  j ƒ }	 nN d |  j | ƒ d |  j |  j | ƒ d t d | ƒ d |  j | ƒ }	 d t |  j	 | ƒ ƒ }
 |  j | ƒ } | | |	 } d | } t
 d	 d |  j |
 ƒ |  j | d
 d |
 ƒ | ƒ } t
 d |  j d | ƒ | ƒ } |  j d | ƒ | } | |  _ |  j	 | ƒ } | |  _ t |  | | ƒ \ } } d d | } d d | } | d k rÇd |  j d | ƒ |  j d | ƒ |  j |  j ƒ d } n  | d k r d d |  j d | ƒ |  j d | ƒ } n  | d k r9d d |  j d | ƒ |  j d | ƒ } n  | d k rrd d |  j d | ƒ |  j d | ƒ } n  | |  _ |  j | ƒ } | d k r³| | d | d | } n  |  j } | d k r| | | d | d | | | d | d | | } n  | d k r”| d | d | | d | d | d | | d | } | d | d | | d | d | d | | d | | } n  | d k r­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 | | } | | } n  | d k rž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 | } | | | | } n  | |  _ | S(   s8   
    Computes Z(w) and its derivatives off the line
    s   0.5i   i#   i    i   g      à?i   i   i   i   gR¸…ëQ @g      Ð?y              à?y              ð?i   g      ð¿i   y              ð¿i    iþÿÿÿiýÿÿÿy              @y              (@y              @(   R   R   R\   R   RO   R   RN   R   RS   R÷   R   R	   RÒ   Rø   R7   RX   (   R   R   R%   R]   R  R  R_   R  R  R  R½   R>   R?   RA   R	  Rú   R  Rü   RÍ   RÑ   t   ptat   ptbRý   Rþ   Rÿ   R   R  R  R   R  t   zv2(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt	   z_offline  s|    		'=*N
8 		 = - - -		=>EJ6J6:BN:BN	c         K   s¬   | d k r t  ‚ n  |  j | ƒ } |  j | ƒ } |  j | ƒ } | d k  rv |  j |  j |  j | ƒ | ƒ ƒ } | S| d k } | r˜ t |  | | ƒ St |  | | ƒ Sd  S(   Ni   i    g      à?(   RT   R.   RO   RN   R\   t   rs_zetaR  R  (   R   R]   t
   derivativet   kwargst   ret   imR  t   critical_line(    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyR  b  s    	 $c         C   s€   |  j  | ƒ } |  j | ƒ } |  j | ƒ } | d k  rJ t |  | | ƒ S| d k } | rl t |  | | ƒ St |  | | ƒ Sd  S(   Ni    (   R.   RO   RN   t   rs_zR  R  (   R   R   R  R  R  R  (    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyR  q  s     (   t   __doc__RP   t   objectR    t	   functionsR   R-   R6   RC   RI   RÒ   Rö   R  R  R  R  R  R  (    (    (    s6   lib/python2.7/site-packages/mpmath/functions/rszeta.pyt   <module>1   s(   	v			ÿ ÿ ÿ u(>BH