#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""verify_congest.py — a SELF-CONTAINED, STANDARD-LIBRARY-ONLY, independent verifier
for the discounted congestion mean-field-game computer-assisted proof.

    Instance:  a = 1/2,  sigma = 0.5,  A = 0.3,  gamma = 0.5,  N = 14 cosine modes
    System:    u - sigma u'' + 1/2 (u')^2 / sqrt(m) = A cos 2pi x + gamma m
               m - sigma m'' - ( sqrt(m) u' )'      = 1 ,     m > 0
               (augmented with w = m^{-1/2} and the reciprocal constraint m w^2 = 1)

WHAT THIS SCRIPT IS.  A skeptical referee can download THIS ONE FILE and run

    python3 verify_congest.py

with nothing but a Python 3.9+ standard library.  It re-derives, in outward-rounded
interval arithmetic (math.nextafter), the radii-polynomial / Newton-Kantorovich bounds
of the proof and either prints a refusal or ends with

    CONGEST CAP: VERIFIED

The numerical CANDIDATE (a; m; w) and the approximate-inverse matrix A are embedded below
as CERTIFICATE DATA.  This verifier does NOT re-solve the MFG and does NOT recompute A: it
CONSUMES them and RIGOROUSLY recomputes the bounds Y0 = ||A Phi(x_bar)||_nu,
Z1 = ||I - A DPhi(x_bar)||_nu, Z2 (the Lipschitz bound on the ball), then closes the radii
polynomial  p(r) = 1/2 Z2 r^2 - (1 - Z1) r + Y0 < 0  and certifies both positivity walls
(density m > 0 and the branch selector w > 0) over the WHOLE ball.

The interval type, the nu-weighted sequence (Banach-algebra) norm/convolution, buildPhi and
the Jacobian action are faithful, line-by-line ports of the JavaScript source of truth
(eqcert/src/{interval,sequence,radii}.js and
research/mfg-congest/kernel/validate-congest.js).  Correctness is everything: a verifier
that PASSES while being subtly wrong is the worst possible outcome, so the port is checked
against the JS Phi(x_bar) elementwise (embedded), and SEVEN falsifiers (X1..X7) must each
turn their own target RED.

LICENCE
-------
SPDX-License-Identifier: MIT
Copyright (c) 2026 Carlos Toledo

Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Portions of this file (interval arithmetic, the nu-weighted sequence norm and
convolution, the radii-polynomial / Krawczyk operator) are ported from eqcert — MIT,
Copyright (c) 2026 Carlos Toledo — https://github.com/carlostoledo1891/mfg-lab/tree/main/eqcert

This FILE is MIT. The paper page that carries it is a separate work under CC-BY 4.0:
https://github.com/carlostoledo1891/mfg-lab/blob/main/enclosure/LICENSE.md
The SOLVER that produced the candidate this file verifies is not published and is not
licensed here. Generated file — logic hand-written, certificate data embedded.
"""
import sys
import math
from fractions import Fraction

# ============================================================================================
# CERTIFICATE DATA (embedded literals) — produced by dump_cert.js from the validated JS
# kernel (research/mfg-congest/kernel).  These are the numerical candidate x_bar and the
# approximate-inverse matrix A that the verifier CONSUMES.  It does not re-solve or
# recompute A; it rigorously recomputes the bounds from exactly this data.
# Instance: a=1/2, sigma=0.5, A=0.3, gamma=0.5, N=14, n=45.
# ============================================================================================
N = 14
SIGMA = 0.5
A_PARAM = 0.3
GAMMA = 0.5
NU = 1.05

# candidate: u cosine coeffs a_0..a_N
CAND_A = [
    0.4981121407217952, 0.006914743148283846, 1.1937047826341379e-05, 7.128689680739493e-08, 5.16975242809031e-10, 4.1377540721467864e-12,
    3.5210164300885576e-14, 3.124785620876359e-16, 2.8514808056219233e-18, 2.5026035415458017e-20, 4.1345013275765895e-21, -3.544785361488696e-21,
    8.437740601426773e-21, -1.181553667377019e-21, 3.6988550113961435e-21,
]
# candidate: density coeffs m_0..m_N
CAND_M = [
    1.0, -0.013161933467037779, 2.1365458966279915e-05, 1.270977181127319e-08, 2.8589747108825915e-11, 6.343360140899062e-14,
    -7.939397820114782e-17, -3.496943972609167e-18, -2.0909622665378228e-20, -8.947971484972129e-22, -1.6006589705522425e-20, 8.050401464896833e-21,
    -2.920207488314181e-20, 9.841656717770895e-21, -6.0272825133836835e-21,
]
# candidate: reciprocal coeffs w_0..w_N  (w = m^{-1/2})
CAND_W = [
    1.0001299700261361, 0.006582894213388972, 5.430672664548151e-05, 4.956043934093608e-07, 4.7716204391588454e-09, 4.743149234341656e-11,
    4.814168940773841e-13, 4.9579429792566734e-15, 5.1597567271807053e-17, 5.417661938507755e-19, 1.3652581043314193e-20, -3.521969033514786e-21,
    1.4437658171799408e-20, -4.577165196609576e-21, 2.922004744516202e-21,
]

# approximate inverse A (= AN), row-major 45 x 45
AMAT = [
    1.0, -0.025170654205248878, 5.558030559294277e-05, -4.978718226373898e-09,
    -1.4853596722870406e-10, -1.6786960122723143e-12, -1.695531303429531e-14, -1.6684882280390322e-16,
    -1.6046863435080164e-18, -9.198408123427415e-21, -1.5786040798167858e-20, 1.445979000918176e-20,
    -3.3852605985468815e-20, 5.008580842139941e-21, -1.4810753146934674e-20, 0.5010266933421589,
    -0.003807564803773773, -0.00015694998072749534, -1.8480410830473404e-06, -2.1236975457208895e-08,
    -2.413238186817301e-10, -2.7250774024609003e-12, -3.066173635990029e-14, -3.4423720307300574e-16,
    -3.8580344156277115e-18, -4.3661351483743585e-20, 2.404051300150115e-22, -2.7273222312770854e-22,
    -2.810266074565497e-22, -7.136795421806607e-23, -0.0008610455104238056, 2.3007647297563643e-06,
    0.0008610449733705216, -2.300775128539415e-06, 5.369574620585949e-10, 1.0398006584530715e-11,
    9.58005497307846e-14, 7.758684719926806e-16, 5.6078441157992015e-18, 5.861137620411723e-21,
    6.321440547568277e-21, -1.6313489121556345e-20, -6.140169480179128e-21, 1.2958270016107661e-20,
    -4.209909816729424e-21, 0.0, 0.28959631477396164, -0.0019321266277182326,
    -2.9843586583428518e-06, -1.9057542851147027e-08, -1.4048928827800437e-10, -1.1286450049904216e-12,
    -9.604293050014e-15, -8.512208672668187e-17, -7.759474997699808e-19, -4.130454645495233e-21,
    -7.41472468034829e-21, 2.560561371314758e-21, -6.799786128824995e-21, 6.081487025068974e-22,
    -0.0009493395089793153, 0.0439068518552287, -2.168596207906132e-06, -1.358122833360639e-05,
    -2.3276829622687544e-07, -3.1781148351207188e-09, -4.008261393726272e-11, -4.864073818953564e-13,
    -5.773740394038558e-15, -6.75840435101147e-17, -7.832581997103464e-19, -9.374272958522527e-21,
    -1.424154974583328e-22, 1.1772320377993137e-22, -1.260382540215836e-22, -0.0009565048451028474,
    -0.00013367379202468643, 0.0009558704601569043, 0.00013366791839101544, 6.343272497904001e-07,
    5.873051582827183e-09, 5.7690182394034366e-11, 5.820263189821672e-13, 5.969753804163943e-15,
    6.191677318386892e-17, 6.446614095993512e-19, -1.8598003774223076e-21, -3.7026391577400616e-21,
    5.351044529846765e-21, 1.7300420565602596e-21, 0.0, 0.0019996645284307366,
    0.15522545292933768, -0.0007023004756482299, -2.4896552127860976e-06, -1.53146584458733e-08,
    -1.128531991738647e-10, -9.092200960313287e-13, -7.745473643211138e-15, -6.860569752942687e-17,
    -6.267535786213142e-19, -5.030293638847349e-21, -2.367641692943816e-21, 8.582769857441056e-22,
    -2.2356991597832633e-21, -8.072290545890412e-05, 0.00022283139339160818, 0.012221781280269127,
    -8.97974993487245e-06, -5.716275684483317e-06, -1.0970995975667292e-07, -1.6022864061471772e-09,
    -2.1145743793168617e-11, -2.652503559369446e-13, -3.2299287726771697e-15, -3.858604741201739e-17,
    -4.5489963766556115e-19, -5.361321285911913e-21, -8.048186801277451e-23, 7.219439926803601e-23,
    6.92214067785707e-05, -0.0002667431781773227, -0.00014147084736888354, 0.00026621064484526916,
    7.224436708082241e-05, 5.32482089086485e-07, 5.072980206128839e-09, 5.1237432543194884e-11,
    5.292259744227081e-13, 5.533995165505834e-15, 5.833205099249499e-17, 6.174926931374855e-19,
    6.238729576827518e-21, -1.6588799414163157e-21, 3.4277976632074456e-21, 0.0,
    2.6870508478740577e-05, 0.0007160886020882856, 0.10491940225421918, -0.0003584081407470838,
    -1.716458928907734e-06, -1.1516618606137702e-08, -8.858321437241463e-11, -7.327412665533143e-13,
    -6.351977579459369e-15, -5.694182135745686e-17, -5.233956198743687e-19, -4.653015955498593e-21,
    -6.635343473654777e-22, 5.627443495686542e-22, -1.4276836599248872e-06, -1.1545447729526216e-05,
    3.7637764231403156e-05, 0.005545539975372361, -4.601326713789723e-06, -3.1305788648463317e-06,
    -6.424086935316685e-08, -9.805171464000768e-10, -1.3355534275775583e-11, -1.716015622490005e-13,
    -2.1296533862739867e-15, -2.583865720480657e-17, -3.0859020086198863e-19, -3.64249153386482e-21,
    -3.002571860213864e-23, 1.2591662640427834e-06, 4.906188512641717e-05, -0.00012222472434841587,
    -9.810884228103587e-05, 0.00012053478925475967, 4.904263825823291e-05, 4.307239322263846e-07,
    4.3184230708839995e-09, 4.489235938313965e-11, 4.732612165136222e-13, 5.027119959757081e-15,
    5.366627338391989e-17, 5.740962045076722e-19, 7.176249885352028e-21, -1.5236439087821993e-21,
    0.0, 3.464384152973526e-07, 8.752053877330693e-06, 0.00036336861456624006,
    0.0790750491911406, -0.0002168336126175041, -1.2218985909638774e-06, -8.801457551676217e-09,
    -7.05217802924601e-11, -5.993901435583153e-13, -5.297030179005381e-15, -4.816358597081967e-17,
    -4.468337413654864e-19, -4.0451275097669074e-21, -4.732471517290441e-22, -2.057786081529307e-08,
    -2.688471415052748e-07, -5.324427910061663e-06, 1.2106292503800556e-05, 0.0031423138193828345,
    -2.508572519987951e-06, -1.9762396201060277e-06, -4.238158089610689e-08, -6.672574328821378e-10,
    -9.302570096050857e-12, -1.2172702174096519e-13, -1.5331802399729302e-15, -1.883129751501273e-17,
    -2.27232799820172e-19, -2.7089602349246866e-21, 1.839489648004331e-08, 7.913313660634996e-07,
    3.724698649804954e-05, -6.932207557159657e-05, -7.432096663117272e-05, 6.817262785007671e-05,
    3.705185211598982e-05, 3.580766306658209e-07, 3.732694836256766e-09, 3.9720208940235545e-11,
    4.2576763446410494e-13, 4.581042149778688e-15, 4.941371675442263e-17, 5.328084854138508e-19,
    6.404186275186343e-21, 0.0, 4.332601849268806e-09, 1.071018059968977e-07,
    4.242463071190472e-06, 0.000219153204169066, 0.06340402669890664, -0.00014517486710502326,
    -9.069283984783937e-07, -6.8954817879351005e-09, -5.71753554355658e-11, -4.978207081575507e-13,
    -4.479016947803151e-15, -4.1290111551132403e-17, -3.873322538140763e-19, -3.559095772426605e-21,
    -2.736176817897735e-10, -4.353148439557639e-09, -1.2388499974611453e-07, -2.9910198766029332e-06,
    5.294591554641774e-06, 0.0020179444844492895, -1.4917667702846478e-06, -1.3614712548396548e-06,
    -3.0125703185006014e-08, -4.85356858744682e-10, -6.888694624680273e-12, -9.14467377881298e-14,
    -1.165558481856306e-15, -1.4460041507709654e-17, -1.759874076692053e-19, 2.4628121688462487e-10,
    1.1076143570028868e-08, 5.721758098076342e-07, 2.9932417336689903e-05, -4.4578037472709674e-05,
    -5.970031154809876e-05, 4.370009578051052e-05, 2.9753539204427427e-05, 3.0548405723790917e-07,
    3.278477207390858e-09, 3.553973705991495e-11, 3.8615831720466585e-13, 4.199176927774442e-15,
    4.56876494889201e-17, 4.96301927377434e-19, 0.0, 5.309088053032589e-11,
    1.2961082375705563e-09, 5.0482335573002886e-08, 2.4884644777768653e-06, 0.0001464411432873367,
    0.05290214637319069, -0.00010395957159907731, -6.975760378126195e-07, -5.529764534828475e-09,
    -4.7163970529101535e-11, -4.1926838469707357e-13, -3.8329818282020076e-15, -3.5783482095551015e-17,
    -3.3915100302629233e-19, -3.4857122275494645e-12, -6.193061944629766e-11, -2.0453775493939337e-09,
    -7.08667953568576e-08, -1.9103873149260436e-06, 2.7656533846533745e-06, 0.0014039517467238386,
    -9.520230791498974e-07, -9.95179800795649e-07, -2.2541635562228406e-08, -3.696959320664774e-10,
    -5.322125281006222e-12, -7.147894005024947e-14, -9.200107722998125e-16, -1.150937173969112e-17,
    3.150527809244911e-12, 1.4525576230568195e-10, 7.84534793767646e-09, 4.4745929099793174e-07,
    2.499349047945177e-05, -3.106239195738711e-05, -4.985451099207893e-05, 3.0348717160002043e-05,
    2.485025226446896e-05, 2.660381249278161e-07, 2.919396709512036e-09, 3.2121824359032356e-11,
    3.5294077247271004e-13, 3.872202034143738e-15, 4.243349069868209e-17, 0.0,
    6.412939973164847e-13, 1.5525803276759635e-11, 5.992486683754808e-10, 2.9090610051263334e-08,
    1.6316156571935745e-06, 0.00010472522125225766, 0.04537860883308739, -7.80982705312623e-05,
    -5.523406448018085e-07, -4.52527660731394e-09, -3.9509859413468126e-11, -3.575285949854424e-13,
    -3.314783067390161e-15, -3.129789005288734e-17, -4.325062286892297e-14, -8.254362518093309e-13,
    -2.961509707936775e-11, -1.1926404836914784e-09, -4.598136342435758e-08, -1.3250491192988464e-06,
    1.6214363669263765e-06, 0.0010326302449133232, -6.420848116764776e-07, -7.592862121472866e-07,
    -1.751337373742471e-08, -2.9133390163533025e-10, -4.242754724048405e-12, -5.753474195053597e-14,
    -7.466248311432178e-16, 3.920033887000998e-14, 1.8362274348662653e-12, 1.017751212753348e-10,
    6.060024703026408e-09, 3.6712110041869224e-07, 2.1444656389187358e-05, -2.2884302340004665e-05,
    -4.2784666994917714e-05, 2.2281574602931055e-05, 2.133131882618267e-05, 2.354755320000757e-07,
    2.629593774311121e-09, 2.928674235970608e-11, 3.2480331606753843e-13, 3.5899624669418474e-15,
    0.0, 7.664676564821148e-15, 1.844428044133173e-13, 7.076489231617835e-12,
    3.4093372939379366e-10, 1.8840400047768218e-08, 1.1508243588605e-06, 7.85960617187215e-05,
    0.0397255704448165, -6.081254313274717e-05, -4.4779958218303047e-07, -3.76785263382664e-09,
    -3.354744322958572e-11, -3.0825127199075955e-13, -2.8932942634056657e-15, -5.271995244191691e-16,
    -1.0583022821308391e-14, -4.004955123962033e-13, -1.7540393523927685e-11, -7.854715877598102e-10,
    -3.2293919606519876e-08, -9.728683820176654e-07, 1.0307580132825634e-06, 0.0007911826687516712,
    -4.523860169925351e-07, -5.98429177190393e-07, -1.4004651805701468e-08, -2.356785028857596e-10,
    -3.4652999338803983e-12, -4.737388672741094e-14, 4.787785627230164e-16, 2.2674843175105574e-14,
    1.2781643832765668e-12, 7.808124718382484e-11, 4.931052549269706e-09, 3.111299066591437e-07,
    1.877453075739568e-05, -1.7563084336815483e-05, -3.7465682265109834e-05, 1.7040705458147207e-05,
    1.8683827593026634e-05, 2.1114396256137164e-07, 2.3912827406178905e-09, 2.6902179480707738e-11,
    3.0068189649486933e-13, 0.0, 9.085999549316008e-17, 2.17653261382776e-15,
    8.314200910622009e-14, 3.986526348578029e-12, 2.1879796491677293e-10, 1.3168466885616415e-08,
    8.546354736139702e-07, 6.115421594828476e-05, 0.03532338416163011, -4.86904948321016e-05,
    -3.701825953724834e-07, -3.1838829388561703e-09, -2.8822244000442076e-11, -2.6835525276627056e-13,
    -6.344253482777274e-18, -1.3226911521260426e-16, -5.196588013328135e-15, -2.4023223991414445e-13,
    -1.1695277009255582e-11, -5.581161061412879e-10, -2.394740439447882e-08, -7.446069099676453e-07,
    6.956790909287847e-07, 0.0006254438827008465, -3.3014011162610706e-07, -4.838195966438653e-07,
    -1.1457472925338706e-08, -1.9467758988799143e-10, -2.885584610544386e-12, 5.7701999853166565e-18,
    2.755097868686276e-16, 1.5715454028847308e-14, 9.76446057964808e-13, 6.323750174006672e-11,
    4.154237549647618e-09, 2.6990321326654386e-07, 1.6693876369260233e-05, -1.3907715560055142e-05,
    -3.332033925005857e-05, 1.344639047315899e-05, 1.6620115291368337e-05, 1.9133374612037658e-07,
    2.19209521630686e-09, 2.4868449178479084e-11, 0.0, 1.0714898765872182e-18,
    2.5539650390153085e-17, 9.724823257595661e-16, 4.646808861951306e-14, 2.5399180809412236e-12,
    1.5188328407083632e-10, 9.711138960842302e-09, 6.594653276914485e-07, 4.893508537964057e-05,
    0.03179862552837626, -3.986269652020753e-05, -3.110354687596607e-07, -2.7247758393658915e-09,
    -2.5018794273073675e-11, -7.578159856262355e-20, -1.6232827841204074e-18, -6.559863569394062e-17,
    -3.149816906670703e-15, -1.618148809094331e-13, -8.391778846559163e-12, -4.177192617105517e-10,
    -1.8476337498314493e-08, -5.882469815122232e-07, 4.916481843483371e-07, 0.000506790393164866,
    -2.4797361688335547e-07, -3.992718843505892e-07, -9.549038050023159e-09, -1.6356597677856389e-10,
    6.888554178920844e-20, 3.307650638810271e-18, 1.9037194969047314e-16, 1.1971400131173216e-14,
    7.884562686773569e-13, 5.3092502699087705e-11, 3.587648837391441e-09, 2.3829423506180496e-07,
    1.502740691398686e-05, -1.1288772652407201e-05, -2.9999479416321202e-05, 1.0875500899522931e-05,
    1.4966460553783089e-05, 1.7490128740997133e-07, 2.0230440795212225e-09, 0.0,
    9.272098430331005e-21, 2.983998353513771e-19, 1.132890551130759e-17, 5.399808016733265e-16,
    2.942969922402222e-14, 1.7533683291685186e-12, 1.1140964788920828e-10, 7.451933102758753e-09,
    5.241512479956935e-07, 4.004376998703443e-05, 0.028912942304011882, -3.323514341224934e-05,
    -2.6495833641266536e-07, -2.3575969600382777e-09, -5.8625213972364755e-22, -2.021492293901617e-20,
    -8.120470872621016e-19, -4.011010974329082e-17, -2.139768278377488e-15, -1.1706688334415218e-13,
    -6.3307353444813946e-12, -3.2472006835508005e-10, -1.4692992357869877e-08, -4.764628122753526e-07,
    3.603704848905302e-07, 0.00041894568159837273, -1.9078370788552746e-07, -3.3511391321228583e-07,
    -8.081024347928627e-09, 6.335137593779882e-22, 3.917432801599835e-20, 2.280698162391392e-18,
    1.447220563898834e-16, 9.646796839127876e-15, 6.604932003911998e-13, 4.5730778743574e-11,
    3.1563977056895522e-09, 2.1329543157795896e-07, 1.3662891655901933e-05, -9.348278787335547e-06,
    -2.7279722354425805e-05, 8.973860434951416e-06, 1.3611794925247506e-05, 1.6104018527757082e-07,
    0.0, -1.0252165224396572e-21, 3.1424778522818553e-21, 1.3129523624511146e-19,
    6.256434296008068e-18, 3.4026917058618243e-16, 2.02214660881164e-14, 1.2804901921187235e-12,
    8.512541238514916e-11, 5.896167283562045e-09, 4.2652818709009597e-07, 3.3372923918228245e-05,
    0.026507088144963126, -2.8132995324767255e-05, -2.2837848282080604e-07, -3.0849278741505937e-23,
    -3.8045506343588654e-22, -9.954525897309813e-21, -5.002382041485363e-19, -2.7445388493955754e-17,
    -1.558899089289275e-15, -8.891457778653898e-14, -4.9535413284440815e-12, -2.598402564908179e-10,
    -1.196650089045948e-08, -3.9378114212253447e-07, 2.7209056924627096e-07, 0.000352101489611781,
    -1.497914013904571e-07, -2.8521148736215756e-07, -1.8646125604998698e-22, 4.805459996775786e-22,
    2.7019396160238927e-20, 1.7311421044194722e-18, 1.164473203758933e-16, 8.068644908011682e-15,
    5.679278201924185e-13, 4.015005914824282e-11, 2.817308443371079e-09, 1.9303307841165872e-07,
    1.2525210599514838e-05, -7.870463891393536e-06, -2.50115944878301e-05, 7.5281291491632585e-06,
    1.248068022959987e-05, 0.0, 2.1852642280030556e-21, -8.939203403113041e-22,
    2.1491360277285102e-21, 7.212405880300757e-20, 3.9254309945353196e-18, 2.3286880911721854e-16,
    1.471256191840018e-14, 9.749075402686451e-13, 6.711702386330927e-11, 4.780027012646384e-09,
    3.538082198340069e-07, 2.8240256423429813e-05, 0.02447063785424092, -2.412151422285368e-05,
    -1.5580435419461148e-22, 3.227343193946724e-22, -1.8069613050721635e-22, -6.12112954769509e-21,
    -3.4440314694732467e-19, -2.0115508715816317e-17, -1.190937804864569e-15, -6.996677942861514e-14,
    -3.985574607296802e-12, -2.127330935792717e-10, -9.936036409984368e-09, -3.3090595328163123e-07,
    2.1054055515627406e-07, 0.00030006247246857194, -1.1461289155355072e-07, 1.719656521125153e-22,
    -2.663834361957179e-22, 3.289711178313721e-22, 2.0579448678140274e-20, 1.3911810539342078e-18,
    9.728708195371779e-17, 6.929427008964876e-15, 4.979328697076171e-13, 3.577629545518593e-11,
    2.5437670535561153e-09, 1.7627958136044873e-07, 1.1562215224763793e-05, -6.71900174161873e-06,
    -2.3091959876700933e-05, 6.322444684049399e-06, 0.0, -5.485429549334836e-22,
    2.237053509653115e-21, -5.640240087372361e-22, 1.2703778412291303e-21, 4.5061893926390363e-20,
    2.6770686564308692e-18, 1.6887952770385429e-16, 1.1167211142750764e-14, 7.664072314466868e-13,
    5.4252838292051363e-11, 3.9525684927310425e-09, 2.981996260564983e-07, 2.420701346290414e-05,
    0.02272463978811628, 7.870577708210151e-25, -1.748790944147814e-22, 1.7236168246322127e-22,
    -8.114394574790717e-23, -4.2423330669748755e-21, -2.5374725277184474e-19, -1.5445806413122553e-17,
    -9.417944911364447e-16, -5.656618423634839e-14, -3.2782838878523663e-12, -1.7742824033588152e-10,
    -8.38301728758907e-09, -2.8198494787162447e-07, 1.6611022951249687e-07, 0.00025876207633598587,
    -8.149461881819069e-23, 3.2210843625237405e-22, -1.5669320517411802e-22, 8.466574729957559e-23,
    1.6532562447507357e-20, 1.161261152011938e-18, 8.347714293894163e-17, 6.069515771545135e-15,
    4.4319436491892334e-13, 3.225791807078566e-11, 2.318516000957056e-09, 1.6219941241037893e-07,
    1.0736729172852758e-05, -5.794789369920112e-06, -2.1483083773770884e-05, 0.0,
    -7.166393436127634e-20, 4.4364033402541666e-21, 2.2324781532266985e-23, -3.2797727037071304e-25,
    -1.1417950817457996e-27, 1.3086827207436025e-30, 2.1473408634805503e-32, -3.2388205049028446e-33,
    -5.937301448972736e-36, -1.0111967519894262e-39, 6.040492925010724e-39, -2.809604826223468e-38,
    1.3816452949326753e-38, -1.1016440889828641e-39, 1.0, -6.534587816693463e-19,
    2.2133607078831836e-20, -4.475860824390303e-22, 7.374019753890447e-24, 2.711558349115759e-26,
    -1.6594664633208437e-28, 7.956503308599304e-31, 3.81992437472818e-32, 5.771960640315211e-34,
    3.904193729450542e-36, 3.7136558510691065e-38, 1.9177213742747013e-37, 1.560662459392391e-37,
    4.7003481129935536e-38, -3.119489754932979e-17, -1.155327087760536e-18, 3.166509583699169e-20,
    -1.0058207116858272e-21, -2.381888789810505e-24, -2.1538922822534485e-26, 3.2694233901968507e-28,
    -6.328512629032097e-30, -9.21536929706414e-32, -2.3632474683997046e-33, -1.1484905266597828e-35,
    -2.5632008961228193e-36, 1.9524621796391465e-35, -1.8801392451974214e-37, -7.520556980789686e-37,
    0.0, -0.08772208958247314, 0.0007342284105572065, 3.134496787155021e-07,
    3.29221934310733e-09, 2.639056378914876e-11, 2.1986009964942473e-13, 1.9156252505084674e-15,
    1.728439026315096e-17, 1.5960243261261586e-19, 5.803171668183276e-22, 2.2327734770479207e-21,
    -7.543105183118779e-22, 2.118010809220351e-21, -2.1301671148164046e-22, -0.006294124749901044,
    0.28963487906262575, 0.0010466022361664694, 1.3447517350801117e-05, 1.5535862620127946e-07,
    1.7587686165656296e-09, 1.9777812165240655e-11, 2.2171668852974282e-13, 2.481345196788842e-15,
    2.7738961747193558e-17, 3.105125271743618e-19, 1.848968860429342e-21, -5.544863172746257e-22,
    1.1096908560530605e-21, -2.4855382127139453e-22, -0.006290504720234231, 3.836260744937855e-05,
    0.006290513176979427, -3.836258886531219e-05, -8.457161552949137e-09, -1.8593045952145376e-11,
    4.162268978495632e-13, 8.978003968378405e-15, 1.3117525897917108e-16, 1.6035275919975562e-18,
    4.4361928472041947e-20, -5.655718865102567e-20, -2.127380532280553e-20, 4.5525235427413977e-20,
    -1.5799747721020937e-20, 0.0, 0.00028486361558477857, -0.024398327448991106,
    0.00018109495687695086, 2.0950693086807942e-07, 1.292429537946396e-09, 9.484237678031005e-12,
    7.623409424196266e-14, 6.504209565869367e-16, 5.785295057873346e-18, 5.319108317399639e-20,
    3.794902830697029e-22, 3.9881751347251576e-22, -1.5320524545729901e-22, 3.7930201337144104e-22,
    -1.066970982023744e-06, -0.000978682725134791, 0.15523894849736, 0.00036533751304438717,
    4.235584364955432e-06, 4.8142495202280544e-08, 5.426993777601405e-10, 6.095221635388358e-12,
    6.831538184713126e-14, 7.646961389241741e-16, 8.549900653730435e-18, 9.556334285011692e-20,
    9.04828556631066e-22, -4.5392456931392e-22, 1.117603257298594e-21, 2.0297112389412747e-05,
    -0.0033721988474964717, -6.16744624765005e-06, 0.0033722108459400893, -1.4129627678037956e-05,
    -1.1998376798331493e-08, -3.846499029414353e-11, -6.684566825514758e-14, 1.2652095208790594e-15,
    2.7245720547359042e-17, 3.172558286494828e-19, 5.797247748267587e-21, -6.138075075247013e-21,
    -1.9379588160204295e-20, 4.9677252576742156e-20, 0.0, 2.5419488563835014e-07,
    8.815035706695605e-05, -0.01107004966124922, 7.834317128676383e-05, 1.1067268603861581e-07,
    6.560636437188654e-10, 4.739056221262055e-12, 3.777484147167294e-14, 3.2041480436869793e-16,
    2.8371598661662936e-18, 2.5884754983961448e-20, 2.1707701241582064e-22, 8.124592283563357e-23,
    -6.509015067823769e-23, -6.755599336871735e-09, -2.996122757855698e-06, -0.00035136043271639835,
    0.10492306095082056, 0.00018391356709310873, 2.042446564060915e-06, 2.29457027826153e-08,
    2.5757692269093706e-10, 2.887647722465028e-12, 3.233694783156068e-14, 3.618177228048576e-16,
    4.044760654732574e-18, 4.507222782051059e-20, 8.18390733260696e-22, -2.699256394336666e-22,
    1.866386169760534e-08, 9.539596010604952e-06, -0.0022791786406278465, -1.1784779994807977e-06,
    0.0022791679186409813, -8.361091982932811e-06, -7.941806807341898e-09, -2.6028585453785255e-11,
    -6.803571105471211e-14, 3.9391301653373983e-16, 1.1553901683089038e-17, 1.4017598799025603e-19,
    -2.6166335739866687e-21, 1.2924859087361413e-20, -1.335861412895987e-20, 0.0,
    7.62460932065652e-10, 8.46843723266541e-08, 4.5028718184189267e-05, -0.006272619319610276,
    4.3358593212863984e-05, 6.606961347246e-08, 3.904201923697067e-10, 2.8132110037677956e-12,
    2.2385593090475998e-14, 1.8957990089644239e-16, 1.6761325635430959e-18, 1.5211629623290905e-20,
    1.303697583262148e-22, 4.564659158217421e-23, -3.055311391742277e-11, -1.608461395105192e-08,
    -1.6267743205094036e-06, -0.0001788990693147028, 0.07907654125668095, 0.00011051783254280774,
    1.1990214505469656e-06, 1.3365482907228995e-08, 1.4955571917533596e-10, 1.6740664624566018e-12,
    1.8731642814592346e-14, 2.094943000738763e-16, 2.3415661073181112e-18, 2.6070607652744706e-20,
    5.064288711376083e-22, 5.522627873516097e-11, 9.264420128792833e-09, 6.30065485404751e-06,
    -0.0017177192757808811, -3.6613394621876815e-07, 0.0017177157040636052, -5.9345575406688905e-06,
    -5.6926499760884305e-09, -1.8593617710147246e-11, -5.288369164603618e-14, 1.7896246736001572e-16,
    6.592566236960847e-18, 8.843425065798373e-20, -2.4403275002179977e-21, 9.795404426755356e-21,
    0.0, 2.1151255238503433e-12, 3.013076259531673e-10, 4.6736739599046625e-08,
    2.7798729670682322e-05, -0.004028151331114262, 2.7474542596904278e-05, 4.3402765605289714e-08,
    2.5706311870615907e-10, 1.8535302417011677e-12, 1.4752922976767647e-14, 1.2492720950027133e-16,
    1.1041423519156792e-18, 1.0018306503674594e-20, 8.667520408166153e-23, -1.0026794491763027e-13,
    -1.0619069241785052e-10, -1.030083978412496e-08, -1.0074774286851018e-06, -0.00010817513118118098,
    0.06340477857059794, 7.369938675231733e-05, 7.879623495103498e-07, 8.735284471604322e-09,
    9.750827752705724e-11, 1.0901125182435988e-12, 1.218913060544751e-14, 1.362672311841771e-16,
    1.5226753679239732e-18, 1.6945679317851107e-20, 1.5356735944995629e-13, 2.930954229845081e-11,
    5.8300324760954336e-09, 4.758439701899286e-06, -0.0013772900905182242, -1.4859414736098667e-07,
    0.0013772886457978147, -4.609860676363761e-06, -4.385424229243554e-09, -1.4187819109864419e-11,
    -4.140876997820753e-14, 1.0218212955194222e-16, 4.409457909696403e-18, 5.769427011945307e-20,
    -2.1834586440223783e-21, 0.0, -3.1698250198134235e-15, 1.223773443296709e-12,
    1.8389415468924812e-10, 3.101003291250432e-08, 1.8984894075348404e-05, -0.0028025105216555085,
    1.8956275804151818e-05, 3.0538289506523063e-08, 1.8137486397568e-10, 1.3095615912550937e-12,
    1.0431976446895793e-14, 8.837571008187096e-17, 7.812066732629456e-19, 7.087201560428416e-21,
    1.7647313855730299e-16, -7.78278463739936e-13, -7.506412395469409e-11, -7.074185033777236e-09,
    -6.839554996597937e-07, -7.242103211200731e-05, 0.05290257772121002, 5.2637500874541825e-05,
    5.571695355121766e-07, 6.151776986242327e-09, 6.854024689608486e-11, 7.654848877011192e-13,
    8.554255403033839e-15, 9.559691816840335e-17, 1.0679552587659203e-18, -2.1960427259216854e-16,
    9.372742693773869e-14, 1.8318742605990716e-11, 4.242000754567294e-09, 3.846377572118791e-06,
    -0.0011491580333535512, -7.129059303486315e-08, 0.0011491573446823164, -3.7750939182423584e-06,
    -3.553389804869344e-09, -1.1379432434007213e-11, -3.344512731439204e-14, 6.778787577397419e-17,
    3.246342702238498e-18, 4.159742139513757e-20, 0.0, -1.6179121243375185e-16,
    4.108129442603757e-15, 8.715722880744581e-13, 1.3084204275178637e-10, 2.2432301740329836e-08,
    1.3824530693303142e-05, -0.00206128964894485, 1.386522720574512e-05, 2.2597540788751883e-08,
    1.3453306414103955e-10, 9.726866117272835e-13, 7.755739254844695e-15, 6.574331054431583e-17,
    5.812168547168745e-19, 9.217285218647023e-18, -6.08748578592507e-15, -5.910616947985349e-13,
    -5.511059168427978e-11, -5.149419819963533e-09, -4.944427758791756e-07, -5.186472506959298e-05,
    0.04537887904774272, 3.946978843574645e-05, 4.1475657235452394e-07, 4.565209718097938e-09,
    5.0787102082281285e-11, 5.667384997926813e-13, 6.330100464960113e-15, 7.071911609523e-17,
    -1.1583309038135361e-17, 3.424306116703465e-17, 5.854700338222201e-14, 1.3078334690145683e-11,
    3.352100812363811e-09, 3.2382718433955093e-06, -0.0009857264504747332, -3.8359179002931396e-08,
    0.0009857260817855112, -3.1999162763321955e-06, -2.983442311361364e-09, -9.466479144411055e-12,
    -2.781697664391846e-14, 4.976912740825157e-17, 2.5621110887397934e-18, 0.0,
    -2.4226592537581076e-18, -3.161144648520929e-18, 4.231832258130834e-15, 6.752507685583898e-13,
    9.956827734456678e-11, 1.7083814694637985e-08, 1.052938355403499e-05, -0.0015793208698109777,
    1.0581739504677835e-05, 1.7373045908961224e-08, 1.03625096647285e-10, 7.501234752280826e-13,
    5.986468391756816e-15, 5.0768392365072704e-17, 1.5207976077194225e-19, -4.9806524964322113e-17,
    -4.894565632139939e-15, -4.556412646575786e-13, -4.2089477049962797e-11, -3.914013999361018e-09,
    -3.7403273744091283e-07, -3.896743409283874e-05, 0.03972575085162067, 3.069134640369644e-05,
    3.20730460215849e-07, 3.5216490207557543e-09, 3.912985192973407e-11, 4.363501805603294e-13,
    4.8716798347830115e-15, -1.6587691874496052e-19, -4.6323169767472045e-18, 2.190725255710429e-17,
    4.0834965854326374e-14, 1.0156846362330889e-11, 2.7854041739318447e-09, 2.801327150085875e-06,
    -0.0008629280655307024, -2.2438823231581253e-08, 0.0008629278506476567, -2.77889039167826e-06,
    -2.570538253981802e-09, -8.092083352384589e-12, -2.3706012355915883e-14, 4.033525578769547e-17,
    0.0, -3.0085799193412326e-20, -3.0643948536300685e-19, 1.7696315956697658e-17,
    3.7562595680869114e-15, 5.426317645750374e-13, 7.877769367486505e-11, 1.347867365945777e-08,
    8.292354065772745e-06, -0.0012484799381134453, 8.341069054132604e-06, 1.3761003820699733e-08,
    8.220117136806789e-11, 5.956435383507657e-13, 4.756732143536658e-15, 3.5845033514787585e-21,
    -4.2040566839214063e-19, -4.201790067476245e-17, -3.920012821847264e-15, -3.6079455387817927e-13,
    -3.3171438593237156e-11, -3.074832511863898e-09, -2.92803278744036e-07, -3.0346572976106642e-05,
    0.03532351057123437, 2.454725880242778e-05, 2.5541032779654275e-07, 2.798892387848799e-09,
    3.106768702941865e-11, 3.4624394556260334e-13, -4.303473127426048e-22, -7.521290794542124e-20,
    -2.8991210527111094e-18, 6.5644241147133835e-18, 3.090713197434933e-14, 8.328421474020598e-12,
    2.3918689297616416e-09, 2.4709756406748264e-06, -0.0007673018223164886, -1.3988406157029759e-08,
    0.000767301688714771, -2.456988500994681e-06, -2.2582775135331755e-09, -7.061983797688806e-12,
    -2.0520877032511836e-14, 0.0, -8.214031909475537e-22, -4.84208654882313e-21,
    2.4377766743495648e-20, 2.091473334971817e-17, 3.2416535873146992e-15, 4.461315986476362e-13,
    6.402595734125968e-11, 1.0918650689532398e-08, 6.70231554347979e-06, -0.0010116291022891331,
    6.7440067117529585e-06, 1.1163397928503755e-08, 6.676071022748503e-11, 4.841167852924681e-13,
    -3.85052034978473e-21, -2.089596571757325e-21, -3.712596579354604e-19, -3.472133682094167e-17,
    -3.194359779283586e-15, -2.9243416264000953e-13, -2.680704741630317e-11, -2.4790866018213034e-09,
    -2.3543009777386295e-07, -2.4300464205967114e-05, 0.031798717526965115, 2.007966413108658e-05,
    2.0819430355873788e-07, 2.2777650815029695e-09, 2.5261798858002722e-11, -3.9685864422386345e-21,
    4.55612082304143e-21, -5.2783949781906355e-20, -2.145493402368489e-18, -2.375489594343037e-18,
    2.4773410965595204e-14, 7.0837253052109065e-12, 2.1014585060398613e-09, 2.211836226211168e-06,
    -0.0006907356975305957, -9.16836130282051e-09, 0.0006907356101379118, -2.2026686852488256e-06,
    -2.0140724206448964e-09, -6.257178484503639e-12, 0.0, 1.1479791446921178e-21,
    -1.177444632981713e-22, -7.938711527348868e-22, 1.0566880122533955e-19, 2.0126608786754937e-17,
    2.7873983074047634e-15, 3.7318677144493187e-13, 5.311005694620956e-11, 9.030018825024448e-09,
    5.530886286279068e-06, -0.0008362775800028958, 5.56562361218149e-06, 9.234613292037538e-09,
    5.5271640308798675e-11, 3.5349983513705515e-21, -3.6961266533151256e-21, -2.9254462064374087e-21,
    -3.1442630258472033e-19, -2.8969941335699714e-17, -2.648445998978092e-15, -2.4168937382891364e-13,
    -2.210972898960892e-11, -2.041029895184157e-09, -1.9340879249842994e-07, -1.9896967284581517e-05,
    0.028913011338407586, 1.6729650182494797e-05, 1.729597775113591e-07, 1.8897032566558707e-09,
    3.707247151489076e-21, -1.28040772900739e-20, 2.19091005165409e-21, -3.453626176729065e-20,
    -1.7216905803969304e-18, -7.228372135044304e-18, 2.0681802047677548e-14, 6.182113604236527e-12,
    1.87746941468161e-09, 2.002793143197483e-06, -0.0006280519513918399, -6.257338132769239e-09,
    0.0006280518918365878, -1.9965363615019047e-06, -1.8174266527166063e-09, 0.0,
    -3.4707723962813745e-22, 2.148489375298102e-22, -2.3781518096303216e-23, 3.165828962670868e-22,
    1.2441068761836178e-19, 1.8349109950968355e-17, 2.406022830805036e-15, 3.1662423283138474e-13,
    4.478245938713753e-11, 7.594756115716152e-09, 4.642588216860668e-06, -0.0007028464285181324,
    4.671336156696816e-06, 7.763796586358257e-09, -8.435319473663485e-21, 1.2770498437501806e-21,
    -1.1891901865366031e-21, -2.7674171583183954e-21, -2.6731197330296074e-19, -2.4476151490944867e-17,
    -2.2296075120468416e-15, -2.0303707999102186e-13, -1.854540935118862e-11, -1.70957054555997e-09,
    -1.6171273030082673e-07, -1.6590639141118803e-05, 0.026507141268980895, 1.4153242288759071e-05,
    1.4597001545384997e-07, -8.4873805369912e-21, 4.7187549200715656e-21, -7.564418037150998e-21,
    8.323486512696516e-22, -2.2689723570701738e-20, -1.4475886955002326e-18, -9.800397388870096e-18,
    1.7783788018381132e-14, 5.497731711071805e-12, 1.6988814761661819e-09, 1.8304139474220034e-06,
    -0.0005757912963163446, -4.415529440347568e-09, 0.0005757912542985741, -1.8259533016103254e-06,
    0.0, 1.0582997270809174e-21, -7.206713625681464e-23, 3.819783299003722e-23,
    -4.344260259333446e-24, 6.984314084612962e-22, 1.2351479525420785e-19, 1.6440512309396037e-17,
    2.0899917558178105e-15, 2.718874373337764e-13, 3.8276295197449857e-11, 6.4775942397075396e-09,
    3.952783596371355e-06, -0.0005989685669825088, 3.976599981736815e-06, 1.1778254044007987e-21,
    -3.397441179000205e-21, 4.3995955122341005e-22, -3.362075414943868e-22, -2.4162477576205667e-21,
    -2.2955015949613396e-19, -2.092790206337231e-17, -1.901978710123605e-15, -1.7293858068071875e-13,
    -1.57774821141275e-11, -1.4527411612830422e-09, -1.3721622294861656e-07, -1.4045026218569496e-05,
    0.024470679594896516, 1.2128626287987357e-05, 1.3365709125066598e-21, -1.181050628207201e-20,
    3.0286102674830782e-21, -3.005723638769195e-21, 8.2631047895798045e-22, -1.8229653900031213e-20,
    -1.2551909214023079e-18, -1.1099849813276609e-17, 1.5631845188344966e-14, 4.959211095801309e-12,
    1.5527911005539218e-09, 1.6857208315132758e-06, -0.0005315549942532292, -3.109512810296552e-09,
    0.0005315687504415522, 0.0, -1.0882119373690637e-22, 1.774993361335442e-22,
    -2.7944487400687706e-23, 2.1869567950656805e-23, 1.9649404866736886e-24, 7.963354244360771e-22,
    1.1524526033006637e-19, 1.4606672697697e-17, 1.8244874468220007e-15, 2.3565907363350227e-13,
    3.307516443075561e-11, 5.589263995295284e-09, 3.4062270510562935e-06, -0.0005165316878832305,
    -3.696014127442809e-21, 2.970249585497368e-22, -1.1198607288528053e-21, 2.8550566006837996e-22,
    -2.407711857951788e-22, -2.1107904501612337e-21, -1.9865473309562445e-19, -1.8066486351589635e-17,
    -1.6395929692323904e-15, -1.4893350224564153e-13, -1.357642597266256e-11, -1.2490355902520743e-09,
    -1.1784295837038775e-07, -1.2039919607623222e-05, 0.02272487930441136, -3.712337313710371e-21,
    1.2215393967772463e-21, -7.250833995886195e-21, 2.827159533766356e-21, -2.792830841777987e-21,
    7.955200933071733e-22, -1.6033827481445696e-20, -1.1781396854314508e-18, -1.7147239039719108e-17,
    1.3509978404415444e-14, 4.483242963080103e-12, 1.4272476084187782e-09, 1.5621393571591522e-06,
    -0.000493661621528136, -3.0230633656700334e-06, 0.0, 0.0017330258736944438,
    -7.3572469312771565e-06, -1.5885357519682332e-08, -1.209712790167715e-10, -1.0160036638278064e-12,
    -8.992879863365638e-15, -8.237392531905195e-17, -7.733264061311702e-19, -7.383679691245486e-21,
    -2.9350192255852015e-23, -5.31082672708923e-23, 4.5117907912560744e-23, -4.9848488673077033e-23,
    8.588962237075277e-24, -0.5002006644857045, -0.005721976763835997, -6.616374479125432e-05,
    -7.838195262686494e-07, -8.96975567502085e-09, -1.013581774782575e-10, -1.1390687090359318e-12,
    -1.2765463035486638e-14, -1.4283915390182686e-16, -1.5967879907703335e-18, -1.8603659899375297e-20,
    1.1824603196682118e-22, -1.130515850619915e-21, 2.9708502435106157e-22, -1.905912334197772e-22,
    0.5001892594214857, 0.006583124363268634, -6.996305943042152e-05, 2.655034261187765e-07,
    1.4979591744516803e-10, -1.4753773386894894e-12, -3.5837635830571343e-14, -5.442745598199932e-16,
    -7.237002043143297e-18, -8.818180067857045e-20, 6.39382155715761e-21, -2.464915616721757e-21,
    1.4858357521418516e-20, -5.491511488276837e-21, 3.2272072446334752e-21, 0.0,
    0.04389959335352711, -0.00012640887646901688, -3.241157213622071e-07, -2.9079544015793403e-09,
    -2.6820698179446064e-11, -2.517586583168013e-13, -2.399450929356087e-15, -2.317323534281529e-17,
    -2.2610581273103557e-19, -1.772097446466294e-21, -1.1032348897328554e-21, 3.651266627501702e-22,
    -1.042972838797305e-21, 9.944160228650069e-23, -0.00672836816514325, -0.14494433942850396,
    -0.002057561061955504, -2.5714131374453476e-05, -3.0148739662291254e-07, -3.4509952141491166e-09,
    -3.9078711031258575e-11, -4.4009009511640145e-13, -4.9407854026703395e-15, -5.536317316726662e-17,
    -6.197506787597875e-19, -7.086041642252766e-21, 5.246396982351002e-22, -1.1827914821062747e-21,
    2.594232098618688e-22, 0.006439465051274785, 0.5001062561513228, 0.00014386708594126403,
    1.3039986653172553e-05, 5.772562342575416e-08, 3.7382612254154885e-10, 2.3793089097270382e-12,
    1.3285513637240352e-14, 4.376600440933445e-17, -3.270229175573699e-19, -2.4176771025139094e-20,
    3.9417068071039697e-20, 6.6205352778026e-21, -1.3910946222228675e-20, 5.164625524111566e-21,
    0.0, 0.0007241996124255351, 0.012198968950801836, 1.873844472479414e-05,
    4.017641740258512e-08, -2.0169665848077325e-10, -4.9406755885218716e-12, -6.544169739750311e-14,
    -7.529604574911437e-16, -8.208679598512637e-18, -8.739146409851659e-20, -8.861430667178306e-22,
    -1.8765078586932498e-22, 5.183530154528464e-23, -1.7588258328389348e-22, -8.378614183137793e-05,
    -0.0023720101067249816, -0.0776768030563555, -0.001219367094149321, -1.5522636134782398e-05,
    -1.8468329009169823e-07, -2.135938566391884e-09, -2.436398286514477e-11, -2.7583047535968707e-13,
    -3.108903189719979e-15, -3.494160004568709e-17, -3.9178533162911015e-19, -4.730789386921563e-21,
    2.8784386914773806e-22, -1.044202230198808e-21, 7.915052667793396e-05, 0.004978417163409607,
    0.5000284342779955, 0.0016048879275151696, 1.1711052001096412e-05, 8.476903863017127e-08,
    6.550978128500997e-10, 5.255071634617861e-12, 4.2977149999413345e-14, 3.5362617307496964e-16,
    2.9336535504618398e-18, 2.1582480895259017e-20, 8.971433761274009e-21, 7.389384090282919e-21,
    -1.7331041750001438e-20, 0.0, 9.913012768531005e-06, 0.0001968044087041341,
    0.00553638898643058, 2.276030727633329e-05, 1.064214503314468e-07, 4.836540873991782e-10,
    1.6087605503714031e-12, -3.841518327816073e-15, -1.7234337446180208e-16, -2.692896827025247e-18,
    -3.443044216872752e-20, -3.9632890357694742e-22, -3.5655280674053e-23, 2.5704866915808063e-23,
    -1.0228279621213357e-06, -3.127410719319362e-05, -0.0013578567375213857, -0.05249747575834028,
    -0.0008731929827622435, -1.1403288312712914e-05, -1.377649911383363e-07, -1.6096564064984265e-09,
    -1.8493676693785652e-11, -2.1048385838868268e-13, -2.3819346083028103e-15, -2.6854900471559288e-17,
    -3.0196526219051594e-19, -3.831810256760753e-21, 2.019844973926991e-22, 9.597283465676809e-07,
    5.568909789456378e-05, 0.004430854135939827, 0.5000492358142457, 0.0021514673530023637,
    1.4370720146399463e-05, 1.0864050424176554e-07, 8.79464420127259e-10, 7.425264135659789e-12,
    6.442452922402392e-14, 5.69139329929965e-16, 5.101114305636989e-18, 4.860813783999513e-20,
    -1.8514084008019333e-21, 4.257859912450038e-21, 0.0, 1.2725120702593473e-07,
    2.6599612247594445e-06, 8.679848890275313e-05, 0.0031372998173312583, 1.8094462220934223e-05,
    1.0609646597513548e-07, 6.365141680058689e-10, 3.745835576041995e-12, 2.002462950588e-14,
    7.64559198445631e-17, -1.6594879134058137e-19, -8.99589462896183e-21, -1.4521845068811663e-22,
    -1.739978013177865e-23, -1.2333862682382963e-08, -3.864666201464472e-07, -1.8460947456179406e-05,
    -0.0009470088194209203, -0.03956472051869071, -0.0006816427385536294, -9.078725464987181e-06,
    -1.110836429123076e-07, -1.309444387115344e-09, -1.514208813589863e-11, -1.7318364900583128e-13,
    -1.9673012179095983e-15, -2.2247458449617914e-17, -2.5078314103902507e-19, -3.195240351097672e-21,
    1.1525438810689638e-08, 6.429343702660283e-07, 4.650416757828996e-05, 0.004150335685290299,
    0.5000562605876501, 0.0024322833871907924, 1.6519170395826882e-05, 1.278491833048979e-07,
    1.0606706067519308e-09, 9.18342560449386e-12, 8.18100555182783e-14, 7.435394016393406e-16,
    6.858008610508074e-18, 6.587978184076861e-20, -1.587653911374413e-22, 0.0,
    1.581119721763898e-09, 3.3877101757712385e-08, 1.1533020117992103e-06, 4.804331406892331e-05,
    0.002014769007942573, 1.3935465752328074e-05, 9.29982429746765e-08, 6.320729890384201e-10,
    4.3307304423142694e-12, 2.9285742969412856e-14, 1.889755943865496e-16, 1.0842133534410741e-18,
    4.343892709879849e-21, -7.37974262590042e-24, -1.4731738357780368e-10, -4.646057355116881e-09,
    -2.314447304027569e-07, -1.3101442115062666e-05, -0.0007270478822390042, -0.03172337345823398,
    -0.0005594711910106382, -7.562650608057993e-06, -9.348239951932202e-08, -1.1101744747927944e-09,
    -1.2910018057251188e-11, -1.4830059213990508e-13, -1.6904960071241232e-15, -1.917101745326295e-17,
    -2.1661240254079317e-19, 1.3728206699203322e-10, 7.487577058562744e-09, 5.164186675366002e-07,
    4.1734455703890005e-05, 0.003980171525080001, 0.500059443663825, 0.0026025588830352903,
    1.8109698090861185e-05, 1.428905301163653e-07, 1.2065223428431773e-09, 1.0622931287202376e-11,
    9.620753313571276e-14, 8.890766203347648e-16, 8.340627914113507e-18, 8.069550799826258e-20,
    0.0, 1.925728833025775e-11, 4.187189722090425e-10, 1.4531451101395246e-08,
    6.287137620762324e-07, 3.0286534375393633e-05, 0.0014017581421597158, 1.0875991571430868e-05,
    7.91193911991259e-08, 5.813582030417259e-10, 4.3223783559239394e-12, 3.223294134095943e-14,
    2.380713721607009e-16, 1.7101814428836872e-18, 1.1613958497320746e-20, -1.7460832090239387e-12,
    -5.504481779092784e-11, -2.8005040061759633e-09, -1.6585585438936797e-07, -1.0174881673983872e-05,
    -0.000590115587019254, -0.026468698893112885, -0.00047460905822401954, -6.488844021802545e-06,
    -8.087232047406223e-08, -9.664080622881981e-10, -1.1292625704992748e-11, -1.3022110632067066e-13,
    -1.4890442553810863e-15, -1.6929983330092848e-17, 1.6239269329354968e-12, 8.7307518344022e-11,
    5.859190515368354e-09, 4.502523592264568e-07, 3.882991499831099e-05, 0.0038661174541421307,
    0.5000611531291073, 0.0027166672781964427, 1.9306281667254012e-05, 1.5478139690995576e-07,
    1.3251198661767552e-09, 1.1815589753437806e-11, 1.0829720333540755e-13, 1.0125070959663758e-15,
    9.60302123599003e-18, 0.0, 2.313753090878066e-13, 5.080833728015712e-12,
    1.7832636187288821e-10, 7.841857264920942e-09, 3.913077250056764e-07, 2.0763392235803683e-05,
    0.0010310234982444308, 8.66254070777636e-06, 6.706089786311407e-08, 5.207135967235231e-10,
    4.0874127076470204e-12, 3.23147345023138e-14, 2.5566443203674744e-16, 2.01013437458968e-18,
    -2.056569996269543e-14, -6.462768339741904e-13, -3.3259987813000574e-11, -2.017646950931916e-09,
    -1.2973746099919465e-07, -8.326718149771118e-06, -0.0004966511808518386, -0.022704323527308792,
    -0.000412175992874616, -5.68589574946432e-06, -7.134412263625784e-08, -8.570252140728581e-10,
    -1.0056320611576117e-11, -1.1635785708240054e-13, -1.3342446899797725e-15, 1.9098553540475504e-14,
    1.016662303481797e-12, 6.704860373122014e-11, 5.0042957211889515e-09, 4.0985726850718436e-07,
    3.688165725300128e-05, 0.0037844019680920325, 0.5000621770286319, 0.0027984136143721578,
    2.023139759655844e-05, 1.6434560113927076e-07, 1.4229029219513103e-09, 1.2816173184831093e-11,
    1.1857243504416201e-13, 1.1180714994696127e-15, 0.0, 2.75255567471129e-15,
    6.087748753525112e-14, 2.1529970461555078e-12, 9.55605053411086e-11, 4.837394117097082e-09,
    2.654246476773099e-07, 1.5091237558861661e-05, 0.0007899548527997185, 7.037481146317934e-06,
    5.711124449575157e-08, 4.6234541286631647e-10, 3.776665048682134e-12, 3.109574429493437e-14,
    2.5730476782472186e-16, -2.4095682391972175e-16, -7.540635892857388e-15, -3.906142362477502e-13,
    -2.4029944240883793e-11, -1.5853727545484177e-09, -1.0676246891525312e-07, -7.051302360032601e-06,
    -0.0004287795620440869, -0.019875877127248538, -0.00036429626775924014, -5.061739804009351e-06,
    -6.386887852667964e-08, -7.706542712123578e-10, -9.07562400766179e-12, -1.0532474512022355e-13,
    2.235121110998194e-16, 1.1812668498809361e-14, 7.697468637194914e-13, 5.6389576847397365e-11,
    4.481572180625545e-09, 3.827382489200291e-07, 3.548648702190842e-05, 0.003722999222713233,
    0.5000628387846546, 0.0028598356588113026, 2.0965253011995957e-05, 1.7217537704504067e-07,
    1.5046572900029028e-09, 1.3665729702863207e-11, 1.2736672250124652e-13, 0.0,
    3.249887583449312e-17, 7.226891810825544e-16, 2.5701650810259202e-14, 1.1479127936096304e-12,
    5.857234916846838e-11, 3.25597595971961e-09, 1.9120101782558539e-07, 1.1450165884495563e-05,
    0.0006244750022567047, 5.8190584609729185e-06, 4.9006464932911094e-08, 4.099890072727402e-10,
    3.4541626386915038e-12, 2.9338439360977457e-14, -2.812305528948897e-18, -8.757359050105264e-17,
    -4.55367063017497e-15, -2.825783595946281e-13, -1.8934031309274417e-11, -1.309526390084992e-09,
    -9.080830697191186e-08, -6.117028445490841e-06, -0.0003772475197147288, -0.017673299179741135,
    -0.00032640259612734524, -4.5621420119590886e-06, -5.783677795208114e-08, -7.005452208226853e-10,
    -8.27608196827214e-12, 2.604409382572789e-18, 1.3692113270634593e-16, 8.844731697528559e-15,
    6.39665034092723e-13, 4.986611586341702e-11, 4.130423550169138e-09, 3.6331571620532187e-07,
    3.443916241619224e-05, 0.0036751813660353522, 0.5000632912027084, 0.0029076664297591846,
    2.1560441593714446e-05, 1.786894368090191e-07, 1.5738987359074554e-09, 1.4392045008447026e-11,
    0.0, 3.812434884485627e-19, 8.518389002384041e-18, 3.0425223759663463e-16,
    1.3651582894103015e-14, 7.002706017350449e-13, 3.9199764433794545e-11, 2.329862784081137e-09,
    1.439778041454729e-07, 8.978019655507969e-06, 0.0005060063109655355, 4.886080493122346e-06,
    4.239945288562948e-08, 3.643016922949181e-10, 3.147721618861004e-12, -4.2655175135855645e-20,
    -1.012731874822693e-18, -5.2807154995222044e-17, -3.2953932788323457e-15, -2.2302137900011658e-13,
    -1.5679296645540402e-11, -1.117348079005275e-09, -7.905859736480441e-08, -5.40264234548575e-06,
    -0.0003367845382896833, -0.0159097398376919, -0.0002956610000353646, -4.152943735655198e-06,
    -5.286096560389738e-08, -6.424000824499504e-10, 3.6114967872267984e-20, 1.5790456774155095e-18,
    1.0160950938903215e-16, 7.279861630194903e-15, 5.600085115913606e-13, 4.548206227546349e-11,
    3.878882548422926e-09, 3.4873900483360845e-07, 3.362450124303611e-05, 0.0036368933897721178,
    0.5000636141733437, 0.0029459634892678092, 2.205232441708815e-05, 1.8418665566804917e-07,
    1.63296291745888e-09, 0.0, 6.813354942210095e-21, 9.968461759702822e-20,
    3.578164642329116e-18, 1.6113421934322064e-16, 8.297944829760345e-15, 4.666352415963098e-13,
    2.790831039839274e-11, 1.7442847167569783e-09, 1.1216535401673947e-07, 7.224748074922299e-06,
    0.0004182981097531716, 4.157694287200706e-06, 3.6980862548504054e-08, 3.2492782123858157e-10,
    3.1189621550533504e-21, -1.9548456502693736e-20, -6.091952553759919e-19, -3.8205288651499124e-17,
    -2.6032075188577507e-15, -1.849973314875999e-13, -1.3408509551344268e-11, -9.753694881724386e-10,
    -7.003251745928347e-08, -4.838413883147517e-06, -0.00030416778371002525, -0.014465937363335814,
    -0.0002702186423620473, -3.8115044184222976e-06, -4.868263711831021e-08, -2.963727301479286e-21,
    3.573316673207626e-20, 1.1625880768722713e-18, 8.296958944285824e-17, 6.321272419696181e-15,
    5.064620038975293e-13, 4.2341099070548755e-11, 3.6901032870048343e-09, 3.374049635621352e-07,
    3.297298031627416e-05, 0.0036055468078817375, 0.5000638527898351, 0.0029773167104119413,
    2.246536625417954e-05, 1.8886005591661874e-07, 0.0, -8.062772101414832e-22,
    1.4601609134913373e-21, 4.1869776812429747e-20, 1.8906297504477597e-18, 9.766656166301833e-17,
    5.510891638679121e-15, 3.309222757721307e-13, 2.0800268960884586e-11, 1.3520111836099583e-09,
    8.975914751958544e-08, 5.937236805909143e-06, 0.00035155762189435297, 3.5790797940777982e-06,
    3.250620763016454e-08, -1.7405860764784085e-20, 2.6311800256951856e-21, -8.944565069065477e-21,
    -4.411557061953696e-19, -3.019246906969285e-17, -2.1617577283794607e-15, -1.584600273321735e-13,
    -1.1728061029287208e-11, -8.659816412106484e-10, -6.287487865627634e-08, -4.3813507877478585e-06,
    -0.00027731542398767964, -0.013262212430428608, -0.00024881254401343895, -3.522135055072951e-06,
    1.1347866166401482e-20, -5.933619592391221e-21, 2.260045068777989e-20, 9.456546213181114e-19,
    7.155026364878191e-17, 5.676788875632139e-15, 4.680944534385605e-13, 3.998376954976631e-11,
    3.543338051451528e-09, 3.2834480196143326e-07, 3.2440198325899256e-05, 0.00357941211229405,
    0.5000640340801477, 0.003003456401059113, 2.28147097826938e-05, 0.0,
    1.7402956079329373e-21, -9.18701434939306e-23, 6.0073760148812245e-22, 2.2081566726574644e-20,
    1.1433467291078507e-18, 6.46899112785363e-17, 3.896062764938398e-15, 2.4576723347274007e-13,
    1.6058118386852798e-11, 1.0771229507585199e-09, 7.340578769586892e-08, 4.964457224925753e-06,
    0.0002995991605000412, 3.112565040085099e-06, 6.218417252979878e-21, -5.794838794899454e-21,
    4.468937627733168e-22, -6.164506421997236e-21, -3.486400104843139e-19, -2.508961643346432e-17,
    -1.853777102310159e-15, -1.3880740244849246e-13, -1.0431076465164803e-11, -7.790032670022978e-10,
    -5.7056266922832414e-08, -4.003481554281096e-06, -0.00025482258747900217, -0.012243313889744093,
    -0.00023054315796091295, -2.6748684170055118e-21, 1.4517402066741365e-20, -3.0846902530036156e-21,
    1.623512119918584e-20, 8.107600208791741e-19, 6.387470345581635e-17, 5.214970148027861e-15,
    4.3929842766247104e-13, 3.815115765322893e-11, 3.4260391467382085e-09, 3.20939411878713e-07,
    3.199649041649305e-05, 0.0035572899528733084, 0.5000641738120813, 0.003025359140961296,
    0.0, -5.26976991254007e-22, 4.42987802695478e-22, -4.137152887059505e-23,
    3.2069665823461684e-22, 1.3327822658814458e-20, 7.556090896232534e-19, 4.5617187384262916e-17,
    2.885108236481594e-15, 1.8911698990090802e-13, 1.2746712819342149e-11, 8.773555397329451e-10,
    6.111339027316427e-08, 4.211595351718335e-06, 0.0002583608601809675, -2.499992284329633e-21,
    1.7709308034669107e-21, -2.7852324874048623e-21, 3.288350090000313e-22, -4.839573175829017e-21,
    -2.8979785893636854e-19, -2.1530793740842315e-17, -1.6255609322246861e-15, -1.2361629581482465e-13,
    -9.397331915384755e-12, -7.080711745484155e-10, -5.2227055348970946e-08, -3.685526345328395e-06,
    -0.0002356867652714073, -0.011368467844550301, 3.2654822476060754e-21, -2.6621545447386076e-21,
    1.0863652846801476e-20, -3.153256671892882e-21, 1.4578543920390763e-20, 7.200190606798208e-19,
    5.837058304732161e-17, 4.8680328926115625e-15, 4.168849845953056e-13, 3.66842069573116e-11,
    3.32997083211419e-09, 3.147554808176798e-07, 3.1619431864556814e-05, 0.0035381432259608938,
    0.5000395825647164,
]

N_ODD = 42
# odd-block approximate inverse A_odd, row-major 42 x 42
AMAT_ODD = [
    0.2896440836814519, -0.0019321618208599997, -2.9839908846549353e-06, -1.9054468555429878e-08,
    -1.4046271561813886e-10, -1.128407551714676e-12, -9.602123867833535e-15, -8.510396431716692e-17,
    -7.707683343649221e-19, -8.608437221039428e-21, 3.2335548742428055e-21, 1.1324121761504351e-21,
    -2.1995817668915225e-21, 6.315547850949314e-22, 0.04400269639178119, -6.666574761197262e-07,
    -1.3563192853359716e-05, -2.3255966363405417e-07, -3.1757367453603946e-09, -4.005570285335181e-11,
    -4.861040767720889e-13, -5.770330939651257e-15, -6.75452508059993e-17, -7.833928835037885e-19,
    -8.46525049597339e-21, -1.6365041826384436e-22, 4.982442412939693e-22, -3.097899509027659e-23,
    -0.00041303591943687176, 0.0009542601155114179, 0.00013366912044406138, 6.343059636796423e-07,
    5.872854477877532e-09, 5.7688412102326175e-11, 5.820104582387098e-13, 5.969616509896758e-15,
    6.192457070670948e-17, 6.385486239697125e-19, 2.8101459347263656e-20, -1.213660243179686e-20,
    2.087625720774748e-20, -2.4477191428656646e-21, 0.0020000715603618103, 0.1552254534353873,
    -0.0007023004688321938, -2.4896551579436357e-06, -1.5314657979299122e-08, -1.1285319504631559e-10,
    -9.092200597611052e-13, -7.745470312784846e-15, -6.860831128603667e-17, -6.205132214507438e-19,
    -5.7838755705666305e-21, 2.944001479953258e-22, 9.031495046485615e-22, -2.2354683311013243e-21,
    0.00022469478926562231, 0.012221807437252258, -8.979437996745164e-06, -5.71627209022562e-06,
    -1.097099188909868e-07, -1.6022859444890297e-09, -2.1145738596614154e-11, -2.6525029735734043e-13,
    -3.2299283592681658e-15, -3.858573002793409e-17, -4.548786859859779e-19, -5.235493634571273e-21,
    -2.420881020232398e-23, 7.403068332878393e-23, -0.0002706392183077954, -0.00014148128952640645,
    0.00026621063315467313, 7.224436681396608e-05, 5.324820867378375e-07, 5.072980185916558e-09,
    5.123743237506239e-11, 5.292259751201459e-13, 5.533994770540824e-15, 5.834084120165984e-17,
    6.143029196135147e-19, 1.0791504017567776e-20, -3.7905418940345764e-21, 3.3790784151115864e-21,
    2.6874526956868346e-05, 0.0007160886140015764, 0.10491940225431831, -0.0003584081407462932,
    -1.7164589289010356e-06, -1.1516618606079533e-08, -8.858321436957365e-11, -7.327412685434759e-13,
    -6.351972884430974e-15, -5.694240514753764e-17, -5.214284830605347e-19, -4.631500383958833e-21,
    -6.629990860555716e-22, 5.627470470300729e-22, -1.1517988743755558e-05, 3.763813866925655e-05,
    0.00554553997983264, -4.601326662423746e-06, -3.130578864262463e-06, -6.424086934657183e-08,
    -9.805171463256999e-10, -1.3355534275104969e-11, -1.7160156205793435e-13, -2.129653366183165e-15,
    -2.583858761264424e-17, -3.0855017647692103e-19, -3.641469627087855e-21, -2.999851615190476e-23,
    4.9011774975300284e-05, -0.0001222248006481074, -9.810884260978593e-05, 0.00012053478925107218,
    4.904263825820028e-05, 4.3072393222610227e-07, 4.318423070882303e-09, 4.489235938352035e-11,
    4.732612207344319e-13, 5.02711801147774e-15, 5.366847670455719e-17, 5.726220553156358e-19,
    7.149073809944676e-21, -1.5242322128116563e-21, 3.4648013331376877e-07, 8.752054064029534e-06,
    0.00036336861456756, 0.07907504919114061, -0.00021683361261750394, -1.221898590963874e-06,
    -8.80145755167793e-09, -7.052178028847802e-11, -5.993901440538567e-13, -5.297028547788268e-15,
    -4.8163571788561226e-17, -4.468335241880067e-19, -4.045120928549138e-21, -4.732471193775289e-22,
    -2.6847951094966624e-07, -5.324422963072956e-06, 1.2106292562708318e-05, 0.003142313819383512,
    -2.5085725199802415e-06, -1.976239620105941e-06, -4.238158089610605e-08, -6.672574328819898e-10,
    -9.302570096032031e-12, -1.217270216915559e-13, -1.5331802073183087e-15, -1.8831296720068867e-17,
    -2.272327850451987e-19, -2.7089598685838774e-21, 7.907086983397127e-07, 3.724698594806286e-05,
    -6.932207557703104e-05, -7.432096663122176e-05, 6.817262785007627e-05, 3.705185211598982e-05,
    3.580766306658214e-07, 3.732694836259286e-09, 3.9720208938862245e-11, 4.2576763579189244e-13,
    4.581041034653546e-15, 4.9413699991068644e-17, 5.328081370899568e-19, 6.404179199698714e-21,
    4.333045957193841e-09, 1.071018085810444e-07, 4.24246307120727e-06, 0.00021915320416906616,
    0.06340402669890664, -0.00014517486710502326, -9.0692839847839e-07, -6.895481787935549e-09,
    -5.717535543411241e-11, -4.978207081468094e-13, -4.479016947675234e-15, -4.129011154871034e-17,
    -3.873322537337123e-19, -3.559095772038321e-21, -4.348455132808945e-09, -1.2388493707641914e-07,
    -2.9910198758567955e-06, 5.294591554650365e-06, 0.0020179444844492895, -1.4917667702846465e-06,
    -1.3614712548396546e-06, -3.0125703185006e-08, -4.853568587446412e-10, -6.888694624651559e-12,
    -9.144673778745352e-14, -1.165558481844302e-15, -1.446004150751299e-17, -1.7598740766449872e-19,
    1.106856493727203e-08, 5.721758062590545e-07, 2.99324173366127e-05, -4.457803747271029e-05,
    -5.970031154809877e-05, 4.370009578051052e-05, 2.975353920442743e-05, 3.054840572379081e-07,
    3.278477207391761e-09, 3.553973705902021e-11, 3.861583171927728e-13, 4.1991769275725814e-15,
    4.568764948456075e-17, 4.963019272929521e-19, 5.3095681704243974e-11, 1.2961082712686878e-09,
    5.048233557321006e-08, 2.4884644777768696e-06, 0.0001464411432873367, 0.05290214637319069,
    -0.00010395957159907731, -6.975760378126182e-07, -5.529764534828465e-09, -4.716397052910143e-11,
    -4.192683846970722e-13, -3.832981828201979e-15, -3.578348209555003e-17, -3.391510030262876e-19,
    -6.187236501171189e-11, -2.0453767754586903e-09, -7.086679534764435e-08, -1.9103873149259378e-06,
    2.7656533846533753e-06, 0.0014039517467238386, -9.520230791498974e-07, -9.95179800795649e-07,
    -2.254163556222838e-08, -3.696959320664768e-10, -5.3221252810062115e-12, -7.147894005024932e-14,
    -9.2001077229981e-16, -1.1509371739691063e-17, 1.4516479064849229e-10, 7.845347921791913e-09,
    4.474592909969108e-07, 2.4993490479451768e-05, -3.106239195738711e-05, -4.985451099207893e-05,
    3.0348717160002043e-05, 2.485025226446896e-05, 2.660381249278154e-07, 2.919396709512027e-09,
    3.2121824359032214e-11, 3.529407724727076e-13, 3.872202034143684e-15, 4.2433490698681106e-17,
    6.413464263950881e-13, 1.552580370016092e-11, 5.99248668380314e-10, 2.9090610051261637e-08,
    1.631615657193578e-06, 0.00010472522125225766, 0.04537860883308739, -7.80982705312623e-05,
    -5.523406448018085e-07, -4.52527660731394e-09, -3.9509859413468126e-11, -3.575285949854424e-13,
    -3.314783067390161e-15, -3.129789005288734e-17, -8.247264318144079e-13, -2.961508768329487e-11,
    -1.1926404835794525e-09, -4.598136342435644e-08, -1.3250491192988464e-06, 1.6214363669263765e-06,
    0.0010326302449133232, -6.420848116764775e-07, -7.592862121472866e-07, -1.751337373742471e-08,
    -2.9133390163533025e-10, -4.242754724048405e-12, -5.753474195053597e-14, -7.466248311432178e-16,
    1.8351462278290968e-12, 1.0177512132528307e-10, 6.060024703013381e-09, 3.671211004186927e-07,
    2.1444656389187358e-05, -2.2884302340004665e-05, -4.2784666994917714e-05, 2.2281574602931055e-05,
    2.133131882618267e-05, 2.354755320000757e-07, 2.629593774311121e-09, 2.928674235970608e-11,
    3.2480331606753843e-13, 3.5899624669418474e-15, 7.665251212259908e-15, 1.8444281262340312e-13,
    7.076489229659887e-12, 3.4093372939778113e-10, 1.884040004776776e-08, 1.1508243588605013e-06,
    7.85960617187215e-05, 0.0397255704448165, -6.081254313274717e-05, -4.4779958218303047e-07,
    -3.76785263382664e-09, -3.354744322958572e-11, -3.0825127199075955e-13, -2.8932942634056657e-15,
    -1.057448655685524e-14, -4.004953993958348e-13, -1.7540393522782285e-11, -7.854715877596181e-10,
    -3.2293919606519856e-08, -9.728683820176652e-07, 1.0307580132825634e-06, 0.0007911826687516712,
    -4.523860169925351e-07, -5.98429177190393e-07, -1.4004651805701468e-08, -2.356785028857596e-10,
    -3.4652999338803983e-12, -4.737388672741094e-14, 2.266208969445063e-14, 1.278164385987111e-12,
    7.808124718414523e-11, 4.931052549270465e-09, 3.1112990665914313e-07, 1.8774530757395682e-05,
    -1.7563084336815483e-05, -3.7465682265109834e-05, 1.7040705458147207e-05, 1.8683827593026634e-05,
    2.1114396256137164e-07, 2.3912827406178905e-09, 2.6902179480707738e-11, 3.0068189649486933e-13,
    9.087126110372562e-17, 2.1765300605757086e-15, 8.314201381418566e-14, 3.986526348066455e-12,
    2.187979649182276e-10, 1.3168466885616423e-08, 8.546354736139702e-07, 6.115421594828476e-05,
    0.03532338416163011, -4.86904948321016e-05, -3.701825953724834e-07, -3.1838829388561703e-09,
    -2.8822244000442076e-11, -2.6835525276627056e-13, -1.3216658827994124e-16, -5.1965869959252305e-15,
    -2.402322396334193e-13, -1.169527700924248e-11, -5.581161061412367e-10, -2.394740439447879e-08,
    -7.446069099676453e-07, 6.956790909287847e-07, 0.0006254438827008465, -3.3014011162610706e-07,
    -4.838195966438653e-07, -1.1457472925338706e-08, -1.9467758988799143e-10, -2.885584610544386e-12,
    2.753601605481066e-16, 1.5715454541704084e-14, 9.76446058584587e-13, 6.323750173953323e-11,
    4.15423754964796e-09, 2.699032132665434e-07, 1.6693876369260233e-05, -1.3907715560055142e-05,
    -3.332033925005857e-05, 1.344639047315899e-05, 1.6620115291368337e-05, 1.9133374612037658e-07,
    2.19209521630686e-09, 2.4868449178479084e-11, 1.0672752380854555e-18, 2.5545933172010507e-17,
    9.72481705512603e-16, 4.6468090253260846e-14, 2.5399180809460958e-12, 1.5188328407083632e-10,
    9.711138960842302e-09, 6.594653276914485e-07, 4.893508537964057e-05, 0.03179862552837626,
    -3.986269652020753e-05, -3.110354687596607e-07, -2.7247758393658915e-09, -2.5018794273073675e-11,
    -1.6229356575724252e-18, -6.559811111145151e-17, -3.1498168982703106e-15, -1.618148808406553e-13,
    -8.391778846530454e-12, -4.177192617105511e-10, -1.8476337498314493e-08, -5.882469815122232e-07,
    4.916481843483371e-07, 0.000506790393164866, -2.4797361688335547e-07, -3.992718843505892e-07,
    -9.549038050023159e-09, -1.6356597677856389e-10, 3.306313094425733e-18, 1.9037245823926303e-16,
    1.1971399661209252e-14, 7.884562689673782e-13, 5.3092502698639994e-11, 3.5876488373914366e-09,
    2.3829423506180496e-07, 1.502740691398686e-05, -1.1288772652407201e-05, -2.9999479416321202e-05,
    1.0875500899522931e-05, 1.4966460553783089e-05, 1.7490128740997133e-07, 2.0230440795212225e-09,
    1.9876336091314977e-20, 2.9753269745617105e-19, 1.133087779966191e-17, 5.3998080481317e-16,
    2.9429699224032115e-14, 1.7533683291685194e-12, 1.1140964788920828e-10, 7.451933102758753e-09,
    5.241512479956935e-07, 4.004376998703443e-05, 0.028912942304011882, -3.323514341224934e-05,
    -2.6495833641266536e-07, -2.3575969600382777e-09, -1.8568890509445218e-20, -8.120554680952767e-19,
    -4.011000254073966e-17, -2.1397682457607905e-15, -1.1706688334352288e-13, -6.330735344481386e-12,
    -3.2472006835508005e-10, -1.4692992357869877e-08, -4.764628122753526e-07, 3.603704848905302e-07,
    0.00041894568159837273, -1.9078370788552746e-07, -3.3511391321228583e-07, -8.081024347928627e-09,
    3.95997591988134e-20, 2.280301569172806e-18, 1.4472230780803837e-16, 9.646796432949177e-15,
    6.604932003879401e-13, 4.573077874357395e-11, 3.1563977056895522e-09, 2.1329543157795896e-07,
    1.3662891655901933e-05, -9.348278787335547e-06, -2.7279722354425805e-05, 8.973860434951416e-06,
    1.3611794925247506e-05, 1.6104018527757082e-07, -2.3906510913635253e-21, 5.822245830751376e-21,
    1.3129390278634301e-19, 6.256434283226574e-18, 3.4026917058613525e-16, 2.02214660881164e-14,
    1.2804901921187235e-12, 8.512541238514916e-11, 5.896167283562045e-09, 4.2652818709009597e-07,
    3.3372923918228245e-05, 0.026507088144963126, -2.8132995324767255e-05, -2.2837848282080604e-07,
    -4.923467299043797e-22, -9.740863745661416e-21, -5.001983591134824e-19, -2.7445387789957997e-17,
    -1.5588990892792566e-15, -8.891457778653885e-14, -4.9535413284440815e-12, -2.598402564908179e-10,
    -1.196650089045948e-08, -3.9378114212253447e-07, 2.7209056924627096e-07, 0.000352101489611781,
    -1.497914013904571e-07, -2.8521148736215756e-07, 8.733603711903644e-23, 2.723174569915716e-20,
    1.7307719397374678e-18, 1.1644731806343617e-16, 8.068644907983031e-15, 5.67927820192418e-13,
    4.015005914824282e-11, 2.817308443371079e-09, 1.9303307841165872e-07, 1.2525210599514838e-05,
    -7.870463891393536e-06, -2.50115944878301e-05, 7.5281291491632585e-06, 1.248068022959987e-05,
    6.785749841373325e-21, -9.129638722248678e-22, 2.1490964092080156e-21, 7.212405859753669e-20,
    3.9254309945345145e-18, 2.3286880911721854e-16, 1.471256191840018e-14, 9.749075402686451e-13,
    6.711702386330927e-11, 4.780027012646384e-09, 3.538082198340069e-07, 2.8240256423429813e-05,
    0.02447063785424092, -2.412151422285368e-05, 1.0251977729795314e-21, -1.2565890545968984e-22,
    -6.120323197538241e-21, -3.444031362810903e-19, -2.0115508715680236e-17, -1.1909378048645672e-15,
    -6.996677942861514e-14, -3.985574607296802e-12, -2.127330935792717e-10, -9.936036409984368e-09,
    -3.3090595328163123e-07, 2.1054055515627406e-07, 0.00030006247246857194, -1.1461289155355072e-07,
    -8.296698380636037e-23, -1.2192964387687375e-24, 2.0578733680545178e-20, 1.3911810360536784e-18,
    9.728708195344515e-17, 6.929427008964871e-15, 4.979328697076171e-13, 3.577629545518593e-11,
    2.5437670535561153e-09, 1.7627958136044873e-07, 1.1562215224763793e-05, -6.71900174161873e-06,
    -2.3091959876700933e-05, 6.322444684049399e-06, -5.42333707843422e-22, 2.2370416727047706e-21,
    -5.640239069377923e-22, 1.2703778427208684e-21, 4.506189392641129e-20, 2.6770686564308696e-18,
    1.6887952770385429e-16, 1.1167211142750764e-14, 7.664072314466868e-13, 5.4252838292051363e-11,
    3.9525684927310425e-09, 2.981996260564983e-07, 2.420701346290414e-05, 0.02272463978811628,
    -7.724490050059036e-23, 1.7392683778820963e-22, -8.112360656732764e-23, -4.242332815925018e-21,
    -2.537472527688055e-19, -1.544580641312252e-17, -9.417944911364447e-16, -5.656618423634839e-14,
    -3.2782838878523663e-12, -1.7742824033588152e-10, -8.38301728758907e-09, -2.8198494787162447e-07,
    1.6611022951249687e-07, 0.00025876207633598587, 1.8732407481732268e-24, -1.5827478206674212e-22,
    8.464885958878866e-23, 1.6532562197008005e-20, 1.1612611520082746e-18, 8.347714293894156e-17,
    6.069515771545135e-15, 4.4319436491892334e-13, 3.225791807078566e-11, 2.318516000957056e-09,
    1.6219941241037893e-07, 1.0736729172852758e-05, -5.794789369920112e-06, -2.1483083773770884e-05,
    -0.08774622311358525, 0.0007342947431646981, 3.134468707635047e-07, 3.292014143417418e-09,
    2.6388038322261017e-11, 2.1983350515953189e-13, 1.9153595388411043e-15, 1.728246174045559e-17,
    1.58141528280706e-19, 1.943955079907043e-21, -9.002821668335209e-22, -3.761215483639263e-22,
    7.09923969940304e-22, -2.1906714897238126e-22, 0.2896443979900405, 0.0010465066058783041,
    1.3445898167747173e-05, 1.5533672840046485e-07, 1.7584951837660155e-09, 1.9774525796016213e-11,
    2.2167801017201645e-13, 2.480894903786154e-15, 2.7736211552604097e-17, 3.083327573971181e-19,
    7.128896319574729e-21, -1.2587450643504035e-21, 3.40153505262585e-21, -2.60597906419168e-22,
    8.180390938288448e-05, 0.006291801853825667, -3.836243832164788e-05, -8.429503344355777e-09,
    -1.83114637490386e-11, 4.190780044159928e-13, 9.007014368586456e-15, 1.314447723358196e-16,
    1.6781346956328309e-18, -2.909502028119709e-20, 1.2762526141325662e-19, -4.961883523137083e-20,
    1.396339184485624e-19, -1.517134999428892e-20, 0.00028487278621707124, -0.024398327464247332,
    0.00018109495686053343, 2.0950693064468054e-07, 1.292429535414288e-09, 9.484237652145388e-12,
    7.623409421223758e-14, 6.504205185167978e-16, 5.7857247415622966e-18, 5.224479885375298e-20,
    4.897948215760592e-22, -3.332154168633546e-23, -1.500927601662483e-22, 3.7931186795727416e-22,
    -0.0009786944816525878, 0.1552389482972719, 0.000365337510206273, 4.235584329039898e-06,
    4.814249476899622e-08, 5.426993726559462e-10, 6.095221575524054e-12, 6.831538264450845e-14,
    7.646948367729511e-16, 8.553028149415524e-18, 9.513927322886341e-20, 2.2399157397008657e-21,
    -4.607659491648885e-22, 1.1175299560926532e-21, -0.0033720428119974007, -6.1672702929665404e-06,
    0.0033722108501785053, -1.412962764456359e-05, -1.1998376471529074e-08, -3.846498707784493e-11,
    -6.684565031382248e-14, 1.265248198324318e-15, 2.7206351096006638e-17, 4.1638867116044978e-19,
    -1.0381098799979456e-20, 4.448814833690624e-20, -1.9677065357679214e-20, 4.9678171906567615e-20,
    2.5419543622552157e-07, 8.815035708402103e-05, -0.011070049661249365, 7.834317128676197e-05,
    1.1067268603859576e-07, 6.560636437187959e-10, 4.739056221037962e-12, 3.7774841695668405e-14,
    3.2041433053224734e-16, 2.837206685927972e-18, 2.566606347686206e-20, 2.180726603050384e-22,
    8.12522105298081e-23, -6.50901226264741e-23, -2.996227897326641e-06, -0.00035136043462040715,
    0.10492306095079511, 0.00018391356709279496, 2.0424465640571866e-06, 2.2945702782571338e-08,
    2.575769226915809e-10, 2.8876477214715904e-12, 3.2336950179144535e-14, 3.618174151588469e-16,
    4.045744552579579e-18, 4.507195564023481e-20, 8.183411379473678e-22, -2.699261723764237e-22,
    9.540458748410397e-06, -0.0022791786375537127, -1.1784779764789653e-06, 0.002279167918641206,
    -8.361091982930656e-06, -7.941806807330343e-09, -2.602858542770115e-11, -6.803573753661986e-14,
    3.939799783336632e-16, 1.1543075014404267e-17, 1.7438212809372228e-19, -2.791262105694185e-21,
    1.292461324381612e-20, -1.3358608905977753e-20, 7.623932575311293e-10, 8.468437247269411e-08,
    4.502871818418789e-05, -0.006272619319610276, 4.3358593212863984e-05, 6.606961347245984e-08,
    3.9042019236985855e-10, 2.8132110034622154e-12, 2.238559311615998e-14, 1.895797601209954e-16,
    1.6761332019216829e-18, 1.521163244644093e-20, 1.303697840697948e-22, 4.5646591706371825e-23,
    -1.608557446999236e-08, -1.626774336886497e-06, -0.0001788990693149167, 0.07907654125668095,
    0.00011051783254280767, 1.1990214505469658e-06, 1.3365482907228137e-08, 1.495557191773256e-10,
    1.6740664622015255e-12, 1.8731643630083545e-14, 2.0949430154264128e-16, 2.3415660889303097e-18,
    2.607060726392988e-20, 5.064288668216902e-22, 9.270449209548755e-09, 6.300654877459092e-06,
    -0.0017177192757807192, -3.661339462171821e-07, 0.0017177157040636052, -5.934557540668869e-06,
    -5.692649976108342e-09, -1.8593617659687636e-11, -5.2883699784935206e-14, 1.7898824687422533e-16,
    6.592434915306831e-18, 8.84341234804451e-20, -2.4403288738555906e-21, 9.795404469234641e-21,
    2.1144508077216383e-12, 3.0130762638083135e-10, 4.673673959903352e-08, 2.7798729670682315e-05,
    -0.004028151331114262, 2.7474542596904278e-05, 4.3402765605289495e-08, 2.570631187061758e-10,
    1.8535302415962216e-12, 1.475292297728306e-14, 1.2492720950229856e-16, 1.1041423519315638e-18,
    1.0018306503792963e-20, 8.667520408228491e-23, -1.0619961111281404e-10, -1.0300839929135612e-08,
    -1.0074774286869704e-06, -0.00010817513118118099, 0.06340477857059794, 7.369938675231733e-05,
    7.879623495103516e-07, 8.735284471604087e-09, 9.750827752778363e-11, 1.0901125182457558e-12,
    1.2189130605443782e-14, 1.3626723118398255e-16, 1.5226753679207109e-18, 1.69456793178141e-20,
    2.935634855775452e-11, 5.830032654789478e-09, 4.758439701900529e-06, -0.0013772900905182242,
    -1.485941473609695e-07, 0.0013772886457978147, -4.60986067636372e-06, -4.385424229250038e-09,
    -1.4187819089193793e-11, -4.140877008459701e-14, 1.02182129459145e-16, 4.409457908760073e-18,
    5.769427011556226e-20, -2.1834586436653835e-21, -3.1758563974816875e-15, 1.2237734403719696e-12,
    1.8389415468922294e-10, 3.1010032912504274e-08, 1.8984894075348404e-05, -0.0028025105216555085,
    1.8956275804151818e-05, 3.0538289506522964e-08, 1.8137486397568038e-10, 1.3095615912550955e-12,
    1.0431976446895804e-14, 8.837571008187103e-17, 7.8120667326294715e-19, 7.087201560428401e-21,
    -7.783627805285127e-13, -7.506412528351743e-11, -7.074185033794681e-09, -6.839554996597937e-07,
    -7.242103211200731e-05, 0.05290257772121002, 5.2637500874541825e-05, 5.571695355121772e-07,
    6.1517769862423315e-09, 6.854024689608488e-11, 7.654848877011194e-13, 8.554255403033839e-15,
    9.559691816840329e-17, 1.0679552587659195e-18, 9.41154690486471e-14, 1.831874400919322e-11,
    4.242000754572534e-09, 3.846377572118805e-06, -0.0011491580333535512, -7.129059303482873e-08,
    0.0011491573446823164, -3.775093918242341e-06, -3.5533898048694363e-09, -1.1379432434007268e-11,
    -3.344512731439276e-14, 6.778787577397886e-17, 3.2463427022384355e-18, 4.159742139513875e-20,
    -1.6184341761178268e-16, 4.108129512830966e-15, 8.715722879208249e-13, 1.308420427519083e-10,
    2.2432301740329605e-08, 1.3824530693303142e-05, -0.00206128964894485, 1.386522720574512e-05,
    2.2597540788751883e-08, 1.3453306414103955e-10, 9.726866117272835e-13, 7.755739254844695e-15,
    6.574331054431583e-17, 5.812168547168745e-19, -6.08830194742791e-15, -5.910617079546926e-13,
    -5.5110591683289536e-11, -5.1494198199643855e-09, -4.944427758791733e-07, -5.186472506959298e-05,
    0.04537887904774272, 3.946978843574645e-05, 4.1475657235452394e-07, 4.565209718097938e-09,
    5.0787102082281285e-11, 5.667384997926813e-13, 6.330100464960113e-15, 7.071911609523e-17,
    3.759295651536922e-17, 5.85470105980396e-14, 1.307833470140392e-11, 3.3521008123523893e-09,
    3.238271843395539e-06, -0.0009857264504747332, -3.835917900291663e-08, 0.0009857260817855112,
    -3.1999162763321955e-06, -2.983442311361364e-09, -9.466479144411055e-12, -2.781697664391846e-14,
    4.976912740825157e-17, 2.5621110887397934e-18, -2.4227046083476232e-18, -3.161405268372028e-18,
    4.231832414859597e-15, 6.752507683317018e-13, 9.956827734457784e-11, 1.7083814694637902e-08,
    1.052938355403499e-05, -0.0015793208698109777, 1.0581739504677835e-05, 1.7373045908961224e-08,
    1.03625096647285e-10, 7.501234752280826e-13, 5.986468391756816e-15, 5.0768392365072704e-17,
    -4.981558451504631e-17, -4.894564265382216e-15, -4.556412656527779e-13, -4.20894770479736e-11,
    -3.9140139993612485e-09, -3.7403273744091204e-07, -3.896743409283874e-05, 0.03972575085162067,
    3.069134640369644e-05, 3.20730460215849e-07, 3.5216490207557543e-09, 3.912985192973407e-11,
    4.363501805603294e-13, 4.8716798347830115e-15, -4.605999938754294e-18, 2.1917121636999982e-17,
    4.0834955869674213e-14, 1.0156846387670106e-11, 2.785404173927775e-09, 2.8013271500858876e-06,
    -0.0008629280655307024, -2.2438823231581253e-08, 0.0008629278506476567, -2.77889039167826e-06,
    -2.570538253981802e-09, -8.092083352384589e-12, -2.3706012355915883e-14, 4.033525578769547e-17,
    -3.0853584675875656e-20, -3.061730321821394e-19, 1.769600702565274e-17, 3.756259582346722e-15,
    5.426317644906048e-13, 7.877769367486545e-11, 1.347867365945777e-08, 8.292354065772745e-06,
    -0.0012484799381134453, 8.341069054132604e-06, 1.3761003820699733e-08, 8.220117136806789e-11,
    5.956435383507657e-13, 4.756732143536658e-15, -4.180080002032993e-19, -4.20192064911178e-17,
    -3.920010475866436e-15, -3.6079455412843064e-13, -3.3171438592511176e-11, -3.0748325118638923e-09,
    -2.92803278744036e-07, -3.0346572976106642e-05, 0.03532351057123437, 2.454725880242778e-05,
    2.5541032779654275e-07, 2.798892387848799e-09, 3.106768702941865e-11, 3.4624394556260334e-13,
    -6.621722972360808e-20, -2.9079849449688636e-18, 6.586947179822864e-18, 3.0907128365140726e-14,
    8.328421485534666e-12, 2.3918689297615965e-09, 2.4709756406748264e-06, -0.0007673018223164886,
    -1.3988406157029759e-08, 0.000767301688714771, -2.456988500994681e-06, -2.2582775135331755e-09,
    -7.061983797688806e-12, -2.0520877032511836e-14, -7.733669093446847e-23, -5.39694895165549e-21,
    2.4402057406845577e-20, 2.0914631377682248e-17, 3.2416535879527808e-15, 4.4613159864763705e-13,
    6.402595734125968e-11, 1.0918650689532398e-08, 6.70231554347979e-06, -0.0010116291022891331,
    6.7440067117529585e-06, 1.1163397928503755e-08, 6.676071022748503e-11, 4.841167852924681e-13,
    -4.299865614610448e-21, -3.6813924377494726e-19, -3.4721633671129183e-17, -3.194358964490335e-15,
    -2.924341626356999e-13, -2.6807047416303146e-11, -2.4790866018213034e-09, -2.3543009777386295e-07,
    -2.4300464205967114e-05, 0.031798717526965115, 2.007966413108658e-05, 2.0819430355873788e-07,
    2.2777650815029695e-09, 2.5261798858002722e-11, -3.4908540708756395e-21, -3.252838502442426e-20,
    -2.14872400553234e-18, -2.365125993909597e-18, 2.477341091754381e-14, 7.0837253052109065e-12,
    2.1014585060398613e-09, 2.211836226211168e-06, -0.0006907356975305957, -9.16836130282051e-09,
    0.0006907356101379118, -2.2026686852488256e-06, -2.0140724206448964e-09, -6.257178484503639e-12,
    -5.268096754246595e-22, -5.782644957020049e-23, -9.371539236430766e-22, 1.0566970411870891e-19,
    2.0126608789446445e-17, 2.7873983074047575e-15, 3.7318677144493187e-13, 5.311005694620956e-11,
    9.030018825024448e-09, 5.530886286279068e-06, -0.0008362775800028958, 5.56562361218149e-06,
    9.234613292037538e-09, 5.5271640308798675e-11, 1.6092272400231307e-21, -3.3164865671231872e-21,
    -3.134438094856138e-19, -2.896993586636065e-17, -2.648445998939142e-15, -2.4168937382891304e-13,
    -2.210972898960892e-11, -2.041029895184157e-09, -1.9340879249842994e-07, -1.9896967284581517e-05,
    0.028913011338407586, 1.6729650182494797e-05, 1.729597775113591e-07, 1.8897032566558707e-09,
    5.660690516452585e-21, -6.9886839809173875e-22, -2.5116359399747562e-20, -1.7217294696352447e-18,
    -7.228372192889499e-18, 2.0681802047677548e-14, 6.182113604236527e-12, 1.87746941468161e-09,
    2.002793143197483e-06, -0.0006280519513918399, -6.257338132769239e-09, 0.0006280518918365878,
    -1.9965363615019047e-06, -1.8174266527166063e-09, -1.7013300377780433e-22, -4.3093020703698315e-23,
    -2.210389510523112e-23, 3.1658704533703447e-22, 1.2441068764348512e-19, 1.8349109950968355e-17,
    2.406022830805036e-15, 3.1662423283138474e-13, 4.478245938713753e-11, 7.594756115716152e-09,
    4.642588216860668e-06, -0.0007028464285181324, 4.671336156696816e-06, 7.763796586358257e-09,
    5.701624435051597e-22, 1.410257615332748e-22, -2.759584939928003e-21, -2.6731190993371723e-19,
    -2.447615149035109e-17, -2.2296075120468337e-15, -2.0303707999102186e-13, -1.854540935118862e-11,
    -1.70957054555997e-09, -1.6171273030082673e-07, -1.6590639141118803e-05, 0.026507141268980895,
    1.4153242288759071e-05, 1.4597001545384997e-07, 1.9542543284530117e-21, 1.0652998608946013e-21,
    8.057508285581662e-22, -2.2689805233145854e-20, -1.4475886959284928e-18, -9.800397388859397e-18,
    1.7783788018381132e-14, 5.497731711071805e-12, 1.6988814761661819e-09, 1.8304139474220034e-06,
    -0.0005757912963163446, -4.415529440347568e-09, 0.0005757912542985741, -1.8259533016103254e-06,
    2.9077796259862474e-22, -6.624193216056433e-23, 3.8204847545500134e-23, -4.344213459554094e-24,
    6.984314087945892e-22, 1.235147952542115e-19, 1.6440512309396037e-17, 2.0899917558178105e-15,
    2.718874373337764e-13, 3.8276295197449857e-11, 6.4775942397075396e-09, 3.952783596371355e-06,
    -0.0005989685669825088, 3.976599981736815e-06, -1.1065146792036229e-21, 4.549049569380821e-22,
    -3.360586844764058e-22, -2.416246191877223e-21, -2.295501594793272e-19, -2.0927902063372195e-17,
    -1.901978710123605e-15, -1.7293858068071875e-13, -1.57774821141275e-11, -1.4527411612830422e-09,
    -1.3721622294861656e-07, -1.4045026218569496e-05, 0.024470679594896516, 1.2128626287987357e-05,
    -3.829524291069103e-21, 3.0267212050880545e-21, -3.005956201356515e-21, 8.263100747283368e-22,
    -1.8229653901321974e-20, -1.2551909214023079e-18, -1.1099849813276609e-17, 1.5631845188344966e-14,
    4.959211095801309e-12, 1.5527911005539218e-09, 1.6857208315132758e-06, -0.0005315549942532292,
    -3.109512810296552e-09, 0.0005315687504415522, -1.1141585665681176e-22, 1.775186631575722e-22,
    -2.794445319975712e-23, 2.186956815250843e-23, 1.9649404880452084e-24, 7.963354244360509e-22,
    1.1524526033006637e-19, 1.4606672697697e-17, 1.8244874468220007e-15, 2.3565907363350227e-13,
    3.307516443075561e-11, 5.589263995295284e-09, 3.4062270510562935e-06, -0.0005165316878832305,
    3.088370299276762e-22, -1.1197845384856667e-21, 2.8550634746469216e-22, -2.407711791979649e-22,
    -2.110790450095602e-21, -1.986547330956236e-19, -1.8066486351589635e-17, -1.6395929692323904e-15,
    -1.4893350224564153e-13, -1.357642597266256e-11, -1.2490355902520743e-09, -1.1784295837038775e-07,
    -1.2039919607623222e-05, 0.02272487930441136, 1.1734122297676683e-21, -7.250613552188595e-21,
    2.8271588450316773e-21, -2.79283084134408e-21, 7.955200933233408e-22, -1.6033827481445696e-20,
    -1.1781396854314508e-18, -1.7147239039719108e-17, 1.3509978404415444e-14, 4.483242963080103e-12,
    1.4272476084187782e-09, 1.5621393571591522e-06, -0.000493661621528136, -3.0230633656700334e-06,
    0.04388596142259317, -0.0001263225038650664, -3.2386428700346196e-07, -2.906021781019081e-09,
    -2.6804483343881774e-11, -2.516155840519746e-13, -2.3981462817976783e-15, -2.3161388497635165e-17,
    -2.253059049668659e-19, -2.4336794411969794e-21, 4.27360098568938e-22, 1.8945993348250368e-22,
    -3.432982759978774e-22, 1.0232227313011077e-22, -0.14486423647704433, -0.0020565983327601677,
    -2.570272366468037e-05, -3.0135652946895413e-07, -3.449512130298302e-09, -3.9061997801028413e-11,
    -4.3990231793210144e-13, -4.9386790050160385e-15, -5.533994845236496e-17, -6.187708386430234e-19,
    -8.477228310239882e-21, 5.181876278768444e-22, -2.1185223804781355e-21, 2.707037394857202e-22,
    0.5000302175066392, 0.00014456999856395515, 1.3037110337080414e-05, 5.772003142340238e-08,
    3.7379132213977205e-10, 2.3791161777656056e-12, 1.3285090658009775e-14, 4.379000670948389e-17,
    -3.7011587384340117e-19, 1.5187898296939975e-20, -6.700503519306538e-20, 2.489149372564206e-20,
    -6.38968808709613e-20, 4.734164277316121e-21, 0.0007240896886064177, 0.012198969964871234,
    1.8738448200758502e-05, 4.017644430513426e-08, -2.0169643245039268e-10, -4.9406735947369905e-12,
    -6.544167935724711e-14, -7.529601167256393e-16, -8.208861273276916e-18, -8.697557779214571e-20,
    -8.969736978679832e-22, 1.8697195615868938e-23, 6.409558670284103e-23, -1.7582995401705105e-22,
    -0.002370963469135711, -0.07767679017893565, -0.00121936694131977, -1.5522634378288966e-05,
    -1.8468327015061822e-07, -2.1359383413177037e-09, -2.4363980332518157e-11, -2.758304467057604e-13,
    -3.1089026193513895e-15, -3.49417697741055e-17, -3.9201165483537875e-19, -5.1641252488534746e-21,
    2.7437938606421214e-22, -1.0439396271458328e-21, 0.004977414418539504, 0.5000284413358653,
    0.001604887894121588, 1.17110518945218e-05, 8.476903771784151e-08, 6.550978048985262e-10,
    5.255071573853991e-12, 4.297712286978299e-14, 3.536480743045657e-16, 2.8704475355598236e-18,
    3.2121681124402926e-20, -1.900823752813449e-20, 6.497603483305638e-21, -1.7339389902866466e-20,
    9.912087868187125e-06, 0.00019680442069547552, 0.005536388986475706, 2.2760307276683955e-05,
    1.0642145033439584e-07, 4.836540874251191e-10, 1.6087605506665341e-12, -3.841518414201118e-15,
    -1.7234319552846019e-16, -2.6928961034475754e-18, -3.4328938575105974e-20, -3.927274626322028e-22,
    -3.548439214957854e-23, 2.5705611429657865e-23, -3.1260906915492976e-05, -0.0013578565729760361,
    -0.05249747575638568, -0.0008731929827397575, -1.1403288312457407e-05, -1.3776499113544982e-07,
    -1.609656406465414e-09, -1.8493676693352917e-11, -2.104838580250909e-13, -2.3819349071323947e-15,
    -2.6855141010982853e-17, -3.0197197845602524e-19, -3.831936948021293e-21, 2.0198912503833054e-22,
    5.567598958982742e-05, 0.0044308542097670585, 0.500049235813852, 0.002151467353000789,
    1.4370720146384865e-05, 1.0864050424163256e-07, 8.794644201054515e-10, 7.425264151599515e-12,
    6.442448174052331e-14, 5.691481284159702e-16, 5.081201713700473e-18, 4.8088670396414405e-20,
    -1.8637437275614406e-21, 4.257734264274368e-21, 1.2724321171027836e-07, 2.659961366548019e-06,
    8.679848890331865e-05, 0.0031372998173312635, 1.8094462220934264e-05, 1.0609646597513578e-07,
    6.365141680058215e-10, 3.7458355761244325e-12, 2.0024629515495013e-14, 7.645598114197218e-17,
    -1.6594709481195793e-19, -8.995845144890812e-21, -1.4521624516718182e-22, -1.7399770460517182e-23,
    -3.863038905410796e-07, -1.846094541166456e-05, -0.0009470088193966224, -0.039564720518690435,
    -0.0006816427385536262, -9.078725464987146e-06, -1.1108364291230723e-07, -1.309444387114615e-09,
    -1.5142088136261086e-11, -1.73183649138196e-13, -1.9673012214981037e-15, -2.2247458505180795e-17,
    -2.5078314180082045e-19, -3.1952402793994364e-21, 6.427674471223091e-07, 4.650416837356871e-05,
    0.004150335685285659, 0.5000562605876501, 0.002432283387190792, 1.651917039582686e-05,
    1.2784918330491074e-07, 1.0606706067125653e-09, 9.18342561231429e-12, 8.181003978020308e-14,
    7.435390211088071e-16, 6.8580014339438e-18, 6.587962324527009e-20, -1.5876710044505843e-22,
    1.5810497460556244e-09, 3.387710342898256e-08, 1.1533020118061414e-06, 4.804331406892337e-05,
    0.002014769007942573, 1.3935465752328074e-05, 9.299824297467654e-08, 6.32072989038437e-10,
    4.3307304423557206e-12, 2.928574297037962e-14, 1.8897559440897601e-16, 1.0842133540702057e-18,
    4.3438927373209535e-21, -7.379742505172958e-24, -4.644083057788262e-09, -2.3144470546980831e-07,
    -1.3101442114766282e-05, -0.0007270478822390008, -0.03172337345823398, -0.0005594711910106382,
    -7.562650608057993e-06, -9.348239951932246e-08, -1.1101744747928528e-09, -1.2910018057252768e-11,
    -1.4830059213992227e-13, -1.6904960071241797e-15, -1.9171017453261225e-17, -2.1661240253975909e-19,
    7.485498840559043e-09, 5.164186762621341e-07, 4.173445570383554e-05, 0.003980171525080001,
    0.500059443663825, 0.0026025588830352903, 1.810969809086115e-05, 1.428905301163725e-07,
    1.206522342829972e-09, 1.0622931286892656e-11, 9.620753313048067e-14, 8.89076620242802e-16,
    8.340627912145802e-18, 8.069550797619891e-20, 1.925667582386689e-11, 4.187189918306207e-10,
    1.4531451101478836e-08, 6.287137620762331e-07, 3.0286534375393633e-05, 0.0014017581421597158,
    1.0875991571430868e-05, 7.911939119912596e-08, 5.813582030417265e-10, 4.322378355923955e-12,
    3.223294134095974e-14, 2.3807137216070825e-16, 1.7101814428840154e-18, 1.1613958497322217e-20,
    -5.5021144696234214e-11, -2.800503706140585e-09, -1.6585585438580053e-07, -1.0174881673983831e-05,
    -0.000590115587019254, -0.026468698893112885, -0.00047460905822401954, -6.488844021802546e-06,
    -8.087232047406222e-08, -9.664080622881981e-10, -1.1292625704992753e-11, -1.302211063206707e-13,
    -1.4890442553810863e-15, -1.6929983330092833e-17, 8.728208687066421e-11, 5.859190612213044e-09,
    4.5025235922582214e-07, 3.8829914998310976e-05, 0.0038661174541421307, 0.5000611531291073,
    0.0027166672781964427, 1.9306281667254002e-05, 1.5478139690995553e-07, 1.3251198661767509e-09,
    1.1815589753437738e-11, 1.0829720333540639e-13, 1.012507095966352e-15, 9.603021235989756e-18,
    2.313700125229332e-13, 5.080833957346878e-12, 1.7832636187369802e-10, 7.84185726492096e-09,
    3.9130772500567637e-07, 2.0763392235803683e-05, 0.0010310234982444308, 8.66254070777636e-06,
    6.706089786311407e-08, 5.207135967235231e-10, 4.0874127076470204e-12, 3.23147345023138e-14,
    2.5566443203674744e-16, 2.01013437458968e-18, -6.459955195306001e-13, -3.3259984237645e-11,
    -2.0176469508874848e-09, -1.2973746099919455e-07, -8.326718149771114e-06, -0.0004966511808518386,
    -0.022704323527308792, -0.000412175992874616, -5.68589574946432e-06, -7.134412263625784e-08,
    -8.570252140728581e-10, -1.0056320611576117e-11, -1.1635785708240054e-13, -1.3342446899797725e-15,
    1.0163551656904879e-12, 6.704860481520027e-11, 5.004295721168182e-09, 4.098572685071932e-07,
    3.6881657253001245e-05, 0.0037844019680920325, 0.5000621770286319, 0.0027984136143721578,
    2.023139759655844e-05, 1.6434560113927076e-07, 1.4229029219513103e-09, 1.2816173184831093e-11,
    1.1857243504416201e-13, 1.1180714994696127e-15, 2.7525107711022163e-15, 6.087748975596428e-14,
    2.1529970462089304e-12, 9.556050534094991e-11, 4.837394117097133e-09, 2.6542464767730996e-07,
    1.5091237558861661e-05, 0.0007899548527997185, 7.037481146317934e-06, 5.711124449575157e-08,
    4.6234541286631647e-10, 3.776665048682134e-12, 3.109574429493437e-14, 2.5730476782472186e-16,
    -7.5373155853313e-15, -3.906141910224698e-13, -2.4029944240953047e-11, -1.585372754545996e-09,
    -1.0676246891525383e-07, -7.051302360032601e-06, -0.0004287795620440869, -0.019875877127248538,
    -0.00036429626775924014, -5.061739804009351e-06, -6.386887852667964e-08, -7.706542712123578e-10,
    -9.07562400766179e-12, -1.0532474512022355e-13, 1.180899781425881e-14, 7.697468632029284e-13,
    5.6389576855564274e-11, 4.481572180598569e-09, 3.827382489200353e-07, 3.54864870219084e-05,
    0.003722999222713233, 0.5000628387846546, 0.0028598356588113026, 2.0965253011995957e-05,
    1.7217537704504067e-07, 1.5046572900029028e-09, 1.3665729702863207e-11, 1.2736672250124652e-13,
    3.249680768452107e-17, 7.226893488054455e-16, 2.570165048474373e-14, 1.1479127936912032e-12,
    5.857234916847534e-11, 3.25597595971961e-09, 1.9120101782558539e-07, 1.1450165884495563e-05,
    0.0006244750022567047, 5.8190584609729185e-06, 4.9006464932911094e-08, 4.099890072727402e-10,
    3.4541626386915038e-12, 2.9338439360977457e-14, -8.752898008865287e-17, -4.553671048556004e-15,
    -2.8257835623840695e-13, -1.893403131020189e-11, -1.3095263900848094e-09, -9.080830697191185e-08,
    -6.117028445490841e-06, -0.0003772475197147288, -0.017673299179741135, -0.00032640259612734524,
    -4.5621420119590886e-06, -5.783677795208114e-08, -7.005452208226853e-10, -8.27608196827214e-12,
    1.3686543178934958e-16, 8.844739607632365e-15, 6.396650085016326e-13, 4.9866115869535243e-11,
    4.130423550160466e-09, 3.633157162053216e-07, 3.443916241619224e-05, 0.0036751813660353522,
    0.5000632912027084, 0.0029076664297591846, 2.1560441593714446e-05, 1.786894368090191e-07,
    1.5738987359074554e-09, 1.4392045008447026e-11, 3.8177076914494325e-19, 8.51760608853449e-18,
    3.0425238254891463e-16, 1.3651582890068697e-14, 7.002706017350041e-13, 3.919976443379455e-11,
    2.329862784081137e-09, 1.439778041454729e-07, 8.978019655507969e-06, 0.0005060063109655355,
    4.886080493122346e-06, 4.239945288562948e-08, 3.643016922949181e-10, 3.147721618861004e-12,
    -1.0141489682028113e-18, -5.280202321495129e-17, -3.295394518400083e-15, -2.2302137872802472e-13,
    -1.56792966455342e-11, -1.117348079005275e-09, -7.905859736480441e-08, -5.40264234548575e-06,
    -0.0003367845382896833, -0.0159097398376919, -0.0002956610000353646, -4.152943735655198e-06,
    -5.286096560389738e-08, -6.424000824499504e-10, 1.5857291215566616e-18, 1.0158502043000932e-16,
    7.279867640253781e-15, 5.60008503484582e-13, 4.5482062275272895e-11, 3.878882548422922e-09,
    3.4873900483360845e-07, 3.362450124303611e-05, 0.0036368933897721178, 0.5000636141733437,
    0.0029459634892678092, 2.205232441708815e-05, 1.8418665566804917e-07, 1.63296291745888e-09,
    3.865645674208953e-21, 1.000134182031824e-19, 3.578138602967199e-18, 1.6113421912670174e-16,
    8.297944829757535e-15, 4.666352415963099e-13, 2.790831039839274e-11, 1.7442847167569783e-09,
    1.1216535401673947e-07, 7.224748074922299e-06, 0.0004182981097531716, 4.157694287200706e-06,
    3.6980862548504054e-08, 3.2492782123858157e-10, -9.699813905259942e-21, -6.110275168027105e-19,
    -3.820487984730605e-17, -2.6032075099062044e-15, -1.8499733148743564e-13, -1.3408509551344267e-11,
    -9.753694881724386e-10, -7.003251745928347e-08, -4.838413883147517e-06, -0.00030416778371002525,
    -0.014465937363335814, -0.0002702186423620473, -3.8115044184222976e-06, -4.868263711831021e-08,
    1.2202317018330632e-20, 1.1685780657986486e-18, 8.296193597440419e-17, 6.321272240720669e-15,
    5.064620038949471e-13, 4.234109907054871e-11, 3.6901032870048343e-09, 3.374049635621352e-07,
    3.297298031627416e-05, 0.0036055468078817375, 0.5000638527898351, 0.0029773167104119413,
    2.246536625417954e-05, 1.8886005591661874e-07, 2.766535117845029e-22, 1.3693168456985583e-21,
    4.186935892711597e-20, 1.890629745460611e-18, 9.766656166296989e-17, 5.510891638679121e-15,
    3.309222757721307e-13, 2.0800268960884586e-11, 1.3520111836099583e-09, 8.975914751958544e-08,
    5.937236805909143e-06, 0.00035155762189435297, 3.5790797940777982e-06, 3.250620763016454e-08,
    -8.785688339096066e-22, -8.285901519313784e-21, -4.4114221581890695e-19, -3.019246883625309e-17,
    -2.1617577283758603e-15, -1.5846002733217341e-13, -1.1728061029287208e-11, -8.659816412106484e-10,
    -6.287487865627634e-08, -4.3813507877478585e-06, -0.00027731542398767964, -0.013262212430428608,
    -0.00024881254401343895, -3.522135055072951e-06, -2.6301662483521235e-22, 1.5302436813334367e-20,
    9.454884823053265e-19, 7.15502612352087e-17, 5.676788875600185e-15, 4.6809445343856e-13,
    3.998376954976631e-11, 3.543338051451528e-09, 3.2834480196143326e-07, 3.2440198325899256e-05,
    0.00357941211229405, 0.5000640340801477, 0.003003456401059113, 2.28147097826938e-05,
    1.3691083014630217e-21, -9.153957683501791e-23, 6.007321836924834e-22, 2.2081566672798783e-20,
    1.143346729107385e-18, 6.468991127853632e-17, 3.896062764938398e-15, 2.4576723347274007e-13,
    1.6058118386852798e-11, 1.0771229507585199e-09, 7.340578769586892e-08, 4.964457224925753e-06,
    0.0002995991605000412, 3.112565040085099e-06, -4.4451747040747135e-21, 4.709999931872767e-22,
    -6.164122479775629e-21, -3.4864000494338506e-19, -2.508961643338894e-17, -1.853777102310158e-15,
    -1.3880740244849246e-13, -1.0431076465164803e-11, -7.790032670022978e-10, -5.7056266922832414e-08,
    -4.003481554281096e-06, -0.00025482258747900217, -0.012243313889744093, -0.00023054315796091295,
    7.62493739646829e-21, -3.2308720797327288e-21, 1.623284199909432e-20, 8.107599913184831e-19,
    6.387470345543718e-17, 5.2149701480278544e-15, 4.3929842766247104e-13, 3.815115765322893e-11,
    3.4260391467382085e-09, 3.20939411878713e-07, 3.199649041649305e-05, 0.0035572899528733084,
    0.5000641738120813, 0.003025359140961296, -5.384370932015984e-22, 4.430159223778658e-22,
    -4.137154784051921e-23, 3.206966579983308e-22, 1.3327822658812708e-20, 7.556090896232534e-19,
    4.5617187384262916e-17, 2.885108236481594e-15, 1.8911698990090802e-13, 1.2746712819342149e-11,
    8.773555397329451e-10, 6.111339027316427e-08, 4.211595351718335e-06, 0.0002583608601809675,
    1.8090979012769054e-21, -2.7846630270264044e-21, 3.288430936808186e-22, -4.839573068686207e-21,
    -2.897978589350005e-19, -2.1530793740842296e-17, -1.6255609322246861e-15, -1.2361629581482465e-13,
    -9.397331915384755e-12, -7.080711745484155e-10, -5.2227055348970946e-08, -3.685526345328395e-06,
    -0.0002356867652714073, -0.011368467844550301, -2.832560186138071e-21, 1.0862027157163251e-20,
    -3.1532850567197725e-21, 1.4578543572978228e-20, 7.200190606754261e-19, 5.837058304732154e-17,
    4.8680328926115625e-15, 4.168849845953056e-13, 3.66842069573116e-11, 3.32997083211419e-09,
    3.147554808176798e-07, 3.1619431864556814e-05, 0.0035381432259608938, 0.5000395825647164,
]

# JS reference Phi(x_bar) (interval mids, modes 0..3N) — port-correctness cross-check
PHI_H = [
    -2.7755575615628926e-17, -1.647987302177967e-17, 3.886187162002731e-18, 5.073945729734973e-18, -1.2087227753484548e-18, -1.2029687843440828e-17,
    -2.2309292871070596e-18, 8.524825916099936e-18, -9.901634738192448e-18, -2.783453157211739e-18, 7.662756459551492e-18, -8.462950511362813e-18,
    2.40133047386727e-17, -3.961083989225696e-18, 1.432106600159902e-17, -1.409418697951621e-20, -1.4417471985675203e-22, -1.540325614326417e-24,
    -1.6911282035735645e-26, -1.871447177871276e-28, -2.0780970902375376e-30, -2.3115195094455155e-32, -2.5742533466946774e-34, -2.6572048256142597e-36,
    -3.349334745794746e-37, 1.371406377081005e-37, -2.1037773671648345e-37, 2.940960583770348e-38, -5.26679369800076e-38, -3.878959032217227e-40,
    -3.000342632929082e-42, -2.734900165536889e-44, -2.6331620007030793e-46, -2.617911568100081e-48, -2.657628782611927e-50, -2.7374520461771172e-52,
    -2.8571944269331276e-54, -2.486078122063668e-56, -5.442332588999702e-57, 2.0208998474808266e-57, -1.52640057047912e-57, 3.340353405313848e-58,
    -1.5466831182714259e-58,
]
PHI_F = [
    0.0, 3.4694469519536265e-18, -2.0193265462542524e-18, 5.034684429140756e-19, -7.042362928201766e-19, 4.536826890252379e-19,
    -7.13820766874433e-20, -2.4522363260480274e-19, 2.222277921527672e-19, -1.0872908274967417e-19, -2.5715057409169685e-19, 2.765757473901427e-20,
    -4.629169263037846e-19, 2.9872646866039537e-19, 6.103013325653373e-20, -2.26919496359186e-21, -7.382259242194945e-24, -4.830038842848177e-26,
    -4.6346909863080265e-28, -4.6516958494072474e-30, -4.8372074801770483e-32, -5.137339200799039e-34, -5.5337723988904795e-36, -5.17710308809381e-38,
    -1.4773484352147998e-38, 6.411589799502652e-39, -7.063160896005202e-39, 1.793445451254787e-39, -9.605958278519148e-40, -2.601933087676457e-41,
    -8.69709554831586e-44, -9.654671326343786e-46, -9.379621208132192e-48, -9.342291132905064e-50, -9.48774212627437e-52, -9.772404975163193e-54,
    -1.0238633234695982e-55, -6.175405829325929e-58, -3.900539686972648e-58, 1.6542415776291854e-58, -8.737590895387297e-59, 2.0032679208859474e-59,
    -5.730304195294391e-60,
]
PHI_R = [
    6.661338147750939e-16, 4.848062930244194e-19, -1.626863131701605e-21, 4.6513607015878214e-23, -1.1948029730881205e-26, -1.141750095593606e-26,
    -8.816064788806166e-29, -1.344921117732195e-30, -1.1842849263096596e-32, -1.8995196055463627e-34, -3.690461011614709e-33, -3.708348094383368e-31,
    -3.8516526290087653e-29, -4.22050954315205e-27, -5.115956720838889e-25, -1.1628535734267156e-22, -9.632669215354413e-25, -1.0484613778280973e-26,
    -1.1538992551987029e-28, -1.2747845913419009e-30, -1.4112770930640387e-32, -1.5645192412612e-34, -1.736584680016919e-36, -1.8731209830129694e-38,
    -1.0899211230930327e-39, 4.705962298707908e-40, -3.222711504144451e-40, 8.139426862766568e-41, -2.56171171564128e-41, -3.3891341779410282e-43,
    -1.6769840785754086e-45, -1.6831764556648033e-47, -1.6269188239337043e-49, -1.618031787937716e-51, -1.6421167374694862e-53, -1.6907025274468746e-55,
    -1.773505220373685e-57, -8.833634494245234e-60, -6.862582840466794e-60, 2.807091045460872e-60, -1.1474040483597537e-60, 2.4525292555033328e-61,
    -5.146161150931375e-62,
]

TWO_PI = 2 * math.pi

# ============================================================================================
# 1.  outward-rounded interval arithmetic  (port of core/interval/interval.js)
#     Every IEEE-754 +,-,*,/ is correctly rounded, so widening the computed bounds outward by
#     one ulp (nextDown low, nextUp high) rigorously encloses the exact real result.
# ============================================================================================
INF = math.inf
EPS = sys.float_info.epsilon        # 2.220446049250313e-16  == JS Number.EPSILON
MIN_VALUE = 5e-324                  # smallest positive subnormal == JS Number.MIN_VALUE


def nextUp(x):
    if math.isnan(x) or x == INF:
        return x
    if x == 0.0:
        return MIN_VALUE
    return math.nextafter(x, INF)


def nextDown(x):
    return -nextUp(-x)


def iv(lo, hi=None):
    return (lo, lo if hi is None else hi)


ZERO = (0.0, 0.0)
ONE = (1.0, 1.0)


def add(a, b):
    return (nextDown(a[0] + b[0]), nextUp(a[1] + b[1]))


def sub(a, b):
    return (nextDown(a[0] - b[1]), nextUp(a[1] - b[0]))


def mul(a, b):
    p0 = a[0] * b[0]
    p1 = a[0] * b[1]
    p2 = a[1] * b[0]
    p3 = a[1] * b[1]
    return (nextDown(min(p0, p1, p2, p3)), nextUp(max(p0, p1, p2, p3)))


def div(a, b):
    if b[0] <= 0 and b[1] >= 0:
        raise ZeroDivisionError('interval division by an interval containing 0')
    q0 = a[0] / b[0]
    q1 = a[0] / b[1]
    q2 = a[1] / b[0]
    q3 = a[1] / b[1]
    return (nextDown(min(q0, q1, q2, q3)), nextUp(max(q0, q1, q2, q3)))


def neg(a):
    return (-a[1], -a[0])


def iabs(a):
    if a[0] >= 0:
        return (a[0], a[1])
    if a[1] <= 0:
        return (-a[1], -a[0])
    return (0.0, max(-a[0], a[1]))


def mag(a):
    return max(abs(a[0]), abs(a[1]))


def mig(a):
    if a[0] > 0:
        return a[0]
    if a[1] < 0:
        return -a[1]
    return 0.0


def width(a):
    return nextUp(a[1] - a[0])


def mid(a):
    return 0.5 * (a[0] + a[1])


# ============================================================================================
# 2.  nu-weighted sequences with declared parity  (port of core/interval/sequence.js)
#     ||f||_nu = sum_k |f_k| nu^{|k|}  is a Banach-algebra norm for convolution.
#     Parity is a first-class argument (even f_{-k}=f_k; its derivative odd f_{-k}=-f_k).
# ============================================================================================
EVEN = 'e'
ODD = 'o'


def sget(f, j, parity):
    """interval accessor at any j in Z; ZERO outside the band, negate (widened) for odd<0."""
    a = -j if j < 0 else j
    if a >= len(f):
        return ZERO
    v = f[a]
    if j < 0 and parity == ODD:
        return sub(ZERO, v)          # matches JS A.sub(A.ZERO, v) exactly (one-ulp widening)
    return v


def conv(f, g, K, pf, pg):
    """(f*g)_k for k=0..K over Z with declared parities, in interval arithmetic."""
    out = [None] * (K + 1)
    Jf = len(f) - 1
    Jg = len(g) - 1
    for k in range(K + 1):
        s = ZERO
        for j in range(-Jf, Jf + 1):
            t = k - j
            if t < -Jg or t > Jg:
                continue
            s = add(s, mul(sget(f, j, pf), sget(g, t, pg)))
        out[k] = s
    return out


def normNu(f, nu, hasZero):
    """||f||_nu for f stored as f[0..N]; hasZero=False for odd sequences (f_0 == 0)."""
    nuv = (nu, nu)
    s = iabs(f[0]) if hasZero else ZERO
    nk = ONE
    for k in range(1, len(f)):
        nk = mul(nk, nuv)
        s = add(s, mul((2.0, 2.0), mul(iabs(f[k]), nk)))
    return s


# ============================================================================================
# 3.  the augmented residual Phi and the Jacobian action DPhi
#     (port of research/mfg-congest/kernel/validate-congest.js buildPhi / dRow)
#     Fields:  u as (a0 scalar + p=u' ODD);  m EVEN;  w EVEN.   p_k = 2 pi k a_k.
# ============================================================================================
def og(f, j):
    return sget(f, j, ODD)


def eg(f, j):
    return sget(f, j, EVEN)


def ev2(acc, f, k, m):
    """derivative of a convolution wrt the stored EVEN coefficient h_m (m==0 is a single mode)."""
    if m == 0:
        return acc(f, k)
    return add(acc(f, k - m), acc(f, k + m))


def colent(row, kind, m):
    return row['a0'] if kind == 'a0' else row[kind][m]


def buildPhi(s, P, K):
    sigma = P['sigma']
    A = P['A']
    gamma = P['gamma']
    gI = iv(gamma)
    halfA = iv(0.5 * A)
    ppw = conv(s['pp'], s['w'], K, EVEN, EVEN)   # (p*p)*w      EVEN
    sp = conv(s['s'], s['p'], K, EVEN, ODD)      # (m*w)*p      ODD
    mww = conv(s['s'], s['w'], K, EVEN, EVEN)    # (m*w)*w      EVEN
    H = [None] * (K + 1)
    F = [None] * (K + 1)
    Rc = [None] * (K + 1)
    H[0] = sub(sub(s['a'][0], mul(iv(0.5), ppw[0])), mul(gI, eg(s['m'], 0)))
    F[0] = sub(eg(s['m'], 0), ONE)
    Rc[0] = sub(mww[0], ONE)
    for k in range(1, K + 1):
        lam = TWO_PI * k
        h = mul(iv(1 + sigma * lam * lam), eg(s['a'], k))
        h = sub(h, mul(iv(0.5), ppw[k]))
        if k == 1:
            h = sub(h, halfA)
        h = sub(h, mul(gI, eg(s['m'], k)))
        H[k] = h
        diag = add(div(ONE, iv(lam)), iv(sigma * lam))
        F[k] = add(mul(diag, eg(s['m'], k)), og(sp, k))
        Rc[k] = mww[k]
    return {'H': H, 'F': F, 'R': Rc}


def dRow(typ, k, s, P, K):
    sigma = P['sigma']
    gamma = P['gamma']
    gI = iv(gamma)
    row = {'a0': ZERO, 'p': [ZERO] * (K + 1), 'm': [ZERO] * (K + 1), 'w': [ZERO] * (K + 1)}
    lam = TWO_PI * k
    diag = ONE if k == 0 else add(div(ONE, iv(lam)), iv(sigma * lam))
    if typ == 'H':
        if k == 0:
            row['a0'] = ONE
            for m in range(1, K + 1):
                row['p'][m] = neg(sub(og(s['pw'], -m), og(s['pw'], m)))
            row['m'][0] = neg(gI)
            for m in range(0, K + 1):
                row['w'][m] = neg(mul(iv(0.5), ev2(eg, s['pp'], 0, m)))
            return row
        for m in range(1, K + 1):
            v = neg(sub(og(s['pw'], k - m), og(s['pw'], k + m)))
            if m == k:
                v = add(v, diag)
            row['p'][m] = v
        if k <= K:                       # JS auto-extends row.m[k>K]; it is never read (col k>KC)
            row['m'][k] = neg(gI)
        for m in range(0, K + 1):
            row['w'][m] = neg(mul(iv(0.5), ev2(eg, s['pp'], k, m)))
        return row
    if typ == 'F':
        if k == 0:
            row['m'][0] = ONE
            return row
        for m in range(1, K + 1):
            row['p'][m] = sub(eg(s['s'], k - m), eg(s['s'], k + m))
        for m in range(0, K + 1):
            v = ev2(og, s['wp'], k, m)
            if m == k:
                v = add(v, diag)
            row['m'][m] = v
        for m in range(0, K + 1):
            row['w'][m] = ev2(og, s['mp'], k, m)
        return row
    # type R (reciprocal m w^2 - 1)
    for m in range(0, K + 1):
        row['m'][m] = ev2(eg, s['ww'], k, m)
        row['w'][m] = mul(iv(2), ev2(eg, s['s'], k, m))
    return row



# --------------------------------------------------------------------------------------------
# Odd-block convolution pairings at an even background (Stage 2.2), ported from the JS kernel.
#   EVEN x EVEN -> EVEN (cosine): sum   -- same as ev2
#   ODD  x EVEN -> ODD  (sine):   sum
#   EVEN x ODD  -> ODD  (sine):   difference
#   ODD  x ODD  -> EVEN (cosine): difference
# eoDiff and ooDiff have IDENTICAL bodies -- in the JS kernel too. They are one rule with two
# documented roles, and the discriminator is entirely the accessor the caller passes: for k < m,
# ooDiff(og,f,k,m) = -f_{m-k} - f_{k+m} but eoDiff(eg,f,k,m) = +f_{m-k} - f_{k+m}. Do NOT collapse
# them and do NOT bake og/eg inside: swapping the accessor is a mutation that changes Z1odd only
# in the 15th significant digit and leaves every verdict green.
# --------------------------------------------------------------------------------------------
def oeSum(acc, f, k, m):
    return add(acc(f, k - m), acc(f, k + m))


def eoDiff(acc, f, k, m):
    return sub(acc(f, k - m), acc(f, k + m))


def ooDiff(acc, f, k, m):
    return sub(acc(f, k - m), acc(f, k + m))


def oWgtOdd(i, N, nu):
    """Weighted-column weight for flat odd index i. Module level SO IT CAN BE TESTED.

    (i % N) + 1 recovers the MODE from the flat index only because all three odd
    sub-blocks have exactly N entries. Never 1: the odd block has no mean mode.
    An off-by-one here passes the finite-difference check (it lives outside dRowOdd)
    AND lowers Z1odd, so no verdict changes -- it was invisible to everything until
    test-odd-block.py W1 asserted it directly against THIS function.
    """
    return 2 * nu ** ((i % N) + 1)


def dRowOdd(typ, k, s, P, K):
    """One row of DPhi on the ODD block (Stage 2.2).

    Odd unknowns (NO a0): dp EVEN (cosine, m>=1), dm/dw ODD (sine, m>=1).  There is no a0 and no
    mean mode because a sine series has none, and the integral of u' over the torus is zero.
    Odd residuals: H,R as sine coefficients; F scaled uses the even/cosine storage of (s*p),
    mirroring the even block's use of og(sp) inside the even F equation.

    EVERY off-diagonal sign differs from the even block, and NOT uniformly: dH/dp and dF/dp go
    difference->sum while everything else goes sum->difference. There is no "flip all signs"
    shortcut; this is transcribed entry by entry from the kernel and validated by the
    finite-difference check, which is the only test with teeth on it.
    """
    sigma = P['sigma']
    gamma = P['gamma']
    gI = iv(gamma)
    row = {'p': [ZERO] * (K + 1), 'm': [ZERO] * (K + 1), 'w': [ZERO] * (K + 1)}
    if k == 0:
        return row                       # odd block has no mean row
    lam = TWO_PI * k
    diag = add(div(ONE, iv(lam)), iv(sigma * lam))
    if typ == 'H':
        for m in range(1, K + 1):
            v = neg(oeSum(og, s['pw'], k, m))          # ODD(pw) x EVEN(dp) -> ODD : sum
            if m == k:
                v = add(v, diag)
            row['p'][m] = v
        if k <= K:                       # JS auto-extends row.m[k>K]; it is never read (col k>KC)
            row['m'][k] = neg(gI)
        for m in range(1, K + 1):
            row['w'][m] = neg(mul(iv(0.5), eoDiff(eg, s['pp'], k, m)))   # EVEN(pp) x ODD(dw) -> ODD
        return row
    if typ == 'F':
        for m in range(1, K + 1):
            row['p'][m] = ev2(eg, s['s'], k, m)        # EVEN(s) x EVEN(dp) -> EVEN : sum
        for m in range(1, K + 1):
            v = ooDiff(og, s['pw'], k, m)              # ODD(pw) x ODD(dm) -> EVEN : difference
            if m == k:
                v = add(v, diag)
            row['m'][m] = v
        for m in range(1, K + 1):
            row['w'][m] = ooDiff(og, s['mp'], k, m)    # ODD(mp) x ODD(dw) -> EVEN : difference
        return row
    # type R (reciprocal m w^2 - 1); dR/dp is identically zero
    for m in range(1, K + 1):
        row['m'][m] = eoDiff(eg, s['ww'], k, m)                          # EVEN(ww) x ODD(dm) -> ODD
        row['w'][m] = mul(iv(2), eoDiff(eg, s['s'], k, m))               # EVEN(s)  x ODD(dw) -> ODD
    return row


# ============================================================================================
# 4.  candidate sequences (shared by validate and the falsifiers)
# ============================================================================================
def make_seqs(pfac, a_coef, m_coef, w_coef):
    abar = [iv(a_coef[k]) for k in range(N + 1)]
    mbar = [iv(m_coef[k]) for k in range(N + 1)]
    wI = [iv(w_coef[k]) for k in range(N + 1)]
    pbar = [ZERO] * (N + 1)
    for k in range(1, N + 1):
        pbar[k] = iv(TWO_PI * k * a_coef[k])
    pp = conv(pbar, pbar, 2 * N, pfac, pfac)
    pw = conv(pbar, wI, 2 * N, pfac, EVEN)
    ss = conv(mbar, wI, 2 * N, EVEN, EVEN)
    ww = conv(wI, wI, 2 * N, EVEN, EVEN)
    mp = conv(mbar, pbar, 2 * N, EVEN, pfac)
    return {'a': abar, 'p': pbar, 'm': mbar, 'w': wI,
            'pp': pp, 'pw': pw, 's': ss, 'ww': ww, 'mp': mp, 'wp': pw}


# ============================================================================================
# 5.  the radii-polynomial driver  (port of core/interval/radii.js)
# ============================================================================================
def _up(v):
    return v if isinstance(v, (int, float)) else v[1]


def radiiPolynomial(Y0in, Z1in, Z2in):
    Y0 = _up(Y0in)
    Z1 = _up(Z1in)
    Z2 = _up(Z2in)
    base = {'Y0': Y0, 'Z1': Z1, 'Z2': Z2}
    if not (Z1 < 1):
        d = dict(base); d.update(ok=False, why='Z1 >= 1 - the approximate inverse is not one; no contraction'); return d
    if not (Z2 > 0):
        r = nextUp(Y0 / (1 - Z1) * 1.5 + MIN_VALUE)
        d = dict(base); d.update(ok=(r > 0), r=r, rMin=Y0 / (1 - Z1), rMax=INF, linear=True); return d
    disc = (1 - Z1) * (1 - Z1) - 2 * Z2 * Y0
    if not (disc > 0):
        d = dict(base); d.update(ok=False, why='discriminant <= 0 - defect too large to close', disc=disc); return d
    sq = math.sqrt(disc)
    rMin = nextUp(2 * Y0 / ((1 - Z1) + sq))
    rMax = nextDown(((1 - Z1) + sq) / Z2)
    IY = iv(Y0)
    IZ1 = iv(Z1)
    IZ2 = iv(Z2)

    def pAt(rr):
        R = iv(rr)
        return add(sub(mul(mul(iv(0.5), IZ2), mul(R, R)), mul(sub(ONE, IZ1), R)), IY)

    r = rMin
    ok = False
    for _ in range(400):
        if r > rMax:
            break
        if pAt(r)[1] < 0:
            ok = True
            break
        r = nextUp(r * 1.05 + MIN_VALUE)
    if not ok:
        d = dict(base); d.update(ok=False, why='no radius verified p(r) < 0 in interval arithmetic',
                                 rMin=rMin, rMax=rMax, disc=disc); return d
    d = dict(base); d.update(ok=True, r=r, rMin=rMin, rMax=rMax, disc=disc, pAtR=pAt(r)[1]); return d


# ============================================================================================
# 6.  rigorous positivity over the WHOLE enclosure (density m>0 AND branch selector w>0)
#     sup_x |f(x)-f_bar(x)| <= ||Df||_1 <= ||Df||_nu <= r, so min f >= min f_bar - r; the
#     grid minimum pays the modulus of continuity L/(2G), L = sum 2*2pi k |f_k|.
#     (port of validate-congest.js certifyPositivity / certifyWPositivity — one shared body)
# ============================================================================================
def certify_pos(coef, N_, r, G):
    L = 0.0
    for k in range(1, N_ + 1):
        L = nextUp(L + 2 * TWO_PI * k * abs(coef[k]))
    G = G or 4096
    lo = INF
    guard = 0
    while True:
        lo = INF
        for g in range(G):
            t = g / G
            fv = iv(coef[0])
            for k in range(1, N_ + 1):
                cv = math.cos(TWO_PI * k * t)
                fv = add(fv, mul(iv(2 * coef[k]), (nextDown(cv - 1e-15), nextUp(cv + 1e-15))))
            if fv[0] < lo:
                lo = fv[0]
        slack = nextUp(L / (2 * G))
        if slack < 0.25 * abs(lo) or G >= (1 << 21):
            break
        guard += 1
        if guard > 12:
            break
        G *= 4
    minBar = nextDown(lo - nextUp(L / (2 * G)))
    minBall = nextDown(minBar - r)
    return {'minBar': minBar, 'minBall': minBall, 'positive': minBall > 0, 'L': L, 'G': G}


# ============================================================================================
# 7.  the validation — Y0, Z1, Z2, radii polynomial, w>0 branch gate
#     (port of validate-congest.js validate; A is CONSUMED, never recomputed)
# ============================================================================================
def validate(a_coef, m_coef, w_coef, AN, opts=None, AN_ODD=None):
    # The odd-block approximate inverse is EMBEDDED data, exactly like AMAT: this verifier
    # consumes an approximate inverse, it never computes one. Defaulted here so every
    # existing call site (including the falsifiers) exercises the odd block too.
    if AN_ODD is None:
        AN_ODD = AMAT_ODD
    opts = opts or {}
    nu = opts.get('nu', 1.05)
    sigma = SIGMA
    A = A_PARAM
    gamma = GAMMA
    P = {'sigma': sigma, 'A': A, 'gamma': gamma, 'N': N}
    KC = max(opts.get('KC', 3 * N), 3 * N)
    KR = KC + 2 * N
    rCap = opts.get('rCap', 1e-2)
    n = 3 * N + 3
    idxA0 = 0

    def idxP(k):
        return k

    def idxM(k):
        return N + 1 + k

    def idxW(k):
        return 2 * N + 2 + k

    def finW(i):
        if i == 0:
            return 1.0
        if i <= N:
            return 2 * nu ** i
        if i <= 2 * N + 1:
            k = i - (N + 1)
            return 1.0 if k == 0 else 2 * nu ** k
        k = i - (2 * N + 2)
        return 1.0 if k == 0 else 2 * nu ** k

    s = make_seqs(ODD, a_coef, m_coef, w_coef)
    pbar = s['p']
    mbar = s['m']
    wbarI = s['w']
    normP = normNu(pbar, nu, False)
    normM = normNu(mbar, nu, True)
    normW = normNu(wbarI, nu, True)
    normPW = normNu(s['pw'], nu, False)
    normS = normNu(s['s'], nu, True)
    normWW = normNu(s['ww'], nu, True)
    normPP = normNu(s['pp'], nu, True)
    normMP = normNu(s['mp'], nu, False)
    s0 = s['s'][0]
    s0mid = 0.5 * (s0[0] + s0[1])
    if not (s0mid > 0):
        return {'ok': False, 'why': 's_bar_0 = mean sqrt m not positive - off the physical branch'}
    tailRecipInv = iv(1.0 / (2 * s0mid))

    def tailHF(k):
        lam = TWO_PI * k
        d = 1 / lam + sigma * lam
        return iv(1.0 / d)

    # -------- Y0 = || A Phi(x_bar) ||_nu --------
    Phi = buildPhi(s, P, 3 * N)
    rvec = [ZERO] * n
    rvec[idxA0] = Phi['H'][0]
    for k in range(1, N + 1):
        rvec[idxP(k)] = Phi['H'][k]
    for k in range(0, N + 1):
        rvec[idxM(k)] = Phi['F'][k]
        rvec[idxW(k)] = Phi['R'][k]
    acc = ZERO
    for i in range(n):
        a = ZERO
        base = i * n
        for j in range(n):
            a = add(a, mul(iv(AN[base + j]), rvec[j]))
        acc = add(acc, mul(iv(finW(i)), iabs(a)))
    for k in range(N + 1, 3 * N + 1):
        w = iv(2 * nu ** k)
        acc = add(acc, mul(w, iabs(mul(tailHF(k), Phi['H'][k]))))
        acc = add(acc, mul(w, iabs(mul(tailHF(k), Phi['F'][k]))))
        acc = add(acc, mul(w, iabs(mul(tailRecipInv, Phi['R'][k]))))
    Y0 = acc

    # -------- Z1 = || I - A DPhi(x_bar) || (max over weighted columns) --------
    Z1 = ZERO
    worstCol = None
    rowsH = []
    rowsF = []
    rowsR = []
    for k in range(KR + 1):
        rowsH.append(dRow('H', k, s, P, KC))
        rowsF.append(dRow('F', k, s, P, KC))
        rowsR.append(dRow('R', k, s, P, KC))

    def colNorm(kind, m):
        fin = [ZERO] * n
        fin[idxA0] = colent(rowsH[0], kind, m)
        for k in range(1, N + 1):
            fin[idxP(k)] = colent(rowsH[k], kind, m)
        for k in range(0, N + 1):
            fin[idxM(k)] = colent(rowsF[k], kind, m)
            fin[idxW(k)] = colent(rowsR[k], kind, m)
        out = [ZERO] * n
        for i in range(n):
            a = ZERO
            base = i * n
            for j in range(n):
                a = add(a, mul(iv(AN[base + j]), fin[j]))
            out[i] = a
        if kind == 'a0':
            jIdx = idxA0
        elif kind == 'p':
            jIdx = idxP(m) if m <= N else -1
        elif kind == 'm':
            jIdx = idxM(m) if m <= N else -1
        else:
            jIdx = idxW(m) if m <= N else -1
        acc2 = ZERO
        for i in range(n):
            e = ONE if i == jIdx else ZERO
            acc2 = add(acc2, mul(iv(finW(i)), iabs(sub(e, out[i]))))
        for k in range(N + 1, KR + 1):
            w = iv(2 * nu ** k)
            eH = ONE if (kind == 'p' and m == k) else ZERO
            eF = ONE if (kind == 'm' and m == k) else ZERO
            eR = ONE if (kind == 'w' and m == k) else ZERO
            acc2 = add(acc2, mul(w, iabs(sub(eH, mul(tailHF(k), colent(rowsH[k], kind, m))))))
            acc2 = add(acc2, mul(w, iabs(sub(eF, mul(tailHF(k), colent(rowsF[k], kind, m))))))
            acc2 = add(acc2, mul(w, iabs(sub(eR, mul(tailRecipInv, colent(rowsR[k], kind, m))))))
        wj = 1.0 if kind == 'a0' else (1.0 if m == 0 else 2 * nu ** m)
        return div(acc2, iv(wj))

    cand = [('a0', 0)]
    for m in range(1, KC + 1):
        cand.append(('p', m))
    for m in range(0, KC + 1):
        cand.append(('m', m))
        cand.append(('w', m))
    for (kind, m) in cand:
        v = colNorm(kind, m)
        if v[1] > mag(Z1):
            Z1 = v
            worstCol = kind + '_' + str(m)

    # analytic uniform tail bound (columns m > KC)
    lamN1 = TWO_PI * (N + 1)
    denomLoGrow = nextDown(1 / lamN1 + sigma * lamN1)
    denomRecip = nextDown(2 * s0mid)
    g = gamma
    cP = nextUp((mag(normPW) + mag(normS)) / denomLoGrow)
    cMgrow = nextUp((g + mag(normPW)) / denomLoGrow)
    cMrecip = nextUp(mag(normWW) / denomRecip)
    cWgrow = nextUp((0.5 * mag(normPP) + mag(normMP)) / denomLoGrow)
    sOff = nextUp(2 * max(0.0, mag(normS) - s0[0]))
    cWrecip = nextUp(sOff / denomRecip)
    epsId = 8 * EPS + width(s0) / s0mid
    analytic = max(cP + epsId, cMgrow + cMrecip + epsId, cWgrow + cWrecip + epsId)
    # NaN guard BEFORE the comparison below: `nan > x` is False in Python exactly as in JS,
    # so an unguarded compare would silently keep the lower explicit-column Z1 and certify
    # on a poisoned tail bound. Same Step 0 hazard as the JS kernels, closed 2026-07-27.
    if math.isnan(analytic) or math.isinf(analytic):
        raise ArithmeticError('analytic Z1 tail bound is not finite')
    analyticInfo = {'mP': cP + epsId, 'mM': cMgrow + cMrecip + epsId, 'mW': cWgrow + cWrecip + epsId,
                    'epsId': epsId, 'cP': cP, 'cMgrow': cMgrow, 'cMrecip': cMrecip,
                    'cWgrow': cWgrow, 'cWrecip': cWrecip}
    if analytic > mag(Z1):
        Z1 = iv(analytic)
        worstCol = 'tail(analytic)'


    # -------- Z1_odd = || I - A_o DPhi_odd(x_bar) ||  (Stage 2.2 full-space uniqueness) --------
    # PORTED 2026-08-05. Until this landed, this verifier certified the EVEN (cosine) subspace
    # only and said so in its own output, and the claim carried that as a load-bearing caveat:
    # full-space uniqueness rested on ONE implementation. The odd block is where a symmetry-
    # BREAKING solution would live, so certifying it is what rules out an asymmetric solution
    # sitting next to the even one.
    #
    # Y0 is untouched and needs no odd term: p_bar is odd and m_bar/w_bar are even, so every odd
    # component of Phi(x_bar) is identically zero -- structurally, not numerically.
    #
    # The analytic tail bound is REUSED VERBATIM: it is built from l1_nu kernel NORMS, never from
    # coefficients, and both the sum and difference pairings are bounded by the same norm, so it
    # is parity-agnostic. Every odd column has m >= 1, so the zero-mode caveat never fires.
    nOdd = 3 * N
    if len(AN_ODD) != nOdd * nOdd:
        return {'ok': False, 'why': 'odd-block approximate inverse absent or wrong size - '
                                    'refusing rather than certifying the even block alone'}

    def oP(k):
        return k - 1

    def oM(k):
        return N + k - 1

    def oW(k):
        return 2 * N + k - 1

    def oWgt(i):
        return oWgtOdd(i, N, nu)

    # ||A_odd|| in the same weighted-column operator norm, for Z2 (see the Aopnorm comment).
    anormOdd = 0.0
    for j in range(nOdd):
        ss2 = 0.0
        for i in range(nOdd):
            ss2 = nextUp(ss2 + oWgt(i) * abs(AN_ODD[i * nOdd + j]))
        v = nextUp(ss2 / oWgt(j))
        if v > anormOdd:
            anormOdd = v

    rowsHo = []
    rowsFo = []
    rowsRo = []
    for k in range(KR + 1):
        rowsHo.append(dRowOdd('H', k, s, P, KC))
        rowsFo.append(dRowOdd('F', k, s, P, KC))
        rowsRo.append(dRowOdd('R', k, s, P, KC))

    def colNormO(kind, m):
        fin = [ZERO] * nOdd
        for k in range(1, N + 1):
            fin[oP(k)] = rowsHo[k][kind][m]
            fin[oM(k)] = rowsFo[k][kind][m]
            fin[oW(k)] = rowsRo[k][kind][m]
        out = [ZERO] * nOdd
        for i in range(nOdd):
            a = ZERO
            base = i * nOdd
            for j in range(nOdd):
                a = add(a, mul(iv(AN_ODD[base + j]), fin[j]))
            out[i] = a
        if kind == 'p':
            jIdx = oP(m) if m <= N else -1
        elif kind == 'm':
            jIdx = oM(m) if m <= N else -1
        else:
            jIdx = oW(m) if m <= N else -1
        acc2 = ZERO
        for i in range(nOdd):
            e = ONE if i == jIdx else ZERO
            acc2 = add(acc2, mul(iv(oWgt(i)), iabs(sub(e, out[i]))))
        for k in range(N + 1, KR + 1):
            w = iv(2 * nu ** k)
            eH = ONE if (kind == 'p' and m == k) else ZERO
            eF = ONE if (kind == 'm' and m == k) else ZERO
            eR = ONE if (kind == 'w' and m == k) else ZERO
            acc2 = add(acc2, mul(w, iabs(sub(eH, mul(tailHF(k), rowsHo[k][kind][m])))))
            acc2 = add(acc2, mul(w, iabs(sub(eF, mul(tailHF(k), rowsFo[k][kind][m])))))
            acc2 = add(acc2, mul(w, iabs(sub(eR, mul(tailRecipInv, rowsRo[k][kind][m])))))
        return div(acc2, iv(2 * nu ** m))

    Z1odd = ZERO
    worstColOdd = None
    for m in range(1, KC + 1):
        for kind in ('p', 'm', 'w'):
            v = colNormO(kind, m)
            if v[1] > mag(Z1odd):
                Z1odd = v
                worstColOdd = kind + '_' + str(m)
    analyticO = max(analyticInfo['mP'], analyticInfo['mM'], analyticInfo['mW'])
    if math.isnan(analyticO) or math.isinf(analyticO):
        raise ArithmeticError('analytic Z1_odd tail bound is not finite')
    if analyticO > mag(Z1odd):
        Z1odd = iv(analyticO)
        worstColOdd = 'tail(analytic)'

    # full-space Z1 = max(even, odd). STRICT >: ties keep the even block and the 'odd:' prefix
    # appears only on a strict odd win, matching the kernel exactly.
    Z1even = Z1
    worstColEven = worstCol
    if mag(Z1odd) > mag(Z1even):
        Z1 = Z1odd
        worstCol = 'odd:' + str(worstColOdd)
    else:
        Z1 = Z1even
        worstCol = worstColEven

    # -------- Z2: uniform Lipschitz of x -> A DPhi(x) on B_rCap(x_bar) --------
    anorm = 0.0
    for j in range(n):
        ss2 = 0.0
        for i in range(n):
            ss2 = nextUp(ss2 + finW(i) * abs(AN[i * n + j]))
        v = nextUp(ss2 / finW(j))
        if v > anorm:
            anorm = v
    tailGrow = 1 / (1 / lamN1 + sigma * lamN1)
    # anormOdd JOINS THIS MAX (mirrors the 2026-08-05 kernel fix). Z2 is the Lipschitz
    # constant of x -> A DPhi(x) on the WHOLE ball; off the even subspace DPhi is not
    # block-diagonal, so the ||A|| Z2 needs is the max over BOTH blocks. Changes no
    # number at either shipped instance -- the even norm dominates ~3.5x and ~3.9x --
    # but nothing checked that it did, and the missing term was the unsound direction.
    Aopnorm = max(anorm, anormOdd, tailGrow, 1 / (2 * s0mid))
    D2 = add(add(add(normW, mul(iv(2), normP)),
                 mul(iv(2), add(add(normP, normW), normM))),
             add(mul(iv(2), normM), mul(iv(4), normW)))
    D3 = iv(15)
    factor = add(D2, mul(mul(iv(0.5), D3), iv(rCap)))
    Z2 = mul(iv(Aopnorm), factor)

    # -------- radii polynomial --------
    y0 = mag(Y0)
    z1 = mag(Z1)
    z2 = mag(Z2)
    res = {'N': N, 'nu': nu, 'KC': KC, 'KR': KR, 'sigma': sigma, 'A': A, 'gamma': gamma,
           'rCap': rCap, 'Y0': y0, 'Z1': z1, 'Z2': z2, 'worstCol': worstCol,
           # both blocks reported SEPARATELY: a port that matched only the max could be wrong
           # on both blocks in compensating directions and never show it.
           'Z1even': mag(Z1even), 'Z1odd': mag(Z1odd),
           'worstColEven': worstColEven, 'worstColOdd': worstColOdd,
           'Aopnorm': Aopnorm, 's0': s0mid, 'analytic': analyticInfo}
    rp = radiiPolynomial(Y0, Z1, Z2)
    if not rp['ok']:
        res.update(ok=False, why=rp['why'], disc=rp.get('disc'), rMin=rp.get('rMin'), rMax=rp.get('rMax'))
        return res
    if not (rp['r'] <= rCap):
        res.update(ok=False, why='certified radius exceeds rCap', r=rp['r'],
                   rMin=rp['rMin'], rMax=rp['rMax'], disc=rp['disc'])
        return res

    # branch selection: min w > 0 over the WHOLE ball (physical w = +m^{-1/2})
    wPosBallR = opts['wPosR'] if opts.get('wPosR') is not None else rp['r']
    wpos = certify_pos(w_coef, N, wPosBallR, opts.get('wG'))
    if not wpos['positive']:
        res.update(ok=False, why='w-series not certified positive over the ball',
                   r=rp['r'], rMin=rp['rMin'], rMax=rp['rMax'], disc=rp['disc'],
                   minWbar=wpos['minBar'], minW=wpos['minBall'])
        return res
    res.update(ok=True, r=rp['r'], rMin=rp['rMin'], rMax=rp['rMax'], disc=rp['disc'], pAtR=rp['pAtR'],
               closureMargin=(1 - z1) * (1 - z1) / (2 * z2), minWbar=wpos['minBar'], minW=wpos['minBall'])
    return res


# ============================================================================================
# 8.  float helpers for the INDEPENDENT pointwise witnesses and the reciprocal aux
#     (port of research/mfg-congest/kernel/candidate-congest.js ev/d1/d2/evalPDE/reciprocalW)
# ============================================================================================
def ev_series(f, x):
    s = f[0]
    for k in range(1, len(f)):
        s += 2 * f[k] * math.cos(TWO_PI * k * x)
    return s


def d1_series(f, x):
    s = 0.0
    for k in range(1, len(f)):
        s += -2 * (TWO_PI * k) * f[k] * math.sin(TWO_PI * k * x)
    return s


def d2_series(f, x):
    s = 0.0
    for k in range(1, len(f)):
        s += -2 * (TWO_PI * k) * (TWO_PI * k) * f[k] * math.cos(TWO_PI * k * x)
    return s


def fget(f, j, parity):
    a = -j if j < 0 else j
    if a >= len(f):
        return 0.0
    v = f[a]
    if j < 0 and parity == ODD:
        return -v
    return v


def fconv(f, g, K, pf, pg):
    out = [0.0] * (K + 1)
    Jf = len(f) - 1
    Jg = len(g) - 1
    for k in range(K + 1):
        s = 0.0
        for j in range(-Jf, Jf + 1):
            t = k - j
            if t < -Jg or t > Jg:
                continue
            s += fget(f, j, pf) * fget(g, t, pg)
        out[k] = s
    return out


def reciprocalW_py(m_coef, N_, drop=False):
    """w ~ m^{-1/2} as a finite cosine series by reciprocal-sqrt Newton in Fourier.
       drop=True drops the 1/2 factor (= the -a m^{-(a+1)} damping): the fixed point moves to
       m w^2 = 1/2 (the 'dropped 1/m^{a+1} factor' mutation)."""
    half = 1.0 if drop else 0.5
    m = list(m_coef[:N_ + 1])
    w = [0.0] * (N_ + 1)
    w[0] = 1.0 / math.sqrt(m[0])
    for it in range(60):
        mw = fconv(m, w, N_, EVEN, EVEN)
        mww = fconv(mw, w, N_, EVEN, EVEN)
        g = [(1.5 if k == 0 else 0.0) - half * mww[k] for k in range(N_ + 1)]
        wn = fconv(w, g, N_, EVEN, EVEN)
        d = max(abs(wn[k] - w[k]) for k in range(N_ + 1))
        w = wn
        if d < 1e-16 and not drop:
            break
        if drop and it > 40:
            break
    return w


def eval_pde(a, m, w, N_, sigma, A, gamma, G):
    hjbMax = 0.0
    fpResMax = 0.0
    xs = []
    Jv = []
    for i in range(G):
        t = i / G
        u = ev_series(a, t)
        upp = d2_series(a, t)
        up = d1_series(a, t)
        mm = ev_series(m, t)
        mp = d1_series(m, t)
        mpp = d2_series(m, t)
        sm = math.sqrt(mm)
        V = A * math.cos(TWO_PI * t) + gamma * mm
        hjb = u - sigma * upp + 0.5 * up * up / sm - V
        if abs(hjb) > hjbMax:
            hjbMax = abs(hjb)
        dflux = 0.5 / sm * mp * up + sm * upp
        fp = mm - sigma * mpp - dflux - 1
        if abs(fp) > fpResMax:
            fpResMax = abs(fp)
        xs.append(t)
        Jv.append(sigma * mp + sm * up)
    phiMin = INF
    phiMax = -INF
    for i in range(G):
        t = xs[i]
        Sa = 0.0
        for k in range(1, N_ + 1):
            Sa += 2 * m[k] * math.sin(TWO_PI * k * t) / (TWO_PI * k)
        ph = Jv[i] - Sa
        if ph < phiMin:
            phiMin = ph
        if ph > phiMax:
            phiMax = ph
    fpFluxConstDev = phiMax - phiMin
    reciprocalMaw = 0.0
    for i in range(G):
        t = xs[i]
        prod = math.sqrt(ev_series(m, t)) * ev_series(w, t)
        if abs(prod - 1) > reciprocalMaw:
            reciprocalMaw = abs(prod - 1)
    return {'hjbMax': hjbMax, 'fpResMax': fpResMax, 'fpFluxConstDev': fpFluxConstDev,
            'reciprocalMaw': reciprocalMaw}


# ============================================================================================
# 9.  the SEVEN falsifiers (X1..X7) — each MUST turn its own target RED (refuse)
#     mirrors research/mfg-congest/tests/test-validate-congest.js.  A verifier that cannot
#     refuse a bad input is a fake certificate.  These use the EMBEDDED approximate inverse A;
#     where the JS recomputes A internally (X4), the refusal is only STRONGER with the good A.
# ============================================================================================
def falsifier_X1():
    """outward rounding is load-bearing: a thin (no-widening) mul fails to enclose the exact
       product; eqcert-style widened mul encloses all 4000/4000.  Exact reference = Fraction."""
    def selfTest(mulfn):
        seed = [20260723]

        def rng():
            p = float(seed[0]) * 1103515245.0 + 12345.0
            seed[0] = int(p) % 4294967296 & 0x7fffffff
            return seed[0] / 2147483647

        for t in range(4000):
            a = (rng() - 0.5) * (1e6 if t % 3 else 1e-6)
            b = (rng() - 0.5) * (1e3 if t % 2 else 1e-3)
            if b == 0:
                b = 0.5
            res = mulfn((a, a), (b, b))
            ex = Fraction(a) * Fraction(b)
            if Fraction(res[0]) > ex or ex > Fraction(res[1]):
                return t
        return -1

    def thinMul(a, b):
        p = [a[0] * b[0], a[0] * b[1], a[1] * b[0], a[1] * b[1]]
        return (min(p), max(p))

    good = selfTest(mul)
    bad = selfTest(thinMul)
    return good < 0 and bad >= 0, (good, bad)


def falsifier_X2(ref_Y0):
    bad_a = list(CAND_A)
    bad_a[0] += 1e-2
    rb = validate(bad_a, CAND_M, CAND_W, AMAT, {'nu': 1.05})
    return (rb['Y0'] > 1e6 * ref_Y0) and (not rb['ok']), rb


def falsifier_X3(ref_r):
    bad_a = list(CAND_A)
    bad_a[0] += 1e-2
    e = eval_pde(bad_a, CAND_M, CAND_W, N, SIGMA, A_PARAM, GAMMA, 512)
    return e['hjbMax'] > 1e-4 and e['hjbMax'] / ref_r > 1e6, e


def falsifier_X4(ref_Y0):
    w_drop = reciprocalW_py(CAND_M, N, drop=True)
    rb = validate(CAND_A, CAND_M, w_drop, AMAT, {'nu': 1.05})
    return (not rb['ok']) and rb['Y0'] > 1e6 * ref_Y0, rb


def falsifier_X5():
    P = {'sigma': SIGMA, 'A': A_PARAM, 'gamma': GAMMA, 'N': N}

    def norm(seqs):
        Phi = buildPhi(seqs, P, 3 * N)
        mx = 0.0
        for k in range(3 * N + 1):
            mx = max(mx, mag(Phi['H'][k]), mag(Phi['F'][k]), mag(Phi['R'][k]))
        return mx

    ng = norm(make_seqs(ODD, CAND_A, CAND_M, CAND_W))
    nb = norm(make_seqs(EVEN, CAND_A, CAND_M, CAND_W))
    return nb > 1e-3 and nb > 1e10 * ng, (ng, nb)


def falsifier_X6():
    bogus = certify_pos(CAND_M, N, 10, None)
    return (not bogus['positive']), bogus


def falsifier_X7():
    wp = certify_pos(CAND_W, N, 10, None)
    rb = validate(CAND_A, CAND_M, CAND_W, AMAT, {'nu': 1.05, 'wPosR': 10})
    wired = (not rb['ok']) and ('w-series not certified positive' in (rb.get('why') or ''))
    return (not wp['positive']) and wired, (wp, rb)


# ============================================================================================
# 10.  driver / report
# ============================================================================================
def run():
    n = 3 * N + 3
    assert len(AMAT) == n * n, 'embedded A has wrong size'

    # ---- port correctness gate: Phi(x_bar) elementwise vs the embedded JS reference ----
    P = {'sigma': SIGMA, 'A': A_PARAM, 'gamma': GAMMA, 'N': N}
    seqs = make_seqs(ODD, CAND_A, CAND_M, CAND_W)
    Phi = buildPhi(seqs, P, 3 * N)
    phi_dev = 0.0
    for k in range(3 * N + 1):
        phi_dev = max(phi_dev, abs(mid(Phi['H'][k]) - PHI_H[k]),
                      abs(mid(Phi['F'][k]) - PHI_F[k]),
                      abs(mid(Phi['R'][k]) - PHI_R[k]))
    phi_ok = phi_dev < 1e-12

    # ---- reciprocal-w consistency: the embedded w matches m^{-1/2} rebuilt from m ----
    w_rebuilt = reciprocalW_py(CAND_M, N)
    w_dev = max(abs(w_rebuilt[k] - CAND_W[k]) for k in range(N + 1))
    w_ok = w_dev < 1e-13

    # ---- the certificate ----
    r = validate(CAND_A, CAND_M, CAND_W, AMAT, {'nu': 1.05})
    pos = certify_pos(CAND_M, N, r['r'], None) if r['ok'] else None
    wit = eval_pde(CAND_A, CAND_M, CAND_W, N, SIGMA, A_PARAM, GAMMA, 4096)

    # ---- falsifiers ----  (ref_r falls back if the certificate refused, so a tampered
    #      candidate yields a clean REFUSED report instead of a crash)
    ref_r = r.get('r', 1e-12)
    fx = {}
    fx['X1'], d1 = falsifier_X1()
    fx['X2'], _ = falsifier_X2(r['Y0'])
    fx['X3'], _ = falsifier_X3(ref_r)
    fx['X4'], _ = falsifier_X4(r['Y0'])
    fx['X5'], d5 = falsifier_X5()
    fx['X6'], _ = falsifier_X6()
    fx['X7'], _ = falsifier_X7()
    fals_ok = all(fx.values())

    cert_ok = bool(r['ok'] and pos and pos['positive'])
    verified = cert_ok and phi_ok and w_ok and fals_ok

    result = {
        'r': r.get('r'), 'Z1': r['Z1'], 'Z2': r['Z2'], 'Y0': r['Y0'], 'disc': r.get('disc'),
        'Aopnorm': r['Aopnorm'], 's0': r['s0'], 'worstCol': r['worstCol'],
        'Z1even': r.get('Z1even'), 'Z1odd': r.get('Z1odd'),
        'worstColEven': r.get('worstColEven'), 'worstColOdd': r.get('worstColOdd'),
        'minMbar': pos['minBar'] if pos else None, 'minM': pos['minBall'] if pos else None,
        'minWbar': r.get('minWbar'), 'minW': r.get('minW'),
        'closureMargin': r.get('closureMargin'),
        'analytic': r['analytic'], 'phiMaxDev': phi_dev, 'wMaxDev': w_dev,
        'witnesses': wit, 'falsifiers': fx, 'ok': r['ok'], 'why': r.get('why'),
        'verified': verified, 'cert_ok': cert_ok, 'phi_ok': phi_ok, 'w_ok': w_ok,
        'fals_ok': fals_ok, '_x1': d1, '_x5': d5,
    }
    return result


def _report(R):
    L = []
    p = L.append

    def f(x, fmt):
        return (fmt % x) if x is not None else 'n/a'

    p("=" * 84)
    p("  INDEPENDENT PYTHON VERIFIER  -  discounted congestion MFG (a=1/2), computer-assisted proof")
    p("  instance: sigma=%.3g  A=%.3g  gamma=%.3g  N=%d   (stdlib only; outward-rounded intervals)" % (SIGMA, A_PARAM, GAMMA, N))
    p("=" * 84)
    p("")
    p("  radii-polynomial / Newton-Kantorovich bounds (recomputed from candidate + A):")
    p("    Y0 = ||A Phi(x_bar)||_nu            = %s   (residual defect)" % f(R['Y0'], '%.6e'))
    p("    Z1 = ||I - A DPhi(x_bar)||_nu       = %s       (worst col: %s)" % (f(R['Z1'], '%.6f'), R['worstCol']))
    p("    Z2 = Lipschitz on B_rCap           = %s      (||A|| = %.4f, s_bar_0 = %.6f)" % (f(R['Z2'], '%.6f'), R['Aopnorm'], R['s0']))
    p("    disc = (1-Z1)^2 - 2 Z2 Y0          = %s" % f(R['disc'], '%.6f'))
    p("    certified radius  r                = %s" % f(R['r'], '%.6e'))
    p("    closure margin (Y0 headroom)       = %s" % f(R['closureMargin'], '%.4e'))
    if R['cert_ok']:
        p("    -> p(r) < 0 and Z1 < 1: contraction closes; an exact solution lies within r of")
        p("       the candidate, LOCALLY UNIQUE THERE IN THE FULL l1_nu BALL -- both the even")
        p("       (cosine) and the odd (sine) blocks, Z1 = max(Z1even, Z1odd).")
    else:
        p("    -> certificate did NOT close: %s" % (R['why'] or 'positivity failed'))
    p("")
    p("  positivity over the WHOLE ball (both walls certified, never assumed):")
    p("    density   min m over ball  >= %s   (min m_bar = %s)" % (f(R['minM'], '%.6f'), f(R['minMbar'], '%.6f')))
    p("    branch    min w over ball  >= %s   (min w_bar = %s;  w>0 selects +m^{-1/2})" % (f(R['minW'], '%.6f'), f(R['minWbar'], '%.6f')))
    p("")
    p("  independent pointwise witnesses (a different representation than the Fourier residual):")
    w = R['witnesses']
    p("    |HJB(x_bar)|         = %.3e      FP flux const dev = %.3e" % (w['hjbMax'], w['fpFluxConstDev']))
    p("    |sqrt(m) w - 1|      = %.3e      FP residual       = %.3e" % (w['reciprocalMaw'], w['fpResMax']))
    p("")
    p("  port-correctness gates:")
    p("    Phi(x_bar) vs embedded JS reference, max elementwise dev = %.2e   [%s]" % (R['phiMaxDev'], 'OK' if R['phi_ok'] else 'FAIL'))
    p("    embedded w vs m^{-1/2} rebuilt from m, max dev          = %.2e   [%s]" % (R['wMaxDev'], 'OK' if R['w_ok'] else 'FAIL'))
    p("")
    p("  falsifiers (each MUST refuse - a certificate that cannot go RED is fake):")
    names = {
        'X1': 'outward rounding load-bearing (thin mul fails to enclose vs exact rational)',
        'X2': 'perturbed a_0: Y0 explodes, validate REFUSES',
        'X3': 'perturbed pointwise HJB >> r (witness has teeth)',
        'X4': 'dropped 1/m^{a+1} factor: reciprocal residual O(1), REFUSES',
        'X5': 'parity bug (p in EVEN basis): ||Phi|| blows up',
        'X6': 'density positivity REFUSES on a ball too wide (r=10)',
        'X7': 'w>0 branch gate REFUSES on a ball too wide (r=10)',
    }
    for key in ['X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7']:
        p("    %s  %s  %s" % ('RED ok ' if R['falsifiers'][key] else 'FAIL   ', key, names[key]))
    p("")
    p("-" * 84)
    if R['verified']:
        p("  The radii polynomial closes: an exact solution lies within r of the candidate, and")
        p("  LOCAL UNIQUENESS IS CERTIFIED WITHIN THE ENCLOSURE BALL IN THE FULL l1_nu SPACE --")
        p("  even (cosine) AND odd (sine) blocks, Z1 = max(Z1even, Z1odd).  Until 2026-08-05 this")
        p("  file certified the even block alone and said so here; the odd block is where a")
        p("  symmetry-BREAKING solution would live, so certifying it is what rules out an")
        p("  asymmetric solution sitting beside the even one.  Density m>0 and the physical")
        p("  w=+m^{-1/2} branch are certified in interval arithmetic over the WHOLE ball; the")
        p("  Phi port matches the JS reference; every falsifier refused.  No tolerance was tuned")
        p("  to close.")
        p("")
        p("  WHAT THE NORM MEANS, because it is stronger than a discretisation claim and weaker")
        p("  than a claim about the model.  ||.||_nu is the weighted l1 norm on FOURIER")
        p("  COEFFICIENTS, and Y0, Z1 and Z2 each bound the INFINITE tail explicitly -- the")
        p("  analytic tail bound over columns m > KC is a Banach-algebra estimate, not a")
        p("  truncation.  So the enclosed object is a solution of the system, not of an N-mode")
        p("  approximation to it.  What IS a point rather than a range is the INSTANCE: these")
        p("  numbers are a statement at this sigma, A, gamma and a=1/2, and at no other.")
        p("")
        p("  CONGEST CAP: VERIFIED")
    else:
        reasons = []
        if not R['cert_ok']:
            reasons.append('certificate did not close (%s)' % (R['why'] or 'positivity failed'))
        if not R['phi_ok']:
            reasons.append('Phi port mismatch')
        if not R['w_ok']:
            reasons.append('reciprocal-w mismatch')
        if not R['fals_ok']:
            reasons.append('a falsifier failed to refuse')
        p("  CONGEST CAP: REFUSED  -  " + '; '.join(reasons))
    p("-" * 84)
    return "\n".join(L)


def main():
    R = run()
    if '--json' in sys.argv:
        import json
        out = {k: R[k] for k in ('r', 'Z1', 'Z2', 'Y0', 'disc', 'minMbar', 'minM',
                                 'minWbar', 'minW', 'phiMaxDev', 'wMaxDev', 'verified',
                                 'Z1even', 'Z1odd', 'worstColEven', 'worstColOdd')}
        out['falsifiers'] = R['falsifiers']
        out['analytic'] = R['analytic']
        print(json.dumps(out))
    else:
        print(_report(R))
    return 0 if R['verified'] else 1


if __name__ == '__main__':
    sys.exit(main())
