
    [hx                     (   S r SSKJrJr  S rS r  GS#S jrS rS rS	 r	S
r
S rS rS r\GS$S j5       rS rS rS r\S 5       r\S 5       r / SS/PSPSS/PSPSS/PSPSS/PSPSS/PSPS S!/PSPS"S#/PSPS$S%/PSPS&S'/PSPS(S)/PSPS*S+/PSPS,S-/PSPS.S//PSPS0S1/PS2PS3S4/PSPS5S6/PSPS7S8/PSPS9S:/PSPS;S</PSPS=S>/PSPS?S@/PSPSASB/PSPSCSD/PSPSESF/PSPSGSH/PSPSISJ/PSPSKSL/PSPSMSN/PSPSOSP/PSPSQSR/PSPSSST/PSPSUSV/PSPSWSX/PSPSYSZ/PSPS[S\/PSPS]S^/PSPS_S`/PSPSaSb/PSPScSd/PSPSeSf/PSPSgSh/PSPSiSj/PSPSkSl/PSPSmSn/PSPSoSp/PSPSqSr/PSPSsSt/PSPSuSv/PSPSwSx/PSPSySz/PSPS{S|/PSPS}S~/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PS2PSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSS/PSPSGS /PGSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS	/PSPGS
GS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGS GS!/PSPGS"GS#/PSPGS$GS%/PSPGS&GS'/PSPGS(GS)/PSPGS*GS+/PSPGS,GS-/PSPGS.GS//PSPGS0GS1/PSPGS2GS3/PSPGS4GS5/PSPGS6GS7/PSPGS8GS9/PSPGS:GS;/PSPGS<GS=/PSPGS>GS?/PSPGS@GSA/PSPGSBGSC/PSPGSDGSE/PSPGSFGSG/PSPGSHGSI/PSPGSJGSK/PSPGSLGSM/PGSNPGSOGSP/PSPGSQGSR/PSPGSSGST/PGSUPGSVGSW/PSPGSXGSY/PSPGSZGS[/PSPGS\GS]/PSPGS^GS_/PSPGS`GSa/PSPGSbGSc/PSPGSdGSe/PSPGSfGSg/PSPGShGSi/PSPGSjGSk/PSPGSlGSm/PSPGSnGSo/PSPGSpGSq/PSPGSrGSs/PSPGStGSu/PSPGSvGSw/PSPGSxGSy/PSPGSzGS{/PSPGS|GS}/PSPGS~GS/PSPGSGS/PSPGSGS/PSPGSGS/PGSUPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PGSPGSGS/PSPGSGS/PSPGS GS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS	/PSPGS
GS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PS2PGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGS GS!/PSPGS"GS#/PGSUPGS$GS%/PSPGS&GS'/PSPGS(GS)/PSPGS*GS+/PSPGS,GS-/PSPGS.GS//PSPGS0GS1/PSPGS2GS3/PSPGS4GS5/PSPGS6GS7/PSPGS8GS9/PSPGS:GS;/PSPGS<GS=/PSPGS>GS?/PSPGS@GSA/PSPGSBGSC/PSPGSDGSE/PSPGSFGSG/PSPGSHGSI/PSPGSJGSK/PSPGSLGSM/PSPGSNGSO/PSPGSPGSQ/PSPGSRGSS/PSPGSTGSU/PSPGSVGSW/PSPGSXGSY/PSPGSZGS[/PSPGS\GS]/PSPGS^GS_/PSPGS`GSa/PSPGSbGSc/PSPGSdGSe/PSPGSfGSg/PSPGShGSi/PSPGSjGSk/PSPGSlGSm/PSPGSnGSo/PSPGSpGSq/PSPGSrGSs/PSPGStGSu/PSPGSvGSw/PSPGSxGSy/PSPGSzGS{/PSPGS|GS}/PSPGS~GS/PSPGSGS/PSPGSGS/PSPGSGS/PS2PGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PGSUPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PGSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PGSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PGSUPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS /PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PSPGSGS/PGSPGS	GS
/PGSPGSGS/PGSPGSGS/PGSPGSGS/PGSPGSGS/PGSPGSGS/PGSPGSGS/PGSPGSGS/PGSPGSGS/PGSPGSGS /PGSPGS!GS"/PGSPrg(%  a  
The function zetazero(n) computes the n-th nontrivial zero of zeta(s).

The general strategy is to locate a block of Gram intervals B where we
know exactly the number of zeros contained and which of those zeros
is that which we search.

If n <= 400 000 000  we know exactly the Rosser exceptions, contained
in a list in this file. Hence for n<=400 000 000 we simply
look at these list of exceptions. If our zero is implicated in one of
these exceptions we have our block B.  In other case we simply locate
the good Rosser block containing our zero.

For n > 400 000 000 we apply the method of Turing, as complemented by
Lehman, Brent and Trudgian  to find a suitable B.
   )defundefun_wrappedc                 l   [        [        [        5      S-  5       H  n[        SU-     S   n[        SU-     S   nX1S-
  ::  d  M+  US-
  U::  d  M6  U R                  U5      nU R                  U5      nU R                  R                  U5      nU R                  R                  U5      nX-
  S-
  n	XC-
  n
[        SU-  S-      nXU/XV/Xx/4s  $    US-
  n[        X5      u  pnU/nU/nUS:  a?  US-  n[        X5      u  pnUR                  SU5        UR                  SU5        US:  a  M?  X-
  S-
  n	US-
  n[        U U5      u  pnUR                  U5        UR                  U5        US:  a>  US-  n[        U U5      u  pnUR                  U5        UR                  U5        US:  a  M>  XU/X4$ )z;for n<400 000 000 determines a block were one find our zero       r   )	rangelen_ROSSER_EXCEPTIONS	grampoint_fpsiegelzcompute_triple_tvbinsertappend)ctxnkabt0t1v0v1my_zero_numberzero_number_blockpatterntvTVms                    R/var/www/auris/envauris/lib/python3.13/site-packages/mpmath/functions/zetazeros.pyfind_rosser_block_zeror#      s   3)*A-.
QqS
!!
$
QqS
!!
$1W1Q3!8q!Bq!B$B$BSUN !(1Q/G"qEB7RG<< / 	
!As&EA	
A	
A
a%	Q"3*A	1	1	 a%
 SUN	!AsA&EAHHQKHHQK
a%	Q"3*A			 a%
 qE1((    c                 :    SnU S:  a  SnU S:  a  SnU S:  a  SnU$ )z(Precision needed to compute higher zeros5   i ?   l    h] F       @ k S    )r   wps     r"   wpzerosr-   7   s0    	B7{6z6zIr$   Nc                   ^  Uc  T R                   nSn[        U5      nXq:  Ga.  Xd:  Ga(  US   nUS   n	U/n
U	/nSn[        S[        U5      5       H  nX,   nX<   nX-  S:  a!  T R	                  X-  5      nX-  U-   US-   -  nOX-   S-  nUS:  a<  T R
                  R                  U5      n[        U5      U:  a  T R                  U5      nOT R                  U5      nU	U-  S:  a  US-  nU
R                  U5        UR                  U5        X<   nUU-  S:  a  US-  nU
R                  U5        UR                  U5        UnUn	M     U
nUnUS-  nU[        :  a  US:  a  US-   U:X  a  SnSnSn[        S[        U5      5       H1  nUU   UUS-
     -
  nUU:  a  UnUnUnM  UU:  d  M'  UU:  d  M/  UnM3     USU-  :  at  U 4S jnUUS-
     nUU   nT R                  UUU4SSSS	9nT R                  U5      n	UU:  a5  UU:  a/  XU   -  S:  a$  UR                  UU5        UR                  UU	5        [        U5      nXq:  a  Xd:  a  GM(  Xq:X  a  S
nOSnX#U4$ )zZSeparate the zeros contained in the block T, limitloop
determines how long one must searchr   r   r   
      c                 $   > TR                  U SS9$ )Nr   
derivative)rs_zxr   s    r"   <lambda>)separate_zeros_in_block.<locals>.<lambda>y   s    chhqAh6r$   illinoisF)solververifyverboseT)infcount_variationsr   r	   sqrtr   r   absr   ITERATION_LIMITfindrootr   )r   r   r   r    	limitloopfp_tolerance
loopnumber
variationsr   r   newTnewVr   b2ualphar   wdtMaxdtSeckMaxk1dtfr   r   r   	separateds   `                           r"   separate_zeros_in_blockrT   B   s    GG	J!!$J*1FaDaDss
qQABAAGBJq)T1Hb GGOOA&q6,&AA++a.s1ua
KKNKKNAsAva
KKOKKNAA1 !2 Q
o%*Q,:a<IZ;ZEEDAc!forU1RT7]:D!EE%xRYE & QuW}6T!V9tW,,qBr7JeUZ,[KKNqDqt!dG)A+HHT!$HHT!$%a(
o *1Fp &		r$   c                   ^  SnUS   n[        S[        U5      5       H!  nXH   n	Xy-  S:  a  US-  nXa:X  a  Un
UnU	nU	nM#     UW
   nX:S-
     nUT l        [        UT R	                  U5      -  5      nST R                  U5      -  nT R                  S-   /nSnUS   SU-  :  a(  US-  nUS   S-  S-   SU-  -   /U-   nUS   SU-  :  a  M(  US   U-   T l        T R                  U 4S jX4SSS	9nT R                  S
U5      nUSS  HS  nUU-   T l        UT R                  U5      T R                  USS9-  -
  nT R                  S
T R                  U5      5      nMU     T R                  U5      $ )zLIf we know which zero of this block is mine,
the function separates the zeror   r      r   r0   c                 &   > TR                  U 5      $ )Nr   r5   s    r"   r7   "separate_my_zero.<locals>.<lambda>   s    ckk!nr$   r9   F)r:   r<         ?Nr2   )
r   r	   precr-   logmagrB   mpczetaim)r   r   r   r   r    r[   rF   r   r   r   k0leftvrightvr   r   wpzguardprecsindexrzznews   `                     r"   separate_my_zerork      s    J	
1B1SV_T519NJ+  
2B	
a4BCH
.!88
9Ccggn%%EXXaZLE
E
(QsU
	qQ!!E')*U2 (QsU
 Qx%CH,rgzSXYA	ggc!nAab	%<388A;!!:::
''#cffTl
#  66!9r$   c                     US:  a  gU R                  US-
  5      nU R                  R                  U5      nSUS-  -  SU-  -   nSUS-  -  SU-  -   nU R                  [	        XE5      5      n[        U5      nU$ )zThe number of good Rosser blocks needed to apply
Turing method
References:
R. P. Brent, On the Zeros of the Riemann Zeta Function
in the Critical Strip, Math. Comp. 33 (1979) 1361--1372
T. Trudgian, Improvements to Turing Method, Math. Comp.i r   d   gHPx?g{Gz?ga+ei?g)\(?)r   r   lnceilminint)r   r   glgbrenttrudgianNs          r"   sure_number_blockrw      s~     	7{aeA	ABRUNDG#EA~tBw&HU$%AAAHr$   c                     U R                  U5      nU R                  R                  U5      nU R                  [	        U5      5      U R                  U5      S-
  :  a  U R                  U5      nUSU-  -  nX#U4$ )N-   )r   r   r   r]   r@   )r   r   r   r   r   s        r"   r   r      se    aAA
wws1vswwqz"}$KKN	2'	Aq5Lr$   rV   c           	      x   [        X5      nSnUS-
  n[        X5      u  pgnU/n	U/n
US:  a=  US-  n[        X5      u  pgnU	R                  U5        U
R                  U5        US:  a  M=  U/nU/nU/nUSU-  :  Ga  US-  n[        X5      u  pgnUR                  U5        UR                  U5        US:  a=  US-  n[        X5      u  pgnUR                  U5        UR                  U5        US:  a  M=  UR                  U5        [        U5      S-
  n[	        XX[
        US9u  nnnU	R                  5         U	R                  U5        U
R                  5         U
R                  U5        U(       a  US-  nOSnU/nU/nUSU-  :  a  GM  SnUS-
  n[        X5      u  pgnU	R                  SU5        U
R                  SU5        US:  a?  US-  n[        X5      u  pgnU	R                  SU5        U
R                  SU5        US:  a  M?  UR                  SU5        U/nU/nUSU-  :  a  US-  n[        X5      u  pgnUR                  SU5        UR                  SU5        US:  a?  US-  n[        X5      u  pgnUR                  SU5        UR                  SU5        US:  a  M?  UR                  SU5        [        U5      S-
  n[	        XX[
        US9u  nnnUR                  5         X-   n	UR                  5         UU
-   n
U(       a  US-  nOSnU/nU/nUSU-  :  a  M  USU-     n[        U5      nUUSU-  -
  S-
     n[        U U5      u  nnnU	R                  U5      n[        U U5      u  nnnU	R                  U5      nU	UUS-    nU
UUS-    nUU-
  n[	        XX[
        US9u  nnnU(       a  UU-
  S-
  UU/UU4$ X   n[        U5      nUUU-
  S-
     n[        U U5      u  nnn U	R                  U5      n![        X5      u  n"n#n$U	R                  U"5      n%U	U!U%S-    nU
U!U%S-    nUU-
  S-
  UU/X4$ )zTo use for n>400 000 000r   r   r   rC   rD   )
rw   r   r   r	   rT   rA   popextendr   rg   )&r   r   rD   sbnumber_goodblocksm2r   r   r   TfVf
goodpointsr   r    znABrS   rh   rs   strvrbrartsvsbsas1qtqvqbqaqttvtbtats&                                         r"   search_supergood_blockr      s   	3	"B	
1B )GA!
B
B
a%
a"3+A
		!
		!	 a%
 J	
A	
A
ad
"
a$S-a		!e!GB&s/EAHHQKHHQK	 !e
 	"VAX"3AO)+ 	1i 	
		!

		!" !CC1 ad
"4 	
1B )GA!IIaNIIaN
a%
a"3+A
		!A
		!A	 a%
 a	
A	
A
ad
"
a$S-a	1	1!e!GB&s/EAHHQqMHHQqM	 !e
 	!BVAX"3AOZfg 	1i	T	rT" !CC/ ad
"0 	1R4A	ZB2ad719A#C+JBB	"B#C+JBB
((2,C
2c!eA
2c!eA	
1Bsq_S_` Aq)!AqeAa  A	ZB2b57A#C+JBB	"B#C+JBB	"B
2bdA
2bdAaCE1Q%r$   c                 r    SnU S   n[        S[        U 5      5       H  nX   nX$-  S:  a  US-  nUnM     U$ Nr   r   )r   r	   )r    countvoldr   vnews        r"   r>   r>   2  sJ    EQ4D1c!ft9q=AIE	 
 Lr$   c                    SnUS   nUS   n[        X5      u  pxn	Sn
Sn[        US-   US-   5       H  n[        X5      u  pn[        U5      nU
U:  a  X*   U::  a  U
S-  n
U
U:  a
  X*   U::  a  M  X;U
 nUR                  U5        UR	                  SU5        [        U5      nUSU-  -   nUS:  a  US-   nU
nXUpnM     US S nU$ )N(r   r   z%sz)(rz   )r   r   r	   r   r   r>   )r   blockr   r    r   r   r   r   r   b0r   ra   r   r   r   b1lgTLr   s                      r"   pattern_constructr   <  s    GaAaA!#)HB"	A	
B1Q3qs^%c-bV3wQTRZFA 3wQTRZG		2 #TE\*6nGbb  crlGNr$   c           	      "   [        U5      nUS:  a   U R                  U* 5      R                  5       $ US:X  a  [        S5      eU R                  n [        X5      u  pVXPl        US:  a  [        X5      u  pxpO[        XU5      u  pxpUS   US   -
  n[        XXU R                  US9u  pnU(       a  [        XX5      n[        XE5      n[        XXX5      nU R                  SU5      nX@l        U(       a  U7nU(       a  UXW4$ U$ ! X@l        f = f)a  
Computes the `n`-th nontrivial zero of `\zeta(s)` on the critical line,
i.e. returns an approximation of the `n`-th largest complex number
`s = \frac{1}{2} + ti` for which `\zeta(s) = 0`. Equivalently, the
imaginary part `t` is a zero of the Z-function (:func:`~mpmath.siegelz`).

**Examples**

The first few zeros::

    >>> from mpmath import *
    >>> mp.dps = 25; mp.pretty = True
    >>> zetazero(1)
    (0.5 + 14.13472514173469379045725j)
    >>> zetazero(2)
    (0.5 + 21.02203963877155499262848j)
    >>> zetazero(20)
    (0.5 + 77.14484006887480537268266j)

Verifying that the values are zeros::

    >>> for n in range(1,5):
    ...     s = zetazero(n)
    ...     chop(zeta(s)), chop(siegelz(s.imag))
    ...
    (0.0, 0.0)
    (0.0, 0.0)
    (0.0, 0.0)
    (0.0, 0.0)

Negative indices give the conjugate zeros (`n = 0` is undefined)::

    >>> zetazero(-1)
    (0.5 - 14.13472514173469379045725j)

:func:`~mpmath.zetazero` supports arbitrarily large `n` and arbitrary precision::

    >>> mp.dps = 15
    >>> zetazero(1234567)
    (0.5 + 727690.906948208j)
    >>> mp.dps = 50
    >>> zetazero(1234567)
    (0.5 + 727690.9069482075392389420041147142092708393819935j)
    >>> chop(zeta(_)/_)
    0.0

with *info=True*, :func:`~mpmath.zetazero` gives additional information::

    >>> mp.dps = 15
    >>> zetazero(542964976,info=True)
    ((0.5 + 209039046.578535j), [542964969, 542964978], 6, '(013111110)')

This means that the zero is between Gram points 542964969 and 542964978;
it is the 6-th zero between them. Finally (01311110) is the pattern
of zeros in this interval. The numbers indicate the number of zeros
in each Gram interval (Rosser blocks between parenthesis). In this case
there is only one Rosser block of length nine.
r   zn must be nonzero r   r|   rZ   )rq   zetazero	conjugate
ValueErrorr[   comp_fp_tolerancer#   r   rT   r=   r   maxrk   r^   )r   r   inforound	wpinitialrd   rD   r   r   r   r    r   rS   r   r[   r   r   s                    r"   r   r   T  s#   x 	AA1u||QB))++Av,--I-c5y=#C+ (N1a $CL9 (N1!!HU1X-1#!ggL:i'!6G9"S2CaMGGCN2%w// s   BD Dc                     US:  a  SU R                  US5      -  nOSnU R                  n U =R                  U-  sl        [        U R                  U5      U R                  -  5      nX0l        U$ ! X0l        f = f)Nl     a$r0   r/   r   )r\   r[   rq   siegelthetapi)r   r   r,   r[   hs        r"   
gram_indexr     sl    6zswwq"~88DB"366)*I s   <A0 0A8c                     SnUS   nUS   nUS   nSnXq:  a#  X8   n	XY-  S:  a  US-  nU	nUS-  nX(   nXq:  a  M#  U R                  U5      n
X-  S:  a  US-  nU$ r   rX   )r   r   r   r    r   r   toldtnewr   r   r   s              r"   count_tor     s    EQ4DQ4DQ4D	A
(t9q=QJE	Qt ( 	AAvz
Lr$   c                 p    [        XR                  U5      -  5      nUS:  a  SnX#4$ US::  a  SnX#4$ SnX#4$ )Ni /hYgMb@?r)   g?rm   )r-   r\   )r   r   rd   rD   s       r"   r   r     sV    
!GGAJ,
C8|
 	 
f  r$   c           	          US:  a  g[        X5      n[        U R                  U5      5      nU R                  n[	        X5      u  pVXPl        U R                  U5      nUS:X  a  US:  a  gUS:X  a  US:  a  gUS-   S:  a  [        XS-   5      nO[        XS-   U5      nUS   u  pX-
  S:X  a&  US   S   nX{-  S:  a  X@l        US-   $ X@l        US-   $ Uu  ppX-
  n[        U UXU R                  US9u  pn[        XX5      nX@l        UU	-   S-   $ )	a  
Computes the number of zeros of the Riemann zeta function in
`(0,1) \times (0,t]`, usually denoted by `N(t)`.

**Examples**

The first zero has imaginary part between 14 and 15::

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = True
    >>> nzeros(14)
    0
    >>> nzeros(15)
    1
    >>> zetazero(1)
    (0.5 + 14.1347251417347j)

Some closely spaced zeros::

    >>> nzeros(10**7)
    21136125
    >>> zetazero(21136125)
    (0.5 + 9999999.32718175j)
    >>> zetazero(21136126)
    (0.5 + 10000000.2400236j)
    >>> nzeros(545439823.215)
    1500000001
    >>> zetazero(1500000001)
    (0.5 + 545439823.201985j)
    >>> zetazero(1500000002)
    (0.5 + 545439823.325697j)

This confirms the data given by J. van de Lune,
H. J. J. te Riele and D. T. Winter in 1986.
g%fD,@r   rz   r   r   r   r0   r|   )r   rq   floorr[   r   r   r#   r   rT   r=   r   )r   r   r6   r   r   rd   rD   r   Rblockn1n2r   r   r   r   r    r   rS   r   s                      r"   nzerosr     s6   J 	3ACIIaLAI)#1CHAABw1q5	
bQUsY'qS1'qS,?AYFB	uz1IaL37 HQ3J HQ3J!'N!-c.?8;9EGOA) 	AHR46Mr$   c                 h    U R                  U5      S-
  U R                  U5      U R                  -  -
  $ )a  
Computes the function
`S(t) = \operatorname{arg} \zeta(\frac{1}{2} + it) / \pi`.

See Titchmarsh Section 9.3 for details of the definition.

**Examples**

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = True
    >>> backlunds(217.3)
    0.16302205431184

Generally, the value is a small number. At Gram points it is an integer,
frequently equal to 0::

    >>> chop(backlunds(grampoint(200)))
    0.0
    >>> backlunds(extraprec(10)(grampoint)(211))
    1.0
    >>> backlunds(extraprec(10)(grampoint)(232))
    -1.0

The number of zeros of the Riemann zeta function up to height `t`
satisfies `N(t) = \theta(t)/\pi + 1 + S(t)` (see :func:nzeros` and
:func:`siegeltheta`)::

    >>> t = 1234.55
    >>> nzeros(t)
    842
    >>> siegeltheta(t)/pi+1+backlunds(t)
    842.0

r   )r   r   r   )r   r   s     r"   	backlundsr   !  s.    H ::a=?3??1-cff444r$   i i z(00)3iaidiiz3(00)i=i=ioioiKiNi'i'iDiDi5i5i"i"i͜JiМJi+di.diOeiRei6٧i:٧z(00)40i(i(iR4yiU4yiýiýieieiii2 i5 i^RiaRi(i(iL=iO=iGi"Givi"viiiii	Ui	Ui_i_ieieihihi$.i'.i;i;iii~)i~)i<i
<i@i@iZDi]DipNisNibibi(i(iiivxiyxiiikini7/i:/i(7i(7ioEirEiOeIiReIipipi5i5iiiEŵiHŵi:i=i#i&i	i	i.	i1	i	iÁ	i&&	i)&	iĺ?	iǺ?	iϴB	iҴB	i_	i_	i_	i_	i&g	i&g	itqo	iwqo	i		i		ic	if	i=	i=	iv	iv	i	i	id	ig	iL
	iO
	i;
i;
i0
i0
iS'
iV'
i,
i,
i@
i@
i1T
i1T
i[
i[
i`
i`
i`c
i`c
if
if
i!y
i!y
iՊ
iՊ
i
i
i
i
iWC
iZC
i>h
iAh
i[b
i^b
i
i
z22(00)iǂ
iʂ
it4diw4dididififz(00)22iyiyiiiךiךi׬i׬isisiii
i
iZi]ititiii!i!i{i{i"i%iyiyi{i~iiiii=&i=&i|Ei|EiwLizLiYiYioYirYi]i]z3(010)i$`i'`ififiˁgi΁gib|ie|i`i`i3i6iii߀ii(>i+>iOiRiiiiÀiii
i
ie
ih
ijimi.Wi1Wi0`i3`i)T/i,T/i	SiSiXiXi]Yi`Yi<Ngi@Ngimimiii*i-iwiwi_ibi٤i٤iii=gi@gi#i#iii`~ic~ib
ie
i?iBi<i?i7(i7(z04(00)i//Ni2/Niz|Qi}|QiNciNcz(010)3i˾eiξeihihiDhiGhihʇikʇiiiiiiiiiliЦiЦiS;iV;i ii%i(iii-i0i'i*i55i55iZ7iZ7i"Mi"Mi`i`iSgiWgiti ti?iBiviviii"Ai%Aikiki#i&iiiii0i0i[i^iXi[iR%iR%iO'iR'iz7i}7iaI?idI?i!Wi$WiKYiNYihihi}li}lioqirqihrikriyiyiiiii(i(i$
i'
im(ip(i[i^iѓiԓiqxitxi@QiCQiSiSiCiFie,ih,iw)iz)iߥii8i;iiiiiiic!if!i'i'i(i(i:6i:6iJiJiOiOi]^i`^iqsitsiexihxi&|i)|i"i"ibibiiiiiAiDiiiaiaiiiii i i1!i1!iʺ*iκ*iP2iS2i.Ii.Ii;Mi;MiSiSididijnimniiiɭi̭iIiLiii !i!iڜiڜikiki*i*iiiiiiili'Di*Diii~ii)i,iFiIiK\iN\izB-i}B-i*Vi*VimimixixiPyiSyi׸iڸi$Îi'Îiĩiǩiϐiϐiiiiimipi5i5i%i%i>KiAKi{~i~~iViYiHiHiii*i*iiiii3i6iiiiiY#iY#i#i#i$i$iNgiQgidligliůiůipipi\i\i׊iڊiNiQiiiiiAiAi	.i.i2i2ipipiii i iii'*i**iZ35i^35i<7i<7i'=i*=iAiAiEiEiEiEiPUiPUi{Xi{Xi fifiiiniri1i1i @i@iii?i?iiiii*i-i$i$z04(010)i9i<i i iImiLmisisiІ4iԆ4iZ6i]6i;i;iBiBicici
vi
vidzidzi}i}i8i8i5i5ixi{iʯiʯiGSiJSiiiQNiTNipipiiizi~iii6i6i} i} iViVi/i/iMo%iPo%i*i*i-i-iA@iA@iNAiRAiGCiJCizXizXi'\i*\i\i\i'li'li1li4lifrifriTKxiWKxi|i|i꣗iiљiљiiiiiii2ji5jiۣii	]i]z032(00)i΄c,iӄc,z(010)40iӹ,iӹ,i9i9i%:i%:z(00)410iw;iw;it?it?z(00)230iqHivHi}Ji}JiQiQ)NN)FT)__doc__	functionsr   r   r#   r-   rT   rk   rw   r   rA   r   r>   r   r   r   r   r   r   r   r
   r+   r$   r"   <module>r      s.  " ,!)F	 EIDL#J" fP0 Y Yv$ E EN #5 #5L&^C(H Cw C	8 CC	8 CC 
8 C C 
8 	C 	C
 
8 C
 C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C  
8 !C  !C" 
8 #C" #C$ 
8 %C$ %C& 
8 'C& 'C( 
8 )C( )C* 
8 +C* +C, 
8 -C, -C. 
8 /C. /C0 
8 1C0 1C2 I 3C2  3C4 I 5C4  5C6 I 7C6  7C8 I 9C8  9C: I ;C:  ;C< I =C<  =C> I ?C>  ?C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ !KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr !sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz !{C| I }C|  }C~ I C~ !C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV !WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf !gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT !UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr !sCt I uCt  uCv I wCv  wCx I yCx !yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC` !aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh !iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN !OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~ !C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^ !_C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx !yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF !GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp !qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@	 I A	C@	  A	CB	 I C	CB	  C	CD	 I E	CD	  E	CF	 I G	CF	  G	CH	 I I	CH	  I	CJ	 I K	CJ	  K	CL	 I M	CL	  M	CN	 I O	CN	  O	CP	 I Q	CP	  Q	CR	 I S	CR	  S	CT	 I U	CT	  U	CV	 I W	CV	  W	CX	 I Y	CX	  Y	CZ	 I [	CZ	  [	C\	 I ]	C\	  ]	C^	 I _	C^	  _	C`	 I a	C`	  a	Cb	 I c	Cb	  c	Cd	 I e	Cd	  e	Cf	 I g	Cf	  g	Ch	 I i	Ch	 !i	Cj	 I k	Cj	  k	Cl	 I m	Cl	  m	Cn	 I o	Cn	  o	Cp	 I q	Cp	  q	Cr	 I s	Cr	  s	Ct	 I u	Ct	  u	Cv	 I w	Cv	  w	Cx	 I y	Cx	  y	Cz	 I {	Cz	  {	C|	 I }	C|	 !}	C~	 I 	C~	  	C@
 I A
C@
  A
CB
 I C
CB
  C
CD
 I E
CD
  E
CF
 I G
CF
  G
CH
 I I
CH
  I
CJ
 I K
CJ
  K
CL
 I M
CL
 "M
CN
 I O
CN
  O
CP
 I Q
CP
  Q
CR
 I S
CR
  S
CT
 I U
CT
  U
CV
 I W
CV
 !W
CX
 I Y
CX
  Y
CZ
 I [
CZ
  [
C\
 I ]
C\
  ]
C^
 I _
C^
  _
C`
 I a
C`
  a
Cb
 I c
Cb
  c
Cd
 I e
Cd
  e
Cf
 I g
Cf
  g
Ch
 I i
Ch
  i
Cj
 I k
Cj
  k
Cl
 I m
Cl
  m
Cn
 I o
Cn
  o
Cp
 I q
Cp
 !q
Cr
 I s
Cr
  s
Ct
 I u
Ct
  u
Cv
 I w
Cv
  w
Cx
 I y
Cx
 !y
Cz
 I {
Cz
  {
C|
 I }
C|
  }
C~
 I 
C~
  
C@ I AC@  ACB I CCB !CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL !MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT !UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCn I oCn "oCp I qCp "qCr I sCr "sCt I uCt "uCv I wCv "wCx I yCx "yCz I {Cz "{C| Z }C| $}C~ Z C~ $C@ Z AC@ $ACB Z CCB $CCD Z ECD $EC r$   