Current task: —

E-016b-v3-rootcause.py

Experiments: E-016b · script updated 08-18-2026

E-016b-v3-rootcause.csv — 331.5 KB, updated 08-18-2026

← prev page 11 of 12 · 500/page · 5600 rows next →
# seriesvariantayresidresid_shifted
5002 resid mp60 10.0 20.100000 -1.2477653277e+01 3.4983783384e+00
5003 resid mp60 10.0 20.200000 -1.2601567526e+01 3.3744640901e+00
5004 resid mp60 10.0 20.300000 -1.2726028159e+01 3.2500034570e+00
5005 resid mp60 10.0 20.400000 -1.2851034109e+01 3.1249975065e+00
5006 resid mp60 10.0 20.500000 -1.2976584307e+01 2.9994473086e+00
5007 resid mp60 10.0 20.600000 -1.3102677680e+01 2.8733539361e+00
5008 resid mp60 10.0 20.700000 -1.3229313152e+01 2.7467184639e+00
5009 resid mp60 10.0 20.800000 -1.3356489646e+01 2.6195419696e+00
5010 resid mp60 10.0 20.900000 -1.3484206083e+01 2.4918255332e+00
5011 resid mp60 10.0 21.000000 -1.3612461379e+01 2.3635702371e+00
5012 resid mp60 10.0 21.100000 -1.3741254450e+01 2.2347771659e+00
5013 resid mp60 10.0 21.200000 -1.3870584209e+01 2.1054474065e+00
5014 resid mp60 10.0 21.300000 -1.4000449568e+01 1.9755820481e+00
5015 resid mp60 10.0 21.400000 -1.4130849434e+01 1.8451821822e+00
5016 resid mp60 10.0 21.500000 -1.4261782714e+01 1.7142489021e+00
5017 resid mp60 10.0 21.600000 -1.4393248312e+01 1.5827833036e+00
5018 resid mp60 10.0 21.700000 -1.4525245131e+01 1.4507864843e+00
5019 resid mp60 10.0 21.800000 -1.4657772072e+01 1.3182595439e+00
5020 resid mp60 10.0 21.900000 -1.4790828032e+01 1.1852035842e+00
5021 resid mp60 10.0 22.000000 -1.4924411907e+01 1.0516197086e+00
5022 resid mp60 10.0 22.100000 -1.5058522593e+01 9.1750902285e-01
5023 resid mp60 10.0 22.200000 -1.5193158982e+01 7.8287263417e-01
5024 resid mp60 10.0 22.300000 -1.5328319964e+01 6.4771165178e-01
5025 resid mp60 10.0 22.400000 -1.5464004429e+01 5.1202718664e-01
5026 resid mp60 10.0 22.500000 -1.5600211264e+01 3.7582035144e-01
5027 resid mp60 10.0 22.600000 -1.5736939355e+01 2.3909226055e-01
5028 resid mp60 10.0 22.700000 -1.5874187586e+01 1.0184403002e-01
5029 resid mp60 10.0 22.800000 -1.6011954838e+01 -3.5923222502e-02
5030 resid mp60 10.0 22.900000 -1.6150239994e+01 -1.7420837780e-01
5031 resid mp60 10.0 23.000000 -1.6289041931e+01 -3.1301031511e-01
5032 resid mp60 10.0 23.100000 -1.6428359528e+01 -4.5232791218e-01
5033 resid mp60 10.0 23.200000 -1.6568191661e+01 -5.9216004529e-01
5034 resid mp60 10.0 23.300000 -1.6708537205e+01 -7.3250558929e-01
5035 resid mp60 10.0 23.400000 -1.6849395033e+01 -8.7336341767e-01
5036 resid mp60 10.0 23.500000 -1.6990764018e+01 -1.0147324026e+00
5037 resid mp60 10.0 23.600000 -1.7132643031e+01 -1.1566114148e+00
5038 resid mp60 10.0 23.700000 -1.7275030940e+01 -1.2989993239e+00
5039 resid mp60 10.0 23.800000 -1.7417926614e+01 -1.4418949981e+00
5040 resid mp60 10.0 23.900000 -1.7561328920e+01 -1.5852973047e+00
5041 resid mp60 10.0 24.000000 -1.7705236725e+01 -1.7292051096e+00
5042 resid mp60 10.0 24.100000 -1.7849648893e+01 -1.8736172775e+00
5043 resid mp60 10.0 24.200000 -1.7994564288e+01 -2.0185326722e+00
5044 resid mp60 10.0 24.300000 -1.8139981772e+01 -2.1639501564e+00
5045 resid mp60 10.0 24.400000 -1.8285900208e+01 -2.3098685918e+00
5046 resid mp60 10.0 24.500000 -1.8432318455e+01 -2.4562868389e+00
5047 resid mp60 10.0 24.600000 -1.8579235373e+01 -2.6032037576e+00
5048 resid mp60 10.0 24.700000 -1.8726649822e+01 -2.7506182067e+00
5049 resid mp60 10.0 24.800000 -1.8874560660e+01 -2.8985290439e+00
5050 resid mp60 10.0 24.900000 -1.9022966742e+01 -3.0469351265e+00
5051 resid mp60 10.0 25.000000 -1.9171866926e+01 -3.1958353107e+00
5052 resid mp60 10.0 25.100000 -1.9321260068e+01 -3.3452284520e+00
5053 resid mp60 10.0 25.200000 -1.9471145021e+01 -3.4951134050e+00
5054 resid mp60 10.0 25.300000 -1.9621520640e+01 -3.6454890238e+00
5055 resid mp60 10.0 25.400000 -1.9772385777e+01 -3.7963541617e+00
5056 resid mp60 10.0 25.500000 -1.9923739287e+01 -3.9477076715e+00
5057 resid mp60 10.0 25.600000 -2.0075580021e+01 -4.0995484051e+00
5058 resid mp60 10.0 25.700000 -2.0227906830e+01 -4.2518752141e+00
5059 resid mp60 10.0 25.800000 -2.0380718565e+01 -4.4046869494e+00
5060 resid mp60 10.0 25.900000 -2.0534014077e+01 -4.5579824614e+00
5061 resid mp60 10.0 26.000000 -2.0687792216e+01 -4.7117605999e+00
5062 resid mp60 10.0 26.100000 -2.0842051830e+01 -4.8660202146e+00
5063 resid mp60 10.0 26.200000 -2.0996791770e+01 -5.0207601544e+00
5064 resid mp60 10.0 26.300000 -2.1152010884e+01 -5.1759792679e+00
5065 resid mp60 10.0 26.400000 -2.1307708019e+01 -5.3316764035e+00
5066 resid mp60 10.0 26.500000 -2.1463882025e+01 -5.4878504090e+00
5067 resid mp60 10.0 26.600000 -2.1620531748e+01 -5.6445001321e+00
5068 resid mp60 10.0 26.700000 -2.1777656036e+01 -5.8016244202e+00
5069 resid mp60 10.0 26.800000 -2.1935253736e+01 -5.9592221204e+00
5070 resid mp60 10.0 26.900000 -2.2093323695e+01 -6.1172920795e+00
5071 resid mp60 10.0 27.000000 -2.2251864760e+01 -6.2758331444e+00
5072 resid mp60 10.0 27.100000 -2.2410875777e+01 -6.4348441615e+00
5073 resid mp60 10.0 27.200000 -2.2570355593e+01 -6.5943239773e+00
5074 resid mp60 10.0 27.300000 -2.2730303054e+01 -6.7542714381e+00
5075 resid mp60 10.0 27.400000 -2.2890717006e+01 -6.9146853902e+00
5076 resid mp60 10.0 27.500000 -2.3051596296e+01 -7.0755646798e+00
5077 resid mp60 10.0 27.600000 -2.3212939769e+01 -7.2369081531e+00
5078 resid mp60 10.0 27.700000 -2.3374746272e+01 -7.3987146563e+00
5079 resid mp60 10.0 27.800000 -2.3537014652e+01 -7.5609830358e+00
5080 resid mp60 10.0 27.900000 -2.3699743754e+01 -7.7237121378e+00
5081 resid mp60 10.0 28.000000 -2.3862932425e+01 -7.8869008088e+00
5082 resid mp60 10.0 28.100000 -2.4026579511e+01 -8.0505478952e+00
5083 resid mp60 10.0 28.200000 -2.4190683860e+01 -8.2146522439e+00
5084 resid mp60 10.0 28.300000 -2.4355244317e+01 -8.3792127018e+00
5085 resid mp60 10.0 28.400000 -2.4520259732e+01 -8.5442281158e+00
5086 resid mp60 10.0 28.500000 -2.4685728949e+01 -8.7096973333e+00
5087 resid mp60 10.0 28.600000 -2.4851650818e+01 -8.8756192019e+00
5088 resid mp60 10.0 28.700000 -2.5018024185e+01 -9.0419925694e+00
5089 resid mp60 10.0 28.800000 -2.5184847900e+01 -9.2088162841e+00
5090 resid mp60 10.0 28.900000 -2.5352120810e+01 -9.3760891943e+00
5091 resid mp60 10.0 29.000000 -2.5519841765e+01 -9.5438101490e+00
5092 resid mp60 10.0 29.100000 -2.5688009613e+01 -9.7119779974e+00
5093 resid mp60 10.0 29.200000 -2.5856623205e+01 -9.8805915891e+00
5094 resid mp60 10.0 29.300000 -2.6025681390e+01 -1.0049649774e+01
5095 resid mp60 10.0 29.400000 -2.6195183019e+01 -1.0219151403e+01
5096 resid mp60 10.0 29.500000 -2.6365126943e+01 -1.0389095327e+01
5097 resid mp60 10.0 29.600000 -2.6535512014e+01 -1.0559480398e+01
5098 resid mp60 10.0 29.700000 -2.6706337083e+01 -1.0730305467e+01
5099 resid mp60 10.0 29.800000 -2.6877601003e+01 -1.0901569387e+01
5100 resid mp60 10.0 29.900000 -2.7049302628e+01 -1.1073271012e+01
5101 resid mp60 10.0 30.000000 -2.7221440811e+01 -1.1245409195e+01
5102 resid mp60 10.0 30.100000 -2.7394014406e+01 -1.1417982790e+01
5103 resid mp60 10.0 30.200000 -2.7567022269e+01 -1.1590990653e+01
5104 resid mp60 10.0 30.300000 -2.7740463255e+01 -1.1764431639e+01
5105 resid mp60 10.0 30.400000 -2.7914336221e+01 -1.1938304605e+01
5106 resid mp60 10.0 30.500000 -2.8088640024e+01 -1.2112608408e+01
5107 resid mp60 10.0 30.600000 -2.8263373522e+01 -1.2287341906e+01
5108 resid mp60 10.0 30.700000 -2.8438535573e+01 -1.2462503957e+01
5109 resid mp60 10.0 30.800000 -2.8614125036e+01 -1.2638093421e+01
5110 resid mp60 10.0 30.900000 -2.8790140773e+01 -1.2814109157e+01
5111 resid mp60 10.0 31.000000 -2.8966581644e+01 -1.2990550028e+01
5112 resid mp60 10.0 31.100000 -2.9143446511e+01 -1.3167414895e+01
5113 resid mp60 10.0 31.200000 -2.9320734236e+01 -1.3344702620e+01
5114 resid mp60 10.0 31.300000 -2.9498443683e+01 -1.3522412068e+01
5115 resid mp60 10.0 31.400000 -2.9676573718e+01 -1.3700542102e+01
5116 resid mp60 10.0 31.500000 -2.9855123204e+01 -1.3879091588e+01
5117 resid mp60 10.0 31.600000 -3.0034091009e+01 -1.4058059393e+01
5118 resid mp60 10.0 31.700000 -3.0213476000e+01 -1.4237444385e+01
5119 resid mp60 10.0 31.800000 -3.0393277046e+01 -1.4417245430e+01
5120 resid mp60 10.0 31.900000 -3.0573493015e+01 -1.4597461399e+01
5121 resid mp60 10.0 32.000000 -3.0754122778e+01 -1.4778091162e+01
5122 resid mp60 10.0 32.100000 -3.0935165207e+01 -1.4959133591e+01
5123 resid mp60 10.0 32.200000 -3.1116619174e+01 -1.5140587558e+01
5124 resid mp60 10.0 32.300000 -3.1298483552e+01 -1.5322451936e+01
5125 resid mp60 10.0 32.400000 -3.1480757217e+01 -1.5504725601e+01
5126 resid mp60 10.0 32.500000 -3.1663439043e+01 -1.5687407428e+01
5127 resid mp60 10.0 32.600000 -3.1846527909e+01 -1.5870496293e+01
5128 resid mp60 10.0 32.700000 -3.2030022692e+01 -1.6053991076e+01
5129 resid mp60 10.0 32.800000 -3.2213922271e+01 -1.6237890656e+01
5130 resid mp60 10.0 32.900000 -3.2398225528e+01 -1.6422193912e+01
5131 resid mp60 10.0 33.000000 -3.2582931342e+01 -1.6606899726e+01
5132 resid mp60 10.0 33.100000 -3.2768038598e+01 -1.6792006983e+01
5133 resid mp60 10.0 33.200000 -3.2953546180e+01 -1.6977514564e+01
5134 resid mp60 10.0 33.300000 -3.3139452973e+01 -1.7163421357e+01
5135 resid mp60 10.0 33.400000 -3.3325757863e+01 -1.7349726248e+01
5136 resid mp60 10.0 33.500000 -3.3512459740e+01 -1.7536428124e+01
5137 resid mp60 10.0 33.600000 -3.3699557491e+01 -1.7723525875e+01
5138 resid mp60 10.0 33.700000 -3.3887050008e+01 -1.7911018392e+01
5139 resid mp60 10.0 33.800000 -3.4074936182e+01 -1.8098904566e+01
5140 resid mp60 10.0 33.900000 -3.4263214907e+01 -1.8287183292e+01
5141 resid mp60 10.0 34.000000 -3.4451885079e+01 -1.8475853463e+01
5142 resid mp60 10.0 34.100000 -3.4640945591e+01 -1.8664913976e+01
5143 resid mp60 10.0 34.200000 -3.4830395343e+01 -1.8854363728e+01
5144 resid mp60 10.0 34.300000 -3.5020233234e+01 -1.9044201618e+01
5145 resid mp60 10.0 34.400000 -3.5210458163e+01 -1.9234426547e+01
5146 resid mp60 10.0 34.500000 -3.5401069032e+01 -1.9425037417e+01
5147 resid mp60 10.0 34.600000 -3.5592064746e+01 -1.9616033130e+01
5148 resid mp60 10.0 34.700000 -3.5783444207e+01 -1.9807412592e+01
5149 resid mp60 10.0 34.800000 -3.5975206324e+01 -1.9999174708e+01
5150 resid mp60 10.0 34.900000 -3.6167350004e+01 -2.0191318388e+01
5151 resid mp60 10.0 35.000000 -3.6359874155e+01 -2.0383842539e+01
5152 resid mp60 10.0 35.100000 -3.6552777689e+01 -2.0576746073e+01
5153 resid mp60 10.0 35.200000 -3.6746059519e+01 -2.0770027903e+01
5154 resid mp60 10.0 35.300000 -3.6939718558e+01 -2.0963686942e+01
5155 resid mp60 10.0 35.400000 -3.7133753722e+01 -2.1157722106e+01
5156 resid mp60 10.0 35.500000 -3.7328163927e+01 -2.1352132312e+01
5157 resid mp60 10.0 35.600000 -3.7522948094e+01 -2.1546916478e+01
5158 resid mp60 10.0 35.700000 -3.7718105142e+01 -2.1742073526e+01
5159 resid mp60 10.0 35.800000 -3.7913633993e+01 -2.1937602378e+01
5160 resid mp60 10.0 35.900000 -3.8109533572e+01 -2.2133501956e+01
5161 resid mp60 10.0 36.000000 -3.8305802803e+01 -2.2329771187e+01
5162 resid mp60 10.0 36.100000 -3.8502440613e+01 -2.2526408997e+01
5163 resid mp60 10.0 36.200000 -3.8699445931e+01 -2.2723414315e+01
5164 resid mp60 10.0 36.300000 -3.8896817688e+01 -2.2920786072e+01
5165 resid mp60 10.0 36.400000 -3.9094554815e+01 -2.3118523199e+01
5166 resid mp60 10.0 36.500000 -3.9292656247e+01 -2.3316624631e+01
5167 resid mp60 10.0 36.600000 -3.9491120919e+01 -2.3515089304e+01
5168 resid mp60 10.0 36.700000 -3.9689947769e+01 -2.3713916153e+01
5169 resid mp60 10.0 36.800000 -3.9889135735e+01 -2.3913104119e+01
5170 resid mp60 10.0 36.900000 -4.0088683758e+01 -2.4112652142e+01
5171 resid mp60 10.0 37.000000 -4.0288590781e+01 -2.4312559166e+01
5172 resid mp60 10.0 37.100000 -4.0488855749e+01 -2.4512824133e+01
5173 resid mp60 10.0 37.200000 -4.0689477607e+01 -2.4713445992e+01
5174 resid mp60 10.0 37.300000 -4.0890455304e+01 -2.4914423689e+01
5175 resid mp60 10.0 37.400000 -4.1091787790e+01 -2.5115756174e+01
5176 resid mp60 10.0 37.500000 -4.1293474015e+01 -2.5317442400e+01
5177 resid mp60 10.0 37.600000 -4.1495512935e+01 -2.5519481319e+01
5178 resid mp60 10.0 37.700000 -4.1697903503e+01 -2.5721871887e+01
5179 resid mp60 10.0 37.800000 -4.1900644678e+01 -2.5924613062e+01
5180 resid mp60 10.0 37.900000 -4.2103735418e+01 -2.6127703802e+01
5181 resid mp60 10.0 38.000000 -4.2307174684e+01 -2.6331143069e+01
5182 resid mp60 10.0 38.100000 -4.2510961440e+01 -2.6534929824e+01
5183 resid mp60 10.0 38.200000 -4.2715094650e+01 -2.6739063034e+01
5184 resid mp60 10.0 38.300000 -4.2919573281e+01 -2.6943541665e+01
5185 resid mp60 10.0 38.400000 -4.3124396301e+01 -2.7148364685e+01
5186 resid mp60 10.0 38.500000 -4.3329562681e+01 -2.7353531065e+01
5187 resid mp60 10.0 38.600000 -4.3535071393e+01 -2.7559039777e+01
5188 resid mp60 10.0 38.700000 -4.3740921412e+01 -2.7764889796e+01
5189 resid mp60 10.0 38.800000 -4.3947111714e+01 -2.7971080099e+01
5190 resid mp60 10.0 38.900000 -4.4153641278e+01 -2.8177609663e+01
5191 resid mp60 10.0 39.000000 -4.4360509084e+01 -2.8384477468e+01
5192 resid mp60 10.0 39.100000 -4.4567714114e+01 -2.8591682498e+01
5193 resid mp60 10.0 39.200000 -4.4775255352e+01 -2.8799223736e+01
5194 resid mp60 10.0 39.300000 -4.4983131785e+01 -2.9007100169e+01
5195 resid mp60 10.0 39.400000 -4.5191342401e+01 -2.9215310785e+01
5196 resid mp60 10.0 39.500000 -4.5399886190e+01 -2.9423854574e+01
5197 resid mp60 10.0 39.600000 -4.5608762144e+01 -2.9632730528e+01
5198 resid mp60 10.0 39.700000 -4.5817969258e+01 -2.9841937642e+01
5199 resid mp60 10.0 39.800000 -4.6027506529e+01 -3.0051474913e+01
5200 resid mp60 10.0 39.900000 -4.6237372953e+01 -3.0261341338e+01
5201 resid mp60 10.0 40.000000 -4.6447567533e+01 -3.0471535917e+01
5202 rho_analytic - 10.0 0.100000 6.9847120947e+00
5203 rho_analytic - 10.0 0.200000 4.3313452384e+00
5204 rho_analytic - 10.0 0.300000 3.6768010657e+00
5205 rho_analytic - 10.0 0.400000 3.4429289989e+00
5206 rho_analytic - 10.0 0.500000 3.3400934210e+00
5207 rho_analytic - 10.0 0.600000 3.2873971952e+00
5208 rho_analytic - 10.0 0.700000 3.2571082564e+00
5209 rho_analytic - 10.0 0.800000 3.2381533319e+00
5210 rho_analytic - 10.0 0.900000 3.2255133922e+00
5211 rho_analytic - 10.0 1.000000 3.2166649881e+00
5212 rho_analytic - 10.0 1.100000 3.2102297390e+00
5213 rho_analytic - 10.0 1.200000 3.2054033258e+00
5214 rho_analytic - 10.0 1.300000 3.2016907513e+00
5215 rho_analytic - 10.0 1.400000 3.1987738015e+00
5216 rho_analytic - 10.0 1.500000 3.1964403351e+00
5217 rho_analytic - 10.0 1.600000 3.1945445057e+00
5218 rho_analytic - 10.0 1.700000 3.1929833635e+00
5219 rho_analytic - 10.0 1.800000 3.1916825558e+00
5220 rho_analytic - 10.0 1.900000 3.1905872964e+00
5221 rho_analytic - 10.0 2.000000 3.1896564956e+00
5222 rho_analytic - 10.0 2.100000 3.1888588467e+00
5223 rho_analytic - 10.0 2.200000 3.1881701578e+00
5224 rho_analytic - 10.0 2.300000 3.1875714959e+00
5225 rho_analytic - 10.0 2.400000 3.1870478720e+00
5226 rho_analytic - 10.0 2.500000 3.1865872945e+00
5227 rho_analytic - 10.0 2.600000 3.1861800776e+00
5228 rho_analytic - 10.0 2.700000 3.1858183289e+00
5229 rho_analytic - 10.0 2.800000 3.1854955648e+00
5230 rho_analytic - 10.0 2.900000 3.1852064194e+00
5231 rho_analytic - 10.0 3.000000 3.1849464207e+00
5232 rho_analytic - 10.0 3.100000 3.1847118177e+00
5233 rho_analytic - 10.0 3.200000 3.1844994450e+00
5234 rho_analytic - 10.0 3.300000 3.1843066167e+00
5235 rho_analytic - 10.0 3.400000 3.1841310414e+00
5236 rho_analytic - 10.0 3.500000 3.1839707548e+00
5237 rho_analytic - 10.0 3.600000 3.1838240650e+00
5238 rho_analytic - 10.0 3.700000 3.1836895085e+00
5239 rho_analytic - 10.0 3.800000 3.1835658142e+00
5240 rho_analytic - 10.0 3.900000 3.1834518734e+00
5241 rho_analytic - 10.0 4.000000 3.1833467159e+00
5242 rho_analytic - 10.0 4.100000 3.1832494895e+00
5243 rho_analytic - 10.0 4.200000 3.1831594431e+00
5244 rho_analytic - 10.0 4.300000 3.1830759128e+00
5245 rho_analytic - 10.0 4.400000 3.1829983098e+00
5246 rho_analytic - 10.0 4.500000 3.1829261105e+00
5247 rho_analytic - 10.0 4.600000 3.1828588481e+00
5248 rho_analytic - 10.0 4.700000 3.1827961049e+00
5249 rho_analytic - 10.0 4.800000 3.1827375070e+00
5250 rho_analytic - 10.0 4.900000 3.1826827179e+00
5251 rho_analytic - 10.0 5.000000 3.1826314349e+00
5252 rho_analytic - 10.0 5.100000 3.1825833846e+00
5253 rho_analytic - 10.0 5.200000 3.1825383199e+00
5254 rho_analytic - 10.0 5.300000 3.1824960166e+00
5255 rho_analytic - 10.0 5.400000 3.1824562712e+00
5256 rho_analytic - 10.0 5.500000 3.1824188986e+00
5257 rho_analytic - 10.0 5.600000 3.1823837299e+00
5258 rho_analytic - 10.0 5.700000 3.1823506110e+00
5259 rho_analytic - 10.0 5.800000 3.1823194008e+00
5260 rho_analytic - 10.0 5.900000 3.1822899703e+00
5261 rho_analytic - 10.0 6.000000 3.1822622007e+00
5262 rho_analytic - 10.0 6.100000 3.1822359833e+00
5263 rho_analytic - 10.0 6.200000 3.1822112175e+00
5264 rho_analytic - 10.0 6.300000 3.1821878111e+00
5265 rho_analytic - 10.0 6.400000 3.1821656787e+00
5266 rho_analytic - 10.0 6.500000 3.1821447413e+00
5267 rho_analytic - 10.0 6.600000 3.1821249260e+00
5268 rho_analytic - 10.0 6.700000 3.1821061652e+00
5269 rho_analytic - 10.0 6.800000 3.1820883962e+00
5270 rho_analytic - 10.0 6.900000 3.1820715606e+00
5271 rho_analytic - 10.0 7.000000 3.1820556042e+00
5272 rho_analytic - 10.0 7.100000 3.1820404766e+00
5273 rho_analytic - 10.0 7.200000 3.1820261309e+00
5274 rho_analytic - 10.0 7.300000 3.1820125230e+00
5275 rho_analytic - 10.0 7.400000 3.1819996123e+00
5276 rho_analytic - 10.0 7.500000 3.1819873602e+00
5277 rho_analytic - 10.0 7.600000 3.1819757311e+00
5278 rho_analytic - 10.0 7.700000 3.1819646915e+00
5279 rho_analytic - 10.0 7.800000 3.1819542098e+00
5280 rho_analytic - 10.0 7.900000 3.1819442568e+00
5281 rho_analytic - 10.0 8.000000 3.1819348046e+00
5282 rho_analytic - 10.0 8.100000 3.1819258274e+00
5283 rho_analytic - 10.0 8.200000 3.1819173007e+00
5284 rho_analytic - 10.0 8.300000 3.1819092015e+00
5285 rho_analytic - 10.0 8.400000 3.1819015083e+00
5286 rho_analytic - 10.0 8.500000 3.1818942006e+00
5287 rho_analytic - 10.0 8.600000 3.1818872591e+00
5288 rho_analytic - 10.0 8.700000 3.1818806659e+00
5289 rho_analytic - 10.0 8.800000 3.1818744037e+00
5290 rho_analytic - 10.0 8.900000 3.1818684565e+00
5291 rho_analytic - 10.0 9.000000 3.1818628089e+00
5292 rho_analytic - 10.0 9.100000 3.1818574465e+00
5293 rho_analytic - 10.0 9.200000 3.1818523556e+00
5294 rho_analytic - 10.0 9.300000 3.1818475233e+00
5295 rho_analytic - 10.0 9.400000 3.1818429374e+00
5296 rho_analytic - 10.0 9.500000 3.1818385862e+00
5297 rho_analytic - 10.0 9.600000 3.1818344587e+00
5298 rho_analytic - 10.0 9.700000 3.1818305445e+00
5299 rho_analytic - 10.0 9.800000 3.1818268338e+00
5300 rho_analytic - 10.0 9.900000 3.1818233170e+00
5301 rho_analytic - 10.0 10.000000 3.1818199853e+00
5302 rho_analytic - 10.0 10.100000 3.1818168302e+00
5303 rho_analytic - 10.0 10.200000 3.1818138437e+00
5304 rho_analytic - 10.0 10.300000 3.1818110180e+00
5305 rho_analytic - 10.0 10.400000 3.1818083459e+00
5306 rho_analytic - 10.0 10.500000 3.1818058204e+00
5307 rho_analytic - 10.0 10.600000 3.1818034350e+00
5308 rho_analytic - 10.0 10.700000 3.1818011833e+00
5309 rho_analytic - 10.0 10.800000 3.1817990595e+00
5310 rho_analytic - 10.0 10.900000 3.1817970577e+00
5311 rho_analytic - 10.0 11.000000 3.1817951726e+00
5312 rho_analytic - 10.0 11.100000 3.1817933990e+00
5313 rho_analytic - 10.0 11.200000 3.1817917319e+00
5314 rho_analytic - 10.0 11.300000 3.1817901667e+00
5315 rho_analytic - 10.0 11.400000 3.1817886988e+00
5316 rho_analytic - 10.0 11.500000 3.1817873240e+00
5317 rho_analytic - 10.0 11.600000 3.1817860381e+00
5318 rho_analytic - 10.0 11.700000 3.1817848374e+00
5319 rho_analytic - 10.0 11.800000 3.1817837180e+00
5320 rho_analytic - 10.0 11.900000 3.1817826764e+00
5321 rho_analytic - 10.0 12.000000 3.1817817093e+00
5322 rho_analytic - 10.0 12.100000 3.1817808132e+00
5323 rho_analytic - 10.0 12.200000 3.1817799853e+00
5324 rho_analytic - 10.0 12.300000 3.1817792224e+00
5325 rho_analytic - 10.0 12.400000 3.1817785218e+00
5326 rho_analytic - 10.0 12.500000 3.1817778807e+00
5327 rho_analytic - 10.0 12.600000 3.1817772966e+00
5328 rho_analytic - 10.0 12.700000 3.1817767670e+00
5329 rho_analytic - 10.0 12.800000 3.1817762895e+00
5330 rho_analytic - 10.0 12.900000 3.1817758618e+00
5331 rho_analytic - 10.0 13.000000 3.1817754818e+00
5332 rho_analytic - 10.0 13.100000 3.1817751474e+00
5333 rho_analytic - 10.0 13.200000 3.1817748566e+00
5334 rho_analytic - 10.0 13.300000 3.1817746076e+00
5335 rho_analytic - 10.0 13.400000 3.1817743984e+00
5336 rho_analytic - 10.0 13.500000 3.1817742274e+00
5337 rho_analytic - 10.0 13.600000 3.1817740929e+00
5338 rho_analytic - 10.0 13.700000 3.1817739933e+00
5339 rho_analytic - 10.0 13.800000 3.1817739270e+00
5340 rho_analytic - 10.0 13.900000 3.1817738926e+00
5341 rho_analytic - 10.0 14.000000 3.1817738887e+00
5342 rho_analytic - 10.0 14.100000 3.1817739139e+00
5343 rho_analytic - 10.0 14.200000 3.1817739670e+00
5344 rho_analytic - 10.0 14.300000 3.1817740467e+00
5345 rho_analytic - 10.0 14.400000 3.1817741518e+00
5346 rho_analytic - 10.0 14.500000 3.1817742813e+00
5347 rho_analytic - 10.0 14.600000 3.1817744339e+00
5348 rho_analytic - 10.0 14.700000 3.1817746088e+00
5349 rho_analytic - 10.0 14.800000 3.1817748048e+00
5350 rho_analytic - 10.0 14.900000 3.1817750210e+00
5351 rho_analytic - 10.0 15.000000 3.1817752565e+00
5352 rho_analytic - 10.0 15.100000 3.1817755104e+00
5353 rho_analytic - 10.0 15.200000 3.1817757819e+00
5354 rho_analytic - 10.0 15.300000 3.1817760701e+00
5355 rho_analytic - 10.0 15.400000 3.1817763744e+00
5356 rho_analytic - 10.0 15.500000 3.1817766938e+00
5357 rho_analytic - 10.0 15.600000 3.1817770279e+00
5358 rho_analytic - 10.0 15.700000 3.1817773757e+00
5359 rho_analytic - 10.0 15.800000 3.1817777367e+00
5360 rho_analytic - 10.0 15.900000 3.1817781103e+00
5361 rho_analytic - 10.0 16.000000 3.1817784958e+00
5362 rho_analytic - 10.0 16.100000 3.1817788927e+00
5363 rho_analytic - 10.0 16.200000 3.1817793004e+00
5364 rho_analytic - 10.0 16.300000 3.1817797184e+00
5365 rho_analytic - 10.0 16.400000 3.1817801462e+00
5366 rho_analytic - 10.0 16.500000 3.1817805832e+00
5367 rho_analytic - 10.0 16.600000 3.1817810290e+00
5368 rho_analytic - 10.0 16.700000 3.1817814832e+00
5369 rho_analytic - 10.0 16.800000 3.1817819453e+00
5370 rho_analytic - 10.0 16.900000 3.1817824148e+00
5371 rho_analytic - 10.0 17.000000 3.1817828915e+00
5372 rho_analytic - 10.0 17.100000 3.1817833749e+00
5373 rho_analytic - 10.0 17.200000 3.1817838646e+00
5374 rho_analytic - 10.0 17.300000 3.1817843603e+00
5375 rho_analytic - 10.0 17.400000 3.1817848617e+00
5376 rho_analytic - 10.0 17.500000 3.1817853684e+00
5377 rho_analytic - 10.0 17.600000 3.1817858801e+00
5378 rho_analytic - 10.0 17.700000 3.1817863965e+00
5379 rho_analytic - 10.0 17.800000 3.1817869173e+00
5380 rho_analytic - 10.0 17.900000 3.1817874423e+00
5381 rho_analytic - 10.0 18.000000 3.1817879712e+00
5382 rho_analytic - 10.0 18.100000 3.1817885037e+00
5383 rho_analytic - 10.0 18.200000 3.1817890395e+00
5384 rho_analytic - 10.0 18.300000 3.1817895785e+00
5385 rho_analytic - 10.0 18.400000 3.1817901204e+00
5386 rho_analytic - 10.0 18.500000 3.1817906651e+00
5387 rho_analytic - 10.0 18.600000 3.1817912122e+00
5388 rho_analytic - 10.0 18.700000 3.1817917616e+00
5389 rho_analytic - 10.0 18.800000 3.1817923132e+00
5390 rho_analytic - 10.0 18.900000 3.1817928666e+00
5391 rho_analytic - 10.0 19.000000 3.1817934218e+00
5392 rho_analytic - 10.0 19.100000 3.1817939786e+00
5393 rho_analytic - 10.0 19.200000 3.1817945368e+00
5394 rho_analytic - 10.0 19.300000 3.1817950962e+00
5395 rho_analytic - 10.0 19.400000 3.1817956568e+00
5396 rho_analytic - 10.0 19.500000 3.1817962183e+00
5397 rho_analytic - 10.0 19.600000 3.1817967807e+00
5398 rho_analytic - 10.0 19.700000 3.1817973437e+00
5399 rho_analytic - 10.0 19.800000 3.1817979074e+00
5400 rho_analytic - 10.0 19.900000 3.1817984715e+00
5401 rho_analytic - 10.0 20.000000 3.1817990359e+00
5402 rho_analytic - 10.0 20.100000 3.1817996005e+00
5403 rho_analytic - 10.0 20.200000 3.1818001653e+00
5404 rho_analytic - 10.0 20.300000 3.1818007300e+00
5405 rho_analytic - 10.0 20.400000 3.1818012947e+00
5406 rho_analytic - 10.0 20.500000 3.1818018592e+00
5407 rho_analytic - 10.0 20.600000 3.1818024234e+00
5408 rho_analytic - 10.0 20.700000 3.1818029873e+00
5409 rho_analytic - 10.0 20.800000 3.1818035508e+00
5410 rho_analytic - 10.0 20.900000 3.1818041137e+00
5411 rho_analytic - 10.0 21.000000 3.1818046760e+00
5412 rho_analytic - 10.0 21.100000 3.1818052377e+00
5413 rho_analytic - 10.0 21.200000 3.1818057986e+00
5414 rho_analytic - 10.0 21.300000 3.1818063587e+00
5415 rho_analytic - 10.0 21.400000 3.1818069180e+00
5416 rho_analytic - 10.0 21.500000 3.1818074763e+00
5417 rho_analytic - 10.0 21.600000 3.1818080336e+00
5418 rho_analytic - 10.0 21.700000 3.1818085899e+00
5419 rho_analytic - 10.0 21.800000 3.1818091451e+00
5420 rho_analytic - 10.0 21.900000 3.1818096991e+00
5421 rho_analytic - 10.0 22.000000 3.1818102520e+00
5422 rho_analytic - 10.0 22.100000 3.1818108036e+00
5423 rho_analytic - 10.0 22.200000 3.1818113539e+00
5424 rho_analytic - 10.0 22.300000 3.1818119029e+00
5425 rho_analytic - 10.0 22.400000 3.1818124505e+00
5426 rho_analytic - 10.0 22.500000 3.1818129967e+00
5427 rho_analytic - 10.0 22.600000 3.1818135415e+00
5428 rho_analytic - 10.0 22.700000 3.1818140848e+00
5429 rho_analytic - 10.0 22.800000 3.1818146265e+00
5430 rho_analytic - 10.0 22.900000 3.1818151667e+00
5431 rho_analytic - 10.0 23.000000 3.1818157053e+00
5432 rho_analytic - 10.0 23.100000 3.1818162424e+00
5433 rho_analytic - 10.0 23.200000 3.1818167778e+00
5434 rho_analytic - 10.0 23.300000 3.1818173115e+00
5435 rho_analytic - 10.0 23.400000 3.1818178435e+00
5436 rho_analytic - 10.0 23.500000 3.1818183738e+00
5437 rho_analytic - 10.0 23.600000 3.1818189024e+00
5438 rho_analytic - 10.0 23.700000 3.1818194293e+00
5439 rho_analytic - 10.0 23.800000 3.1818199543e+00
5440 rho_analytic - 10.0 23.900000 3.1818204776e+00
5441 rho_analytic - 10.0 24.000000 3.1818209991e+00
5442 rho_analytic - 10.0 24.100000 3.1818215187e+00
5443 rho_analytic - 10.0 24.200000 3.1818220365e+00
5444 rho_analytic - 10.0 24.300000 3.1818225524e+00
5445 rho_analytic - 10.0 24.400000 3.1818230665e+00
5446 rho_analytic - 10.0 24.500000 3.1818235786e+00
5447 rho_analytic - 10.0 24.600000 3.1818240889e+00
5448 rho_analytic - 10.0 24.700000 3.1818245973e+00
5449 rho_analytic - 10.0 24.800000 3.1818251037e+00
5450 rho_analytic - 10.0 24.900000 3.1818256082e+00
5451 rho_analytic - 10.0 25.000000 3.1818261108e+00
5452 rho_analytic - 10.0 25.100000 3.1818266114e+00
5453 rho_analytic - 10.0 25.200000 3.1818271101e+00
5454 rho_analytic - 10.0 25.300000 3.1818276068e+00
5455 rho_analytic - 10.0 25.400000 3.1818281015e+00
5456 rho_analytic - 10.0 25.500000 3.1818285942e+00
5457 rho_analytic - 10.0 25.600000 3.1818290850e+00
5458 rho_analytic - 10.0 25.700000 3.1818295738e+00
5459 rho_analytic - 10.0 25.800000 3.1818300606e+00
5460 rho_analytic - 10.0 25.900000 3.1818305453e+00
5461 rho_analytic - 10.0 26.000000 3.1818310281e+00
5462 rho_analytic - 10.0 26.100000 3.1818315089e+00
5463 rho_analytic - 10.0 26.200000 3.1818319877e+00
5464 rho_analytic - 10.0 26.300000 3.1818324645e+00
5465 rho_analytic - 10.0 26.400000 3.1818329392e+00
5466 rho_analytic - 10.0 26.500000 3.1818334120e+00
5467 rho_analytic - 10.0 26.600000 3.1818338827e+00
5468 rho_analytic - 10.0 26.700000 3.1818343514e+00
5469 rho_analytic - 10.0 26.800000 3.1818348181e+00
5470 rho_analytic - 10.0 26.900000 3.1818352828e+00
5471 rho_analytic - 10.0 27.000000 3.1818357455e+00
5472 rho_analytic - 10.0 27.100000 3.1818362062e+00
5473 rho_analytic - 10.0 27.200000 3.1818366649e+00
5474 rho_analytic - 10.0 27.300000 3.1818371215e+00
5475 rho_analytic - 10.0 27.400000 3.1818375762e+00
5476 rho_analytic - 10.0 27.500000 3.1818380288e+00
5477 rho_analytic - 10.0 27.600000 3.1818384795e+00
5478 rho_analytic - 10.0 27.700000 3.1818389281e+00
5479 rho_analytic - 10.0 27.800000 3.1818393748e+00
5480 rho_analytic - 10.0 27.900000 3.1818398194e+00
5481 rho_analytic - 10.0 28.000000 3.1818402621e+00
5482 rho_analytic - 10.0 28.100000 3.1818407028e+00
5483 rho_analytic - 10.0 28.200000 3.1818411415e+00
5484 rho_analytic - 10.0 28.300000 3.1818415782e+00
5485 rho_analytic - 10.0 28.400000 3.1818420129e+00
5486 rho_analytic - 10.0 28.500000 3.1818424457e+00
5487 rho_analytic - 10.0 28.600000 3.1818428765e+00
5488 rho_analytic - 10.0 28.700000 3.1818433053e+00
5489 rho_analytic - 10.0 28.800000 3.1818437322e+00
5490 rho_analytic - 10.0 28.900000 3.1818441571e+00
5491 rho_analytic - 10.0 29.000000 3.1818445801e+00
5492 rho_analytic - 10.0 29.100000 3.1818450011e+00
5493 rho_analytic - 10.0 29.200000 3.1818454202e+00
5494 rho_analytic - 10.0 29.300000 3.1818458374e+00
5495 rho_analytic - 10.0 29.400000 3.1818462526e+00
5496 rho_analytic - 10.0 29.500000 3.1818466659e+00
5497 rho_analytic - 10.0 29.600000 3.1818470774e+00
5498 rho_analytic - 10.0 29.700000 3.1818474868e+00
5499 rho_analytic - 10.0 29.800000 3.1818478944e+00
5500 rho_analytic - 10.0 29.900000 3.1818483001e+00
5501 rho_analytic - 10.0 30.000000 3.1818487039e+00

E-016b-v3-rootcause.json — 6.9 KB, updated 08-18-2026

JSON sidecar (click to expand)
{
  "experiment": "E-016b",
  "task": "2.6: root-cause E-016 V3 Poisson-reconstruction failure",
  "script": "research/numerics/scripts/E-016b-v3-rootcause.py",
  "parameters": {
    "a_sweep": [
      4.0,
      10.0
    ],
    "h": 0.01,
    "lambda": -1.0,
    "y_grid": [
      0.1,
      40.0,
      400
    ],
    "z_max": 300.0
  },
  "report": {
    "4.0": {
      "T1_kappa_re": -0.9914379801328772,
      "T1_kappa_im": -1.4222222222222223,
      "T2_census": {
        "n_real": 381,
        "z1": 1.1260734006983593,
        "z_last": 299.8646747694667,
        "lattice_count_window": 381.9718634205488
      },
      "T2_winding": {
        "0.3927": {
          "winding": 1.9971283856655768,
          "real_zeros_inside": 0,
          "excess": 1.9971283856655768
        },
        "1.1781": {
          "winding": 3.957366770074305,
          "real_zeros_inside": 2,
          "excess": 1.9573667700743052
        },
        "0.0000": {
          "winding": 1.9960937479061762,
          "real_zeros_inside": 0,
          "excess": 1.9960937479061762
        },
        "0.0001": {
          "winding": 1.9960937500549862,
          "real_zeros_inside": 0,
          "excess": 1.9960937500549862
        },
        "0.0100": {
          "winding": 1.996094371929568,
          "real_zeros_inside": 0,
          "excess": 1.996094371929568
        },
        "0.1000": {
          "winding": 1.9961562249900062,
          "real_zeros_inside": 0,
          "excess": 1.9961562249900062
        },
        "2.0000": {
          "winding": 5.942871677547558,
          "real_zeros_inside": 4,
          "excess": 1.9428716775475579
        },
        "5.0000": {
          "winding": 12.077973882052314,
          "real_zeros_inside": 10,
          "excess": 2.077973882052314
        }
      },
      "T2_imag_pair": {
        "eps": 5.829287623947368e-09,
        "W_at_ieps": 2.825742938081395e-49,
        "scan_min": 5.749824935036285e-06,
        "scan_at_y": 0.0001
      },
      "T3_A_over_y_fit": 0.6343007263567857,
      "T3_two_over_pi": 0.6366197723675814,
      "T3_mean_shift": -1.2815872994129114,
      "T4_variants": {
        "base": {
          "resid_y0.5": 1.2739134084231456,
          "resid_y5": 0.07332699024962142,
          "resid_y20": -0.9925381870041659,
          "shape_rms_rel": 1.0497908515365875
        },
        "trunc60": {
          "resid_y0.5": 1.2766229564752873,
          "resid_y5": -0.14349117160523672,
          "resid_y20": -4.94373487936198,
          "shape_rms_rel": 4.338262071341213
        },
        "trunc100": {
          "resid_y0.5": 1.27526491761311,
          "resid_y5": -0.034968760716001634,
          "resid_y20": -3.0133337980338,
          "shape_rms_rel": 2.809762823982386
        },
        "notail": {
          "resid_y0.5": 1.2745883033553684,
          "resid_y5": 0.14081030856832366,
          "resid_y20": 0.08570192959282363,
          "shape_rms_rel": 0.2895380312354026
        },
        "base+pair": {
          "resid_y0.5": 0.0006738636879826121,
          "resid_y5": -0.05399696422389488,
          "resid_y20": -1.0243691756225448,
          "shape_rms_rel": 0.9421400227183758
        },
        "mp60": {
          "resid_y0.5": 1.276622956475289,
          "resid_y5": -0.14349117160523361,
          "resid_y20": -4.943734879361979,
          "shape_rms_rel": 4.338262071341214
        }
      },
      "T4_mp60": {
        "n_relocated": 75,
        "max_abs_dz": 1.2434497875801753e-12
      },
      "T5_sinc_est_max": 0.0002055923399439411
    },
    "10.0": {
      "T1_kappa_re": -3.6447054985051435,
      "T1_kappa_im": -4.397114393679149,
      "T2_census": {
        "n_real": 954,
        "z1": 0.44959700551214055,
        "z_last": 299.89357740917427,
        "lattice_count_window": 954.9296585513721
      },
      "T2_winding": {
        "0.1571": {
          "winding": 1.9971325652242644,
          "real_zeros_inside": 0,
          "excess": 1.9971325652242644
        },
        "0.4712": {
          "winding": 3.9589810973742314,
          "real_zeros_inside": 2,
          "excess": 1.9589810973742314
        },
        "0.0000": {
          "winding": 1.996093695657393,
          "real_zeros_inside": 0,
          "excess": 1.996093695657393
        },
        "0.0001": {
          "winding": 1.9960937503824123,
          "real_zeros_inside": 0,
          "excess": 1.9960937503824123
        },
        "0.0100": {
          "winding": 1.9960976525143628,
          "real_zeros_inside": 0,
          "excess": 1.9960976525143628
        },
        "0.1000": {
          "winding": 1.9964955397146036,
          "real_zeros_inside": 0,
          "excess": 1.9964955397146036
        },
        "2.0000": {
          "winding": 12.085419712205663,
          "real_zeros_inside": 10,
          "excess": 2.0854197122056632
        },
        "5.0000": {
          "winding": 31.975335381644364,
          "real_zeros_inside": 30,
          "excess": 1.9753353816443635
        }
      },
      "T2_imag_pair": {
        "eps": 2.0797966440236883e-09,
        "W_at_ieps": 1.6504059507421108e-26,
        "scan_min": 0.01459451355707131,
        "scan_at_y": 0.0001
      },
      "T3_A_over_y_fit": 0.6308206254641555,
      "T3_two_over_pi": 0.6366197723675814,
      "T3_mean_shift": -3.3631535473854246,
      "T4_variants": {
        "base": {
          "resid_y0.5": 1.2749261380781172,
          "resid_y5": -0.007753707743303639,
          "resid_y20": -2.530820269504034,
          "shape_rms_rel": 1.0143675095987894
        },
        "trunc60": {
          "resid_y0.5": 1.2816709492693397,
          "resid_y5": -0.5465597395886301,
          "resid_y20": -12.354286478739445,
          "shape_rms_rel": 4.43884573453234
        },
        "trunc100": {
          "resid_y0.5": 1.278305028486991,
          "resid_y5": -0.27789168396584607,
          "resid_y20": -7.57271682340175,
          "shape_rms_rel": 2.860573136578675
        },
        "notail": {
          "resid_y0.5": 1.2766145378113016,
          "resid_y5": 0.16107079639175792,
          "resid_y20": 0.16663165033476446,
          "shape_rms_rel": 0.11754357982145858
        },
        "base+pair": {
          "resid_y0.5": 0.0016865933429546232,
          "resid_y5": -0.13507766221681994,
          "resid_y20": -2.5626512581224135,
          "shape_rms_rel": 0.9793208614044097
        },
        "mp60": {
          "resid_y0.5": 1.2816709492693397,
          "resid_y5": -0.5465597395886301,
          "resid_y20": -12.354286478739445,
          "shape_rms_rel": 4.438845734532339
        }
      },
      "T4_mp60": {
        "n_relocated": 190,
        "max_abs_dz": 1.0587086762825493e-12
      },
      "T5_sinc_est_max": 0.0002055923399439411
    }
  },
  "elapsed_seconds": 702.8,
  "timestamp_utc": "2026-08-18T17:19:13.123417+00:00"
}

Source code

Python script (click to expand)
"""E-016b — root-cause the E-016 V3 (zero-Poisson reconstruction) failure.

E-016 V3: rho_W^analytic (Galerkin z-derivative) vs rho_W^recon (located
real zeros + Euler-Maclaurin lattice tail) mismatch rel ~0.3 at a=4.
Residual (D-024 sec.4): +1.274 (y=0.5), +0.637 (1), +0.313 (2), +0.073
(5), -0.179 (10), -0.993 (20). Note 2/(pi*y) = 1.2732, 0.6366, 0.3183 —
the low-y residual matches a MISSING zero pair at |z|~0 to 4 digits.

Tests (D-024 sec.4 candidates + new hypothesis):
  T1. kappa = W'/W(0): exact gauge arithmetic gives kappa = 0 by symmetry
      (x symmetric, c real). Numeric confirmation. => candidate (a) dead.
  T2. Zero census + ARGUMENT PRINCIPLE on circles |z|=r: the real-gauge
      brentq scan can only find REAL zeros. If Galerkin W has a complex
      pair near 0 (candidate: purely imaginary +/-i*eps, self-conjugate
      under the mirror symmetries), the winding number exceeds the real-
      zero count. If found: locate eps by scanning |W(iy)|.
  T3. Residual shape on a fine y-grid: test A/y law; report A vs 2/pi.
  T4. Recon variants: (i) base (zeros<=300 + EM tail); (ii) trunc60;
      (iii) trunc100; (iv) notail; (v) mp60 (zeros<=60 relocated at
      dps 50 + EM tail from 60 — float64 contamination test, D-024 (c));
      (vi) base+pair (recon + exact contribution of the T2 imaginary
      pair, (2/pi) y/(y^2-eps^2) — decisive if T2 fires).
  T5. Sinc-artifact zeros of hat h at z=2*pi*k/h (=628k, beyond window):
      analytic size of their rho contribution (expected ~1e-4, dismiss).

Outputs: research/numerics/data/E-016b-v3-rootcause.csv (+ .json)
"""
import importlib.util
import json
import sys
import time
from datetime import datetime, timezone
from pathlib import Path

import mpmath as mp
import numpy as np
import scipy.optimize

REPO = Path(__file__).resolve().parents[3]
DATA = REPO / "research" / "numerics" / "data"
CSV = DATA / "E-016b-v3-rootcause.csv"
JSON = DATA / "E-016b-v3-rootcause.json"

# ---- import E-016 machinery (runs the sieve once, ~15 s) ---------------
_spec = importlib.util.spec_from_file_location(
    "E16", Path(__file__).with_name("E-016-herglotz-fine-structure.py"))
E16 = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(E16)

A_SWEEP = [4.0, 10.0]
H = E16.H_MAIN
LAM = E16.LAM_SHIFT
Y_GRID = np.linspace(0.1, 40.0, 400)
Z_MAX = 300.0
N_GRID = 40000
WIND_RADII_FRAC = [0.5, 1.5]   # in units of pi/a, plus absolute below
WIND_RADII_ABS = [1e-6, 1e-4, 1e-2, 0.1, 2.0, 5.0]


def locate_real_zeros(cp, x, h, z_max=Z_MAX, n_grid=N_GRID):
    """Real-axis sign-change + brentq on g(z) = z Im Vp - Re Vp (E-016)."""
    zg = np.linspace(1e-3, z_max, n_grid)
    Vpr, _ = E16.V_and_dV(zg, cp, x, h)
    g = zg * Vpr.imag - Vpr.real

    def g_direct(zz):
        V = E16.hat_FT(np.array([zz]), h)[0] * complex(
            np.exp(1j * zz * x) @ cp)
        return zz * V.imag - V.real

    idx = np.flatnonzero(np.sign(g[:-1]) * np.sign(g[1:]) < 0)
    zeros = []
    for i in idx:
        try:
            zeros.append(scipy.optimize.brentq(g_direct, zg[i], zg[i + 1],
                                               xtol=1e-13, rtol=1e-13))
        except ValueError:
            pass
    return np.array(zeros)


def winding(cp, cm, x, h, r, n_pts=512):
    """Argument-principle zero count of W(theta=pi) on |z|=r."""
    phi = np.linspace(0, 2 * np.pi, n_pts, endpoint=False)
    z = r * np.exp(1j * phi)
    Vp, dVp = E16.V_and_dV(z, cp, x, h)
    Vm, dVm = E16.V_and_dV(z, cm, x, h)
    W, _ = E16.W_and_dW(z, Vp, dVp, Vm, dVm, np.pi)
    dphi = np.diff(np.unwrap(np.angle(W)))
    return float(dphi.sum() / (2 * np.pi))


def imag_pair_scan(cp, cm, x, h, y_max=3.0):
    """Scan |W(iy)| for a minimum -> candidate purely-imaginary pair."""
    ys = np.linspace(1e-4, y_max, 30000)
    z = 1j * ys
    Vp, _ = E16.V_and_dV(z, cp, x, h)
    Vm, _ = E16.V_and_dV(z, cm, x, h)
    W = (z - 1j) * Vp - (z + 1j) * Vm          # theta = pi
    aw = np.abs(W)
    i = int(np.argmin(aw))
    # polish with mpmath findroot on W(iy)=0 (real unknown y)
    mp.mp.dps = 50
    cpm = [mp.mpf(float(v)) for v in cp]
    cmm = [mp.mpf(float(v)) for v in cm]
    xm = [mp.mpf(float(v)) for v in x]

    def Wimag(yy):
        yy = mp.mpf(yy)
        Sp = sum(c * mp.e ** (1j * yy * xx) for c, xx in zip(cpm, xm))
        Sm = sum(c * mp.e ** (1j * yy * xx) for c, xx in zip(cmm, xm))
        hh = mp.mpf(h)
        hat = hh * (mp.sin(yy * hh / 2) / (yy * hh / 2)) ** 2
        Vpv, Vmv = hat * Sp, hat * Sm
        W = 1j * (yy - 1) * Vpv - 1j * (yy + 1) * Vmv      # W(i*yy), th=pi
        return mp.im(W)          # mirror symmetry: W(iy) = i * (real)

    try:
        root = mp.findroot(Wimag, mp.mpf(float(ys[i])),
                           solver="secant", tol=mp.mpf("1e-40"))
        eps = float(root)
        resid = float(abs(Wimag(root)))
        return eps, resid, float(aw[i]), float(ys[i])
    except (ValueError, ZeroDivisionError):
        return None, None, float(aw[i]), float(ys[i])


def em_tail(y, z_start, d_lat):
    return (y / d_lat) * (np.pi / 2.0 - np.arctan(z_start / y))


def recon_rho(y, zeros_pos, d_lat, z_tail_start=None, extra_pairs=()):
    """Poisson density from positive zeros (doubled) + EM tail + explicit
    extra pairs (purely imaginary +/-i*eps: 2y/(y^2 - eps^2))."""
    y = np.asarray(y, dtype=float)
    zeros_pos = np.asarray(zeros_pos, dtype=float)
    if zeros_pos.size:
        s = 2.0 * np.sum(y[:, None] / (y[:, None] ** 2
                                       + zeros_pos[None, :] ** 2), axis=1)
    else:
        s = np.zeros_like(y)
    if z_tail_start is not None:
        s = s + 2.0 * em_tail(y, z_tail_start, d_lat)
    for eps in extra_pairs:
        s = s + 2.0 * y / (y**2 - eps**2)
    return s / np.pi


def mp_relocate(cp, x, h, zeros_pos, z_hi=60.0):
    """Re-locate zeros <= z_hi with mpmath dps 50 (float64 contamination
    test). Bisection on the real gauge, 80 iterations."""
    mp.mp.dps = 50
    cpm = [mp.mpf(float(v)) for v in cp]
    xm = [mp.mpf(float(v)) for v in x]
    hh = mp.mpf(h)

    def g_mp(zz):
        zz = mp.mpf(zz)
        S = sum(c * mp.e ** (1j * zz * xx) for c, xx in zip(cpm, xm))
        hat = hh * (mp.sin(zz * hh / 2) / (zz * hh / 2)) ** 2
        V = hat * S
        return zz * mp.im(V) - mp.re(V)

    out = []
    for z0 in zeros_pos:
        if z0 > z_hi:
            continue
        lo, hi = mp.mpf(float(z0)) - mp.mpf("0.05"), \
            mp.mpf(float(z0)) + mp.mpf("0.05")
        flo, fhi = g_mp(lo), g_mp(hi)
        if flo * fhi > 0:
            out.append((float(z0), None))
            continue
        for _ in range(80):
            mid = (lo + hi) / 2
            fm = g_mp(mid)
            if flo * fm <= 0:
                hi, fhi = mid, fm
            else:
                lo, flo = mid, fm
        out.append((float(z0), float((lo + hi) / 2)))
    return out


def main() -> int:
    if CSV.exists() and "--force" not in sys.argv:
        print(f"cached: {CSV} (use --force to recompute)")
        return 0
    t0 = time.time()
    rows = []
    report = {}

    for a in A_SWEEP:
        print(f"a={a}: build + solve ...", flush=True)
        x, hh, Q, M, b = E16.build(a, H)
        n = len(x)
        cp, T = E16.solve_v(Q, M, b[+1.0], LAM, n)
        cm, _ = E16.solve_v(Q, M, b[-1.0], LAM, n)
        np_ = float(cp @ T @ cp)
        nm = float(cm @ T @ cm)
        cm = cm * np.sqrt(np_ / nm)
        d_lat = np.pi / a

        # analytic rho_W at theta=pi on the fine grid
        ziy = 1j * Y_GRID
        Vp, dVp = E16.V_and_dV(ziy, cp, x, hh)
        Vm, dVm = E16.V_and_dV(ziy, cm, x, hh)
        W, dW = E16.W_and_dW(ziy, Vp, dVp, Vm, dVm, np.pi)
        rho_an = -np.imag(dW / W) / np.pi

        # T1: kappa = W'/W(0)
        z0 = np.array([0.0 + 0.0j])
        Vp0, dVp0 = E16.V_and_dV(z0, cp, x, hh)
        Vm0, dVm0 = E16.V_and_dV(z0, cm, x, hh)
        W0, dW0 = E16.W_and_dW(z0, Vp0, dVp0, Vm0, dVm0, np.pi)
        kappa = complex(dW0[0] / W0[0])
        print(f"  T1 kappa = {kappa:.3e}", flush=True)

        # T2: census + argument principle
        zeros = locate_real_zeros(cp, x, hh)
        census = {"n_real": int(len(zeros)), "z1": float(zeros[0]),
                  "z_last": float(zeros[-1]),
                  "lattice_count_window": a * Z_MAX / np.pi}
        radii = [f * d_lat for f in WIND_RADII_FRAC] + WIND_RADII_ABS
        wind = {}
        for r in radii:
            w = winding(cp, cm, x, hh, r)
            n_real_in = int(2 * np.sum(zeros < r))
            wind[f"{r:.4f}"] = {"winding": w, "real_zeros_inside": n_real_in,
                                "excess": w - n_real_in}
        print(f"  T2 winding: {wind}", flush=True)

        eps, eps_resid, scan_min, scan_at = None, None, None, None
        if any(abs(v["excess"]) > 0.5 for v in wind.values()):
            eps, eps_resid, scan_min, scan_at = imag_pair_scan(cp, cm, x, hh)
            print(f"  T2 imaginary pair: eps={eps} |W(i*eps)|={eps_resid:.2e} "
                  f"(scan min {scan_min:.3e} at y={scan_at:.4f})", flush=True)

        # T3: residual shape (base variant), A/y fit at small y
        z_tail = zeros[-1] + d_lat / 2.0
        rec_base = recon_rho(Y_GRID, zeros, d_lat, z_tail)
        resid = rho_an - rec_base
        sel_small = (Y_GRID >= 0.3) & (Y_GRID <= 2.0)
        A_fit = float(np.mean(resid[sel_small] * Y_GRID[sel_small]))
        # mean-shift removed version for shape comparison
        shift = float(np.mean(resid))

        # T4: variants
        z60 = zeros[zeros <= 60.0]
        z100 = zeros[zeros <= 100.0]
        variants = {
            "base": rec_base,
            "trunc60": recon_rho(Y_GRID, z60, d_lat, z60[-1] + d_lat / 2),
            "trunc100": recon_rho(Y_GRID, z100, d_lat, z100[-1] + d_lat / 2),
            "notail": recon_rho(Y_GRID, zeros, d_lat, None),
        }
        if eps is not None and eps_resid is not None and eps_resid < 1e-20:
            variants["base+pair"] = recon_rho(
                Y_GRID, zeros, d_lat, z_tail, extra_pairs=(eps,))
        print("  T4 mp60 relocation (dps 50) ...", flush=True)
        reloc = mp_relocate(cp, x, hh, zeros, 60.0)
        n_ok = sum(1 for _, r in reloc if r is not None)
        max_dz = max((abs(z0 - r) for z0, r in reloc if r is not None),
                     default=0.0)
        z60mp = np.array([r for _, r in reloc if r is not None])
        variants["mp60"] = recon_rho(Y_GRID, z60mp, d_lat,
                                     z60mp[-1] + d_lat / 2)

        var_summary = {}
        for name, rec in variants.items():
            res = rho_an - rec
            res_shifted = res - np.mean(res)
            var_summary[name] = {
                "resid_y0.5": float(res[np.argmin(abs(Y_GRID - 0.5))]),
                "resid_y5": float(res[np.argmin(abs(Y_GRID - 5.0))]),
                "resid_y20": float(res[np.argmin(abs(Y_GRID - 20.0))]),
                "shape_rms_rel": float(np.sqrt(np.mean(res_shifted**2))
                                       / np.sqrt(np.mean(rho_an**2))),
            }
            for y, rv, rsv in zip(Y_GRID, res, res_shifted):
                rows.append(f"resid,{name},{a},{y:.6f},{rv:.10e},{rsv:.10e}")
        for y, rv in zip(Y_GRID, rho_an):
            rows.append(f"rho_analytic,-,{a},{y:.6f},{rv:.10e},")

        # T5: sinc-artifact zero contribution estimate (analytic formula)
        k = np.arange(1, 20)
        zk = 2 * np.pi * k / hh
        sinc_est = float(np.max(
            (4.0 / np.pi) * np.max(Y_GRID) * np.sum(1.0 / zk**2)))

        report[str(a)] = {
            "T1_kappa_re": kappa.real, "T1_kappa_im": kappa.imag,
            "T2_census": census, "T2_winding": wind,
            "T2_imag_pair": {"eps": eps, "W_at_ieps": eps_resid,
                             "scan_min": scan_min, "scan_at_y": scan_at},
            "T3_A_over_y_fit": A_fit, "T3_two_over_pi": 2.0 / np.pi,
            "T3_mean_shift": shift,
            "T4_variants": var_summary,
            "T4_mp60": {"n_relocated": n_ok, "max_abs_dz": max_dz},
            "T5_sinc_est_max": sinc_est,
        }
        print(f"  T3 A/y fit: A={A_fit:.4f} vs 2/pi={2/np.pi:.4f} "
              f"shift={shift:.4f}", flush=True)
        print(f"  T4 variants: {json.dumps(var_summary, indent=1)}",
              flush=True)

    with CSV.open("w", encoding="utf-8", newline="") as f:
        f.write("series,variant,a,y,resid,resid_shifted\n")
        f.write("\n".join(rows) + "\n")

    meta = {
        "experiment": "E-016b",
        "task": "2.6: root-cause E-016 V3 Poisson-reconstruction failure",
        "script": "research/numerics/scripts/E-016b-v3-rootcause.py",
        "parameters": {"a_sweep": A_SWEEP, "h": H, "lambda": LAM,
                       "y_grid": [0.1, 40.0, 400], "z_max": Z_MAX},
        "report": report,
        "elapsed_seconds": round(time.time() - t0, 1),
        "timestamp_utc": datetime.now(timezone.utc).isoformat(),
    }
    JSON.write_text(json.dumps(meta, indent=2), encoding="utf-8")
    print(f"wrote {CSV.name}, {JSON.name}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())