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 6 of 12 · 500/page · 5600 rows next →
# seriesvariantayresidresid_shifted
2502 rho_analytic - 4.0 10.100000 1.2714496319e+00
2503 rho_analytic - 4.0 10.200000 1.2714416137e+00
2504 rho_analytic - 4.0 10.300000 1.2714340281e+00
2505 rho_analytic - 4.0 10.400000 1.2714268562e+00
2506 rho_analytic - 4.0 10.500000 1.2714200798e+00
2507 rho_analytic - 4.0 10.600000 1.2714136819e+00
2508 rho_analytic - 4.0 10.700000 1.2714076460e+00
2509 rho_analytic - 4.0 10.800000 1.2714019566e+00
2510 rho_analytic - 4.0 10.900000 1.2713965988e+00
2511 rho_analytic - 4.0 11.000000 1.2713915585e+00
2512 rho_analytic - 4.0 11.100000 1.2713868222e+00
2513 rho_analytic - 4.0 11.200000 1.2713823770e+00
2514 rho_analytic - 4.0 11.300000 1.2713782107e+00
2515 rho_analytic - 4.0 11.400000 1.2713743114e+00
2516 rho_analytic - 4.0 11.500000 1.2713706681e+00
2517 rho_analytic - 4.0 11.600000 1.2713672700e+00
2518 rho_analytic - 4.0 11.700000 1.2713641069e+00
2519 rho_analytic - 4.0 11.800000 1.2713611691e+00
2520 rho_analytic - 4.0 11.900000 1.2713584473e+00
2521 rho_analytic - 4.0 12.000000 1.2713559325e+00
2522 rho_analytic - 4.0 12.100000 1.2713536161e+00
2523 rho_analytic - 4.0 12.200000 1.2713514902e+00
2524 rho_analytic - 4.0 12.300000 1.2713495468e+00
2525 rho_analytic - 4.0 12.400000 1.2713477785e+00
2526 rho_analytic - 4.0 12.500000 1.2713461782e+00
2527 rho_analytic - 4.0 12.600000 1.2713447390e+00
2528 rho_analytic - 4.0 12.700000 1.2713434544e+00
2529 rho_analytic - 4.0 12.800000 1.2713423180e+00
2530 rho_analytic - 4.0 12.900000 1.2713413240e+00
2531 rho_analytic - 4.0 13.000000 1.2713404665e+00
2532 rho_analytic - 4.0 13.100000 1.2713397401e+00
2533 rho_analytic - 4.0 13.200000 1.2713391394e+00
2534 rho_analytic - 4.0 13.300000 1.2713386593e+00
2535 rho_analytic - 4.0 13.400000 1.2713382951e+00
2536 rho_analytic - 4.0 13.500000 1.2713380421e+00
2537 rho_analytic - 4.0 13.600000 1.2713378957e+00
2538 rho_analytic - 4.0 13.700000 1.2713378517e+00
2539 rho_analytic - 4.0 13.800000 1.2713379060e+00
2540 rho_analytic - 4.0 13.900000 1.2713380546e+00
2541 rho_analytic - 4.0 14.000000 1.2713382938e+00
2542 rho_analytic - 4.0 14.100000 1.2713386199e+00
2543 rho_analytic - 4.0 14.200000 1.2713390294e+00
2544 rho_analytic - 4.0 14.300000 1.2713395189e+00
2545 rho_analytic - 4.0 14.400000 1.2713400852e+00
2546 rho_analytic - 4.0 14.500000 1.2713407253e+00
2547 rho_analytic - 4.0 14.600000 1.2713414361e+00
2548 rho_analytic - 4.0 14.700000 1.2713422148e+00
2549 rho_analytic - 4.0 14.800000 1.2713430587e+00
2550 rho_analytic - 4.0 14.900000 1.2713439650e+00
2551 rho_analytic - 4.0 15.000000 1.2713449313e+00
2552 rho_analytic - 4.0 15.100000 1.2713459551e+00
2553 rho_analytic - 4.0 15.200000 1.2713470341e+00
2554 rho_analytic - 4.0 15.300000 1.2713481659e+00
2555 rho_analytic - 4.0 15.400000 1.2713493485e+00
2556 rho_analytic - 4.0 15.500000 1.2713505798e+00
2557 rho_analytic - 4.0 15.600000 1.2713518576e+00
2558 rho_analytic - 4.0 15.700000 1.2713531802e+00
2559 rho_analytic - 4.0 15.800000 1.2713545456e+00
2560 rho_analytic - 4.0 15.900000 1.2713559519e+00
2561 rho_analytic - 4.0 16.000000 1.2713573976e+00
2562 rho_analytic - 4.0 16.100000 1.2713588810e+00
2563 rho_analytic - 4.0 16.200000 1.2713604003e+00
2564 rho_analytic - 4.0 16.300000 1.2713619542e+00
2565 rho_analytic - 4.0 16.400000 1.2713635410e+00
2566 rho_analytic - 4.0 16.500000 1.2713651594e+00
2567 rho_analytic - 4.0 16.600000 1.2713668080e+00
2568 rho_analytic - 4.0 16.700000 1.2713684855e+00
2569 rho_analytic - 4.0 16.800000 1.2713701905e+00
2570 rho_analytic - 4.0 16.900000 1.2713719219e+00
2571 rho_analytic - 4.0 17.000000 1.2713736784e+00
2572 rho_analytic - 4.0 17.100000 1.2713754590e+00
2573 rho_analytic - 4.0 17.200000 1.2713772624e+00
2574 rho_analytic - 4.0 17.300000 1.2713790877e+00
2575 rho_analytic - 4.0 17.400000 1.2713809337e+00
2576 rho_analytic - 4.0 17.500000 1.2713827996e+00
2577 rho_analytic - 4.0 17.600000 1.2713846842e+00
2578 rho_analytic - 4.0 17.700000 1.2713865869e+00
2579 rho_analytic - 4.0 17.800000 1.2713885065e+00
2580 rho_analytic - 4.0 17.900000 1.2713904423e+00
2581 rho_analytic - 4.0 18.000000 1.2713923935e+00
2582 rho_analytic - 4.0 18.100000 1.2713943592e+00
2583 rho_analytic - 4.0 18.200000 1.2713963386e+00
2584 rho_analytic - 4.0 18.300000 1.2713983311e+00
2585 rho_analytic - 4.0 18.400000 1.2714003358e+00
2586 rho_analytic - 4.0 18.500000 1.2714023522e+00
2587 rho_analytic - 4.0 18.600000 1.2714043795e+00
2588 rho_analytic - 4.0 18.700000 1.2714064170e+00
2589 rho_analytic - 4.0 18.800000 1.2714084643e+00
2590 rho_analytic - 4.0 18.900000 1.2714105205e+00
2591 rho_analytic - 4.0 19.000000 1.2714125852e+00
2592 rho_analytic - 4.0 19.100000 1.2714146578e+00
2593 rho_analytic - 4.0 19.200000 1.2714167378e+00
2594 rho_analytic - 4.0 19.300000 1.2714188246e+00
2595 rho_analytic - 4.0 19.400000 1.2714209177e+00
2596 rho_analytic - 4.0 19.500000 1.2714230166e+00
2597 rho_analytic - 4.0 19.600000 1.2714251208e+00
2598 rho_analytic - 4.0 19.700000 1.2714272300e+00
2599 rho_analytic - 4.0 19.800000 1.2714293436e+00
2600 rho_analytic - 4.0 19.900000 1.2714314612e+00
2601 rho_analytic - 4.0 20.000000 1.2714335823e+00
2602 rho_analytic - 4.0 20.100000 1.2714357067e+00
2603 rho_analytic - 4.0 20.200000 1.2714378339e+00
2604 rho_analytic - 4.0 20.300000 1.2714399635e+00
2605 rho_analytic - 4.0 20.400000 1.2714420952e+00
2606 rho_analytic - 4.0 20.500000 1.2714442287e+00
2607 rho_analytic - 4.0 20.600000 1.2714463635e+00
2608 rho_analytic - 4.0 20.700000 1.2714484993e+00
2609 rho_analytic - 4.0 20.800000 1.2714506359e+00
2610 rho_analytic - 4.0 20.900000 1.2714527729e+00
2611 rho_analytic - 4.0 21.000000 1.2714549101e+00
2612 rho_analytic - 4.0 21.100000 1.2714570471e+00
2613 rho_analytic - 4.0 21.200000 1.2714591837e+00
2614 rho_analytic - 4.0 21.300000 1.2714613196e+00
2615 rho_analytic - 4.0 21.400000 1.2714634546e+00
2616 rho_analytic - 4.0 21.500000 1.2714655883e+00
2617 rho_analytic - 4.0 21.600000 1.2714677206e+00
2618 rho_analytic - 4.0 21.700000 1.2714698513e+00
2619 rho_analytic - 4.0 21.800000 1.2714719800e+00
2620 rho_analytic - 4.0 21.900000 1.2714741066e+00
2621 rho_analytic - 4.0 22.000000 1.2714762309e+00
2622 rho_analytic - 4.0 22.100000 1.2714783527e+00
2623 rho_analytic - 4.0 22.200000 1.2714804717e+00
2624 rho_analytic - 4.0 22.300000 1.2714825878e+00
2625 rho_analytic - 4.0 22.400000 1.2714847009e+00
2626 rho_analytic - 4.0 22.500000 1.2714868106e+00
2627 rho_analytic - 4.0 22.600000 1.2714889169e+00
2628 rho_analytic - 4.0 22.700000 1.2714910196e+00
2629 rho_analytic - 4.0 22.800000 1.2714931185e+00
2630 rho_analytic - 4.0 22.900000 1.2714952134e+00
2631 rho_analytic - 4.0 23.000000 1.2714973043e+00
2632 rho_analytic - 4.0 23.100000 1.2714993910e+00
2633 rho_analytic - 4.0 23.200000 1.2715014733e+00
2634 rho_analytic - 4.0 23.300000 1.2715035511e+00
2635 rho_analytic - 4.0 23.400000 1.2715056243e+00
2636 rho_analytic - 4.0 23.500000 1.2715076928e+00
2637 rho_analytic - 4.0 23.600000 1.2715097563e+00
2638 rho_analytic - 4.0 23.700000 1.2715118149e+00
2639 rho_analytic - 4.0 23.800000 1.2715138684e+00
2640 rho_analytic - 4.0 23.900000 1.2715159167e+00
2641 rho_analytic - 4.0 24.000000 1.2715179597e+00
2642 rho_analytic - 4.0 24.100000 1.2715199972e+00
2643 rho_analytic - 4.0 24.200000 1.2715220293e+00
2644 rho_analytic - 4.0 24.300000 1.2715240557e+00
2645 rho_analytic - 4.0 24.400000 1.2715260765e+00
2646 rho_analytic - 4.0 24.500000 1.2715280915e+00
2647 rho_analytic - 4.0 24.600000 1.2715301006e+00
2648 rho_analytic - 4.0 24.700000 1.2715321038e+00
2649 rho_analytic - 4.0 24.800000 1.2715341010e+00
2650 rho_analytic - 4.0 24.900000 1.2715360920e+00
2651 rho_analytic - 4.0 25.000000 1.2715380770e+00
2652 rho_analytic - 4.0 25.100000 1.2715400557e+00
2653 rho_analytic - 4.0 25.200000 1.2715420281e+00
2654 rho_analytic - 4.0 25.300000 1.2715439941e+00
2655 rho_analytic - 4.0 25.400000 1.2715459538e+00
2656 rho_analytic - 4.0 25.500000 1.2715479069e+00
2657 rho_analytic - 4.0 25.600000 1.2715498536e+00
2658 rho_analytic - 4.0 25.700000 1.2715517936e+00
2659 rho_analytic - 4.0 25.800000 1.2715537271e+00
2660 rho_analytic - 4.0 25.900000 1.2715556538e+00
2661 rho_analytic - 4.0 26.000000 1.2715575739e+00
2662 rho_analytic - 4.0 26.100000 1.2715594871e+00
2663 rho_analytic - 4.0 26.200000 1.2715613936e+00
2664 rho_analytic - 4.0 26.300000 1.2715632932e+00
2665 rho_analytic - 4.0 26.400000 1.2715651859e+00
2666 rho_analytic - 4.0 26.500000 1.2715670718e+00
2667 rho_analytic - 4.0 26.600000 1.2715689506e+00
2668 rho_analytic - 4.0 26.700000 1.2715708225e+00
2669 rho_analytic - 4.0 26.800000 1.2715726873e+00
2670 rho_analytic - 4.0 26.900000 1.2715745452e+00
2671 rho_analytic - 4.0 27.000000 1.2715763959e+00
2672 rho_analytic - 4.0 27.100000 1.2715782396e+00
2673 rho_analytic - 4.0 27.200000 1.2715800761e+00
2674 rho_analytic - 4.0 27.300000 1.2715819055e+00
2675 rho_analytic - 4.0 27.400000 1.2715837277e+00
2676 rho_analytic - 4.0 27.500000 1.2715855427e+00
2677 rho_analytic - 4.0 27.600000 1.2715873506e+00
2678 rho_analytic - 4.0 27.700000 1.2715891512e+00
2679 rho_analytic - 4.0 27.800000 1.2715909446e+00
2680 rho_analytic - 4.0 27.900000 1.2715927308e+00
2681 rho_analytic - 4.0 28.000000 1.2715945097e+00
2682 rho_analytic - 4.0 28.100000 1.2715962813e+00
2683 rho_analytic - 4.0 28.200000 1.2715980457e+00
2684 rho_analytic - 4.0 28.300000 1.2715998028e+00
2685 rho_analytic - 4.0 28.400000 1.2716015526e+00
2686 rho_analytic - 4.0 28.500000 1.2716032950e+00
2687 rho_analytic - 4.0 28.600000 1.2716050302e+00
2688 rho_analytic - 4.0 28.700000 1.2716067581e+00
2689 rho_analytic - 4.0 28.800000 1.2716084786e+00
2690 rho_analytic - 4.0 28.900000 1.2716101919e+00
2691 rho_analytic - 4.0 29.000000 1.2716118978e+00
2692 rho_analytic - 4.0 29.100000 1.2716135964e+00
2693 rho_analytic - 4.0 29.200000 1.2716152877e+00
2694 rho_analytic - 4.0 29.300000 1.2716169717e+00
2695 rho_analytic - 4.0 29.400000 1.2716186483e+00
2696 rho_analytic - 4.0 29.500000 1.2716203177e+00
2697 rho_analytic - 4.0 29.600000 1.2716219797e+00
2698 rho_analytic - 4.0 29.700000 1.2716236345e+00
2699 rho_analytic - 4.0 29.800000 1.2716252819e+00
2700 rho_analytic - 4.0 29.900000 1.2716269220e+00
2701 rho_analytic - 4.0 30.000000 1.2716285549e+00
2702 rho_analytic - 4.0 30.100000 1.2716301805e+00
2703 rho_analytic - 4.0 30.200000 1.2716317988e+00
2704 rho_analytic - 4.0 30.300000 1.2716334099e+00
2705 rho_analytic - 4.0 30.400000 1.2716350137e+00
2706 rho_analytic - 4.0 30.500000 1.2716366102e+00
2707 rho_analytic - 4.0 30.600000 1.2716381996e+00
2708 rho_analytic - 4.0 30.700000 1.2716397817e+00
2709 rho_analytic - 4.0 30.800000 1.2716413566e+00
2710 rho_analytic - 4.0 30.900000 1.2716429243e+00
2711 rho_analytic - 4.0 31.000000 1.2716444849e+00
2712 rho_analytic - 4.0 31.100000 1.2716460383e+00
2713 rho_analytic - 4.0 31.200000 1.2716475845e+00
2714 rho_analytic - 4.0 31.300000 1.2716491236e+00
2715 rho_analytic - 4.0 31.400000 1.2716506555e+00
2716 rho_analytic - 4.0 31.500000 1.2716521804e+00
2717 rho_analytic - 4.0 31.600000 1.2716536982e+00
2718 rho_analytic - 4.0 31.700000 1.2716552089e+00
2719 rho_analytic - 4.0 31.800000 1.2716567125e+00
2720 rho_analytic - 4.0 31.900000 1.2716582091e+00
2721 rho_analytic - 4.0 32.000000 1.2716596987e+00
2722 rho_analytic - 4.0 32.100000 1.2716611812e+00
2723 rho_analytic - 4.0 32.200000 1.2716626568e+00
2724 rho_analytic - 4.0 32.300000 1.2716641254e+00
2725 rho_analytic - 4.0 32.400000 1.2716655871e+00
2726 rho_analytic - 4.0 32.500000 1.2716670418e+00
2727 rho_analytic - 4.0 32.600000 1.2716684896e+00
2728 rho_analytic - 4.0 32.700000 1.2716699306e+00
2729 rho_analytic - 4.0 32.800000 1.2716713647e+00
2730 rho_analytic - 4.0 32.900000 1.2716727919e+00
2731 rho_analytic - 4.0 33.000000 1.2716742123e+00
2732 rho_analytic - 4.0 33.100000 1.2716756259e+00
2733 rho_analytic - 4.0 33.200000 1.2716770327e+00
2734 rho_analytic - 4.0 33.300000 1.2716784328e+00
2735 rho_analytic - 4.0 33.400000 1.2716798261e+00
2736 rho_analytic - 4.0 33.500000 1.2716812127e+00
2737 rho_analytic - 4.0 33.600000 1.2716825926e+00
2738 rho_analytic - 4.0 33.700000 1.2716839659e+00
2739 rho_analytic - 4.0 33.800000 1.2716853325e+00
2740 rho_analytic - 4.0 33.900000 1.2716866925e+00
2741 rho_analytic - 4.0 34.000000 1.2716880459e+00
2742 rho_analytic - 4.0 34.100000 1.2716893927e+00
2743 rho_analytic - 4.0 34.200000 1.2716907329e+00
2744 rho_analytic - 4.0 34.300000 1.2716920667e+00
2745 rho_analytic - 4.0 34.400000 1.2716933939e+00
2746 rho_analytic - 4.0 34.500000 1.2716947146e+00
2747 rho_analytic - 4.0 34.600000 1.2716960289e+00
2748 rho_analytic - 4.0 34.700000 1.2716973368e+00
2749 rho_analytic - 4.0 34.800000 1.2716986383e+00
2750 rho_analytic - 4.0 34.900000 1.2716999334e+00
2751 rho_analytic - 4.0 35.000000 1.2717012221e+00
2752 rho_analytic - 4.0 35.100000 1.2717025045e+00
2753 rho_analytic - 4.0 35.200000 1.2717037806e+00
2754 rho_analytic - 4.0 35.300000 1.2717050505e+00
2755 rho_analytic - 4.0 35.400000 1.2717063141e+00
2756 rho_analytic - 4.0 35.500000 1.2717075714e+00
2757 rho_analytic - 4.0 35.600000 1.2717088226e+00
2758 rho_analytic - 4.0 35.700000 1.2717100676e+00
2759 rho_analytic - 4.0 35.800000 1.2717113064e+00
2760 rho_analytic - 4.0 35.900000 1.2717125392e+00
2761 rho_analytic - 4.0 36.000000 1.2717137658e+00
2762 rho_analytic - 4.0 36.100000 1.2717149864e+00
2763 rho_analytic - 4.0 36.200000 1.2717162009e+00
2764 rho_analytic - 4.0 36.300000 1.2717174094e+00
2765 rho_analytic - 4.0 36.400000 1.2717186120e+00
2766 rho_analytic - 4.0 36.500000 1.2717198085e+00
2767 rho_analytic - 4.0 36.600000 1.2717209992e+00
2768 rho_analytic - 4.0 36.700000 1.2717221839e+00
2769 rho_analytic - 4.0 36.800000 1.2717233628e+00
2770 rho_analytic - 4.0 36.900000 1.2717245358e+00
2771 rho_analytic - 4.0 37.000000 1.2717257029e+00
2772 rho_analytic - 4.0 37.100000 1.2717268643e+00
2773 rho_analytic - 4.0 37.200000 1.2717280199e+00
2774 rho_analytic - 4.0 37.300000 1.2717291698e+00
2775 rho_analytic - 4.0 37.400000 1.2717303139e+00
2776 rho_analytic - 4.0 37.500000 1.2717314524e+00
2777 rho_analytic - 4.0 37.600000 1.2717325852e+00
2778 rho_analytic - 4.0 37.700000 1.2717337123e+00
2779 rho_analytic - 4.0 37.800000 1.2717348339e+00
2780 rho_analytic - 4.0 37.900000 1.2717359498e+00
2781 rho_analytic - 4.0 38.000000 1.2717370602e+00
2782 rho_analytic - 4.0 38.100000 1.2717381651e+00
2783 rho_analytic - 4.0 38.200000 1.2717392645e+00
2784 rho_analytic - 4.0 38.300000 1.2717403584e+00
2785 rho_analytic - 4.0 38.400000 1.2717414468e+00
2786 rho_analytic - 4.0 38.500000 1.2717425299e+00
2787 rho_analytic - 4.0 38.600000 1.2717436075e+00
2788 rho_analytic - 4.0 38.700000 1.2717446798e+00
2789 rho_analytic - 4.0 38.800000 1.2717457467e+00
2790 rho_analytic - 4.0 38.900000 1.2717468083e+00
2791 rho_analytic - 4.0 39.000000 1.2717478647e+00
2792 rho_analytic - 4.0 39.100000 1.2717489157e+00
2793 rho_analytic - 4.0 39.200000 1.2717499616e+00
2794 rho_analytic - 4.0 39.300000 1.2717510022e+00
2795 rho_analytic - 4.0 39.400000 1.2717520377e+00
2796 rho_analytic - 4.0 39.500000 1.2717530680e+00
2797 rho_analytic - 4.0 39.600000 1.2717540932e+00
2798 rho_analytic - 4.0 39.700000 1.2717551132e+00
2799 rho_analytic - 4.0 39.800000 1.2717561282e+00
2800 rho_analytic - 4.0 39.900000 1.2717571382e+00
2801 rho_analytic - 4.0 40.000000 1.2717581432e+00
2802 resid base 10.0 0.100000 6.3668051868e+00 9.7299587342e+00
2803 resid base 10.0 0.200000 3.1841787159e+00 6.5473322633e+00
2804 resid base 10.0 0.300000 2.1234830807e+00 5.4866366281e+00
2805 resid base 10.0 0.400000 1.5931688501e+00 4.9563223975e+00
2806 resid base 10.0 0.500000 1.2749261381e+00 4.6380796855e+00
2807 resid base 10.0 0.600000 1.0626516494e+00 4.4258051967e+00
2808 resid base 10.0 0.700000 9.1087254324e-01 4.2740260906e+00
2809 resid base 10.0 0.800000 7.9685239952e-01 4.1600059469e+00
2810 resid base 10.0 0.900000 7.0795987379e-01 4.0711134212e+00
2811 resid base 10.0 1.000000 6.3661615962e-01 3.9997697070e+00
2812 resid base 10.0 1.100000 5.7799838035e-01 3.9411519277e+00
2813 resid base 10.0 1.200000 5.2889128509e-01 3.8920448325e+00
2814 resid base 10.0 1.300000 4.8706893113e-01 3.8502224785e+00
2815 resid base 10.0 1.400000 4.5094135958e-01 3.8140949070e+00
2816 resid base 10.0 1.500000 4.1934260084e-01 3.7824961482e+00
2817 resid base 10.0 1.600000 3.9139817790e-01 3.7545517253e+00
2818 resid base 10.0 1.700000 3.6643937332e-01 3.7295929207e+00
2819 resid base 10.0 1.800000 3.4394607372e-01 3.7070996211e+00
2820 resid base 10.0 1.900000 3.2350766355e-01 3.6866612109e+00
2821 resid base 10.0 2.000000 3.0479565059e-01 3.6679491980e+00
2822 resid base 10.0 2.100000 2.8754411281e-01 3.6506976602e+00
2823 resid base 10.0 2.200000 2.7153547790e-01 3.6346890253e+00
2824 resid base 10.0 2.300000 2.5659001244e-01 3.6197435598e+00
2825 resid base 10.0 2.400000 2.4255793885e-01 3.6057114862e+00
2826 resid base 10.0 2.500000 2.2931344419e-01 3.5924669916e+00
2827 resid base 10.0 2.600000 2.1675007164e-01 3.5799036190e+00
2828 resid base 10.0 2.700000 2.0477713599e-01 3.5679306834e+00
2829 resid base 10.0 2.800000 1.9331690734e-01 3.5564704547e+00
2830 resid base 10.0 2.900000 1.8230237741e-01 3.5454559248e+00
2831 resid base 10.0 3.000000 1.7167547259e-01 3.5348290200e+00
2832 resid base 10.0 3.100000 1.6138561293e-01 3.5245391603e+00
2833 resid base 10.0 3.200000 1.5138854123e-01 3.5145420886e+00
2834 resid base 10.0 3.300000 1.4164536506e-01 3.5047989124e+00
2835 resid base 10.0 3.400000 1.3212176784e-01 3.4952753152e+00
2836 resid base 10.0 3.500000 1.2278735513e-01 3.4859409025e+00
2837 resid base 10.0 3.600000 1.1361510995e-01 3.4767686573e+00
2838 resid base 10.0 3.700000 1.0458093631e-01 3.4677344837e+00
2839 resid base 10.0 3.800000 9.5663274921e-02 3.4588168223e+00
2840 resid base 10.0 3.900000 8.6842777985e-02 3.4499963254e+00
2841 resid base 10.0 4.000000 7.8102032735e-02 3.4412555801e+00
2842 resid base 10.0 4.100000 6.9425325491e-02 3.4325788729e+00
2843 resid base 10.0 4.200000 6.0798439382e-02 3.4239519868e+00
2844 resid base 10.0 4.300000 5.2208480308e-02 3.4153620277e+00
2845 resid base 10.0 4.400000 4.3643726636e-02 3.4067972740e+00
2846 resid base 10.0 4.500000 3.5093498925e-02 3.3982470463e+00
2847 resid base 10.0 4.600000 2.6548046658e-02 3.3897015940e+00
2848 resid base 10.0 4.700000 1.7998449421e-02 3.3811519968e+00
2849 resid base 10.0 4.800000 9.4365304450e-03 3.3725900778e+00
2850 resid base 10.0 4.900000 8.5478072599e-04 3.3640083281e+00
2851 resid base 10.0 5.000000 -7.7537077433e-03 3.3553998396e+00
2852 resid base 10.0 5.100000 -1.6395300889e-02 3.3467582465e+00
2853 resid base 10.0 5.200000 -2.5075874676e-02 3.3380776727e+00
2854 resid base 10.0 5.300000 -3.3800861319e-02 3.3293526861e+00
2855 resid base 10.0 5.400000 -4.2575290374e-02 3.3205782570e+00
2856 resid base 10.0 5.500000 -5.1403825328e-02 3.3117497221e+00
2857 resid base 10.0 5.600000 -6.0290796288e-02 3.3028627511e+00
2858 resid base 10.0 5.700000 -6.9240229212e-02 3.2939133182e+00
2859 resid base 10.0 5.800000 -7.8255872128e-02 3.2848976753e+00
2860 resid base 10.0 5.900000 -8.7341218682e-02 3.2758123287e+00
2861 resid base 10.0 6.000000 -9.6499529330e-02 3.2666540181e+00
2862 resid base 10.0 6.100000 -1.0573385045e-01 3.2574196969e+00
2863 resid base 10.0 6.200000 -1.1504703158e-01 3.2481065158e+00
2864 resid base 10.0 6.300000 -1.2444174110e-01 3.2387118063e+00
2865 resid base 10.0 6.400000 -1.3392048028e-01 3.2292330671e+00
2866 resid base 10.0 6.500000 -1.4348559623e-01 3.2196679512e+00
2867 resid base 10.0 6.600000 -1.5313929349e-01 3.2100142539e+00
2868 resid base 10.0 6.700000 -1.6288364474e-01 3.2002699026e+00
2869 resid base 10.0 6.800000 -1.7272060044e-01 3.1904329469e+00
2870 resid base 10.0 6.900000 -1.8265199770e-01 3.1805015497e+00
2871 resid base 10.0 7.000000 -1.9267956835e-01 3.1704739790e+00
2872 resid base 10.0 7.100000 -2.0280494641e-01 3.1603486010e+00
2873 resid base 10.0 7.200000 -2.1302967480e-01 3.1501238726e+00
2874 resid base 10.0 7.300000 -2.2335521164e-01 3.1397983357e+00
2875 resid base 10.0 7.400000 -2.3378293594e-01 3.1293706114e+00
2876 resid base 10.0 7.500000 -2.4431415286e-01 3.1188393945e+00
2877 resid base 10.0 7.600000 -2.5495009862e-01 3.1082034488e+00
2878 resid base 10.0 7.700000 -2.6569194492e-01 3.0974616025e+00
2879 resid base 10.0 7.800000 -2.7654080307e-01 3.0866127443e+00
2880 resid base 10.0 7.900000 -2.8749772786e-01 3.0756558195e+00
2881 resid base 10.0 8.000000 -2.9856372105e-01 3.0645898263e+00
2882 resid base 10.0 8.100000 -3.0973973461e-01 3.0534138128e+00
2883 resid base 10.0 8.200000 -3.2102667384e-01 3.0421268735e+00
2884 resid base 10.0 8.300000 -3.3242540008e-01 3.0307281473e+00
2885 resid base 10.0 8.400000 -3.4393673341e-01 3.0192168140e+00
2886 resid base 10.0 8.500000 -3.5556145500e-01 3.0075920924e+00
2887 resid base 10.0 8.600000 -3.6730030942e-01 2.9958532380e+00
2888 resid base 10.0 8.700000 -3.7915400672e-01 2.9839995407e+00
2889 resid base 10.0 8.800000 -3.9112322438e-01 2.9720303230e+00
2890 resid base 10.0 8.900000 -4.0320860915e-01 2.9599449382e+00
2891 resid base 10.0 9.000000 -4.1541077875e-01 2.9477427686e+00
2892 resid base 10.0 9.100000 -4.2773032347e-01 2.9354232239e+00
2893 resid base 10.0 9.200000 -4.4016780763e-01 2.9229857398e+00
2894 resid base 10.0 9.300000 -4.5272377102e-01 2.9104297764e+00
2895 resid base 10.0 9.400000 -4.6539873015e-01 2.8977548172e+00
2896 resid base 10.0 9.500000 -4.7819317950e-01 2.8849603679e+00
2897 resid base 10.0 9.600000 -4.9110759267e-01 2.8720459547e+00
2898 resid base 10.0 9.700000 -5.0414242344e-01 2.8590111239e+00
2899 resid base 10.0 9.800000 -5.1729810677e-01 2.8458554406e+00
2900 resid base 10.0 9.900000 -5.3057505978e-01 2.8325784876e+00
2901 resid base 10.0 10.000000 -5.4397368260e-01 2.8191798648e+00
2902 resid base 10.0 10.100000 -5.5749435924e-01 2.8056591882e+00
2903 resid base 10.0 10.200000 -5.7113745834e-01 2.7920160890e+00
2904 resid base 10.0 10.300000 -5.8490333398e-01 2.7782502134e+00
2905 resid base 10.0 10.400000 -5.9879232629e-01 2.7643612211e+00
2906 resid base 10.0 10.500000 -6.1280476219e-01 2.7503487852e+00
2907 resid base 10.0 10.600000 -6.2694095594e-01 2.7362125914e+00
2908 resid base 10.0 10.700000 -6.4120120980e-01 2.7219523376e+00
2909 resid base 10.0 10.800000 -6.5558581452e-01 2.7075677329e+00
2910 resid base 10.0 10.900000 -6.7009504991e-01 2.6930584975e+00
2911 resid base 10.0 11.000000 -6.8472918532e-01 2.6784243621e+00
2912 resid base 10.0 11.100000 -6.9948848010e-01 2.6636650673e+00
2913 resid base 10.0 11.200000 -7.1437318403e-01 2.6487803634e+00
2914 resid base 10.0 11.300000 -7.2938353779e-01 2.6337700096e+00
2915 resid base 10.0 11.400000 -7.4451977332e-01 2.6186337741e+00
2916 resid base 10.0 11.500000 -7.5978211419e-01 2.6033714332e+00
2917 resid base 10.0 11.600000 -7.7517077600e-01 2.5879827714e+00
2918 resid base 10.0 11.700000 -7.9068596665e-01 2.5724675807e+00
2919 resid base 10.0 11.800000 -8.0632788675e-01 2.5568256606e+00
2920 resid base 10.0 11.900000 -8.2209672985e-01 2.5410568175e+00
2921 resid base 10.0 12.000000 -8.3799268276e-01 2.5251608646e+00
2922 resid base 10.0 12.100000 -8.5401592584e-01 2.5091376215e+00
2923 resid base 10.0 12.200000 -8.7016663325e-01 2.4929869141e+00
2924 resid base 10.0 12.300000 -8.8644497317e-01 2.4767085742e+00
2925 resid base 10.0 12.400000 -9.0285110810e-01 2.4603024393e+00
2926 resid base 10.0 12.500000 -9.1938519504e-01 2.4437683523e+00
2927 resid base 10.0 12.600000 -9.3604738570e-01 2.4271061617e+00
2928 resid base 10.0 12.700000 -9.5283782675e-01 2.4103157206e+00
2929 resid base 10.0 12.800000 -9.6975665998e-01 2.3933968874e+00
2930 resid base 10.0 12.900000 -9.8680402248e-01 2.3763495249e+00
2931 resid base 10.0 13.000000 -1.0039800468e+00 2.3591735005e+00
2932 resid base 10.0 13.100000 -1.0212848613e+00 2.3418686860e+00
2933 resid base 10.0 13.200000 -1.0387185900e+00 2.3244349573e+00
2934 resid base 10.0 13.300000 -1.0562813530e+00 2.3068721944e+00
2935 resid base 10.0 13.400000 -1.0739732664e+00 2.2891802810e+00
2936 resid base 10.0 13.500000 -1.0917944428e+00 2.2713591046e+00
2937 resid base 10.0 13.600000 -1.1097449909e+00 2.2534085565e+00
2938 resid base 10.0 13.700000 -1.1278250161e+00 2.2353285313e+00
2939 resid base 10.0 13.800000 -1.1460346206e+00 2.2171189268e+00
2940 resid base 10.0 13.900000 -1.1643739031e+00 2.1987796443e+00
2941 resid base 10.0 14.000000 -1.1828429594e+00 2.1803105880e+00
2942 resid base 10.0 14.100000 -1.2014418821e+00 2.1617116653e+00
2943 resid base 10.0 14.200000 -1.2201707611e+00 2.1429827863e+00
2944 resid base 10.0 14.300000 -1.2390296834e+00 2.1241238640e+00
2945 resid base 10.0 14.400000 -1.2580187332e+00 2.1051348142e+00
2946 resid base 10.0 14.500000 -1.2771379922e+00 2.0860155551e+00
2947 resid base 10.0 14.600000 -1.2963875397e+00 2.0667660077e+00
2948 resid base 10.0 14.700000 -1.3157674523e+00 2.0473860951e+00
2949 resid base 10.0 14.800000 -1.3352778044e+00 2.0278757430e+00
2950 resid base 10.0 14.900000 -1.3549186680e+00 2.0082348794e+00
2951 resid base 10.0 15.000000 -1.3746901130e+00 1.9884634344e+00
2952 resid base 10.0 15.100000 -1.3945922072e+00 1.9685613402e+00
2953 resid base 10.0 15.200000 -1.4146250161e+00 1.9485285313e+00
2954 resid base 10.0 15.300000 -1.4347886034e+00 1.9283649440e+00
2955 resid base 10.0 15.400000 -1.4550830308e+00 1.9080705166e+00
2956 resid base 10.0 15.500000 -1.4755083581e+00 1.8876451893e+00
2957 resid base 10.0 15.600000 -1.4960646433e+00 1.8670889041e+00
2958 resid base 10.0 15.700000 -1.5167519426e+00 1.8464016047e+00
2959 resid base 10.0 15.800000 -1.5375703106e+00 1.8255832367e+00
2960 resid base 10.0 15.900000 -1.5585198001e+00 1.8046337472e+00
2961 resid base 10.0 16.000000 -1.5796004624e+00 1.7835530850e+00
2962 resid base 10.0 16.100000 -1.6008123471e+00 1.7623412003e+00
2963 resid base 10.0 16.200000 -1.6221555023e+00 1.7409980450e+00
2964 resid base 10.0 16.300000 -1.6436299749e+00 1.7195235725e+00
2965 resid base 10.0 16.400000 -1.6652358100e+00 1.6979177374e+00
2966 resid base 10.0 16.500000 -1.6869730515e+00 1.6761804959e+00
2967 resid base 10.0 16.600000 -1.7088417420e+00 1.6543118054e+00
2968 resid base 10.0 16.700000 -1.7308419227e+00 1.6323116247e+00
2969 resid base 10.0 16.800000 -1.7529736335e+00 1.6101799139e+00
2970 resid base 10.0 16.900000 -1.7752369132e+00 1.5879166342e+00
2971 resid base 10.0 17.000000 -1.7976317992e+00 1.5655217482e+00
2972 resid base 10.0 17.100000 -1.8201583280e+00 1.5429952194e+00
2973 resid base 10.0 17.200000 -1.8428165347e+00 1.5203370127e+00
2974 resid base 10.0 17.300000 -1.8656064535e+00 1.4975470939e+00
2975 resid base 10.0 17.400000 -1.8885281173e+00 1.4746254301e+00
2976 resid base 10.0 17.500000 -1.9115815583e+00 1.4515719891e+00
2977 resid base 10.0 17.600000 -1.9347668073e+00 1.4283867401e+00
2978 resid base 10.0 17.700000 -1.9580838944e+00 1.4050696530e+00
2979 resid base 10.0 17.800000 -1.9815328485e+00 1.3816206989e+00
2980 resid base 10.0 17.900000 -2.0051136979e+00 1.3580398495e+00
2981 resid base 10.0 18.000000 -2.0288264696e+00 1.3343270778e+00
2982 resid base 10.0 18.100000 -2.0526711899e+00 1.3104823575e+00
2983 resid base 10.0 18.200000 -2.0766478843e+00 1.2865056631e+00
2984 resid base 10.0 18.300000 -2.1007565773e+00 1.2623969701e+00
2985 resid base 10.0 18.400000 -2.1249972927e+00 1.2381562547e+00
2986 resid base 10.0 18.500000 -2.1493700534e+00 1.2137834940e+00
2987 resid base 10.0 18.600000 -2.1738748817e+00 1.1892786657e+00
2988 resid base 10.0 18.700000 -2.1985117988e+00 1.1646417486e+00
2989 resid base 10.0 18.800000 -2.2232808255e+00 1.1398727219e+00
2990 resid base 10.0 18.900000 -2.2481819816e+00 1.1149715658e+00
2991 resid base 10.0 19.000000 -2.2732152865e+00 1.0899382609e+00
2992 resid base 10.0 19.100000 -2.2983807586e+00 1.0647727888e+00
2993 resid base 10.0 19.200000 -2.3236784159e+00 1.0394751315e+00
2994 resid base 10.0 19.300000 -2.3491082754e+00 1.0140452720e+00
2995 resid base 10.0 19.400000 -2.3746703537e+00 9.8848319364e-01
2996 resid base 10.0 19.500000 -2.4003646669e+00 9.6278888049e-01
2997 resid base 10.0 19.600000 -2.4261912301e+00 9.3696231725e-01
2998 resid base 10.0 19.700000 -2.4521500582e+00 9.1100348921e-01
2999 resid base 10.0 19.800000 -2.4782411651e+00 8.8491238225e-01
3000 resid base 10.0 19.900000 -2.5044645646e+00 8.5868898280e-01
3001 resid base 10.0 20.000000 -2.5308202695e+00 8.3233327788e-01

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())