=== diag_model_order
fun3.1      64   45     45                                       0.41     0.17     0.17
fun3.2      56   47     29                                       0.59     0.13     0.19
fun3.3      66   60     31                                       0.57     0.10     0.14
fun3.4      73   69     33                                       0.63     0.13     0.16
fun3.5      85   84     28                                       0.56     0.06     0.14
fun4.1      54   45     27                                       0.45     0.10     0.10
fun4.2      56   47     28                                       0.47     0.10     0.10
fun4.3      70   56     38                                       0.49     0.06     0.08
fun4.4      73   68     34                                       0.61     0.13     0.15
fun4.5      86   81     35                                       0.60     0.16     0.17
fun5.1      57   45     31                                       0.44     0.03     0.03
fun5.2      54   45     28                                       0.58     0.10     0.11
fun5.3      55   46     27                                       0.63     0.01     0.02
fun5.4      57   48     30                                       0.64     0.04     0.05
fun5.5      59   49     32                                       0.63     0.04     0.06
fun6.1      52   45     36                                       0.63     0.04     0.04
fun6.2      54   45     39                                       0.55     0.01     0.01
fun6.3      50   46     35                                       0.80     0.03     0.03
fun6.4      52   48     35                                       0.81     0.03     0.03
fun6.5      55   49     38                                       0.79     0.03     0.03
fun8.1      13   10      7                                       7.59    10.28    10.41
fun8.4      16   14     12                                       5.68     7.72    11.15
fun8.5      18   15     13                                       4.98     7.24     9.41
fun9.2      12    9      7                                       5.02     0.66     0.66
fun9.3      14   11     10                                       0.94     3.08     3.05
fun9.4      15   13      7                                       7.54     9.23     3.31
fun9.5      19   14      5                                       7.39     3.79     5.02

problems where we lose to Chandrupatla: 33, states 822

Q1  triples bracketing zero with exactly ONE negative Lagrange weight: 428/433  -> IDENTITY FAILS
    model defined and landing strictly inside the proven bracket: ours 86%, iqiR 77%, iqiB 77%

Q2/Q3  mean halvings per ONE evaluation from the same state (bracket | error), valid states only
  approach (error >= 1/2 bracket)  ours  1.32 |  3.39 (n=40)   iqiR  0.57 |  2.28 (n=6)   iqiB  0.53 |  2.14 (n=6)
  endgame                          ours  1.24 |  0.90 (n=669)   iqiR  0.83 |  1.27 (n=628)   iqiB  0.88 |  1.31 (n=631)

PAIRED on states where both are valid: mean (IQI - ours) bracket halvings
  iqiR: -0.34 per evaluation  (n=628)
  iqiB: -0.23 per evaluation  (n=631)
=== diag_model_order_checks
C1  Chandrupatla on the problems where we lose, by family
  family probs   ours     CH   gap  CH bisect share
  fun1       3    141     83    58              74%
  fun2       3     99     94     5              84%
  fun3       5    344    305    39              92%
  fun4       5    339    297    42              96%
  fun5       5    282    233    49             100%
  fun6       5    263    233    30             100%
  fun8       3     47     39     8              50%
  fun9       4     60     47    13              40%
  total gap on the losing problems: 244

C2  the 5 states breaking 'exactly one negative weight'
  fun6.1   f = [1.000e-175, -1.460e-160, -1.153e-150]   w = [1.000e+00, 0.000e+00, -0.000e+00]   zero weights: 2   min|f| 1.0e-175
  fun6.1   f = [4.634e-163, 1.000e-175, -1.460e-160]   w = [-0.000e+00, 1.000e+00, 0.000e+00]   zero weights: 2   min|f| 1.0e-175
  fun6.3   f = [-2.588e-172, 2.588e-153, 2.588e-153]   w = [1.000e+00, 0.000e+00, -0.000e+00]   zero weights: 2   min|f| 2.6e-172
  fun6.3   f = [6.667e-160, -2.588e-172, 2.588e-153]   w = [0.000e+00, 1.000e+00, -0.000e+00]   zero weights: 2   min|f| 2.6e-172
  fun6.3   f = [5.745e-156, 6.667e-160, -2.588e-172]   w = [-0.000e+00, 0.000e+00, 1.000e+00]   zero weights: 2   min|f| 2.6e-172
=== diag_rescore_aps
APS problems: 154

method                    strict solved/total    honest solved/total  disagreements
ours (shape)                153/154     2527         154/154     2337                 1
ours (dissimilar)           153/154     3123         154/154     2934                 1
ours (published proj)       153/154     2806         154/154     2634                 1
chandrupatla                153/154     2787         154/154     2595                 1
toms748                     153/154     2820         154/154     2636                 1
brent                       153/154     2889         154/154     2707                 1
itp                         153/154     3957         154/154     3767                 1
bisection                   153/154     7530         154/154     7338                 1

problems where the two criteria disagree (a root found, scored a failure):
   ours (shape)           aps.13.00    x=+0.008638489218 root=+0 f(x)=+0.000e+00 after 10 evals
   ours (dissimilar)      aps.13.00    x=+0.0248491106 root=+0 f(x)=+0.000e+00 after 11 evals
   ours (published proj)  aps.13.00    x=-0.01020453457 root=+0 f(x)=+0.000e+00 after 28 evals
   chandrupatla           aps.13.00    x=-0.008282706313 root=+0 f(x)=+0.000e+00 after 8 evals
   toms748                aps.13.00    x=-0.0002236853352 root=+0 f(x)=+0.000e+00 after 16 evals
   brent                  aps.13.00    x=+0.01542133486 root=+0 f(x)=+0.000e+00 after 18 evals
   itp                    aps.13.00    x=+0.03079215104 root=+0 f(x)=+0.000e+00 after 10 evals
   bisection              aps.13.00    x=+0.015625 root=+0 f(x)=+0.000e+00 after 8 evals

problems no method solved under the strict rule:
   aps.13.00    solved by 0 of 8 methods
   aps.01.00    solved by 8 of 8 methods
   aps.02.00    solved by 8 of 8 methods
   aps.02.01    solved by 8 of 8 methods
   aps.02.02    solved by 8 of 8 methods
   aps.02.03    solved by 8 of 8 methods

diagnosis of aps.13.00: bracket [-1, 4] declared root 0
   f(a)=-3.678794e-01  f(b)=+3.757652e+00  f(root)=+0.000000e+00
   f(root+1e-12) = +0.000000e+00   f(root-1e-12) = +0.000000e+00
   f(root+1e-09) = +0.000000e+00   f(root-1e-09) = +0.000000e+00
   f(root+1e-06) = +0.000000e+00   f(root-1e-06) = +0.000000e+00
   f(root+0.001) = +0.000000e+00   f(root-0.001) = +0.000000e+00
   ours returns x=+0.0248491106033 after 11 evals, f(x)=+0.000e+00, |x-root|=0.0248
   |f(x)| below smallest normal? True
=== diag_rescore_cha
method                   strict: solved/total   honest: solved/total  fun7 strict  fun7 honest
ours (shape)                 40/45     3108          45/45     2159           0/5        5/5
ours (dissimilar)            40/45     2683          45/45     1740           0/5        5/5
ours (published proj)        40/45     3220          45/45     2357           0/5        5/5
chandrupatla                 40/45     2441          45/45     1505           0/5        5/5
toms748                      40/45     4000          45/45     3088           0/5        5/5
brent                        38/45     4115          43/45     3238           0/5        5/5
itp                          40/45     2857          45/45     1907           0/5        5/5
bisection                    40/45     3090          45/45     2136           0/5        5/5

ranking under the HONEST criterion (fewest unsolved, then evaluations):
   chandrupatla           45/45   1505
   ours (dissimilar)      45/45   1740
   itp                    45/45   1907
   bisection              45/45   2136
   ours (shape)           45/45   2159
   ours (published proj)  45/45   2357
   toms748                45/45   3088
   brent                  43/45   3238

ranking under the STRICT criterion, for comparison:
   chandrupatla           40/45   2441
   ours (dissimilar)      40/45   2683
   itp                    40/45   2857
   bisection              40/45   3090
   ours (shape)           40/45   3108
   ours (published proj)  40/45   3220
   toms748                40/45   4000
   brent                  38/45   4115
=== diag_cha_gap
fun7.3          200    200     +0             43.3      9.1%    18.2% OURS FAIL
fun7.4          200    200     +0             45.6      0.0%     0.0% OURS FAIL
fun7.5          200    200     +0             46.6      0.0%     0.0% OURS FAIL
fun8.1           13     10     +3             40.9      0.0%    15.4%     
fun8.2           11     11     +0             41.4      0.0%    18.2%     
fun8.3           12     13     -1             43.0      0.0%    16.7%     
fun8.4           16     14     +2             44.6      0.0%    18.8%     
fun8.5           18     15     +3             46.2      0.0%    22.2%     
fun9.1            8      8     +0             39.9      0.0%     0.0%     
fun9.2           12      9     +3             41.4      8.3%     8.3%     
fun9.3           14     11     +3             43.0     14.3%    14.3%     
fun9.4           15     13     +2             44.6     13.3%     6.7%     
fun9.5           19     14     +5             46.2      5.3%     5.3%     

totals: ours 2683, Chandrupatla 2441, gap +242

per family (ours / theirs / gap):
   fun1     n=5     160 /    103  gap    +57
   fun5     n=5     282 /    233  gap    +49
   fun4     n=5     339 /    297  gap    +42
   fun3     n=5     344 /    305  gap    +39
   fun6     n=5     263 /    233  gap    +30
   fun9     n=5      68 /     55  gap    +13
   fun8     n=5      70 /     63  gap     +7
   fun2     n=5     157 /    152  gap     +5
   fun7     n=5    1000 /   1000  gap     +0

the five problems that cost us most:
   fun1.4     ours   59  CH   24  gap   +35
   fun3.1     ours   64  CH   45  gap   +19
   fun1.5     ours   63  CH   44  gap   +19
   fun4.3     ours   70  CH   56  gap   +14
   fun5.1     ours   57  CH   45  gap   +12

the five where we are ahead:
   fun1.1     ours    7  CH    8  gap    -1
   fun8.3     ours   12  CH   13  gap    -1
   fun1.2     ours   12  CH   12  gap    +0
   fun2.1     ours    9  CH    9  gap    +0
   fun2.5     ours   49  CH   49  gap    +0
=== diag_fun1_endgame
problem                      bracket       root      m  ours n    ord   CH n    ord
fun1.1    [         2,          3]     2.0946   1.00       7   4.28      8   1.57
          |f| at root+1e-5 = 1.116e-04, root+1e-2 = 1.122e-01, ours x=+2.094551482 ok=True
fun1.2    [         1,         10]     2.0946   1.00      12   1.87     12   1.81
          |f| at root+1e-5 = 1.116e-04, root+1e-2 = 1.122e-01, ours x=+2.094551482 ok=True
fun1.3    [         1,        100]     2.0946   1.00      19   2.46     15   1.67
          |f| at root+1e-5 = 1.116e-04, root+1e-2 = 1.122e-01, ours x=+2.094551482 ok=True
fun1.4    [    -1e+04,      1e+04]     2.0946   1.00      59   3.63     24   2.02
          |f| at root+1e-5 = 1.116e-04, root+1e-2 = 1.122e-01, ours x=+2.094551482 ok=True
fun1.5    [    -1e+10,      1e+10]     2.0946   1.00      63   1.85     44   2.20
          |f| at root+1e-5 = 1.116e-04, root+1e-2 = 1.122e-01, ours x=+2.094551482 ok=True
=== diag_who_caps_us
problem        width  bisect    CH     none     step  project     safe   credit
fun1.1             1      42     8        7        7        7        7       19
fun1.2             9      46    12       12       12       12       12       45
fun1.3            99      49    15       30       19       30       19       50
fun1.4         2e+04      57    24       46       59       46       59       58
fun1.5         2e+10      77    44       57       63       57       63       76
fun3.1             5      45    45       61       64       61       64       46
fun4.3         2e+04      57    56       73       70       73       70       58
fun5.1             5      45    45       68       57       68       57       46

legend: ✗ = the run did not reach the root (an unguarded method may not)
if guard='none' marches where 'safe'/'project' crawl, the GUARANTEE is the cap;
if 'none' crawls too, the STEP RULE is the cap.
=== diag_sign_flips
problem   method          evals  probes that shrank   share  halvings/eval
fun1.3    ours               19                  15   78.9%          2.498
fun1.3    chandrupatla       15                  13   86.7%          3.166
fun1.4    ours               59                  54   91.5%          0.930
fun1.4    chandrupatla       24                  21   87.5%          2.298
fun1.5    ours               63                  60   95.2%          1.179
fun1.5    chandrupatla       44                  41   93.2%          1.706
fun3.1    ours               64                  61   95.3%          0.672
fun3.1    chandrupatla       45                  43   95.6%          0.956
fun5.1    ours               57                  47   82.5%          0.741
fun5.1    chandrupatla       45                  43   95.6%          0.956
=== diag_fun7_root
fun7.1   declared root +0
   ours          returned x=+0.0248491106 after  11 evals  f(x)=+0.000e+00  |x-root|=0.0248  f IS ZERO THERE
   chandrupatla  returned x=-0.008282706313 after   8 evals  f(x)=-0.000e+00  |x-root|=0.00828  f IS ZERO THERE
   f is identically zero at least up to root + 0.0316
fun7.2   declared root +0
   ours          returned x=-0.02750094689 after  11 evals  f(x)=-0.000e+00  |x-root|=0.0275  f IS ZERO THERE
   chandrupatla  returned x=-0.00805799861 after   8 evals  f(x)=-0.000e+00  |x-root|=0.00806  f IS ZERO THERE
   f is identically zero at least up to root + 0.0316
fun7.3   declared root +0
   ours          returned x=+0.005929390833 after  11 evals  f(x)=+0.000e+00  |x-root|=0.00593  f IS ZERO THERE
   chandrupatla  returned x=-0.02563062503 after  11 evals  f(x)=-0.000e+00  |x-root|=0.0256  f IS ZERO THERE
   f is identically zero at least up to root + 0.0316
fun7.4   declared root +0
   ours          returned x=+0.01889661575 after  11 evals  f(x)=+0.000e+00  |x-root|=0.0189  f IS ZERO THERE
   chandrupatla  returned x=-0.001938145806 after  18 evals  f(x)=-0.000e+00  |x-root|=0.00194  f IS ZERO THERE
   f is identically zero at least up to root + 0.0316
fun7.5   declared root +0
   ours          returned x=+0.008107544271 after  13 evals  f(x)=+0.000e+00  |x-root|=0.00811  f IS ZERO THERE
   chandrupatla  returned x=+0.02036778628 after  19 evals  f(x)=+0.000e+00  |x-root|=0.0204  f IS ZERO THERE
   f is identically zero at least up to root + 0.0316
=== diag_band_by_family
guard=project:  family  no-gate  band   delta
             fun1        99    263   +164
             fun2       141    252   +111
             fun3       338    310    -28
             fun4       573    296   -277
             fun5       456    239   -217
             fun6       456    235   -221
             fun7      1000   1000     +0
             fun8        52    222   +170
             fun9       105    249   +144

guard=credit:  family  no-gate  band   delta
             fun1       258    239    -19
             fun2       292    271    -21
             fun3       274    237    -37
             fun4       294    234    -60
             fun5       238    238     +0
             fun6       238    235     -3
             fun7      1000   1000     +0
             fun8       220    218     -2
             fun9       206    227    +21

DIAGS_DONE
