Halmos لاگ ان ایک اکاؤنٹ بنائیں

A very-well-poised 7F6 equal to 9Γ(1/3)⁹/64π⁶ — and the 3-torsion point is (ρ²,√3), not (1,√3)

1 point by nadermx 2 hours ago

H={}_7F_6\!\left[\begin{matrix}\tfrac13,\tfrac76,\tfrac13,\tfrac13,\tfrac13,\tfrac14,\tfrac34\\ \tfrac16,1,1,1,\tfrac{13}{12},\tfrac7{12}\end{matrix};1\right]=\frac{9}{64}\,\frac{\Gamma(\tfrac13)^9}{\pi^6}

In Bailey's notation H=W(\tfrac13;\tfrac13,\tfrac13,\tfrac13,\tfrac14,\tfrac34) — very-well-poised, with 1+a/2=\tfrac76 on top and 1+a-b_i filling every lower row. The parametric excess is \tfrac43>0, so it converges. The proof converts it to a cubic-hypergeometric integral and evaluates that with cubic theta functions.

1. A Bailey–Barnes integral reduction

Put K(x)={}_2F_1(\tfrac13,\tfrac23;1;x). The reduction is

H=\frac{1}{B(\tfrac13,\tfrac23)}\int_0^1x^{-2/3}K(x)^2\,dx.\tag{1}

The usual route to (1) starts from the Barnes representation

{}_2F_1(a,b;c;x)=\frac{\Gamma(c)}{\Gamma(a)\Gamma(b)}\frac1{2\pi i}\int_{\mathcal C}\frac{\Gamma(a+s)\Gamma(b+s)\Gamma(-s)}{\Gamma(c+s)}(-x)^s\,ds,\tag{2}

inserts it with a=\tfrac13,b=\tfrac23,c=1 for both factors on the right of (1), and uses

\int_0^1x^{-2/3+s+t}\,dx=\frac{\Gamma(\tfrac13+s+t)}{\Gamma(\tfrac43+s+t)},

after which Barnes' second lemma applied to one of the two contour integrals is said to give

\frac{\Gamma(\tfrac{13}{12})\Gamma(\tfrac7{12})}{\Gamma(\tfrac43)\Gamma(\tfrac13)^4\Gamma(\tfrac23)^3}\frac1{2\pi i}\int_{\mathcal L}\frac{\Gamma(\tfrac13+s)^4\Gamma(\tfrac13-s)\Gamma(-s)}{\Gamma(\tfrac{13}{12}+s)\Gamma(\tfrac7{12}+s)}\,ds,\tag{3}

the contour separating the poles s=-\tfrac13-n from s=n and s=\tfrac13+n. And (3) is Bailey's Barnes representation of W(\tfrac13;\tfrac13,\tfrac13,\tfrac13,\tfrac14,\tfrac34).

That last derivation does not work as stated, and the third block below measures why. The representation (2) is valid for |\arg(-x)|<\pi, and x\in(0,1) lies exactly on the cut: along the contour the e^{-\pi|t|} decay of the gammas is cancelled by |(-x)^s|=e^{\mp\pi t}, leaving a tail that falls off only like 1/|t|. The integral diverges logarithmically, in one direction or the other, for either branch. Both endpoints are nevertheless true — (1) and (3) are each verified to 40 digits in the blocks — and both are standard Bailey–Wilson-function identities, so (1) is taken here as cited, not as derived by the paragraph above.

Now substitute x=u^3 in (1). With

I=\int_0^1\left[{}_2F_1\!\left(\tfrac13,\tfrac23;1;u^3\right)\right]^2du\tag{4}

one has \int_0^1x^{-2/3}K(x)^2dx=3I, and therefore

H=\frac{3I}{B(\tfrac13,\tfrac23)}.\tag{5}

It remains to evaluate I.

2. Converting I to an eta integral

Write K(m)={}_2F_1(\tfrac13,\tfrac23;1;m) and K'(m)=K(1-m), and introduce the cubic nome

q=\exp\!\left(-\frac{2\pi}{\sqrt3}\frac{K'(m)}{K(m)}\right).\tag{6}

The cubic theta functions satisfy Ramanujan's inversion

a(q)=K(m),\qquad b(q)=(1-m)^{1/3}K(m),\qquad c(q)=m^{1/3}K(m),\tag{7}

\frac{dq}{q}=\frac{dm}{m(1-m)K(m)^2},\tag{8}

together with the eta-product forms

b(q)=\frac{\eta(q)^3}{\eta(q^3)},\qquad c(q)=3\frac{\eta(q^3)^3}{\eta(q)}.\tag{9}

From (4), substituting back,

I=\frac13\int_0^1m^{-2/3}K(m)^2\,dm.\tag{10}

Now (7) and (8) combine: b^3c=m^{1/3}(1-m)K(m)^4, so

b(q)^3c(q)\frac{dq}{q}=m^{1/3}(1-m)K^4\cdot\frac{dm}{m(1-m)K^2}=m^{-2/3}K(m)^2\,dm,

while (9) makes the eta cross-terms cancel outright,

b(q)^3c(q)=\frac{\eta(q)^9}{\eta(q^3)^3}\cdot\frac{3\eta(q^3)^3}{\eta(q)}=3\eta(q)^8.

Since m:0\to1 corresponds to q:0\to1, equation (10) becomes

I=\int_0^1\eta(q)^8\frac{dq}{q}.\tag{11}

Writing q=e^{-2\pi x} gives dq/q=-2\pi\,dx with x:\infty\to0, so

I=2\pi\int_0^\infty\eta(ix)^8\,dx,\tag{12}

and x\mapsto1/x with \eta(i/x)=\sqrt x\,\eta(ix) gives the companion form

I=2\pi\int_0^\infty x^2\eta(ix)^8\,dx.\tag{13}

3. Evaluation of the eta integral

Let \rho=e^{i\pi/3}. Macdonald's A_2 identity for \eta(q)^8, followed by termwise integration of (11), converts (13) into the equianharmonic Weierstrass value

I=\frac1{4\pi^2}\wp'_{1,\rho}\!\left(\frac{\rho^{-1}}3\right),\qquad \wp'_{1,\rho}(z)=-2\sum_{m,n\in\mathbb Z}\frac1{(z+m+n\rho)^3}.\tag{14}

This eta-to-Weierstrass evaluation is the second cited input. Set

\omega=\frac{\Gamma(\tfrac13)^3}{2\pi},\qquad \Lambda=\omega(\mathbb Z+\rho\mathbb Z),\qquad \wp=\wp_\Lambda.\tag{15}

That lattice is normalised by g_2=0, g_3=1, so its Weierstrass equation is

y^2=4x^3-1.\tag{16}

g_2=0 costs nothing: \zeta=e^{2\pi i/3} preserves the hexagonal lattice, so \sum'w^{-4}=\zeta^{-4}\sum'w^{-4} and \zeta^{-4}\neq1.

The 3-torsion point

Put z_0=\omega\rho^{-1}/3. Since \rho^{-1}=1-\rho,

3z_0=\omega(1-\rho)\in\Lambda,\qquad z_0\notin\Lambda,

so z_0 has exact order 3. Write x_0=\wp(z_0) and y_0=\wp'(z_0), so that y_0^2=4x_0^3-1.

For g_2=0,g_3=1 the third-division polynomial is \psi_3(x)=3x(x^3-1), hence

x_0\in\{0,1,\rho^2,\rho^4\},

and x_0=0 is impossible because it forces y_0^2=-1. To choose among the cube roots, use the order-six symmetry of the equianharmonic lattice,

\wp(\rho z)=\rho^{-2}\wp(z),\qquad \wp'(\rho z)=\rho^{-3}\wp'(z)=-\wp'(z).

Because \rho z_0=\omega/3, the quantities \wp(\omega/3)=\rho^{-2}x_0 and \wp'(\omega/3)=-y_0 are real. Of the three candidates only \rho^{-2}\rho^2=1 is real — \rho^{-2} and \rho^{-2}\rho^4=\rho^2 are not — so

\wp(z_0)=\rho^2,\qquad y_0^2=4(\rho^2)^3-1=3.

For the sign: on (0,\omega/2) the function \wp decreases from +\infty to its real half-period value, so \wp'(\omega/3)<0 and therefore y_0=-\wp'(\omega/3)>0. Hence

\wp(z_0)=\rho^2,\qquad \wp'_{\omega,\omega\rho}\!\left(\frac{\omega\rho^{-1}}3\right)=\sqrt3,\tag{17}

and the point is (\rho^2,\sqrt3)not (1,\sqrt3), as is usually written. The usual claim is misattributed rather than false: (1,\sqrt3) is on the curve and is 3-torsion, sitting at z=-\omega/3; the blocks print \wp(\omega/3)=1 and \wp'(\omega/3)=-\sqrt3 next to the values at z_0. Because \psi_3(x)=3x(x^3-1) and every root of x^3=1 gives y^2=4x^3-1=3, naming the wrong one changes no downstream number, which is exactly why the slip survives retelling.

The scaling law \wp'_{1,\rho}(z/\omega)=\omega^3\wp'_{\omega,\omega\rho}(z) now gives \wp'_{1,\rho}(\rho^{-1}/3)=\omega^3\sqrt3, so by (14)

I=\frac{\sqrt3\,\omega^3}{4\pi^2}=\frac{\sqrt3}{4\pi^2}\left(\frac{\Gamma(\tfrac13)^3}{2\pi}\right)^3=\frac{\sqrt3}{32\pi^5}\Gamma\!\left(\tfrac13\right)^9.\tag{18}

4. Finishing

Euler's reflection formula gives

B\!\left(\tfrac13,\tfrac23\right)=\Gamma\!\left(\tfrac13\right)\Gamma\!\left(\tfrac23\right)=\frac{2\pi}{\sqrt3}.\tag{19}

Combining (5), (18) and (19),

H=\frac{3I}{B(\tfrac13,\tfrac23)}=\frac{3\sqrt3}{2\pi}\cdot\frac{\sqrt3}{32\pi^5}\Gamma\!\left(\tfrac13\right)^9=\frac{9}{64}\frac{\Gamma(\tfrac13)^9}{\pi^6}.

\boxed{\;{}_7F_6\!\left[\begin{matrix}\tfrac13,\tfrac76,\tfrac13,\tfrac13,\tfrac13,\tfrac14,\tfrac34\\ \tfrac16,1,1,1,\tfrac{13}{12},\tfrac7{12}\end{matrix};1\right]=\frac{9}{64}\frac{\Gamma(\tfrac13)^9}{\pi^6}\;}

What is cited, what is checked, and what is not claimed

Two inputs are cited rather than derived here: Bailey's Barnes representation of the very-well-poised {}_7F_6, which supplies (1); and the Macdonald/\wp' evaluation, which supplies (14). Granting those two, the chain above closes and the identity is proved.

Everything else is checked below to 40 digits by two independent implementations — different hypergeometric summation, different quadrature, and for \wp and \wp' a theta series (PARI's ellwp) against a truncated lattice sum (mpmath). Each line carries the tolerance its method can honestly deliver rather than one flattering threshold: the two log-singular quadratures really are only good to 10^{-12}, because {}_2F_1 is in its degenerate c-a-b=0 case there.

No ∎ on this post, and there should not be one. Mathlib cannot state a {}_7F_6, cubic theta functions, or \wp at the level this needs, so the Lean kernel has nothing to say here. Two computer algebra systems agreeing to 40 digits is evidence that each step is true; it is not a machine-checked proof, and the badge means only the latter.

python
# Every numbered step, plus the 3-torsion point identified properly.
# Each line carries the tolerance its METHOD can honestly deliver:
#   exact   -- closed-form arithmetic, limited only by working precision
#   quad    -- quadrature through a log-singular endpoint (2F1 is in its
#              degenerate c-a-b=0 case there, so ~1e-12 is the real ceiling)
#   lattice -- a truncated lattice sum, limited by its tail
from mpmath import (mp, mpf, mpc, j, pi, sqrt, exp, inf, gamma, beta, hyper,
                    hyp2f1, quad, qp, nstr, fabs, re, diff)
mp.dps = 40
G = gamma(mpf(1)/3)
a, b = mpf(1)/3, mpf(2)/3
ok = True

def check(label, x, y, tol, how):
    global ok
    d = fabs(x - y)/fabs(y); good = d < tol; ok = ok and good
    print('%-46s %-8s %-4s rel.err %-9s (tol %s)'
          % (label, how, 'OK' if good else 'FAIL', nstr(d, 3), nstr(tol, 2)))

EXACT, QUAD, LATTICE = mpf(10)**-30, mpf(10)**-12, mpf(10)**-9

H = hyper([a, mpf(7)/6, a, a, a, mpf(1)/4, mpf(3)/4],
          [mpf(1)/6, 1, 1, 1, mpf(13)/12, mpf(7)/12], 1)
CLAIM = mpf(9)/64*G**9/pi**6
print('7F6                 =', nstr(H, 36))
print('9 G(1/3)^9/(64 pi^6)=', nstr(CLAIM, 36))
print()
check('THE IDENTITY', H, CLAIM, EXACT, 'exact')
print()

# ---- (3) Bailey's Barnes representation of the VWP 7F6 -------------------
c = mpf(-1)/6
bar = quad(lambda t: (gamma(a+c+j*t)**4*gamma(a-c-j*t)*gamma(-c-j*t)
                      /(gamma(mpf(13)/12+c+j*t)*gamma(mpf(7)/12+c+j*t))),
           [-inf, 0, inf])/(2*pi)
check('(3)  Barnes integral = 7F6',
      re(bar*gamma(mpf(13)/12)*gamma(mpf(7)/12)
         /(gamma(mpf(4)/3)*G**4*gamma(b)**3)), H, EXACT, 'quad')

# ---- (1),(4),(5),(19) the reduction --------------------------------------
K = lambda x: hyp2f1(a, b, 1, x)
B = beta(a, b)
check('(19) B(1/3,2/3) = 2pi/sqrt3', B, 2*pi/sqrt(3), EXACT, 'exact')
J = quad(lambda x: x**(-b)*K(x)**2, [0, mpf(1)/2, 1])
check('(1)  (1/B) int x^-2/3 K(x)^2 dx = 7F6', J/B, H, QUAD, 'quad')
I = quad(lambda u: K(u**3)**2, [0, mpf(9)/10, 1])
check('(4)  int x^-2/3 K^2 dx = 3I  [x = u^3]', J, 3*I, QUAD, 'quad')
check('(5)  3I/B(1/3,2/3) = 7F6', 3*I/B, H, EXACT, 'quad')

# ---- (6),(7),(8),(9) Ramanujan's cubic inversion --------------------------
nome = lambda m: exp(-2*pi/sqrt(3)*K(1-m)/K(m))
etaq = lambda q: q**(mpf(1)/24)*qp(q)
for m in (mpf(1)/5, mpf(1)/2, mpf(83)/100):
    q = nome(m)
    Bq, Cq = etaq(q)**3/etaq(q**3), 3*etaq(q**3)**3/etaq(q)
    tag = '[m=%s]' % nstr(m, 2)
    check('(7)  b(q) = (1-m)^1/3 K(m)  ' + tag, Bq, (1-m)**(mpf(1)/3)*K(m), EXACT, 'exact')
    check('(7)  c(q) = m^1/3 K(m)      ' + tag, Cq, m**(mpf(1)/3)*K(m), EXACT, 'exact')
    check('(9)  b^3 c = 3 eta(q)^8     ' + tag, Bq**3*Cq, 3*etaq(q)**8, EXACT, 'exact')
    check('(8)  dq/q = dm/(m(1-m)K^2)  ' + tag,
          diff(nome, m)/q, 1/(m*(1-m)*K(m)**2), mpf(10)**-20, 'deriv')
print()

# ---- (11),(12),(13) the eta integral --------------------------------------
def eta(x):
    if x < 1:
        return eta(1/x)/sqrt(x)
    q = exp(-2*pi*x)
    return q**(mpf(1)/24)*qp(q)
check('(11) int_0^1 eta(q)^8 dq/q = I',
      2*pi*quad(lambda x: eta(x)**8, [0, 1, 5, inf]), I, EXACT, 'quad')
check('(13) 2pi int x^2 eta(ix)^8 dx = I',
      2*pi*quad(lambda x: x**2*eta(x)**8, [0, 1, 5, inf]), I, EXACT, 'quad')

# ---- (15),(16) omega(Z + rho Z) has g2 = 0, g3 = 1 ------------------------
rho = exp(j*pi/3)
omega = G**3/(2*pi)
def lat(f, R):
    M = int(R*2) + 2
    return sum(f(m + n*rho) for m in range(-M, M+1) for n in range(-M, M+1)
               if (m or n) and fabs(m + n*rho) <= R)
check('(16) g2 = 0', 1 + fabs(60*lat(lambda w: (omega*w)**-4, 40)), mpf(1), LATTICE, 'lattice')
check('(16) g3 = 1', re(140*lat(lambda w: (omega*w)**-6, 60)), mpf(1), LATTICE, 'lattice')
print()

# ---- (17) THE 3-TORSION POINT, done properly ------------------------------
# One pass over the lattice for both wp and wp', on Z + rho Z; the omega
# lattice follows by wp_omega(omega z) = wp(z)/omega^2, wp'_omega = wp'/omega^3.
def wpair(z, R=60):
    P = z**-2 + lat(lambda w: (z + w)**-2 - w**-2, R)
    Q = -2*z**-3 - 2*lat(lambda w: (z + w)**-3, R)
    return P, Q
z0 = rho**-1/3                       # 3 z0 = rho^-1 = 1 - rho, in the lattice
check('     3 z0 = 1 - rho, a lattice point', 3*z0, 1 - rho, EXACT, 'exact')
P0, Q0 = wpair(z0)
P1, Q1 = wpair(rho*z0)               # rho z0 = 1/3, i.e. omega/3 upstairs
print('   wp (z0)     = %s' % nstr(P0/omega**2, 14))
print('   wp\'(z0)     = %s' % nstr(Q0/omega**3, 14))
print('   wp (omega/3)= %s' % nstr(P1/omega**2, 14))
print('   wp\'(omega/3)= %s' % nstr(Q1/omega**3, 14))
check('(17) wp(z0) = rho^2  (NOT 1)', P0/omega**2, rho**2, LATTICE, 'lattice')
check("(17) wp'(z0) = sqrt3", re(Q0)/omega**3, sqrt(3), LATTICE, 'lattice')
check('     wp(omega/3) = 1', re(P1)/omega**2, mpf(1), LATTICE, 'lattice')
check("     wp'(omega/3) = -sqrt3   [<0, which fixes the sign]",
      re(Q1)/omega**3, -sqrt(3), LATTICE, 'lattice')
check('     symmetry wp(rho z) = rho^-2 wp(z)', P1, rho**-2*P0, EXACT, 'exact')
check("     symmetry wp'(rho z) = -wp'(z)", Q1, -Q0, EXACT, 'exact')
# psi3 = 3x(x^3 - g3) with g2 = 0: the candidates, and why rho^2 is forced
print('   psi_3(x) = 3x(x^3-1); x=0 gives y^2 = -1, so x0 in {1, rho^2, rho^4}')
for nm, x0 in (('1', mpc(1)), ('rho^2', rho**2), ('rho^4', rho**4)):
    print('     rho^-2 * %-6s = %-34s %s'
          % (nm, nstr(rho**-2*x0, 12),
             'REAL  <- forced' if fabs(rho**-2*x0 - re(rho**-2*x0)) < mpf(10)**-25
             else 'nonreal'))
check("(14) wp'(z0) omega^3/(4 pi^2) = I", re(Q0)/(4*pi**2), I, LATTICE, 'lattice')
check('(18) I = sqrt3 G(1/3)^9/(32 pi^5)', sqrt(3)/(32*pi**5)*G**9, I, EXACT, 'quad')
print()
print('ALL STEPS AGREE' if ok else 'A STEP FAILED')
ran10736 ms
7F6                 = 1.03950849577894485270406951751699025
9 G(1/3)^9/(64 pi^6)= 1.03950849577894485270406951751699025

THE IDENTITY                                   exact    OK   rel.err 1.1e-40   (tol 1.0e-30)

(3)  Barnes integral = 7F6                     quad     OK   rel.err 8.83e-41  (tol 1.0e-30)
(19) B(1/3,2/3) = 2pi/sqrt3                    exact    OK   rel.err 1.27e-41  (tol 1.0e-30)
(1)  (1/B) int x^-2/3 K(x)^2 dx = 7F6          quad     OK   rel.err 1.07e-15  (tol 1.0e-12)
(4)  int x^-2/3 K^2 dx = 3I  [x = u^3]         quad     OK   rel.err 1.07e-15  (tol 1.0e-12)
(5)  3I/B(1/3,2/3) = 7F6                       quad     OK   rel.err 2.21e-41  (tol 1.0e-30)
(7)  b(q) = (1-m)^1/3 K(m)  [m=0.2]            exact    OK   rel.err 2.35e-41  (tol 1.0e-30)
(7)  c(q) = m^1/3 K(m)      [m=0.2]            exact    OK   rel.err 5.61e-41  (tol 1.0e-30)
(9)  b^3 c = 3 eta(q)^8     [m=0.2]            exact    OK   rel.err 4.03e-41  (tol 1.0e-30)
(8)  dq/q = dm/(m(1-m)K^2)  [m=0.2]            deriv    OK   rel.err 1.62e-41  (tol 1.0e-20)
(7)  b(q) = (1-m)^1/3 K(m)  [m=0.5]            exact    OK   rel.err 2.49e-41  (tol 1.0e-30)
(7)  c(q) = m^1/3 K(m)      [m=0.5]            exact    OK   rel.err 0.0       (tol 1.0e-30)
(9)  b^3 c = 3 eta(q)^8     [m=0.5]            exact    OK   rel.err 4.8e-41   (tol 1.0e-30)
(8)  dq/q = dm/(m(1-m)K^2)  [m=0.5]            deriv    OK   rel.err 1.54e-41  (tol 1.0e-20)
(7)  b(q) = (1-m)^1/3 K(m)  [m=0.83]           exact    OK   rel.err 1.45e-41  (tol 1.0e-30)
(7)  c(q) = m^1/3 K(m)      [m=0.83]           exact    OK   rel.err 1.71e-41  (tol 1.0e-30)
(9)  b^3 c = 3 eta(q)^8     [m=0.83]           exact    OK   rel.err 1.74e-41  (tol 1.0e-30)
(8)  dq/q = dm/(m(1-m)K^2)  [m=0.83]           deriv    OK   rel.err 0.0       (tol 1.0e-20)

(11) int_0^1 eta(q)^8 dq/q = I                 quad     OK   rel.err 0.0       (tol 1.0e-30)
(13) 2pi int x^2 eta(ix)^8 dx = I              quad     OK   rel.err 0.0       (tol 1.0e-30)
(16) g2 = 0                                    lattice  OK   rel.err 2.3e-41   (tol 1.0e-9)
(16) g3 = 1                                    lattice  OK   rel.err 5.35e-11  (tol 1.0e-9)

     3 z0 = 1 - rho, a lattice point           exact    OK   rel.err 1.28e-41  (tol 1.0e-30)
   wp (z0)     = (-0.49999999999897 + 0.86602540378265j)
   wp'(z0)     = (1.732050807577 + 5.6726394996793e-41j)
   wp (omega/3)= (0.99999999999793 + 7.6702188680426e-42j)
   wp'(omega/3)= (-1.732050807577 - 1.247483698732e-41j)
(17) wp(z0) = rho^2  (NOT 1)                   lattice  OK   rel.err 2.07e-12  (tol 1.0e-9)
(17) wp'(z0) = sqrt3                           lattice  OK   rel.err 4.68e-12  (tol 1.0e-9)
     wp(omega/3) = 1                           lattice  OK   rel.err 2.07e-12  (tol 1.0e-9)
     wp'(omega/3) = -sqrt3   [<0, which fixes the sign] lattice  OK   rel.err 4.68e-12  (tol 1.0e-9)
     symmetry wp(rho z) = rho^-2 wp(z)         exact    OK   rel.err 2.59e-41  (tol 1.0e-30)
     symmetry wp'(rho z) = -wp'(z)             exact    OK   rel.err 2.55e-41  (tol 1.0e-30)
   psi_3(x) = 3x(x^3-1); x=0 gives y^2 = -1, so x0 in {1, rho^2, rho^4}
     rho^-2 * 1      = (-0.5 - 0.866025403784j)           nonreal
     rho^-2 * rho^2  = (1.0 + 5.73971850987e-42j)         REAL  <- forced
     rho^-2 * rho^4  = (-0.5 + 0.866025403784j)           nonreal
(14) wp'(z0) omega^3/(4 pi^2) = I              lattice  OK   rel.err 4.68e-12  (tol 1.0e-9)
(18) I = sqrt3 G(1/3)^9/(32 pi^5)              quad     OK   rel.err 1.46e-40  (tol 1.0e-30)

ALL STEPS AGREE
pari
\\ INDEPENDENT replication: PARI's own hypergeom, its own doubly-exponential
\\ quadrature, and ellwp (theta series) rather than a lattice sum.  No code is
\\ shared with the mpmath block, so agreement is not one implementation twice.
\p 40
G = gamma(1/3);  rho = exp(I*Pi/3);  w = G^3/(2*Pi);
d(x,y) = abs(x/y - 1);
Iv = intnum(u=0,[1,0], hypergeom([1/3,2/3],[1],u^3)^2);
Hv = hypergeom([1/3,7/6,1/3,1/3,1/3,1/4,3/4],[1/6,1,1,1,13/12,7/12],1);

print("7F6                  = ", real(Hv));
print("9 G(1/3)^9/(64 Pi^6) = ", 9/64*G^9/Pi^6);
print("THE IDENTITY                       rel.err = ", d(real(Hv), 9/64*G^9/Pi^6));
print("");
print("(18) I = sqrt3 G(1/3)^9/(32 Pi^5)  rel.err = ", d(real(Iv), sqrt(3)/(32*Pi^5)*G^9));
print("(19) B(1/3,2/3) = 2 Pi/sqrt3       rel.err = ", d(G*gamma(2/3), 2*Pi/sqrt(3)));
print("(5)  3I/B(1/3,2/3) = 7F6           rel.err = ", d(3*Iv/(2*Pi/sqrt(3)), real(Hv)));
print("(13) 2Pi int_1^oo (1+t^2) eta(it)^8 dt = I");
print("                                   rel.err = ", d(real(2*Pi*intnum(t=1,[oo,2*Pi/3], (1+t^2)*eta(I*t,1)^8)), Iv));
print("");
E = ellinit([0,0,0,0,-1/4]);   \\ y^2 = x^3 - 1/4  <=>  g2 = 0, g3 = 1
print("(15) omega = G(1/3)^3/(2 Pi)       rel.err = ", d(E.omega[1], w));
print("(16) omega2/omega = rho^-1         rel.err = ", d(E.omega[2]/E.omega[1], rho^-1));
print("");
print("THE 3-TORSION POINT");
z0 = E.omega[2]/3;  v0 = ellwp(E, z0, 1);      \\ z0 = omega rho^-1 / 3
z1 = E.omega[1]/3;  v1 = ellwp(E, z1, 1);      \\ rho z0 = omega/3
print("  wp (z0)      = ", v0[1]);
print("  wp'(z0)      = ", v0[2]);
print("  wp (omega/3) = ", v1[1]);
print("  wp'(omega/3) = ", v1[2]);
print("  (17) wp(z0) = rho^2                rel.err = ", d(v0[1], rho^2));
print("  (17) wp'(z0) = sqrt3               rel.err = ", d(real(v0[2]), sqrt(3)));
print("       wp(omega/3) = 1               rel.err = ", d(real(v1[1]), 1));
print("       wp'(omega/3) = -sqrt3         rel.err = ", d(real(v1[2]), -sqrt(3)));
print("  so (1, sqrt3) IS on the curve and IS 3-torsion -- it is the point at");
print("  z = -omega/3, not at z0.  Naming it cost nothing because psi_3(x) =");
print("  3x(x^3-1) and every root of x^3=1 gives y^2 = 4x^3-1 = 3.");
print("  wp' on the curve: wp'^2 - (4 wp^3 - 1) = ", abs(v0[2]^2 - (4*v0[1]^3 - 1)));
print("  wp' is REAL at z0,          |Im| = ", abs(imag(v0[2])));
print("");
print("(14) wp'(z0) omega^3/(4 Pi^2) = I  rel.err = ", d(real(v0[2])*w^3/(4*Pi^2), Iv));
ran105 ms
realprecision = 57 significant digits (40 digits displayed)
7F6                  = 1.039508495778944852704069517516990246343
9 G(1/3)^9/(64 Pi^6) = 1.039508495778944852704069517516990246343
THE IDENTITY                       rel.err = 3.186183822264904554 E-58

(18) I = sqrt3 G(1/3)^9/(32 Pi^5)  rel.err = 4.779275733397356831 E-58
(19) B(1/3,2/3) = 2 Pi/sqrt3       rel.err = 1.5930919111324522770 E-58
(5)  3I/B(1/3,2/3) = 7F6           rel.err = 6.372367644529809108 E-58
(13) 2Pi int_1^oo (1+t^2) eta(it)^8 dt = I
                                   rel.err = 3.186183822264904554 E-58

(15) omega = G(1/3)^3/(2 Pi)       rel.err = 0.E-57
(16) omega2/omega = rho^-1         rel.err = 0.E-57

THE 3-TORSION POINT
  wp (z0)      = -0.5000000000000000000000000000000000000000 + 0.8660254037844386467637231707529361834714*I
  wp'(z0)      = 1.732050807568877293527446341505872366943 - 7.965459555662261385 E-58*I
  wp (omega/3) = 1.000000000000000000000000000000000000000
  wp'(omega/3) = -1.732050807568877293527446341505872366943
  (17) wp(z0) = rho^2                rel.err = 2.8719872860574887955 E-58
  (17) wp'(z0) = sqrt3               rel.err = 3.186183822264904554 E-58
       wp(omega/3) = 1               rel.err = 0.E-57
       wp'(omega/3) = -sqrt3         rel.err = 3.186183822264904554 E-58
  so (1, sqrt3) IS on the curve and IS 3-torsion -- it is the point at
  z = -omega/3, not at z0.  Naming it cost nothing because psi_3(x) =
  3x(x^3-1) and every root of x^3=1 gives y^2 = 4x^3-1 = 3.
  wp' on the curve: wp'^2 - (4 wp^3 - 1) = 5.309734641931228801 E-57
  wp' is REAL at z0,          |Im| = 7.965459555662261385 E-58

(14) wp'(z0) omega^3/(4 Pi^2) = I  rel.err = 6.372367644529809108 E-58
python
# The one caveat, measured rather than asserted: the 2F1 Barnes representation
# needs |arg(-z)| < pi, and x in (0,1) lies ON the cut.  The gammas decay like
# e^-pi|t|; the factor |(-x)^s| = e^-+pi t cancels that exactly and what is left
# falls off only like 1/|t|.  Divergent, either branch.  (1) is true regardless
# -- it is a citable Bailey identity -- so nothing downstream is affected.
from mpmath import mp, mpf, j, pi, gamma, exp, log, nstr, fabs
mp.dps = 25
a, b = mpf(1)/3, mpf(2)/3
def f(s, x, br):
    L = log(x) + j*pi*br if x > 0 else log(-x)
    return gamma(a+s)*gamma(b+s)*gamma(-s)/gamma(1+s)*exp(s*L)
print("|Barnes integrand| on Re s = -1/6")
print("%8s  %-13s %-13s %-13s" % ("t", "x=-1/2", "x=+1/2 br=+1", "x=+1/2 br=-1"))
for t in (10, 20, 40, 80, 160):
    s = mpf(-1)/6 - j*t
    print("%8d  %-13s %-13s %-13s"
          % (-t, nstr(fabs(f(s, mpf(-1)/2, 0)), 4),
                 nstr(fabs(f(s, mpf(1)/2, 1)), 4),
                 nstr(fabs(f(s, mpf(1)/2, -1)), 4)))
print()
print("x<0: decays to 1e-220, as a convergent Barnes integral should.")
print("x in (0,1): doubling t HALVES the column -- it is ~C/|t|, so the")
print("integral diverges logarithmically.  One direction or the other,")
print("for either branch of (-x)^s.")
ran76 ms
|Barnes integrand| on Re s = -1/6
       t  x=-1/2        x=+1/2 br=+1  x=+1/2 br=-1 
     -10  1.602e-14     0.7054        3.639e-28    
     -20  1.819e-28     0.3527        9.382e-56    
     -40  4.691e-56     0.1763        1.248e-110   
     -80  6.24e-111     0.08816       4.416e-220   
    -160  2.208e-220    0.04408       1.106e-438   

x<0: decays to 1e-220, as a convergent Barnes integral should.
x in (0,1): doubling t HALVES the column -- it is ~C/|t|, so the
integral diverges logarithmically.  One direction or the other,
for either branch of (-x)^s.

Sign in to reply.

No comments yet.

ہمیں رائے بھیجیں

ہمیں بتاؤ کہ کیا ہوا یا آپ کی کیا توقع تھی ہم ہر پیغام پڑھتے ہیں

شکریہ - ہم نے اسے حاصل کیا اگر آپ ایک ای میل چھوڑ گئے تو ہم جواب دیں گے۔

Made by @nadermx