README.md
4.6 kB · markdown
eisenstein-stack
- The hexagonal twin of
lab/py/spun-stack: the exact spun stack whose layers are the associate classes of the Eisenstein integersZ[omega],omega = e^(2 pi i/3), normN(a + b omega) = a^2 - a b + b^2, six units, unique factorisation. - Layer
zis the latticez^-1 Z[omega], scale|z|and rotation-arg zin one multiplication, one layer per nonzero associate class with the zero class excluded. - Coordinates are taken in the basis
1, omega, so the fundamental domain ofC/Z[omega]is the unit square of that chart and the picture is its image, the fundamental parallelogram. Every node is a pair ofFractions in that chart; the arithmetic is exact throughout, with nearest-integer Euclidean gcd inZ[omega]and the cyclotomic fieldQ(zeta_360)for the whole-degree rotations. - The constant the base-3 page carries,
zeta_K(2) = zeta(2) L(2, chi_-3), is the constant in this stack's node count.
WHAT IT PRINTS
field_rotation_degreesreduceszeta^d + zeta^-dand(zeta^d - zeta^-d)(zeta^120 - zeta^240)moduloPhi_360and returns the degrees where both remainders are constant, that is wherecosis rational andsinis a rational multiple ofsqrt 3:0, 60, 120, 180, 240, 300, six of 360.spot_check_degreesre-decides twelve of those degrees throughsympy.minimal_polynomialoncos(d deg)andsin(d deg)/sqrt 3and agrees with the cyclotomic route on all twelve; 90 and 270 are the instructive failures, rational cosine and irrationalsin/sqrt 3.rotation_hitschecks that all 58 solutions ofp^2 + 3 q^2 = r^2withrat most 60, read as the pair(cos, sin/sqrt 3) = (p/r, q/r), are of the formw/conj(w) = w^2/N(w)for an Eisensteinwin the box of side 20.hex_classes_closedagainsthex_classes_directfort = 0..400: equal throughout; the first twelve values of the hexagonal circle count are1, 1, 2, 3, 3, 3, 5, 5, 6, 6, 6, 7.literal_stackbuilds the stack at norm bound 50 by exact stacking of all 31 layers and finds 630 nodes, equal to the Eisenstein totient sumsum Phi(d)over the same 31 classes fromtotient_sum.closed_brightnessreads each node from its reduced Eisenstein denominator alone, computed byreduced_denominator, ash(floor(N/N(d)))withh(t) = sum_j (floor(t/(3j+1)) - floor(t/(3j+2))): 630 comparisons against literal stacking, 0 mismatches, the origin at 31, which is also the maximum.totient_sumgives 630, 9606, 151020, 337026, 945486 and 2419950 nodes at norm bounds 50, 200, 800, 1200, 2000 and 3200, ratios toN^2of0.252000,0.240150,0.235969,0.234046,0.236372and0.236323;mainprints each deviation from the limit scaled byN/log N,+0.214, +0.186, +0.090, -0.198, +0.304, +0.438, bounded and of both signs.mainprints the constant's factors at 30 working digits through the Hurwitz zeta formL(2, chi_-3) = (zeta(2, 1/3) - zeta(2, 2/3))/9:zeta(2) = 1.644934066848226,L(2, chi_-3) = 0.781302412896486,zeta_K(2) = 1.285190955484149, the residuepi/(3 sqrt 3) = 0.604599788078073, and the limitpi/(6 sqrt 3 zeta(2) L(2, chi_-3)) = 0.235217881630015.csl_zeta_ratioexpands(1 + 3^-s)^-1 zeta_K(s)/zeta(2s)by Dirichlet division to bound 100 andcsl_euler_productexpandsprod_{p = 1 (3)} (1 + p^-s)/(1 - p^-s)over the same bound: equal, with nonzero coefficients1at 1,2at7, 13, 19, 31, 37, 43, 49, 61, 67, 73, 79, 97and4at 91.drawstacks the 774 lit nodes at norm bound 60, brightest 35 at the origin, intoeisenstein-stack.png, dots sized by the square root of brightness inside the fundamental parallelogram.
RUN
uv run python research/lab/py/eisenstein-stack/eisenstein_stack.py- From the repo root. One core, about three seconds.
- Domain is the full source domain: all 360 whole degrees, the circle count on
t = 0..400, the stack at norm bound 50 node by node, totient sums to norm bound 3200, the coincidence series to bound 100. - Writes
eisenstein-stack.pngbeside itself and nothing else.
WITNESSES
- The Eisenstein address:
literal_stackagainstclosed_brightnessandtotient_sum, 630 nodes and 0 brightness mismatches at norm bound 50. - The hexagonal twin of
floor(N/b):hex_classes_closedagainsthex_classes_directont = 0..400. - The hexagonal rational rotations:
field_rotation_degreesandspot_check_degreesgive the six whole degrees,rotation_hitsthe 58 rational rotations asw/conj(w). - The constant:
totient_sumat six norm bounds against the printedpi/(6 sqrt 3 zeta(2) L(2, chi_-3)), with the scaled deviation. - The coincidence census:
csl_zeta_ratioagainstcsl_euler_product.