Current task: —

E-024-theta-sweep.py

Experiments: E-024 · script updated 08-19-2026

E-024-theta-sweep.csv — 700.6 KB, updated 08-19-2026

← prev page 2 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
502 4 0.1667 145 114.288643924315 1.0847256520e+00
503 4 0.1667 146 114.822660768974 1.6209778190e-01
504 4 0.1667 147 115.725846336098 1.6463700592e-01
505 4 0.1667 148 116.259116406694 1.0836907765e+00
506 4 0.1667 149 117.205473038742 1.3203249147e-01
507 4 0.1667 150 118.016318940713 1.3178078342e-01
508 4 0.1667 151 118.793418924264 1.1276513188e+00
509 4 0.1667 152 119.609730134135 1.3194889667e-01
510 4 0.1667 153 120.415681089322 1.3020865815e-01
511 4 0.1667 154 121.346139011742 1.1025299162e+00
512 4 0.1667 155 121.940625058528 1.4967670945e-01
513 4 0.1667 156 122.916860837689 1.0950051913e+00
514 4 0.1667 157 123.469299021426 1.5639209034e-01
515 4 0.1667 158 124.262293871569 1.1299084209e+00
516 4 0.1667 159 125.106411095067 1.2889313375e-01
517 4 0.1667 160 125.911358777003 1.3253795803e-01
518 4 0.1667 161 126.706961578781 1.3278299671e-01
519 4 0.1667 162 127.516210227210 1.1309975583e+00
520 4 0.1667 163 128.317949079624 1.3618042786e-01
521 4 0.1667 164 129.255356857833 2.6481191726e-01
522 4 0.1667 165 129.644803133060 9.8232095842e-01
523 4 0.1667 166 130.793935253967 3.0897189290e-01
524 4 0.1667 167 131.163146646481 9.3570419354e-01
525 4 0.1667 168 132.180462527026 1.4229449179e-01
526 4 0.1667 169 133.112740744716 2.2659071155e-01
527 4 0.1667 170 133.552028836832 1.0246416827e+00
528 4 0.1667 171 134.714573004165 1.0743457839e+00
529 4 0.1667 172 135.214102789030 1.8560377376e-01
530 4 0.1667 173 136.105068968865 1.3528859499e-01
531 4 0.1667 174 136.941436653369 1.4215083831e-01
532 4 0.1667 175 137.959282412601 6.0807667750e-01
533 4 0.1667 176 138.268631842438 6.3955854337e-01
534 4 0.1667 177 139.405139688963 2.7956164313e-01
535 4 0.1667 178 139.807211644104 9.7962784573e-01
536 4 0.1667 179 141.035314722115 8.8887578597e-01
537 4 0.1667 180 141.386353405519 3.6022945191e-01
538 4 0.1667 181 142.350704425395 1.3998707676e-01
539 4 0.1667 182 143.117191534437 1.1348186235e+00
540 4 0.1667 183 143.982433193057 1.3446759520e-01
541 4 0.1667 184 144.790967509610 1.4163842972e-01
542 4 0.1667 185 145.779543145358 4.4595220283e-01
543 4 0.1667 186 146.111633180459 8.1208099498e-01
544 4 0.1667 187 147.327173736128 8.6006687515e-01
545 4 0.1667 188 147.665418938879 3.8636539966e-01
546 4 0.1667 189 148.655626463743 1.3888588447e-01
547 4 0.1667 190 149.516291316528 1.6839211545e-01
548 4 0.1667 191 150.086337508948 1.1037818387e+00
549 4 0.1667 192 150.938937314014 1.1308371435e+00
550 4 0.1667 193 151.835802770386 1.4488858207e-01
551 4 0.1667 194 152.842869329354 5.3354691138e-01
552 4 0.1667 195 153.149716130453 7.1602502476e-01
553 4 0.1667 196 154.177233002402 1.4649863308e-01
554 4 0.1667 197 154.998054707703 1.4281447837e-01
555 4 0.1667 198 156.004868967914 8.1509638604e-01
556 4 0.1667 199 156.334742949358 4.3679179083e-01
557 4 0.1667 200 157.524956071134 9.6797154275e-01
558 4 0.1667 201 157.901692070471 2.9306455160e-01
559 4 0.1667 202 158.849197400136 1.1492600606e+00
560 4 0.1667 203 159.667619502207 1.3273503655e-01
561 4 0.1667 204 160.492926095469 1.3932134603e-01
562 4 0.1667 205 161.199121461647 1.1374324491e+00
563 4 0.1667 206 162.057517257352 1.4734318426e-01
564 4 0.1667 207 162.998829206340 1.1064181074e+00
565 4 0.1667 208 163.574885517278 1.5892531198e-01
566 4 0.1667 209 164.421591507086 1.5492278027e-01
567 4 0.1667 210 165.459278793989 9.3330396061e-01
568 4 0.1667 211 165.839688282336 3.2580999384e-01
569 4 0.1667 212 166.908409294653 3.4534930072e-01
570 4 0.1667 213 167.267915526371 9.0663766080e-01
571 4 0.1667 214 168.285605498754 1.5790010938e-01
572 4 0.1667 215 169.092107601212 1.1465281948e+00
573 4 0.1667 216 169.911895228873 1.1371634784e+00
574 4 0.1667 217 170.679123557612 1.4670243935e-01
575 4 0.1667 218 171.513842132899 1.4007352293e-01
576 4 0.1667 219 172.294608172515 1.4907531558e-01
577 4 0.1667 220 173.328450173182 9.2768918449e-01
578 4 0.1667 221 173.685475549905 3.4666049965e-01
579 4 0.1667 222 174.728515712691 1.1319240494e+00
580 4 0.1667 223 175.383172310809 1.5152376356e-01
581 4 0.1667 224 176.398696884963 1.0647578510e+00
582 4 0.1667 225 176.891357035302 2.1431224869e-01
583 4 0.1667 226 177.816548222672 1.6475718832e-01
584 4 0.1667 227 178.403166744292 1.1233779181e+00
585 4 0.1667 228 179.364919139874 1.8400337110e-01
586 4 0.1667 229 179.947837121524 1.0983154663e+00
587 4 0.1667 230 180.917910283670 1.7344798994e-01
588 4 0.1667 231 181.773788550618 2.2117744999e-01
589 4 0.1667 232 182.253839126772 1.0490880432e+00
590 4 0.1667 233 183.232633728703 1.3883287461e-01
591 4 0.1667 234 184.044105872341 1.6471077222e-01
592 4 0.1667 235 184.872802417564 1.1382248823e+00
593 4 0.1667 236 185.601307980827 1.1597480180e+00
594 4 0.1667 237 186.468238041643 1.6360058370e-01
595 4 0.1667 238 187.229472308839 1.1372686227e+00
596 4 0.1667 239 188.077728335152 1.5470469344e-01
597 4 0.1667 240 188.849528603542 1.7129237897e-01
598 4 0.1667 241 189.450797257015 1.1305205136e+00
599 4 0.1667 242 190.391089567813 1.5985518335e-01
600 4 0.1667 243 191.139239857893 1.5235321205e-01
601 4 0.1667 244 192.024963581889 1.1757132255e+00
602 4 0.1667 245 192.985029698718 8.6515848452e-01
603 4 0.1667 246 193.326103290040 3.9055599163e-01
604 4 0.1667 247 194.320270697412 1.8168660786e-01
605 4 0.1667 248 195.242149462218 1.1205206409e+00
606 4 0.1667 249 195.921717220420 1.8282557361e-01
607 4 0.1667 250 196.842585120278 1.1340533272e+00
608 4 0.1667 251 197.420947407734 2.0691430521e-01
609 4 0.1667 252 198.044888322461 1.1485520454e+00
610 4 0.1667 253 199.011922665299 1.4355148246e-01
611 4 0.1667 254 199.879226420374 1.7016666829e-01
612 4 0.1667 255 200.636519926838 1.7355187625e-01
613 4 0.1667 256 201.283743787823 1.1668600611e+00
614 4 0.1667 257 202.428537989757 1.0118780058e+00
615 4 0.1667 258 202.893628252357 2.9064734319e-01
616 4 0.1667 259 203.887583968576 3.7304301423e-01
617 4 0.1667 260 204.294603127577 9.5082454494e-01
618 4 0.1667 261 205.373240341736 1.1360058249e+00
619 4 0.1667 262 206.099840368178 2.0240977782e-01
620 4 0.1667 263 206.881788520176 1.5023198967e-01
621 4 0.1667 264 207.854076437523 1.1258445782e+00
622 4 0.1667 265 208.396479451657 2.6464668014e-01
623 4 0.1667 266 209.465931784719 8.2258137764e-01
624 4 0.1667 267 209.817585201123 5.0509296533e-01
625 4 0.1667 268 210.787789969093 1.4841173023e-01
626 4 0.1667 269 211.680053947616 1.1423372432e+00
627 4 0.1667 270 212.470437523639 1.7567867090e-01
628 4 0.1667 271 213.311354745389 1.2174305644e+00
629 4 0.1667 272 214.000300802875 2.0964343063e-01
630 4 0.1667 273 214.596115184500 1.1229052479e+00
631 4 0.1667 274 215.480011720744 1.8461052901e-01
632 4 0.1667 275 216.198798226722 1.2052822757e+00
633 4 0.1667 276 217.102595984632 1.5010149399e-01
634 4 0.1667 277 217.890480802134 2.2906824898e-01
635 4 0.1667 278 218.959382405929 8.3709175812e-01
636 4 0.1667 279 219.321192481997 5.2023964470e-01
637 4 0.1667 280 220.501290680980 5.8296147114e-01
638 4 0.1667 281 220.894505799941 9.0157511162e-01
639 4 0.1667 282 221.506838393098 1.0058805282e+00
640 4 0.1667 283 222.552045474175 1.6086839918e-01
641 4 0.1667 284 223.319323166645 2.3644928474e-01
642 4 0.1667 285 224.032506966052 1.2246981290e+00
643 4 0.1667 286 224.982477562377 1.1704999822e+00
644 4 0.1667 287 225.663253749454 2.2125184977e-01
645 4 0.1667 288 226.514701417106 2.4876667320e-01
646 4 0.1667 289 227.410888134248 1.1478973264e+00
647 4 0.1667 290 228.216860057725 2.5335780024e-01
648 4 0.1667 291 229.099879000282 4.3754238483e-01
649 4 0.1667 292 229.441531979404 8.4010873402e-01
650 4 0.1667 293 230.434453174182 2.6799382722e-01
651 4 0.1667 294 231.254042910492 1.1543556902e+00
652 4 0.1667 295 231.994570546536 1.2633220109e+00
653 4 0.1667 296 232.812581787291 2.6781631430e-01
654 4 0.1667 297 233.691895086743 1.1542206810e+00
655 4 0.1667 298 234.566475134897 2.0620440729e-01
656 4 0.1667 299 235.201340335508 2.2046987225e-01
657 4 0.1667 300 236.179871794755 4.9332379207e-01
658 4 0.1667 301 236.642492544822 1.0494839400e+00
659 4 0.1667 302 237.730672899221 1.1226591897e+00
660 4 0.1667 303 238.324416980782 1.9562166423e-01
661 4 0.1667 304 239.418881374259 8.7052798352e-01
662 4 0.1667 305 239.753033306564 5.7180037341e-01
663 4 0.1667 306 240.967416560021 1.0644233529e+00
664 4 0.1667 307 241.353710689774 3.8717837886e-01
665 4 0.1667 308 242.490240783209 5.4761940150e-01
666 4 0.1667 309 242.953423096026 1.0144418030e+00
667 4 0.1667 310 243.993177152634 1.1043159747e+00
668 4 0.1667 311 244.590958740849 3.6288970991e-01
669 4 0.1667 312 245.321915245352 2.1367898963e-01
670 4 0.1667 313 246.253589164823 1.8957946505e-01
671 4 0.1667 314 247.085673225763 1.2776564426e+00
672 4 0.1667 315 247.971990342238 8.6530552984e-01
673 4 0.1667 316 248.381151296297 6.5104376852e-01
674 4 0.1667 317 249.520960943796 1.1018477431e+00
675 4 0.1667 318 249.972132239807 3.9865965001e-01
676 4 0.1667 319 251.001963429366 1.1723858471e+00
677 4 0.1667 320 251.851700501893 3.3691299046e-01
678 4 0.1667 321 252.531625306666 4.4765979065e-01
679 4 0.1667 322 253.120750330424 1.0979781084e+00
680 4 0.1667 323 254.227675362243 3.2273162235e-01
681 4 0.1667 324 254.981106770590 4.7471874145e-01
682 4 0.1667 325 255.388386245085 1.1167076088e+00
683 4 0.1667 326 256.388064008404 1.1757724469e+00
684 4 0.1667 327 257.268663812389 1.8130767716e-01
685 4 0.1667 328 258.257103038016 5.8038959950e-01
686 4 0.1667 329 258.717289643092 1.0451993210e+00
687 4 0.1667 330 259.718568601538 1.0871620833e+00
688 4 0.1667 331 260.284988177517 7.5822884167e-01
689 4 0.1667 332 260.880252790386 1.0563737462e+00
690 4 0.1667 333 262.005773506903 4.1859610781e-01
691 4 0.1667 334 262.683463201766 1.9738166838e-01
692 4 0.1667 335 263.573716704786 1.4602597962e+00
693 4 0.1667 336 264.444588942898 2.2637925813e-01
694 4 0.1667 337 265.216133404280 7.0860610039e-01
695 4 0.1667 338 265.702648160227 8.7195867751e-01
696 4 0.1667 339 266.672683836557 1.3529412014e+00
697 4 0.1667 340 267.521235234810 5.0597684602e-01
698 4 0.1667 341 268.067912107495 1.0510163633e+00
699 4 0.1667 342 268.830066788805 3.6860437905e-01
700 4 0.1667 343 269.948339372772 1.2309920675e+00
701 4 0.1667 344 270.526100917439 5.0755123037e-01
702 4 0.1667 345 271.412817620788 1.4161818347e+00
703 4 0.1667 346 272.204300752285 5.5028701944e-01
704 4 0.1667 347 273.022701266115 3.1762061419e-01
705 4 0.1667 348 273.535644191158 1.0678946228e+00
706 4 0.1667 349 274.687217942235 5.0703184185e-01
707 4 0.1667 350 275.490796280004 1.1071992037e+00
708 4 0.1667 351 276.174947772886 7.6476886901e-01
709 4 0.1667 352 276.579335514090 1.0962870369e+00
710 4 0.1667 353 277.791232932889 5.7483284426e-01
711 4 0.1667 354 278.294624688128 1.2358311046e+00
712 4 0.1667 355 279.177404287565 1.5430304497e+00
713 4 0.1667 356 279.987287052830 2.2716167317e-01
714 4 0.3333 1 0.929422876133 1.2794930805e-01
715 4 0.3333 2 1.726005640220 1.2612301528e-01
716 4 0.3333 3 2.516846686875 1.2568753535e-01
717 4 0.3333 4 3.305975408685 1.2552215076e-01
718 4 0.3333 5 4.094387961553 1.2544588208e-01
719 4 0.3333 6 4.882457973394 1.2540852401e-01
720 4 0.3333 7 5.670364491205 1.2539203393e-01
721 4 0.3333 8 6.458212399445 1.2538915138e-01
722 4 0.3333 9 7.246077338569 1.2539729837e-01
723 4 0.3333 10 8.034028127389 1.2541674303e-01
724 4 0.3333 11 8.822143696382 1.2545057634e-01
725 4 0.3333 12 9.610534800660 1.2550643799e-01
726 4 0.3333 13 10.399388181214 1.2560214746e-01
727 4 0.3333 14 11.189074613059 1.2578387129e-01
728 4 0.3333 15 11.980511687816 1.2620456252e-01
729 4 0.3333 16 12.776927864133 1.2765425053e-01
730 4 0.3333 17 13.607985377521 1.4760449491e-01
731 4 0.3333 18 14.161536846583 1.0923737129e+00
732 4 0.3333 19 15.093480149722 1.2860604836e-01
733 4 0.3333 20 15.893425058600 1.2660731391e-01
734 4 0.3333 21 16.687416730132 1.2622866061e-01
735 4 0.3333 22 17.480434099442 1.2624418991e-01
736 4 0.3333 23 18.274439044779 1.2655658593e-01
737 4 0.3333 24 19.071992484994 1.2748135945e-01
738 4 0.3333 25 19.881412621128 1.3114762630e-01
739 4 0.3333 26 20.871446449029 5.9088217902e-01
740 4 0.3333 27 21.159884843514 6.3850699894e-01
741 4 0.3333 28 22.156135401973 1.3177102467e-01
742 4 0.3333 29 22.971792748850 1.2898245974e-01
743 4 0.3333 30 23.786223841281 1.3126355917e-01
744 4 0.3333 31 24.720993335980 2.8624597469e-01
745 4 0.3333 32 25.078845123786 9.4574214834e-01
746 4 0.3333 33 26.074658263617 1.3111146583e-01
747 4 0.3333 34 26.885398728922 1.2789971016e-01
748 4 0.3333 35 27.686860813898 1.2742409528e-01
749 4 0.3333 36 28.488814705126 1.2806543801e-01
750 4 0.3333 37 29.301493943745 1.3164553044e-01
751 4 0.3333 38 30.303043314132 7.0657420594e-01
752 4 0.3333 39 30.597315010802 5.2419320825e-01
753 4 0.3333 40 31.592321318743 1.3425357987e-01
754 4 0.3333 41 32.469264858186 1.6909038534e-01
755 4 0.3333 42 32.970788917012 1.0709171231e+00
756 4 0.3333 43 33.932189361308 1.3028244772e-01
757 4 0.3333 44 34.740630314900 1.2784653893e-01
758 4 0.3333 45 35.543256008411 1.2791255135e-01
759 4 0.3333 46 36.352773886013 1.3065531667e-01
760 4 0.3333 47 37.275090432209 2.6134478132e-01
761 4 0.3333 48 37.648191848173 9.7081697477e-01
762 4 0.3333 49 38.639062721303 1.3083018807e-01
763 4 0.3333 50 39.448766935419 1.2791936883e-01
764 4 0.3333 51 40.255479780908 1.3046808706e-01
765 4 0.3333 52 40.932008075800 1.1178944852e+00
766 4 0.3333 53 41.811773259279 1.2746702685e-01
767 4 0.3333 54 42.609981156580 1.2734837336e-01
768 4 0.3333 55 43.334891415034 1.1230352329e+00
769 4 0.3333 56 44.181539200390 1.2645308857e-01
770 4 0.3333 57 44.974011017674 1.2604642827e-01
771 4 0.3333 58 45.765610402116 1.2605998818e-01
772 4 0.3333 59 46.558532014595 1.2657707118e-01
773 4 0.3333 60 47.361666821356 1.3109432438e-01
774 4 0.3333 61 48.020070178731 1.1155069631e+00
775 4 0.3333 62 48.908138843940 1.2805824029e-01
776 4 0.3333 63 49.765070382453 1.1226738743e+00
777 4 0.3333 64 50.482418319757 1.2761358255e-01
778 4 0.3333 65 51.279269477786 1.2667814192e-01
779 4 0.3333 66 52.076189938789 1.2748013331e-01
780 4 0.3333 67 52.956878804692 1.1178833662e+00
781 4 0.3333 68 53.632722999767 1.3075892976e-01
782 4 0.3333 69 54.440836211150 1.2825553256e-01
783 4 0.3333 70 55.252299611771 1.3126541568e-01
784 4 0.3333 71 56.210053434987 3.6771974487e-01
785 4 0.3333 72 56.532601852814 8.6340396470e-01
786 4 0.3333 73 57.537516991071 1.3227295717e-01
787 4 0.3333 74 58.359641726215 1.3130784307e-01
788 4 0.3333 75 59.315696892230 1.0843092731e+00
789 4 0.3333 76 59.850852127957 1.5883778509e-01
790 4 0.3333 77 60.812576723772 1.1129457850e+00
791 4 0.3333 78 61.449201060297 1.3651341789e-01
792 4 0.3333 79 62.268549874898 1.2842316402e-01
793 4 0.3333 80 63.073217259292 1.2820755263e-01
794 4 0.3333 81 63.884709762086 1.3136579381e-01
795 4 0.3333 82 64.815712978175 2.7885649101e-01
796 4 0.3333 83 65.178982286015 9.5390758256e-01
797 4 0.3333 84 66.177557294450 1.3244913494e-01
798 4 0.3333 85 67.067967200317 1.1218159907e+00
799 4 0.3333 86 67.769015015096 1.3088990286e-01
800 4 0.3333 87 68.582554152775 1.3033484559e-01
801 4 0.3333 88 69.520413474000 1.0971722475e+00
802 4 0.3333 89 70.094878816777 1.4744039274e-01
803 4 0.3333 90 70.944542117105 1.3387713663e-01
804 4 0.3333 91 71.952460962765 7.3798655898e-01
805 4 0.3333 92 72.249812934461 4.9321956773e-01
806 4 0.3333 93 73.231164471439 1.3169075293e-01
807 4 0.3333 94 74.043399171136 1.2825557197e-01
808 4 0.3333 95 74.844647477696 1.2785412468e-01
809 4 0.3333 96 75.697026368588 1.1244785570e+00
810 4 0.3333 97 76.431867834842 1.2986074295e-01
811 4 0.3333 98 77.154054652557 1.1240377703e+00
812 4 0.3333 99 78.022223414382 1.3035592579e-01
813 4 0.3333 100 78.889704756611 1.7380438736e-01
814 4 0.3333 101 79.374899777561 1.0645926232e+00
815 4 0.3333 102 80.338312287618 1.3105981348e-01
816 4 0.3333 103 81.148571154480 1.2901181300e-01
817 4 0.3333 104 81.956948997055 1.2996926999e-01
818 4 0.3333 105 82.887199168206 1.1052370905e+00
819 4 0.3333 106 83.497694343966 1.4598602217e-01
820 4 0.3333 107 84.476623206180 3.3655356685e-01
821 4 0.3333 108 84.815234660940 8.9751681914e-01
822 4 0.3333 109 85.820145188665 1.3225043190e-01
823 4 0.3333 110 86.634620956790 1.2947054192e-01
824 4 0.3333 111 87.427460662207 1.1298730839e+00
825 4 0.3333 112 88.282714594843 1.5141758955e-01
826 4 0.3333 113 88.837203216278 1.0918979022e+00
827 4 0.3333 114 89.780597211165 1.3105664697e-01
828 4 0.3333 115 90.590788857325 1.2928576849e-01
829 4 0.3333 116 91.405684520721 1.3314230018e-01
830 4 0.3333 117 92.411269051001 8.9286640697e-01
831 4 0.3333 118 92.746615714188 3.4123163821e-01
832 4 0.3333 119 93.708111816891 1.3432612406e-01
833 4 0.3333 120 94.633738599531 1.1187022091e+00
834 4 0.3333 121 95.333091546650 1.5980931462e-01
835 4 0.3333 122 95.899797759321 1.0928793758e+00
836 4 0.3333 123 96.854958404787 1.3217589062e-01
837 4 0.3333 124 97.679392066583 1.3417570709e-01
838 4 0.3333 125 98.682429537381 6.1032359791e-01
839 4 0.3333 126 98.975914521858 6.2384511506e-01
840 4 0.3333 127 99.986669640635 1.3767911788e-01
841 4 0.3333 128 100.873026080606 1.8029961975e-01
842 4 0.3333 129 101.357546753480 1.0613023442e+00
843 4 0.3333 130 102.333953827318 1.3319899197e-01
844 4 0.3333 131 103.183167225111 1.5035219408e-01
845 4 0.3333 132 103.752124643209 1.0962732785e+00
846 4 0.3333 133 104.686158626530 1.3151318466e-01
847 4 0.3333 134 105.451802475702 1.1273860838e+00
848 4 0.3333 135 106.286853521371 1.2959353538e-01
849 4 0.3333 136 107.156854259454 1.1218325662e+00
850 4 0.3333 137 107.851343206650 1.3064088171e-01
851 4 0.3333 138 108.647337243119 1.2808043145e-01
852 4 0.3333 139 109.442545225920 1.2689277857e-01
853 4 0.3333 140 110.234401699178 1.2951221719e-01
854 4 0.3333 141 111.029078799256 1.1284852534e+00
855 4 0.3333 142 111.868044225433 1.1255619821e+00
856 4 0.3333 143 112.609478692974 1.2976923941e-01
857 4 0.3333 144 113.407186461641 1.2989576413e-01
858 4 0.3333 145 114.304742103528 1.1180757657e+00
859 4 0.3333 146 114.974300844596 1.3823626363e-01
860 4 0.3333 147 115.907458512675 2.6360276180e-01
861 4 0.3333 148 116.289451640554 9.7560216932e-01
862 4 0.3333 149 117.277484919502 1.3311685524e-01
863 4 0.3333 150 118.095211746968 1.3436211617e-01
864 4 0.3333 151 118.801772728728 1.1224385529e+00
865 4 0.3333 152 119.668650970798 1.3217153885e-01
866 4 0.3333 153 120.473230142787 1.2894303776e-01
867 4 0.3333 154 121.356955035891 1.1200349398e+00
868 4 0.3333 155 122.038555237525 1.3579694298e-01
869 4 0.3333 156 122.933285351836 1.1252789863e+00
870 4 0.3333 157 123.638723403609 1.4299244790e-01
871 4 0.3333 158 124.275650823609 1.1130047278e+00
872 4 0.3333 159 125.185404333767 1.2994103653e-01
873 4 0.3333 160 125.992683753507 1.3350213173e-01
874 4 0.3333 161 126.794547607717 1.3437443651e-01
875 4 0.3333 162 127.526174054715 1.1280654171e+00
876 4 0.3333 163 128.398349763512 1.3729526250e-01
877 4 0.3333 164 129.405090737405 5.4323741576e-01
878 4 0.3333 165 129.711287513578 7.0224001511e-01
879 4 0.3333 166 130.925513104695 5.9712723118e-01
880 4 0.3333 167 131.234099092497 6.4715846431e-01
881 4 0.3333 168 132.253551754035 1.4312188460e-01
882 4 0.3333 169 133.240207447927 3.6426584424e-01
883 4 0.3333 170 133.586366405425 8.8212141663e-01
884 4 0.3333 171 134.730005179721 1.1145072042e+00
885 4 0.3333 172 135.334543301345 1.5172822543e-01
886 4 0.3333 173 136.186380509373 1.3390543852e-01
887 4 0.3333 174 137.014064658586 1.4129305698e-01
888 4 0.3333 175 138.038398556577 9.2769240485e-01
889 4 0.3333 176 138.408881392984 3.2338944654e-01
890 4 0.3333 177 139.552371395725 5.3564579059e-01
891 4 0.3333 178 139.868770982237 7.1835285188e-01
892 4 0.3333 179 141.075674031197 1.0499447060e+00
893 4 0.3333 180 141.550972070492 2.0682516101e-01
894 4 0.3333 181 142.463579475875 1.4549272034e-01
895 4 0.3333 182 143.128627786846 1.1223503574e+00
896 4 0.3333 183 144.055028439069 1.3680955304e-01
897 4 0.3333 184 144.866752506889 1.4118314433e-01
898 4 0.3333 185 145.882571020352 7.6924556942e-01
899 4 0.3333 186 146.206978698868 4.8784221958e-01
900 4 0.3333 187 147.374166290633 1.0492894290e+00
901 4 0.3333 188 147.842928728824 2.0296978729e-01
902 4 0.3333 189 148.766154329851 1.4119267283e-01
903 4 0.3333 190 149.692722143213 2.5650251325e-01
904 4 0.3333 191 150.119305940319 1.0145570712e+00
905 4 0.3333 192 150.948587016505 1.1208092143e+00
906 4 0.3333 193 151.889928282198 1.4573524663e-01
907 4 0.3333 194 152.919448519790 8.2105720234e-01
908 4 0.3333 195 153.242898973579 4.2941331328e-01
909 4 0.3333 196 154.239759645207 1.4759095450e-01
910 4 0.3333 197 155.063774882052 1.4210307497e-01
911 4 0.3333 198 156.050959480215 1.0031998438e+00
912 4 0.3333 199 156.465154916677 2.4924351834e-01
913 4 0.3333 200 157.558602483568 1.0909480073e+00
914 4 0.3333 201 158.077277950621 1.7817819363e-01
915 4 0.3333 202 158.860464678484 1.1426626181e+00
916 4 0.3333 203 159.749659652718 1.3380757086e-01
917 4 0.3333 204 160.593592805294 1.5077337593e-01
918 4 0.3333 205 161.210457207179 1.1220918404e+00
919 4 0.3333 206 162.112685927907 1.4650874720e-01
920 4 0.3333 207 163.011329269825 1.1288108963e+00
921 4 0.3333 208 163.686854769822 1.4255951335e-01
922 4 0.3333 209 164.492191396012 1.5044392833e-01
923 4 0.3333 210 165.494564374733 1.0634048585e+00
924 4 0.3333 211 166.003969344256 2.0478544687e-01
925 4 0.3333 212 167.066771179978 7.6285132832e-01
926 4 0.3333 213 167.382530335294 4.8467102030e-01
927 4 0.3333 214 168.371180687683 1.6066843798e-01
928 4 0.3333 215 169.103083889348 1.1421165462e+00
929 4 0.3333 216 169.921377545877 1.1366407566e+00
930 4 0.3333 217 170.746701787676 1.4473463767e-01
931 4 0.3333 218 171.583683419921 1.4214963816e-01
932 4 0.3333 219 172.358553803516 1.4534299939e-01
933 4 0.3333 220 173.362677079521 1.0655087140e+00
934 4 0.3333 221 173.826152699777 2.1377129214e-01
935 4 0.3333 222 174.742514977098 1.1443568636e+00
936 4 0.3333 223 175.493283451682 1.3872816089e-01
937 4 0.3333 224 176.423260311157 1.1241310860e+00
938 4 0.3333 225 177.069291585934 1.6642155296e-01
939 4 0.3333 226 178.040121084705 2.8071098748e-01
940 4 0.3333 227 178.443251374210 1.0005488900e+00
941 4 0.3333 228 179.512348187185 2.4776632593e-01
942 4 0.3333 229 179.972952209708 1.0275382136e+00
943 4 0.3333 230 180.986567274966 1.7902186053e-01
944 4 0.3333 231 181.914619011493 3.4174855955e-01
945 4 0.3333 232 182.287899328890 9.2152330400e-01
946 4 0.3333 233 183.299851199036 1.4081779716e-01
947 4 0.3333 234 184.106138946459 1.6570101428e-01
948 4 0.3333 235 184.882891827271 1.1413854051e+00
949 4 0.3333 236 185.609898364510 1.1524697498e+00
950 4 0.3333 237 186.524750665665 1.6911246701e-01
951 4 0.3333 238 187.238163270572 1.1328970178e+00
952 4 0.3333 239 188.148156981362 1.6257232811e-01
953 4 0.3333 240 188.970984948600 2.0503013553e-01
954 4 0.3333 241 189.467240377487 1.0877999235e+00
955 4 0.3333 242 190.447642253801 1.6424020937e-01
956 4 0.3333 243 191.199906698943 1.4811782348e-01
957 4 0.3333 244 192.031866571650 1.1763654539e+00
958 4 0.3333 245 193.022697356003 1.0163009527e+00
959 4 0.3333 246 193.446041250767 2.4080645095e-01
960 4 0.3333 247 194.370171211436 1.8027924009e-01
961 4 0.3333 248 195.253033584425 1.1327949827e+00
962 4 0.3333 249 196.009130248762 1.7848667318e-01
963 4 0.3333 250 196.864830142824 1.1733972162e+00
964 4 0.3333 251 197.663355847943 2.7171486332e-01
965 4 0.3333 252 198.075948377771 1.0383858251e+00
966 4 0.3333 253 199.083886125550 1.4408931569e-01
967 4 0.3333 254 199.956173525414 1.7953788368e-01
968 4 0.3333 255 200.761162077400 1.9567006853e-01
969 4 0.3333 256 201.297863775338 1.1303962736e+00
970 4 0.3333 257 202.450120276963 1.0812265344e+00
971 4 0.3333 258 203.011903160725 2.3480780278e-01
972 4 0.3333 259 204.015198481352 6.1560216772e-01
973 4 0.3333 260 204.360262662861 6.9942980510e-01
974 4 0.3333 261 205.384715826864 1.1441171704e+00
975 4 0.3333 262 206.175288211386 2.0055064192e-01
976 4 0.3333 263 206.969405033613 1.4516074554e-01
977 4 0.3333 264 207.873288870701 1.1668444067e+00
978 4 0.3333 265 208.493759015950 2.2617712944e-01
979 4 0.3333 266 209.523833345109 1.0427770537e+00
980 4 0.3333 267 209.964181548874 2.8736231790e-01
981 4 0.3333 268 210.884576247000 1.4600070563e-01
982 4 0.3333 269 211.692358529334 1.1448753143e+00
983 4 0.3333 270 212.572266472537 1.8479395637e-01
984 4 0.3333 271 213.334090697061 1.2357468853e+00
985 4 0.3333 272 214.272074942551 3.8945608252e-01
986 4 0.3333 273 214.660365175335 9.2762743605e-01
987 4 0.3333 274 215.636371729296 2.0434157263e-01
988 4 0.3333 275 216.217490036358 1.1692609649e+00
989 4 0.3333 276 217.191269989707 1.5473148049e-01
990 4 0.3333 277 217.945892933186 2.2182011209e-01
991 4 0.3333 278 219.010535562194 1.0419706570e+00
992 4 0.3333 279 219.455091601224 3.2262989635e-01
993 4 0.3333 280 220.622948600367 1.0153625937e+00
994 4 0.3333 281 221.158995586494 7.5072689612e-01
995 4 0.3333 282 221.591117035605 7.2347139121e-01
996 4 0.3333 283 222.670883772071 1.7445666394e-01
997 4 0.3333 284 223.430350160324 2.4544408468e-01
998 4 0.3333 285 224.047932148861 1.1966072827e+00
999 4 0.3333 286 224.994000031353 1.1805041447e+00
1000 4 0.3333 287 225.724980543925 2.1135913717e-01
1001 4 0.3333 288 226.552062837997 2.4606349717e-01

E-024-theta-sweep.json — 10.3 KB, updated 08-19-2026

JSON sidecar (click to expand)
{
  "experiment": "E-024",
  "task": "2.12: theta-flow numerics (theta-independence test)",
  "script": "research/numerics/scripts/E-024-theta-sweep.py",
  "parameters": {
    "a_list": [
      4.0,
      8.0,
      12.0
    ],
    "thetas_over_pi": [
      0.0,
      0.1667,
      0.3333,
      0.5,
      0.6667,
      0.8333,
      1.0
    ],
    "z_max": 300.0,
    "z_metric": 280.0
  },
  "checks": {
    "V1_lattice_all_theta": true,
    "V2_theta_pi_matches_E022": true,
    "V3_weights_positive": true
  },
  "key_values": {
    "a4_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 381,
      "z1_times_a": 3.1471258584711514,
      "mass_total": 184.1835959613851,
      "mass_pm0.1": 119.4128093530634,
      "mass_pm0.05": 91.94966918355006,
      "residual": 48.76433809073876,
      "valley_mass_mean": 1.0747560148463995,
      "plateau_weight_mean": 0.21201886126408157,
      "Delta_eff": 1.6231737129268227
    },
    "a4_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 381,
      "z1_times_a": 3.4619359298190293,
      "mass_total": 184.18630284387328,
      "mass_pm0.1": 118.29623992508816,
      "mass_pm0.05": 86.87180322997308,
      "residual": 48.931287590873524,
      "valley_mass_mean": 1.0734525020079346,
      "plateau_weight_mean": 0.2127447286559719,
      "Delta_eff": 1.6185423804514978
    },
    "a4_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 381,
      "z1_times_a": 3.7176915045337466,
      "mass_total": 183.9726782811009,
      "mass_pm0.1": 113.57262540386267,
      "mass_pm0.05": 85.73049725879235,
      "residual": 50.41888852750091,
      "valley_mass_mean": 1.0599507123301588,
      "plateau_weight_mean": 0.22016981889738385,
      "Delta_eff": 1.5715785355566734
    },
    "a4_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 381,
      "z1_times_a": 3.934163190177167,
      "mass_total": 183.98559583483848,
      "mass_pm0.1": 113.33711825061624,
      "mass_pm0.05": 89.82793793217617,
      "residual": 50.618934373720066,
      "valley_mass_mean": 1.0584655671517333,
      "plateau_weight_mean": 0.22104338154462916,
      "Delta_eff": 1.566216581357752
    },
    "a4_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 381,
      "z1_times_a": 4.128324562896003,
      "mass_total": 183.9983973653932,
      "mass_pm0.1": 119.75726561744686,
      "mass_pm0.05": 95.81754097212591,
      "residual": 48.13040632212352,
      "valley_mass_mean": 1.078317389232299,
      "plateau_weight_mean": 0.21017644682150013,
      "Delta_eff": 1.6352097313960756
    },
    "a4_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 381,
      "z1_times_a": 4.314182529701571,
      "mass_total": 184.01134904950752,
      "mass_pm0.1": 120.40026511109403,
      "mass_pm0.05": 90.96419878254113,
      "residual": 47.43102136203055,
      "valley_mass_mean": 1.0839708546625155,
      "plateau_weight_mean": 0.20712236402633416,
      "Delta_eff": 1.6550765456169134
    },
    "a4_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 381,
      "z1_times_a": 4.504293602793437,
      "mass_total": 184.02432245308052,
      "mass_pm0.1": 116.64777135239572,
      "mass_pm0.05": 93.33647263205195,
      "residual": 48.30754760742576,
      "valley_mass_mean": 1.0771172606797996,
      "plateau_weight_mean": 0.2109499895520775,
      "Delta_eff": 1.6304224593273315
    },
    "a8_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 763,
      "z1_times_a": 3.1437903681267265,
      "mass_total": 184.1082994928043,
      "mass_pm0.1": 134.20929653000076,
      "mass_pm0.05": 123.1835197830814,
      "residual": 57.73718018875971,
      "valley_mass_mean": 1.002945391301941,
      "plateau_weight_mean": 0.09852761124361722,
      "Delta_eff": 2.320359515027157
    },
    "a8_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 763,
      "z1_times_a": 3.418119179475546,
      "mass_total": 184.11283914170593,
      "mass_pm0.1": 131.8317519020843,
      "mass_pm0.05": 126.78097971430489,
      "residual": 56.7356526846647,
      "valley_mass_mean": 1.010930051246359,
      "plateau_weight_mean": 0.09681851993970085,
      "Delta_eff": 2.3457877312638367
    },
    "a8_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 763,
      "z1_times_a": 3.654042277120252,
      "mass_total": 184.11760264338506,
      "mass_pm0.1": 132.1490251381983,
      "mass_pm0.05": 124.0292094105938,
      "residual": 58.16107071439245,
      "valley_mass_mean": 0.9996550153094651,
      "plateau_weight_mean": 0.09925097391534557,
      "Delta_eff": 2.3097585025024654
    },
    "a8_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 763,
      "z1_times_a": 3.867441949623103,
      "mass_total": 184.12212186389277,
      "mass_pm0.1": 133.24139728241443,
      "mass_pm0.05": 121.15410070178395,
      "residual": 59.85047462666191,
      "valley_mass_mean": 0.9862829145811973,
      "plateau_weight_mean": 0.10213391574515683,
      "Delta_eff": 2.26765839342186
    },
    "a8_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 763,
      "z1_times_a": 4.071478758632688,
      "mass_total": 184.1262503654809,
      "mass_pm0.1": 132.29513175105507,
      "mass_pm0.05": 122.51608044758039,
      "residual": 57.48114969555114,
      "valley_mass_mean": 1.0051198465867441,
      "plateau_weight_mean": 0.09809069913916582,
      "Delta_eff": 2.3269695116402334
    },
    "a8_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 763,
      "z1_times_a": 4.27766402464752,
      "mass_total": 184.12992169567084,
      "mass_pm0.1": 131.99007596810569,
      "mass_pm0.05": 124.30470833176733,
      "residual": 57.28031602287514,
      "valley_mass_mean": 1.0067429021650454,
      "plateau_weight_mean": 0.09774797956122035,
      "Delta_eff": 2.332083020259487
    },
    "a8_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 763,
      "z1_times_a": 4.4968101024775144,
      "mass_total": 184.13312237431055,
      "mass_pm0.1": 133.51693635274228,
      "mass_pm0.05": 124.28962039506533,
      "residual": 58.6511497935264,
      "valley_mass_mean": 0.9958886712760646,
      "plateau_weight_mean": 0.10008728633707581,
      "Delta_eff": 2.297592806874823
    },
    "a12_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 1145,
      "z1_times_a": 3.1428501414881977,
      "mass_total": 184.16007157245687,
      "mass_pm0.1": 133.61538092090012,
      "mass_pm0.05": 128.10759866335772,
      "residual": 60.30642315719122,
      "valley_mass_mean": 0.9829654636132195,
      "plateau_weight_mean": 0.06395166824728656,
      "Delta_eff": 2.732446371442262
    },
    "a12_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 1145,
      "z1_times_a": 3.405992501692748,
      "mass_total": 184.1639822094043,
      "mass_pm0.1": 133.36866840406773,
      "mass_pm0.05": 129.35521418242917,
      "residual": 60.3669918644722,
      "valley_mass_mean": 0.9825157963883501,
      "plateau_weight_mean": 0.06401589805352302,
      "Delta_eff": 2.73098496176509
    },
    "a12_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 1145,
      "z1_times_a": 3.635830555925344,
      "mass_total": 184.09580595481827,
      "mass_pm0.1": 133.41942035595872,
      "mass_pm0.05": 129.05415843419973,
      "residual": 58.57426551897014,
      "valley_mass_mean": 0.9962027018718106,
      "plateau_weight_mean": 0.06218074895856703,
      "Delta_eff": 2.7739053032480143
    },
    "a12_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 1145,
      "z1_times_a": 3.8476946281889486,
      "mass_total": 184.09881987373944,
      "mass_pm0.1": 132.95788338488353,
      "mass_pm0.05": 129.3505890774291,
      "residual": 58.94147251618104,
      "valley_mass_mean": 0.9933122806155429,
      "plateau_weight_mean": 0.06257056530380153,
      "Delta_eff": 2.764750131884173
    },
    "a12_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 1145,
      "z1_times_a": 4.05423555082551,
      "mass_total": 184.10127816912785,
      "mass_pm0.1": 133.37160860447023,
      "mass_pm0.05": 129.68837121321633,
      "residual": 58.35802636312266,
      "valley_mass_mean": 0.9979623159206761,
      "plateau_weight_mean": 0.06195119571456758,
      "Delta_eff": 2.7793686068267633
    },
    "a12_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 1145,
      "z1_times_a": 4.2666373857585445,
      "mass_total": 184.1032513640804,
      "mass_pm0.1": 133.09565694496038,
      "mass_pm0.05": 129.3399679137547,
      "residual": 58.63289108937627,
      "valley_mass_mean": 0.9957965101166993,
      "plateau_weight_mean": 0.062242984171312424,
      "Delta_eff": 2.7724971046813764
    },
    "a12_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 1145,
      "z1_times_a": 4.495304974166889,
      "mass_total": 184.10483484645468,
      "mass_pm0.1": 133.31147006007708,
      "mass_pm0.05": 129.13788187469896,
      "residual": 57.594257954705384,
      "valley_mass_mean": 1.004052197553566,
      "plateau_weight_mean": 0.06114040122580191,
      "Delta_eff": 2.7986264096434
    },
    "V4_theta_spread": {
      "a4": {
        "residual_minmax": [
          47.43102136203055,
          50.618934373720066
        ],
        "residual_spread_pct": 2.234095821084676,
        "mass_pm01_spread_pct": 2.302784187513983,
        "z1_times_a_range": [
          3.1471258584711514,
          4.504293602793437
        ]
      },
      "a8": {
        "residual_minmax": [
          56.7356526846647,
          59.85047462666191
        ],
        "residual_spread_pct": 1.6396401999266315,
        "mass_pm01_spread_pct": 0.6333372523281642,
        "z1_times_a_range": [
          3.1437903681267265,
          4.4968101024775144
        ]
      },
      "a12": {
        "residual_minmax": [
          57.594257954705384,
          60.3669918644722
        ],
        "residual_spread_pct": 1.6057262581418954,
        "mass_pm01_spread_pct": 0.15063835179687926,
        "z1_times_a_range": [
          3.1428501414881977,
          4.495304974166889
        ]
      }
    }
  },
  "elapsed_seconds": 212.6,
  "timestamp_utc": "2026-08-19T18:19:09.910473+00:00"
}

Source code

Python script (click to expand)
"""E-024 — task 2.12: theta-flow numerics (D-041 §5/§8, D-038 §5).

Theory (de Branges/Clark): the model space's kernel K_a(z,z) is
theta-INDEPENDENT; the extension choice theta only phase-shifts the
atom lattice z_k(theta). PREDICTION (to be tested): consolidation
statistics (valley-captured mass, residual) are theta-independent —
if confirmed, no theta(a) flow can fix consolidation and the
obstruction is entirely the K-saturation (D-040 F6); if refuted,
the theta-flow channel is alive.

For theta in {0, pi/6, pi/3, pi/2, 2pi/3, 5pi/6, pi} and a in {4,8,12}:
  - zeros of W(a,theta;z) on (0, Z_MAX] via the real gauge
        g_theta(z) = Re[ e^{-i theta/2} (z - i) V_+(z) ]
    (e^{-i theta/2} W = 2 Re[e^{-i theta/2}(z-i)V_+] on the real line,
    using Vm = conj(Vp); reduces to z ImV - ReV at theta=pi);
  - Clark weights w_k = 1/K_a(z_k,z_k) (E-022 Schur-Toeplitz route);
  - metrics: n_zeros, z1*a, mass within +/-0.1 and +/-0.05 of true
    gammas, residual R(a,theta) = total - captured, mean valley mass,
    effective depth Delta_eff = log(mean valley weight / mean plateau
    weight).

Checks:
  V1. all zeros real & count = maximal lattice a*Z_MAX/pi +/- 2,
      every theta (self-adjointness).
  V2. theta=pi reproduces E-022: |z1*a - 4.4953| < 0.05 at a=12 and
      mass(+/-0.1) within 1% of E-022 value.
  V3. weights positive, all theta.
  V4. headline: theta-spread of residual R and mass(+/-0.1) reported
      per a (small spread = theta-independence confirmed).

Outputs: research/numerics/data/E-024-theta-sweep.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.linalg
import scipy.optimize

REPO = Path(__file__).resolve().parents[3]
DATA = REPO / "research" / "numerics" / "data"
CSV = DATA / "E-024-theta-sweep.csv"
JSON = DATA / "E-024-theta-sweep.json"

_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)                     # runs the e^20 sieve
sys.path.insert(0, str(Path(__file__).parent))
from prime_backend_v2 import PrimeBackendV2       # noqa: E402

H = E16.H_MAIN
LAM = E16.LAM_SHIFT
A_LIST = [4.0, 8.0, 12.0]
THETAS = [0.0, np.pi / 6, np.pi / 3, np.pi / 2, 2 * np.pi / 3,
          5 * np.pi / 6, np.pi]
Z_MAX = 300.0
Z_METRIC = 280.0
N_GRID = 40000
XN = E16.XN
mp.mp.dps = 40


def collect_t_points(a, h):
    n_elem = int(round(2 * a / h))
    pts = []

    def add_quad(lo, hi, peak):
        n_lo = int(np.ceil(np.exp(lo)))
        n_hi = int(np.floor(np.exp(hi)))
        if n_hi - n_lo > 64:
            for aa, bb in ((lo, peak), (peak, hi)):
                if bb - aa > 0:
                    mid, half = 0.5 * (aa + bb), 0.5 * (bb - aa)
                    pts.extend(mid + half * XN)
            return
        segs = sorted({lo, peak, hi} |
                      {float(np.log(n))
                       for n in range(max(n_lo, 2), n_hi + 1)
                       if lo < np.log(n) < hi})
        for p0, p1 in zip(segs, segs[1:]):
            if p1 - p0 > 0:
                mid, half = 0.5 * (p0 + p1), 0.5 * (p1 - p0)
                pts.extend(mid + half * XN)

    for k in range(n_elem):
        if k == 0:
            add_quad(0.0, h, 0.0)
        else:
            add_quad((k - 1) * h, (k + 1) * h, k * h)
    return np.array(pts)


def locate_zeros_theta(cp, x, h, theta, z_max=Z_MAX, n_grid=N_GRID):
    zg = np.linspace(1e-3, z_max, n_grid)
    E = np.exp(1j * np.outer(zg, x))
    V = E16.hat_FT(zg, h) * (E @ cp)
    f = np.exp(-0.5j * theta) * (zg - 1j) * V
    g = f.real

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

    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 main() -> int:
    if JSON.exists() and "--force" not in sys.argv:
        print(f"cached: {JSON} (use --force to recompute)")
        return 0
    t0 = time.time()

    print("backend: load E-022 cache ...", flush=True)
    tq = np.concatenate([collect_t_points(a, H) for a in A_LIST])
    be = PrimeBackendV2(tq)
    be.load_cache(DATA / "E-022-backend-cache.npz")
    E16._BUILD.clear()
    E16.prime_sum_vec = be.prime_sum

    mp.mp.dps = 30
    gam = np.array([float(mp.zetazero(k).imag) for k in range(1, 201)])
    gam = gam[gam <= Z_METRIC]

    rows = []
    report = {"per_a_theta": {}}
    v1_ok = v3_ok = True
    v2 = {}
    for a in A_LIST:
        ta = time.time()
        x, h, Q, M, b = E16.build(a, H)
        n = len(x)
        cp, _ = E16.solve_v(Q, M, b[+1.0], LAM, n)
        # Toeplitz bordered solver for weights (theta-independent K)
        mc = np.zeros(n)
        mc[0] = 2 * h / 3
        mc[1] = h / 6
        tc = Q[:, 0] - LAM * mc
        u1 = scipy.linalg.solve_toeplitz((tc, tc), np.ones(n))
        s1 = u1.sum()

        def K1(z):
            bz = E16.hat_FT(np.array([z]), h)[0] * np.exp(-1j * z * x)
            u0 = scipy.linalg.solve_toeplitz((tc, tc), bz)
            v = u0 - (u0.sum() / s1) * u1
            return float(np.real(np.conj(bz) @ v))

        for th in THETAS:
            zeros = locate_zeros_theta(cp, x, h, th)
            lat = a * Z_MAX / np.pi
            if abs(len(zeros) - lat) > 2:
                v1_ok = False
            zm = zeros[zeros <= Z_METRIC]
            ws = np.array([1.0 / K1(z) for z in zm])
            if np.any(ws <= 0):
                v3_ok = False
            tot = float(ws.sum())
            idx = np.clip(np.searchsorted(gam, zm), 1, len(gam) - 1)
            d = np.minimum(np.abs(zm - gam[idx - 1]),
                           np.abs(zm - gam[idx]))
            m01 = float(ws[d <= 0.1].sum())
            m005 = float(ws[d <= 0.05].sum())
            # valley atoms = nearest to each gamma; plateau = rest
            near_idx = np.array([np.argmin(np.abs(zm - g)) for g in gam])
            valley_mass = ws[near_idx]
            mask_pl = np.ones(len(zm), bool)
            mask_pl[near_idx] = False
            pl = ws[mask_pl]
            d_eff = float(np.log(valley_mass.mean() / pl.mean()))
            key = f"a{a:g}_th{th / np.pi:.4f}pi"
            report["per_a_theta"][key] = {
                "theta_over_pi": round(th / np.pi, 4),
                "n_zeros": int(len(zeros)),
                "z1_times_a": float(zeros[0] * a),
                "mass_total": tot,
                "mass_pm0.1": m01, "mass_pm0.05": m005,
                "residual": tot - float(valley_mass.sum()),
                "valley_mass_mean": float(valley_mass.mean()),
                "plateau_weight_mean": float(pl.mean()),
                "Delta_eff": d_eff,
            }
            for k, (zz, ww) in enumerate(zip(zm, ws), 1):
                rows.append((a, th / np.pi, k, zz, ww))
        print(f"a={a:g} done ({time.time() - ta:.0f}s)", flush=True)

    # V2: theta=pi cross-check vs E-022
    e022 = report["per_a_theta"]["a12_th1.0000pi"]
    v2 = {"z1_times_a_ok": bool(abs(e022["z1_times_a"] - 4.4953) < 0.05)}
    # V4: theta-spread per a
    v4 = {}
    for a in A_LIST:
        vals = [report["per_a_theta"][f"a{a:g}_th{th / np.pi:.4f}pi"]
                for th in THETAS]
        res = np.array([v["residual"] for v in vals])
        m01 = np.array([v["mass_pm0.1"] for v in vals])
        z1a = np.array([v["z1_times_a"] for v in vals])
        v4[f"a{a:g}"] = {
            "residual_minmax": [float(res.min()), float(res.max())],
            "residual_spread_pct": float(100 * res.std() / res.mean()),
            "mass_pm01_spread_pct": float(100 * m01.std() / m01.mean()),
            "z1_times_a_range": [float(z1a.min()), float(z1a.max())],
        }
        print(f"a={a:g}: residual spread {v4[f'a{a:g}']['residual_spread_pct']:.2f}%, "
              f"mass01 spread {v4[f'a{a:g}']['mass_pm01_spread_pct']:.2f}%, "
              f"z1a in [{z1a.min():.3f},{z1a.max():.3f}]", flush=True)

    checks = {"V1_lattice_all_theta": v1_ok,
              "V2_theta_pi_matches_E022": v2["z1_times_a_ok"],
              "V3_weights_positive": v3_ok}

    import csv as csvmod
    with open(CSV, "w", newline="") as f:
        w = csvmod.writer(f)
        w.writerow(["a", "theta_over_pi", "k", "z_k", "w_k"])
        for a, thp, k, zz, ww in rows:
            w.writerow([f"{a:g}", f"{thp:.4f}", k, f"{zz:.12f}",
                        f"{ww:.10e}"])

    meta = {
        "experiment": "E-024",
        "task": "2.12: theta-flow numerics (theta-independence test)",
        "script": "research/numerics/scripts/E-024-theta-sweep.py",
        "parameters": {"a_list": A_LIST,
                       "thetas_over_pi": [round(t / np.pi, 4)
                                          for t in THETAS],
                       "z_max": Z_MAX, "z_metric": Z_METRIC},
        "checks": checks,
        "key_values": {**report["per_a_theta"], "V4_theta_spread": v4},
        "elapsed_seconds": round(time.time() - t0, 1),
        "timestamp_utc": datetime.now(timezone.utc).isoformat(),
    }
    JSON.write_text(json.dumps(meta, indent=2))
    print(f"wrote {CSV.name}, {JSON.name}; elapsed "
          f"{meta['elapsed_seconds']}s", flush=True)
    return 0 if all(checks.values()) else 1


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