1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018 |
- """
- 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.
- """
- from .functions import defun, defun_wrapped
- def find_rosser_block_zero(ctx, n):
- """for n<400 000 000 determines a block were one find our zero"""
- for k in range(len(_ROSSER_EXCEPTIONS)//2):
- a=_ROSSER_EXCEPTIONS[2*k][0]
- b=_ROSSER_EXCEPTIONS[2*k][1]
- if ((a<= n-2) and (n-1 <= b)):
- t0 = ctx.grampoint(a)
- t1 = ctx.grampoint(b)
- v0 = ctx._fp.siegelz(t0)
- v1 = ctx._fp.siegelz(t1)
- my_zero_number = n-a-1
- zero_number_block = b-a
- pattern = _ROSSER_EXCEPTIONS[2*k+1]
- return (my_zero_number, [a,b], [t0,t1], [v0,v1])
- k = n-2
- t,v,b = compute_triple_tvb(ctx, k)
- T = [t]
- V = [v]
- while b < 0:
- k -= 1
- t,v,b = compute_triple_tvb(ctx, k)
- T.insert(0,t)
- V.insert(0,v)
- my_zero_number = n-k-1
- m = n-1
- t,v,b = compute_triple_tvb(ctx, m)
- T.append(t)
- V.append(v)
- while b < 0:
- m += 1
- t,v,b = compute_triple_tvb(ctx, m)
- T.append(t)
- V.append(v)
- return (my_zero_number, [k,m], T, V)
- def wpzeros(t):
- """Precision needed to compute higher zeros"""
- wp = 53
- if t > 3*10**8:
- wp = 63
- if t > 10**11:
- wp = 70
- if t > 10**14:
- wp = 83
- return wp
- def separate_zeros_in_block(ctx, zero_number_block, T, V, limitloop=None,
- fp_tolerance=None):
- """Separate the zeros contained in the block T, limitloop
- determines how long one must search"""
- if limitloop is None:
- limitloop = ctx.inf
- loopnumber = 0
- variations = count_variations(V)
- while ((variations < zero_number_block) and (loopnumber <limitloop)):
- a = T[0]
- v = V[0]
- newT = [a]
- newV = [v]
- variations = 0
- for n in range(1,len(T)):
- b2 = T[n]
- u = V[n]
- if (u*v>0):
- alpha = ctx.sqrt(u/v)
- b= (alpha*a+b2)/(alpha+1)
- else:
- b = (a+b2)/2
- if fp_tolerance < 10:
- w = ctx._fp.siegelz(b)
- if abs(w)<fp_tolerance:
- w = ctx.siegelz(b)
- else:
- w=ctx.siegelz(b)
- if v*w<0:
- variations += 1
- newT.append(b)
- newV.append(w)
- u = V[n]
- if u*w <0:
- variations += 1
- newT.append(b2)
- newV.append(u)
- a = b2
- v = u
- T = newT
- V = newV
- loopnumber +=1
- if (limitloop>ITERATION_LIMIT)and(loopnumber>2)and(variations+2==zero_number_block):
- dtMax=0
- dtSec=0
- kMax = 0
- for k1 in range(1,len(T)):
- dt = T[k1]-T[k1-1]
- if dt > dtMax:
- kMax=k1
- dtSec = dtMax
- dtMax = dt
- elif (dt<dtMax) and(dt >dtSec):
- dtSec = dt
- if dtMax>3*dtSec:
- f = lambda x: ctx.rs_z(x,derivative=1)
- t0=T[kMax-1]
- t1 = T[kMax]
- t=ctx.findroot(f, (t0,t1), solver ='illinois',verify=False, verbose=False)
- v = ctx.siegelz(t)
- if (t0<t) and (t<t1) and (v*V[kMax]<0):
- T.insert(kMax,t)
- V.insert(kMax,v)
- variations = count_variations(V)
- if variations == zero_number_block:
- separated = True
- else:
- separated = False
- return (T,V, separated)
- def separate_my_zero(ctx, my_zero_number, zero_number_block, T, V, prec):
- """If we know which zero of this block is mine,
- the function separates the zero"""
- variations = 0
- v0 = V[0]
- for k in range(1,len(V)):
- v1 = V[k]
- if v0*v1 < 0:
- variations +=1
- if variations == my_zero_number:
- k0 = k
- leftv = v0
- rightv = v1
- v0 = v1
- t1 = T[k0]
- t0 = T[k0-1]
- ctx.prec = prec
- wpz = wpzeros(my_zero_number*ctx.log(my_zero_number))
- guard = 4*ctx.mag(my_zero_number)
- precs = [ctx.prec+4]
- index=0
- while precs[0] > 2*wpz:
- index +=1
- precs = [precs[0] // 2 +3+2*index] + precs
- ctx.prec = precs[0] + guard
- r = ctx.findroot(lambda x:ctx.siegelz(x), (t0,t1), solver ='illinois', verbose=False)
- #print "first step at", ctx.dps, "digits"
- z=ctx.mpc(0.5,r)
- for prec in precs[1:]:
- ctx.prec = prec + guard
- #print "refining to", ctx.dps, "digits"
- znew = z - ctx.zeta(z) / ctx.zeta(z, derivative=1)
- #print "difference", ctx.nstr(abs(z-znew))
- z=ctx.mpc(0.5,ctx.im(znew))
- return ctx.im(z)
- def sure_number_block(ctx, n):
- """The 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."""
- if n < 9*10**5:
- return(2)
- g = ctx.grampoint(n-100)
- lg = ctx._fp.ln(g)
- brent = 0.0061 * lg**2 +0.08*lg
- trudgian = 0.0031 * lg**2 +0.11*lg
- N = ctx.ceil(min(brent,trudgian))
- N = int(N)
- return N
- def compute_triple_tvb(ctx, n):
- t = ctx.grampoint(n)
- v = ctx._fp.siegelz(t)
- if ctx.mag(abs(v))<ctx.mag(t)-45:
- v = ctx.siegelz(t)
- b = v*(-1)**n
- return t,v,b
- ITERATION_LIMIT = 4
- def search_supergood_block(ctx, n, fp_tolerance):
- """To use for n>400 000 000"""
- sb = sure_number_block(ctx, n)
- number_goodblocks = 0
- m2 = n-1
- t, v, b = compute_triple_tvb(ctx, m2)
- Tf = [t]
- Vf = [v]
- while b < 0:
- m2 += 1
- t,v,b = compute_triple_tvb(ctx, m2)
- Tf.append(t)
- Vf.append(v)
- goodpoints = [m2]
- T = [t]
- V = [v]
- while number_goodblocks < 2*sb:
- m2 += 1
- t, v, b = compute_triple_tvb(ctx, m2)
- T.append(t)
- V.append(v)
- while b < 0:
- m2 += 1
- t,v,b = compute_triple_tvb(ctx, m2)
- T.append(t)
- V.append(v)
- goodpoints.append(m2)
- zn = len(T)-1
- A, B, separated =\
- separate_zeros_in_block(ctx, zn, T, V, limitloop=ITERATION_LIMIT,
- fp_tolerance=fp_tolerance)
- Tf.pop()
- Tf.extend(A)
- Vf.pop()
- Vf.extend(B)
- if separated:
- number_goodblocks += 1
- else:
- number_goodblocks = 0
- T = [t]
- V = [v]
- # Now the same procedure to the left
- number_goodblocks = 0
- m2 = n-2
- t, v, b = compute_triple_tvb(ctx, m2)
- Tf.insert(0,t)
- Vf.insert(0,v)
- while b < 0:
- m2 -= 1
- t,v,b = compute_triple_tvb(ctx, m2)
- Tf.insert(0,t)
- Vf.insert(0,v)
- goodpoints.insert(0,m2)
- T = [t]
- V = [v]
- while number_goodblocks < 2*sb:
- m2 -= 1
- t, v, b = compute_triple_tvb(ctx, m2)
- T.insert(0,t)
- V.insert(0,v)
- while b < 0:
- m2 -= 1
- t,v,b = compute_triple_tvb(ctx, m2)
- T.insert(0,t)
- V.insert(0,v)
- goodpoints.insert(0,m2)
- zn = len(T)-1
- A, B, separated =\
- separate_zeros_in_block(ctx, zn, T, V, limitloop=ITERATION_LIMIT, fp_tolerance=fp_tolerance)
- A.pop()
- Tf = A+Tf
- B.pop()
- Vf = B+Vf
- if separated:
- number_goodblocks += 1
- else:
- number_goodblocks = 0
- T = [t]
- V = [v]
- r = goodpoints[2*sb]
- lg = len(goodpoints)
- s = goodpoints[lg-2*sb-1]
- tr, vr, br = compute_triple_tvb(ctx, r)
- ar = Tf.index(tr)
- ts, vs, bs = compute_triple_tvb(ctx, s)
- as1 = Tf.index(ts)
- T = Tf[ar:as1+1]
- V = Vf[ar:as1+1]
- zn = s-r
- A, B, separated =\
- separate_zeros_in_block(ctx, zn,T,V,limitloop=ITERATION_LIMIT, fp_tolerance=fp_tolerance)
- if separated:
- return (n-r-1,[r,s],A,B)
- q = goodpoints[sb]
- lg = len(goodpoints)
- t = goodpoints[lg-sb-1]
- tq, vq, bq = compute_triple_tvb(ctx, q)
- aq = Tf.index(tq)
- tt, vt, bt = compute_triple_tvb(ctx, t)
- at = Tf.index(tt)
- T = Tf[aq:at+1]
- V = Vf[aq:at+1]
- return (n-q-1,[q,t],T,V)
- def count_variations(V):
- count = 0
- vold = V[0]
- for n in range(1, len(V)):
- vnew = V[n]
- if vold*vnew < 0:
- count +=1
- vold = vnew
- return count
- def pattern_construct(ctx, block, T, V):
- pattern = '('
- a = block[0]
- b = block[1]
- t0,v0,b0 = compute_triple_tvb(ctx, a)
- k = 0
- k0 = 0
- for n in range(a+1,b+1):
- t1,v1,b1 = compute_triple_tvb(ctx, n)
- lgT =len(T)
- while (k < lgT) and (T[k] <= t1):
- k += 1
- L = V[k0:k]
- L.append(v1)
- L.insert(0,v0)
- count = count_variations(L)
- pattern = pattern + ("%s" % count)
- if b1 > 0:
- pattern = pattern + ')('
- k0 = k
- t0,v0,b0 = t1,v1,b1
- pattern = pattern[:-1]
- return pattern
- @defun
- def zetazero(ctx, n, info=False, round=True):
- r"""
- 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.
- """
- n = int(n)
- if n < 0:
- return ctx.zetazero(-n).conjugate()
- if n == 0:
- raise ValueError("n must be nonzero")
- wpinitial = ctx.prec
- try:
- wpz, fp_tolerance = comp_fp_tolerance(ctx, n)
- ctx.prec = wpz
- if n < 400000000:
- my_zero_number, block, T, V =\
- find_rosser_block_zero(ctx, n)
- else:
- my_zero_number, block, T, V =\
- search_supergood_block(ctx, n, fp_tolerance)
- zero_number_block = block[1]-block[0]
- T, V, separated = separate_zeros_in_block(ctx, zero_number_block, T, V,
- limitloop=ctx.inf, fp_tolerance=fp_tolerance)
- if info:
- pattern = pattern_construct(ctx,block,T,V)
- prec = max(wpinitial, wpz)
- t = separate_my_zero(ctx, my_zero_number, zero_number_block,T,V,prec)
- v = ctx.mpc(0.5,t)
- finally:
- ctx.prec = wpinitial
- if round:
- v =+v
- if info:
- return (v,block,my_zero_number,pattern)
- else:
- return v
- def gram_index(ctx, t):
- if t > 10**13:
- wp = 3*ctx.log(t, 10)
- else:
- wp = 0
- prec = ctx.prec
- try:
- ctx.prec += wp
- h = int(ctx.siegeltheta(t)/ctx.pi)
- finally:
- ctx.prec = prec
- return(h)
- def count_to(ctx, t, T, V):
- count = 0
- vold = V[0]
- told = T[0]
- tnew = T[1]
- k = 1
- while tnew < t:
- vnew = V[k]
- if vold*vnew < 0:
- count += 1
- vold = vnew
- k += 1
- tnew = T[k]
- a = ctx.siegelz(t)
- if a*vold < 0:
- count += 1
- return count
- def comp_fp_tolerance(ctx, n):
- wpz = wpzeros(n*ctx.log(n))
- if n < 15*10**8:
- fp_tolerance = 0.0005
- elif n <= 10**14:
- fp_tolerance = 0.1
- else:
- fp_tolerance = 100
- return wpz, fp_tolerance
- @defun
- def nzeros(ctx, t):
- r"""
- 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.
- """
- if t < 14.1347251417347:
- return 0
- x = gram_index(ctx, t)
- k = int(ctx.floor(x))
- wpinitial = ctx.prec
- wpz, fp_tolerance = comp_fp_tolerance(ctx, k)
- ctx.prec = wpz
- a = ctx.siegelz(t)
- if k == -1 and a < 0:
- return 0
- elif k == -1 and a > 0:
- return 1
- if k+2 < 400000000:
- Rblock = find_rosser_block_zero(ctx, k+2)
- else:
- Rblock = search_supergood_block(ctx, k+2, fp_tolerance)
- n1, n2 = Rblock[1]
- if n2-n1 == 1:
- b = Rblock[3][0]
- if a*b > 0:
- ctx.prec = wpinitial
- return k+1
- else:
- ctx.prec = wpinitial
- return k+2
- my_zero_number,block, T, V = Rblock
- zero_number_block = n2-n1
- T, V, separated = separate_zeros_in_block(ctx,\
- zero_number_block, T, V,\
- limitloop=ctx.inf,\
- fp_tolerance=fp_tolerance)
- n = count_to(ctx, t, T, V)
- ctx.prec = wpinitial
- return n+n1+1
- @defun_wrapped
- def backlunds(ctx, t):
- r"""
- 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
- """
- return ctx.nzeros(t)-1-ctx.siegeltheta(t)/ctx.pi
- """
- _ROSSER_EXCEPTIONS is a list of all exceptions to
- Rosser's rule for n <= 400 000 000.
- Alternately the entry is of type [n,m], or a string.
- The string is the zero pattern of the Block and the relevant
- adjacent. For example (010)3 corresponds to a block
- composed of three Gram intervals, the first ant third without
- a zero and the intermediate with a zero. The next Gram interval
- contain three zeros. So that in total we have 4 zeros in 4 Gram
- blocks. n and m are the indices of the Gram points of this
- interval of four Gram intervals. The Rosser exception is therefore
- formed by the three Gram intervals that are signaled between
- parenthesis.
- We have included also some Rosser's exceptions beyond n=400 000 000
- that are noted in the literature by some reason.
- The list is composed from the data published in the references:
- R. P. Brent, J. van de Lune, H. J. J. te Riele, D. T. Winter,
- 'On the Zeros of the Riemann Zeta Function in the Critical Strip. II',
- Math. Comp. 39 (1982) 681--688.
- See also Corrigenda in Math. Comp. 46 (1986) 771.
- J. van de Lune, H. J. J. te Riele,
- 'On the Zeros of the Riemann Zeta Function in the Critical Strip. III',
- Math. Comp. 41 (1983) 759--767.
- See also Corrigenda in Math. Comp. 46 (1986) 771.
- J. van de Lune,
- 'Sums of Equal Powers of Positive Integers',
- Dissertation,
- Vrije Universiteit te Amsterdam, Centrum voor Wiskunde en Informatica,
- Amsterdam, 1984.
- Thanks to the authors all this papers and those others that have
- contributed to make this possible.
- """
- _ROSSER_EXCEPTIONS = \
- [[13999525, 13999528], '(00)3',
- [30783329, 30783332], '(00)3',
- [30930926, 30930929], '3(00)',
- [37592215, 37592218], '(00)3',
- [40870156, 40870159], '(00)3',
- [43628107, 43628110], '(00)3',
- [46082042, 46082045], '(00)3',
- [46875667, 46875670], '(00)3',
- [49624540, 49624543], '3(00)',
- [50799238, 50799241], '(00)3',
- [55221453, 55221456], '3(00)',
- [56948779, 56948782], '3(00)',
- [60515663, 60515666], '(00)3',
- [61331766, 61331770], '(00)40',
- [69784843, 69784846], '3(00)',
- [75052114, 75052117], '(00)3',
- [79545240, 79545243], '3(00)',
- [79652247, 79652250], '3(00)',
- [83088043, 83088046], '(00)3',
- [83689522, 83689525], '3(00)',
- [85348958, 85348961], '(00)3',
- [86513820, 86513823], '(00)3',
- [87947596, 87947599], '3(00)',
- [88600095, 88600098], '(00)3',
- [93681183, 93681186], '(00)3',
- [100316551, 100316554], '3(00)',
- [100788444, 100788447], '(00)3',
- [106236172, 106236175], '(00)3',
- [106941327, 106941330], '3(00)',
- [107287955, 107287958], '(00)3',
- [107532016, 107532019], '3(00)',
- [110571044, 110571047], '(00)3',
- [111885253, 111885256], '3(00)',
- [113239783, 113239786], '(00)3',
- [120159903, 120159906], '(00)3',
- [121424391, 121424394], '3(00)',
- [121692931, 121692934], '3(00)',
- [121934170, 121934173], '3(00)',
- [122612848, 122612851], '3(00)',
- [126116567, 126116570], '(00)3',
- [127936513, 127936516], '(00)3',
- [128710277, 128710280], '3(00)',
- [129398902, 129398905], '3(00)',
- [130461096, 130461099], '3(00)',
- [131331947, 131331950], '3(00)',
- [137334071, 137334074], '3(00)',
- [137832603, 137832606], '(00)3',
- [138799471, 138799474], '3(00)',
- [139027791, 139027794], '(00)3',
- [141617806, 141617809], '(00)3',
- [144454931, 144454934], '(00)3',
- [145402379, 145402382], '3(00)',
- [146130245, 146130248], '3(00)',
- [147059770, 147059773], '(00)3',
- [147896099, 147896102], '3(00)',
- [151097113, 151097116], '(00)3',
- [152539438, 152539441], '(00)3',
- [152863168, 152863171], '3(00)',
- [153522726, 153522729], '3(00)',
- [155171524, 155171527], '3(00)',
- [155366607, 155366610], '(00)3',
- [157260686, 157260689], '3(00)',
- [157269224, 157269227], '(00)3',
- [157755123, 157755126], '(00)3',
- [158298484, 158298487], '3(00)',
- [160369050, 160369053], '3(00)',
- [162962787, 162962790], '(00)3',
- [163724709, 163724712], '(00)3',
- [164198113, 164198116], '3(00)',
- [164689301, 164689305], '(00)40',
- [164880228, 164880231], '3(00)',
- [166201932, 166201935], '(00)3',
- [168573836, 168573839], '(00)3',
- [169750763, 169750766], '(00)3',
- [170375507, 170375510], '(00)3',
- [170704879, 170704882], '3(00)',
- [172000992, 172000995], '3(00)',
- [173289941, 173289944], '(00)3',
- [173737613, 173737616], '3(00)',
- [174102513, 174102516], '(00)3',
- [174284990, 174284993], '(00)3',
- [174500513, 174500516], '(00)3',
- [175710609, 175710612], '(00)3',
- [176870843, 176870846], '3(00)',
- [177332732, 177332735], '3(00)',
- [177902861, 177902864], '3(00)',
- [179979095, 179979098], '(00)3',
- [181233726, 181233729], '3(00)',
- [181625435, 181625438], '(00)3',
- [182105255, 182105259], '22(00)',
- [182223559, 182223562], '3(00)',
- [191116404, 191116407], '3(00)',
- [191165599, 191165602], '3(00)',
- [191297535, 191297539], '(00)22',
- [192485616, 192485619], '(00)3',
- [193264634, 193264638], '22(00)',
- [194696968, 194696971], '(00)3',
- [195876805, 195876808], '(00)3',
- [195916548, 195916551], '3(00)',
- [196395160, 196395163], '3(00)',
- [196676303, 196676306], '(00)3',
- [197889882, 197889885], '3(00)',
- [198014122, 198014125], '(00)3',
- [199235289, 199235292], '(00)3',
- [201007375, 201007378], '(00)3',
- [201030605, 201030608], '3(00)',
- [201184290, 201184293], '3(00)',
- [201685414, 201685418], '(00)22',
- [202762875, 202762878], '3(00)',
- [202860957, 202860960], '3(00)',
- [203832577, 203832580], '3(00)',
- [205880544, 205880547], '(00)3',
- [206357111, 206357114], '(00)3',
- [207159767, 207159770], '3(00)',
- [207167343, 207167346], '3(00)',
- [207482539, 207482543], '3(010)',
- [207669540, 207669543], '3(00)',
- [208053426, 208053429], '(00)3',
- [208110027, 208110030], '3(00)',
- [209513826, 209513829], '3(00)',
- [212623522, 212623525], '(00)3',
- [213841715, 213841718], '(00)3',
- [214012333, 214012336], '(00)3',
- [214073567, 214073570], '(00)3',
- [215170600, 215170603], '3(00)',
- [215881039, 215881042], '3(00)',
- [216274604, 216274607], '3(00)',
- [216957120, 216957123], '3(00)',
- [217323208, 217323211], '(00)3',
- [218799264, 218799267], '(00)3',
- [218803557, 218803560], '3(00)',
- [219735146, 219735149], '(00)3',
- [219830062, 219830065], '3(00)',
- [219897904, 219897907], '(00)3',
- [221205545, 221205548], '(00)3',
- [223601929, 223601932], '(00)3',
- [223907076, 223907079], '3(00)',
- [223970397, 223970400], '(00)3',
- [224874044, 224874048], '22(00)',
- [225291157, 225291160], '(00)3',
- [227481734, 227481737], '(00)3',
- [228006442, 228006445], '3(00)',
- [228357900, 228357903], '(00)3',
- [228386399, 228386402], '(00)3',
- [228907446, 228907449], '(00)3',
- [228984552, 228984555], '3(00)',
- [229140285, 229140288], '3(00)',
- [231810024, 231810027], '(00)3',
- [232838062, 232838065], '3(00)',
- [234389088, 234389091], '3(00)',
- [235588194, 235588197], '(00)3',
- [236645695, 236645698], '(00)3',
- [236962876, 236962879], '3(00)',
- [237516723, 237516727], '04(00)',
- [240004911, 240004914], '(00)3',
- [240221306, 240221309], '3(00)',
- [241389213, 241389217], '(010)3',
- [241549003, 241549006], '(00)3',
- [241729717, 241729720], '(00)3',
- [241743684, 241743687], '3(00)',
- [243780200, 243780203], '3(00)',
- [243801317, 243801320], '(00)3',
- [244122072, 244122075], '(00)3',
- [244691224, 244691227], '3(00)',
- [244841577, 244841580], '(00)3',
- [245813461, 245813464], '(00)3',
- [246299475, 246299478], '(00)3',
- [246450176, 246450179], '3(00)',
- [249069349, 249069352], '(00)3',
- [250076378, 250076381], '(00)3',
- [252442157, 252442160], '3(00)',
- [252904231, 252904234], '3(00)',
- [255145220, 255145223], '(00)3',
- [255285971, 255285974], '3(00)',
- [256713230, 256713233], '(00)3',
- [257992082, 257992085], '(00)3',
- [258447955, 258447959], '22(00)',
- [259298045, 259298048], '3(00)',
- [262141503, 262141506], '(00)3',
- [263681743, 263681746], '3(00)',
- [266527881, 266527885], '(010)3',
- [266617122, 266617125], '(00)3',
- [266628044, 266628047], '3(00)',
- [267305763, 267305766], '(00)3',
- [267388404, 267388407], '3(00)',
- [267441672, 267441675], '3(00)',
- [267464886, 267464889], '(00)3',
- [267554907, 267554910], '3(00)',
- [269787480, 269787483], '(00)3',
- [270881434, 270881437], '(00)3',
- [270997583, 270997586], '3(00)',
- [272096378, 272096381], '3(00)',
- [272583009, 272583012], '(00)3',
- [274190881, 274190884], '3(00)',
- [274268747, 274268750], '(00)3',
- [275297429, 275297432], '3(00)',
- [275545476, 275545479], '3(00)',
- [275898479, 275898482], '3(00)',
- [275953000, 275953003], '(00)3',
- [277117197, 277117201], '(00)22',
- [277447310, 277447313], '3(00)',
- [279059657, 279059660], '3(00)',
- [279259144, 279259147], '3(00)',
- [279513636, 279513639], '3(00)',
- [279849069, 279849072], '3(00)',
- [280291419, 280291422], '(00)3',
- [281449425, 281449428], '3(00)',
- [281507953, 281507956], '3(00)',
- [281825600, 281825603], '(00)3',
- [282547093, 282547096], '3(00)',
- [283120963, 283120966], '3(00)',
- [283323493, 283323496], '(00)3',
- [284764535, 284764538], '3(00)',
- [286172639, 286172642], '3(00)',
- [286688824, 286688827], '(00)3',
- [287222172, 287222175], '3(00)',
- [287235534, 287235537], '3(00)',
- [287304861, 287304864], '3(00)',
- [287433571, 287433574], '(00)3',
- [287823551, 287823554], '(00)3',
- [287872422, 287872425], '3(00)',
- [288766615, 288766618], '3(00)',
- [290122963, 290122966], '3(00)',
- [290450849, 290450853], '(00)22',
- [291426141, 291426144], '3(00)',
- [292810353, 292810356], '3(00)',
- [293109861, 293109864], '3(00)',
- [293398054, 293398057], '3(00)',
- [294134426, 294134429], '3(00)',
- [294216438, 294216441], '(00)3',
- [295367141, 295367144], '3(00)',
- [297834111, 297834114], '3(00)',
- [299099969, 299099972], '3(00)',
- [300746958, 300746961], '3(00)',
- [301097423, 301097426], '(00)3',
- [301834209, 301834212], '(00)3',
- [302554791, 302554794], '(00)3',
- [303497445, 303497448], '3(00)',
- [304165344, 304165347], '3(00)',
- [304790218, 304790222], '3(010)',
- [305302352, 305302355], '(00)3',
- [306785996, 306785999], '3(00)',
- [307051443, 307051446], '3(00)',
- [307481539, 307481542], '3(00)',
- [308605569, 308605572], '3(00)',
- [309237610, 309237613], '3(00)',
- [310509287, 310509290], '(00)3',
- [310554057, 310554060], '3(00)',
- [310646345, 310646348], '3(00)',
- [311274896, 311274899], '(00)3',
- [311894272, 311894275], '3(00)',
- [312269470, 312269473], '(00)3',
- [312306601, 312306605], '(00)40',
- [312683193, 312683196], '3(00)',
- [314499804, 314499807], '3(00)',
- [314636802, 314636805], '(00)3',
- [314689897, 314689900], '3(00)',
- [314721319, 314721322], '3(00)',
- [316132890, 316132893], '3(00)',
- [316217470, 316217474], '(010)3',
- [316465705, 316465708], '3(00)',
- [316542790, 316542793], '(00)3',
- [320822347, 320822350], '3(00)',
- [321733242, 321733245], '3(00)',
- [324413970, 324413973], '(00)3',
- [325950140, 325950143], '(00)3',
- [326675884, 326675887], '(00)3',
- [326704208, 326704211], '3(00)',
- [327596247, 327596250], '3(00)',
- [328123172, 328123175], '3(00)',
- [328182212, 328182215], '(00)3',
- [328257498, 328257501], '3(00)',
- [328315836, 328315839], '(00)3',
- [328800974, 328800977], '(00)3',
- [328998509, 328998512], '3(00)',
- [329725370, 329725373], '(00)3',
- [332080601, 332080604], '(00)3',
- [332221246, 332221249], '(00)3',
- [332299899, 332299902], '(00)3',
- [332532822, 332532825], '(00)3',
- [333334544, 333334548], '(00)22',
- [333881266, 333881269], '3(00)',
- [334703267, 334703270], '3(00)',
- [334875138, 334875141], '3(00)',
- [336531451, 336531454], '3(00)',
- [336825907, 336825910], '(00)3',
- [336993167, 336993170], '(00)3',
- [337493998, 337494001], '3(00)',
- [337861034, 337861037], '3(00)',
- [337899191, 337899194], '(00)3',
- [337958123, 337958126], '(00)3',
- [342331982, 342331985], '3(00)',
- [342676068, 342676071], '3(00)',
- [347063781, 347063784], '3(00)',
- [347697348, 347697351], '3(00)',
- [347954319, 347954322], '3(00)',
- [348162775, 348162778], '3(00)',
- [349210702, 349210705], '(00)3',
- [349212913, 349212916], '3(00)',
- [349248650, 349248653], '(00)3',
- [349913500, 349913503], '3(00)',
- [350891529, 350891532], '3(00)',
- [351089323, 351089326], '3(00)',
- [351826158, 351826161], '3(00)',
- [352228580, 352228583], '(00)3',
- [352376244, 352376247], '3(00)',
- [352853758, 352853761], '(00)3',
- [355110439, 355110442], '(00)3',
- [355808090, 355808094], '(00)40',
- [355941556, 355941559], '3(00)',
- [356360231, 356360234], '(00)3',
- [356586657, 356586660], '3(00)',
- [356892926, 356892929], '(00)3',
- [356908232, 356908235], '3(00)',
- [357912730, 357912733], '3(00)',
- [358120344, 358120347], '3(00)',
- [359044096, 359044099], '(00)3',
- [360819357, 360819360], '3(00)',
- [361399662, 361399666], '(010)3',
- [362361315, 362361318], '(00)3',
- [363610112, 363610115], '(00)3',
- [363964804, 363964807], '3(00)',
- [364527375, 364527378], '(00)3',
- [365090327, 365090330], '(00)3',
- [365414539, 365414542], '3(00)',
- [366738474, 366738477], '3(00)',
- [368714778, 368714783], '04(010)',
- [368831545, 368831548], '(00)3',
- [368902387, 368902390], '(00)3',
- [370109769, 370109772], '3(00)',
- [370963333, 370963336], '3(00)',
- [372541136, 372541140], '3(010)',
- [372681562, 372681565], '(00)3',
- [373009410, 373009413], '(00)3',
- [373458970, 373458973], '3(00)',
- [375648658, 375648661], '3(00)',
- [376834728, 376834731], '3(00)',
- [377119945, 377119948], '(00)3',
- [377335703, 377335706], '(00)3',
- [378091745, 378091748], '3(00)',
- [379139522, 379139525], '3(00)',
- [380279160, 380279163], '(00)3',
- [380619442, 380619445], '3(00)',
- [381244231, 381244234], '3(00)',
- [382327446, 382327450], '(010)3',
- [382357073, 382357076], '3(00)',
- [383545479, 383545482], '3(00)',
- [384363766, 384363769], '(00)3',
- [384401786, 384401790], '22(00)',
- [385198212, 385198215], '3(00)',
- [385824476, 385824479], '(00)3',
- [385908194, 385908197], '3(00)',
- [386946806, 386946809], '3(00)',
- [387592175, 387592179], '22(00)',
- [388329293, 388329296], '(00)3',
- [388679566, 388679569], '3(00)',
- [388832142, 388832145], '3(00)',
- [390087103, 390087106], '(00)3',
- [390190926, 390190930], '(00)22',
- [390331207, 390331210], '3(00)',
- [391674495, 391674498], '3(00)',
- [391937831, 391937834], '3(00)',
- [391951632, 391951636], '(00)22',
- [392963986, 392963989], '(00)3',
- [393007921, 393007924], '3(00)',
- [393373210, 393373213], '3(00)',
- [393759572, 393759575], '(00)3',
- [394036662, 394036665], '(00)3',
- [395813866, 395813869], '(00)3',
- [395956690, 395956693], '3(00)',
- [396031670, 396031673], '3(00)',
- [397076433, 397076436], '3(00)',
- [397470601, 397470604], '3(00)',
- [398289458, 398289461], '3(00)',
- #
- [368714778, 368714783], '04(010)',
- [437953499, 437953504], '04(010)',
- [526196233, 526196238], '032(00)',
- [744719566, 744719571], '(010)40',
- [750375857, 750375862], '032(00)',
- [958241932, 958241937], '04(010)',
- [983377342, 983377347], '(00)410',
- [1003780080, 1003780085], '04(010)',
- [1070232754, 1070232759], '(00)230',
- [1209834865, 1209834870], '032(00)',
- [1257209100, 1257209105], '(00)410',
- [1368002233, 1368002238], '(00)230'
- ]
|