The Icosahedral Equation#
By now, it should be clear that — given an arbitrary quintic equation — it’s possible to massage this quintic into a form that can be used to easily determine the roots: first one passes from the general quintic to a corresponding “principal quintic” with roots given by
where
for some
from sympy import Function, symbols
a, b, c, z = symbols("a b c z")
f = Function("f")
g = Function("g")
phi = Function("phi")
from sympy import diff, dsolve
result = dsolve(2 * diff(phi(z), z) + (c - (a + b + 1) * z) / z / (1 - z), phi(z))
result.rhs
from sympy import simplify
expr = (
z * (1 - z) * (diff(phi(z), z, z) + diff(phi(z), z) ** 2)
+ diff(phi(z), z) * (c - (a + b + 1) * z)
- a * b
)
simplify(expr.subs(phi(z), result.rhs).doit()).factor()
from sympy import exp
hypergeom = (
diff(f(z), z, z)
+ (c - (a + b + 1) * z) / z / (1 - z) * diff(f(z), z)
- a * b * f(z) / z / (1 - z)
)
diffterm = hypergeom.subs(f(z), exp(phi(z)) * g(z)).doit().expand().coeff(
diff(g(z), z)
) / exp(phi(z))
simplify(diffterm)
hypergeom
result = dsolve(diffterm, phi(z))
result.rhs
expr2 = simplify(
hypergeom.subs(f(z), exp(result.rhs) * g(z)).doit() / exp(result.rhs)
).expand()
expr2
simplify(expr2.coeff(diff(g(z), z, z)))
from sympy import fraction
simplify(expr2.coeff(g(z))).factor()
num, denom = fraction(_)
num
denom
num.collect(z)
num.collect(a)
num.collect(c)
from sympy import Eq, Rational, hyper, oo, real_root, solve
w = symbols("w")
def get_soln(sg1, sg2, sg3, exp_pt):
a, b, c = symbols("a b c")
eq1 = Eq(c - a - b, sg1 * Rational(1, 2))
eq2 = Eq(1 - c, sg2 * Rational(1, 3))
eq3 = Eq(a - b, sg3 * Rational(1, 5))
solns = solve([eq1, eq2, eq3], [a, b, c])
a = solns[a]
b = solns[b]
c = solns[c]
coeff = 1 / real_root(1728, 5)
print(a, b, c)
if exp_pt == 0:
return (
lambda z: coeff
* hyper([a, b], [c], z)
/ (z ** (1 - c) * hyper([1 + a - c, 1 + b - c], [2 - c], z))
)
elif exp_pt == 1:
num = lambda z: hyper([a, b], [1 + a + b - c], 1 - z)
denom = lambda z: (1 - z) ** (c - a - b) * hyper(
[c - a, c - b], [1 + c - a - b], 1 - z
)
return lambda z: coeff * num(z) / denom(z)
elif exp_pt == oo:
num = lambda z: z ** (-a) * hyper([a, 1 + a - c], [1 + a - b], 1 / z)
denom = lambda z: z ** (-b) * hyper([b, 1 + b - c], [1 + b - a], 1 / z)
return lambda z: coeff * num(z) / denom(z)
# if z == oo:
# num = lambda w: (1 / w) ** (-a) * hyper([a, 1 + a - c], [1 + a - b], w)
# denom = lambda w: (1 / w) ** (-b) * hyper([b, 1 + b - c], [1 + b - a], w)
# return lambda z: coeff * limit(num(w) / denom(w), w, 1 / z)
# elif z == 0:
# print("here")
# num = lambda z: z ** (-a) * hyper([a, 1 + a - c], [1 + a - b], 1 / z)
# denom = lambda z: z ** (-b) * hyper([b, 1 + b - c], [1 + b - a], 1 / z)
# return lambda z: coeff * limit(num(z) / denom(z), z, 0, dir="-")
# else:
# num = lambda z: z ** (-a) * hyper([a, 1 + a - c], [1 + a - b], 1 / z)
# denom = lambda z: z ** (-b) * hyper([b, 1 + b - c], [1 + b - a], 1 / z)
# return lambda z: coeff * num(z) / denom(z)
get_soln(1, 1, 1, oo)(1).evalf()
11/60 -1/60 2/3
get_soln(1, 1, 1, oo)(-0.0000001).evalf()
11/60 -1/60 2/3
from itertools import product
for s1, s2, s3, exp_pt in product([+1, -1], [+1, -1], [+1, -1], [0, 1, oo]):
print(f"{s1, s2, s3, exp_pt}: {get_soln(s1, s2, s3, exp_pt)(-1e-15 * I).evalf()}")
11/60 -1/60 2/3
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[17], line 4
1 from itertools import product
3 for s1, s2, s3, exp_pt in product([+1, -1], [+1, -1], [+1, -1], [0, 1, oo]):
----> 4 print(f"{s1, s2, s3, exp_pt}: {get_soln(s1, s2, s3, exp_pt)(-1e-15 * I).evalf()}")
NameError: name 'I' is not defined
for s1, s2, s3 in product([+1, -1], [+1, -1], [+1, -1]):
print(f"{s1, s2, s3}: {get_soln(s1, s2, s3, 0)(0).evalf()}")
(1, 1, 1): zoo
(1, 1, -1): zoo
(1, -1, 1): 0
(1, -1, -1): 0
(-1, 1, 1): zoo
(-1, 1, -1): zoo
(-1, -1, 1): 0
(-1, -1, -1): 0
for s1, s2, s3 in product([+1, -1], [+1, -1], [+1, -1]):
print(f"{s1, s2, s3}: {get_soln(s1, s2, s3, 1)(1).evalf()}")
(1, 1, 1): zoo
(1, 1, -1): zoo
(1, -1, 1): zoo
(1, -1, -1): zoo
(-1, 1, 1): 0
(-1, 1, -1): 0
(-1, -1, 1): 0
(-1, -1, -1): 0
for s1, s2, s3 in product([+1, -1], [+1, -1], [+1, -1]):
print(
f"{s1, s2, s3}: {get_soln(s1, s2, s3, oo)(-1e-15).doit().evalf()}, {get_soln(s1, s2, s3, oo)(1).evalf()}, {get_soln(s1, s2, s3, oo)(1e55).evalf()}"
)
(1, 1, 1): 0.273657890659636 - 0.198824095688466*I, 0.284079043840412, 2.25160006420103E-12
(1, 1, -1): 0.121252253496504 + 0.0880949187816968*I, 0.178460993833747, 22516000642.0102
(1, -1, 1): 0.273657890659637 - 0.198824095688467*I, 0.284079043840412, 2.25160006420100E-12
(1, -1, -1): 0.121252253496504 + 0.0880949187816966*I, 0.178460993833747, 22516000642.0104
(-1, 1, 1): 0.273657890659636 - 0.198824095688467*I, oo, 2.25160006420102E-12
(-1, 1, -1): 0.121252253496504 + 0.0880949187816967*I, oo, 22516000642.0103
(-1, -1, 1): 0.273657890659636 - 0.198824095688466*I, oo, 2.25160006420103E-12
(-1, -1, -1): 0.121252253496504 + 0.0880949187816969*I, oo, 22516000642.0101
get_soln(1, 1, 1, oo)(1).evalf()
import numpy as np
from matplotlib import pyplot as plt
from sympy import I, pi
thetas = np.linspace(0, 2 * pi, 100, endpoint=False)
vals = []
for theta in thetas:
val = (
get_soln(1, 1, 1, oo)(0.00000000001 * exp(I * theta)) * exp(-I * pi / 5)
).evalf()
# print(val)
if val is not None:
vals.append(val)
vals = np.array(vals, dtype=np.complex128)
print(vals.dtype)
plt.plot(thetas, np.real(vals))
plt.plot(thetas, np.imag(vals))
plt.show()
complex128
import numpy as np
from scipy.special import hyp2f1
def s_inv(Z, sg1=+1, sg2=+1, sg3=+1):
a, b, c = symbols("a b c")
eq1 = Eq(c - a - b, sg1 * Rational(1, 2))
eq2 = Eq(1 - c, sg2 * Rational(1, 3))
eq3 = Eq(a - b, sg3 * Rational(1, 5))
solns = solve([eq1, eq2, eq3], [a, b, c])
a = float(solns[a])
b = float(solns[b])
c = float(solns[c])
# a, b, c = 11 / 60, -1 / 60, 2 / 3
num = Z ** (-a) * hyp2f1(a, 1 + a - c, 1 + a - b, 1 / Z)
denom = Z ** (-b) * hyp2f1(b, 1 + b - c, 1 + b - a, 1 / Z)
# print(num,denom)
coeff = sg3 / (1728) ** (sg3 / 5)
# coeff = 1
# coeff = -3.5201470213402 / 0.7925963259246634
return coeff * np.divide(num, denom)
s_inv(np.array([-1e-55j])) * np.exp(-np.pi / 5 * 1j)
array([0.33826121-2.50388975e-17j])
from sympy import I, exp, pi
(get_soln(1, 1, 1, oo)(-1e-55 * I) * exp(-I * pi / 5)).evalf()
11/60 -1/60 2/3
-((3.5201470213402 / 0.7925963259246634) ** 5)
-1727.9999999999964
If the expansion point is
As we approach the singular points 0, 1,
Similarly, the other two singular points are found to be
where
1 / 0.3382617
2.9562909427818758
from itertools import product
eps = 1e-55j
for s1, s2, s3 in product([+1, -1], [+1, -1], [+1, -1]):
print(
s1,
s2,
s3,
"F:",
s_inv(eps, sg1=s1, sg2=s2, sg3=s3) * np.exp(-np.pi / 5 * 1j),
s_inv(eps, sg1=s1, sg2=s2, sg3=s3) * np.exp(+np.pi / 5 * 1j),
"E:",
s_inv(1 + eps, sg1=s1, sg2=s2, sg3=s3),
"V:",
s_inv(1e55 + eps, sg1=s1, sg2=s2, sg3=s3),
s_inv(-3 - 5j),
s_inv(-3 + 5j),
)
1 1 1 F: (0.1045284632676535-0.3217055305650853j) (0.3382612127177165+2.0165837040625896e-17j) E: (0.2840790438404124-2.0862790179196747e-29j) V: (2.251600064201026e-12-4.503200128402052e-123j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
1 1 -1 F: (-2.9562952014676105-5.875776049326388e-17j) (-0.9135454576426009-2.811603815447865j) E: (-3.520147021340201-2.585199095058965e-28j) V: (-444128606984.5832-8.882572139691663e-100j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
1 -1 1 F: (0.10452846326765503-0.32170553056508994j) (0.3382612127177213+3.3086219180672475e-17j) E: (0.2840790438404122-2.0862790179196752e-29j) V: (2.2516000642010035e-12-4.503200128402008e-123j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
1 -1 -1 F: (-2.9562952014675687+3.0909058052619345e-16j) (-0.9135454576425882-2.811603815447825j) E: (-3.520147021340202-2.5851990950589683e-28j) V: (-444128606984.5877-8.882572139691758e-100j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
-1 1 1 F: (0.10452846326765271-0.32170553056508305j) (0.3382612127177141-3.936897505271442e-17j) E: (0.2840790438404124+1.2402216765675661e-17j) V: (2.2516000642010184e-12-4.5032001284020385e-123j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
-1 1 -1 F: (-2.956295201467632-3.537042334655082e-16j) (-0.913545457642607-2.811603815447885j) E: (-3.5201470213402004+1.7059637197440578e-16j) V: (-444128606984.58466-8.882572139691698e-100j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
-1 -1 1 F: (0.10452846326765282-0.321705530565083j) (0.3382612127177141+7.652638782568283e-17j) E: (0.2840790438404124+2.8171771529931913e-17j) V: (2.2516000642010346e-12-4.503200128402069e-123j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
-1 -1 -1 F: (-2.956295201467631+5.34474186234617e-16j) (-0.9135454576426076-2.811603815447884j) E: (-3.520147021340201+3.908148273157554e-16j) V: (-444128606984.5815-8.882572139691629e-100j) (0.14244767294577834+0.06602319464811653j) (0.14244767294577834-0.06602319464811653j)
s_inv(-3 - 5j)
np.complex128(0.14244767294577834+0.06602319464811653j)
import numpy as np
def s_inv2(Z, sg1=+1, sg2=+1, sg3=+1):
a, b, c = symbols("a b c")
eq1 = Eq(c - a - b, sg1 * Rational(1, 2))
eq2 = Eq(1 - c, sg2 * Rational(1, 3))
eq3 = Eq(a - b, sg3 * Rational(1, 5))
solns = solve([eq1, eq2, eq3], [a, b, c])
a = float(solns[a])
b = float(solns[b])
c = float(solns[c])
# a, b, c = 11 / 60, -1 / 60, 2 / 3
num = hyp2f1(a, b, c, Z)
denom = Z ** (1 - c) * hyp2f1(1 + a - c, 1 + b - c, 2 - c, Z)
# print(num,denom)
coeff = 1 # (1728) ** (1 / 5)
# coeff = 0.284079041754133/0.70882405176421
# coeff = 0.284079041754133 / 1.4107873420929684
coeff = 0.338261212717716 / 2.586766338312561
# coeff = 0.338261212717716 / 0.18448308813935999
return coeff * np.divide(num, denom)
s_inv2(np.array([-1e-55j]))
array([2.43982662e+17+1.40863456e+17j])
(2.586766338312561 / 0.338261212717716) ** 6
199999.99999279383
0.338261212717716 / 2.586766338312561, 1 / (200000) ** (1 / 6)
(0.13076604860196833, 0.13076604860118307)
(0.284079043840412 / 1.4107873573583158)
0.20136205669743665
(0.338261212717716 / 0.18448308813935999) ** 6
37.99914721467943
from itertools import product
eps = -1e-55j
for s1, s2, s3 in product([+1, -1], [+1, -1], [+1, -1]):
print(
s1,
s2,
s3,
"F:",
s_inv2(eps, sg1=s1, sg2=s2, sg3=s3),
"E:",
s_inv2(1 + eps, sg1=s1, sg2=s2, sg3=s3),
"V:",
s_inv2(1e55 + eps, sg1=s1, sg2=s2, sg3=s3) * np.exp(-np.pi / 3 * 1j),
s_inv2(1e55 + eps, sg1=s1, sg2=s2, sg3=s3) * np.exp(+np.pi / 3 * 1j),
)
1 1 1 F: (2.4398266219041667e+17+1.4086345569323858e+17j) E: (0.09269011940029458+1.0029483789626555e-29j) V: (0.05055193685846039-2.2042011928602662e-13j) (-0.0252759684290393+0.04377926153004382j)
1 1 -1 F: (2.4398266219041667e+17+1.4086345569323858e+17j) E: (0.09269011940029454+1.002948378962655e-29j) V: (0.05055193685846039-2.2042011928602662e-13j) (-0.0252759684290393+0.04377926153004382j)
1 -1 1 F: (5.256447111893667e-20-3.034811155032838e-20j) E: (0.18448308813935999-1.99618918815216e-29j) V: (-0.16913060635758062-0.2929428033292114j) (0.33826121271771603+1.474920100812128e-12j)
1 -1 -1 F: (5.256447111893667e-20-3.034811155032838e-20j) E: (0.18448308813935999-1.99618918815216e-29j) V: (-0.16913060635758062-0.2929428033292114j) (0.33826121271771603+1.474920100812128e-12j)
-1 1 1 F: (2.4398266219041667e+17+1.4086345569323858e+17j) E: (0.09269011940029581-1.996147115210449e-17j) V: (0.0505519368584612-2.2039674490864953e-13j) (-0.02527596842903972+0.04377926153004451j)
-1 1 -1 F: (2.4398266219041667e+17+1.4086345569323858e+17j) E: (0.09269011940029581-1.996147115210449e-17j) V: (0.0505519368584612-2.2039674490864953e-13j) (-0.02527596842903972+0.04377926153004451j)
-1 -1 1 F: (5.256447111893667e-20-3.034811155032838e-20j) E: (0.18448308813935999-1.024086860531348e-17j) V: (-0.1691306063575802-0.2929428033292107j) (0.3382612127177152+1.474944404825014e-12j)
-1 -1 -1 F: (5.256447111893667e-20-3.034811155032838e-20j) E: (0.18448308813935999-1.024086860531348e-17j) V: (-0.1691306063575802-0.2929428033292107j) (0.3382612127177152+1.474944404825014e-12j)
0.520876591889109 / 0.2840790448279948
1.8335621770500221
val = s_inv2(1e55 - 1e-55j)
np.atan2(val.imag, val.real) / np.pi
np.float64(0.33333333333194537)
1 / (1728) ** (1 / 5)
0.2251600064201022
val23 / val12
np.float64(1.392382021468321)
theta = np.arccos((1 + np.sqrt(5)) / 2 / np.sqrt(3))
val23 = np.cos(theta) / (1 + np.sin(theta))
val23
np.float64(0.6885002580691648)
alpha = np.arccos(1 / 2 / np.sin(np.pi / 5))
theta = np.arccos((1 + np.sqrt(5)) / 2 / np.sqrt(3) * np.cos(alpha))
val12 = np.cos(theta) / (1 + np.sin(theta))
val12
np.float64(0.49447654986460865)
import matplotlib.pyplot as plt
exps = np.linspace(-20, 0, 100)
exps = exps
xs = np.pow(10, exps)
print(xs)
ys = s_inv(xs)
print(ys)
plt.scatter(xs, ys)
plt.xscale("log")
plt.show()
[1.00000000e-20 1.59228279e-20 2.53536449e-20 4.03701726e-20
6.42807312e-20 1.02353102e-19 1.62975083e-19 2.59502421e-19
4.13201240e-19 6.57933225e-19 1.04761575e-18 1.66810054e-18
2.65608778e-18 4.22924287e-18 6.73415066e-18 1.07226722e-17
1.70735265e-17 2.71858824e-17 4.32876128e-17 6.89261210e-17
1.09749877e-16 1.74752840e-16 2.78255940e-16 4.43062146e-16
7.05480231e-16 1.12332403e-15 1.78864953e-15 2.84803587e-15
4.53487851e-15 7.22080902e-15 1.14975700e-14 1.83073828e-14
2.91505306e-14 4.64158883e-14 7.39072203e-14 1.17681195e-13
1.87381742e-13 2.98364724e-13 4.75081016e-13 7.56463328e-13
1.20450354e-12 1.91791026e-12 3.05385551e-12 4.86260158e-12
7.74263683e-12 1.23284674e-11 1.96304065e-11 3.12571585e-11
4.97702356e-11 7.92482898e-11 1.26185688e-10 2.00923300e-10
3.19926714e-10 5.09413801e-10 8.11130831e-10 1.29154967e-09
2.05651231e-09 3.27454916e-09 5.21400829e-09 8.30217568e-09
1.32194115e-08 2.10490414e-08 3.35160265e-08 5.33669923e-08
8.49753436e-08 1.35304777e-07 2.15443469e-07 3.43046929e-07
5.46227722e-07 8.69749003e-07 1.38488637e-06 2.20513074e-06
3.51119173e-06 5.59081018e-06 8.90215085e-06 1.41747416e-05
2.25701972e-05 3.59381366e-05 5.72236766e-05 9.11162756e-05
1.45082878e-04 2.31012970e-04 3.67837977e-04 5.85702082e-04
9.32603347e-04 1.48496826e-03 2.36448941e-03 3.76493581e-03
5.99484250e-03 9.54548457e-03 1.51991108e-02 2.42012826e-02
3.85352859e-02 6.13590727e-02 9.77009957e-02 1.55567614e-01
2.47707636e-01 3.94420606e-01 6.28029144e-01 1.00000000e+00]
[ nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan 0.28407904]
/var/folders/8g/byx83mzd7gz503xq8dj4cjr40000gp/T/ipykernel_65992/594549837.py:19: RuntimeWarning: invalid value encountered in divide
return coeff * np.divide(num , denom)
for s1, s2, s3, exp in product([+1, -1], [+1, -1], [+1, -1], [0, 1, oo]):
get_soln(1, 1, 1, oo)(-1e-55 * I)
from sympy import I, exp, pi
expr = get_soln(1, 1, 1, oo)(z)
(expr.subs(z, -0.000000001 - 0.00000000 * I) * exp(-I * pi / 5)).evalf()
c = _
s = symbols("s")
solve(c / s ** (1 / 5) - 0.284079043840412, s)
[]
alpha = np.arccos(1 / 2 / np.sin(np.pi / 5))
n3 = (
2
/ np.sqrt(3)
* np.array(
[
-np.sin(alpha) * np.cos(np.pi / 5),
np.sin(alpha) * np.sin(np.pi / 5),
np.cos(alpha) * np.cos(np.pi / 5),
]
)
)
n2 = np.array([-np.sin(alpha), 0, np.cos(alpha)])
dp = np.dot(n2, n3)
print(dp)
cp = np.cross(n2, n3)
theta = np.arccos(dp)
yp = cp / np.sin(theta)
# xp = (n2 - dp*n3)/np.sqrt(2*(1-dp**2))
np.linalg.norm(yp), np.linalg.norm(n3), np.linalg.norm(n2)
0.9341723589627158
(np.float64(1.000000000000001),
np.float64(1.0000000000000002),
np.float64(1.0))
xp = np.cross(yp, n3)
np.linalg.norm(yp)
np.float64(1.000000000000001)
xp, yp, n3
(array([ 0.18759247, 0.93417236, -0.303531 ]),
array([-0.85065081, 0. , -0.52573111]),
array([-0.49112347, 0.35682209, 0.79465447]))
O = np.vstack((xp, yp, n3))
O
array([[ 0.18759247, 0.93417236, -0.303531 ],
[-0.85065081, 0. , -0.52573111],
[-0.49112347, 0.35682209, 0.79465447]])
zp = O @ np.array([0, 0, 1])
zp
array([-0.303531 , -0.52573111, 0.79465447])
zp = -zp
zpz = (zp[0] + I * zp[1]) / (1 - zp[2])
zpz
(zpz * exp(-I * pi / 3)).evalf()
n2p = O @ n2
n2p = -n2p
n2pz = (n2p[0] + I * n2p[1]) / (1 - n2p[2])
n2pz
O @ n3, O @ n2
(array([5.55111512e-17, 5.55111512e-17, 1.00000000e+00]),
array([-3.56822090e-01, 5.55111512e-17, 9.34172359e-01]))
-n3p[0] / (1 + n3p[2])
np.float64(0.1252004517810262)
(1 + np.sqrt(5)) / 2 / np.sqrt(3)
np.float64(0.9341723589627158)
u, v, z, z_n = symbols("u v z z_n")
f = u * v * (u**10 + 11 * u**5 * v**5 - v**10)
H = (
u**30
+ 522 * (u**25 * v**5 - u**5 * v**25)
- 10005 * (u**20 * v**10 - u**10 * v**20)
+ v**30
)
F = u**20 - 228 * (u**15 * v**5 - u**5 * v**15) + 494 * u**10 * v**10 + v**20
from utils import z_simp
num = z_simp((F**3).subs(u, z * z_n + 1).subs(v, z - z_n).expand(), z_n)
num
_ / 15693023681640625
denom = z_simp((f**5).subs(u, z * z_n + 1).subs(v, z - z_n).expand(), z_n)
denom
z_simp(denom * denom.subs(z_n, -1 - z_n), z_n)
(f**5).subs(u, z).subs(v, 1).factor()
z_simp(num * denom.subs(z_n, -1 - z_n), z_n)
(931322574615478515625 * F**3 * f**5).subs(u, z).subs(v, 1).expand()
z_simp(num * denom.subs(z_n, -1 - z_n), z_n).expand().equals(
(931322574615478515625 * F**3 * f**5).subs(u, z).subs(v, 1).expand()
)
True
_ / 15693023681640625
25391845703125000 / 15693023681640625
1.6180339887482036