Validate _piece_upper_fast = int k(u,-x,T) max(h(alo,u),h(ahi,u)) du against an INDEPENDENT
high-resolution float quadrature (true value q), covering small beta where both ball piece
functions fall back on stiff bands.  Rigor: fast.upper >= q (valid upper bound).  Quality:
fast.upper is no looser than the obviously-correct real_abs _piece_upper (safe).
  ok b=0.07 [0.0396,0.0454] x=0.0000: fast=0.027419049(0.0s) safe=0.027420737(1.1s) true=0.027419049  fast-true=+3.0e-11 safe-fast=+1.7e-06
  ok b=0.07 [0.0624,0.0651] x=0.0000: fast=0.027403719(0.0s) safe=0.027405471(1.0s) true=0.027403719  fast-true=+1.1e-10 safe-fast=+1.8e-06
  ok b=0.07 [0.0697,0.0700] x=0.0000: fast=0.027892053(0.0s) safe=0.027894057(0.7s) true=0.027892053  fast-true=+1.1e-10 safe-fast=+2.0e-06
  ok b=0.07 [0.0396,0.0454] x=0.0088: fast=0.030901857(0.0s) safe=0.030903609(1.1s) true=0.030901857  fast-true=+3.8e-11 safe-fast=+1.8e-06
  ok b=0.07 [0.0624,0.0651] x=0.0088: fast=0.030884510(0.0s) safe=0.030886358(1.2s) true=0.030884510  fast-true=+1.3e-10 safe-fast=+1.8e-06
  ok b=0.07 [0.0697,0.0700] x=0.0088: fast=0.031341730(0.0s) safe=0.031343613(1.0s) true=0.031341730  fast-true=+1.3e-10 safe-fast=+1.9e-06
  ok b=0.07 [0.0396,0.0454] x=0.0175: fast=0.034382342(0.0s) safe=0.034384108(1.2s) true=0.034382342  fast-true=+4.6e-11 safe-fast=+1.8e-06
  ok b=0.07 [0.0624,0.0651] x=0.0175: fast=0.034362968(0.0s) safe=0.034364902(1.0s) true=0.034362968  fast-true=+1.6e-10 safe-fast=+1.9e-06
  ok b=0.07 [0.0697,0.0700] x=0.0175: fast=0.034722205(0.0s) safe=0.034724120(1.0s) true=0.034722205  fast-true=+2.7e-11 safe-fast=+1.9e-06
  ok b=0.08 [0.0453,0.0519] x=0.0000: fast=0.031251459(0.0s) safe=0.031253085(1.3s) true=0.031251459  fast-true=+2.2e-12 safe-fast=+1.6e-06
  ok b=0.08 [0.0713,0.0744] x=0.0000: fast=0.031229300(0.0s) safe=0.031231130(1.1s) true=0.031229300  fast-true=+4.8e-12 safe-fast=+1.8e-06
  ok b=0.08 [0.0797,0.0800] x=0.0000: fast=0.031864777(0.0s) safe=0.031866906(0.9s) true=0.031864777  fast-true=+8.4e-12 safe-fast=+2.1e-06
  ok b=0.08 [0.0453,0.0519] x=0.0100: fast=0.035229090(0.0s) safe=0.035230831(1.3s) true=0.035229090  fast-true=+2.7e-12 safe-fast=+1.7e-06
  ok b=0.08 [0.0713,0.0744] x=0.0100: fast=0.035203890(0.0s) safe=0.035205797(1.1s) true=0.035203890  fast-true=+5.8e-12 safe-fast=+1.9e-06
  ok b=0.08 [0.0797,0.0800] x=0.0100: fast=0.035799976(0.0s) safe=0.035802243(0.9s) true=0.035799976  fast-true=+1.0e-11 safe-fast=+2.3e-06
  ok b=0.08 [0.0453,0.0519] x=0.0200: fast=0.039203271(0.0s) safe=0.039205026(1.4s) true=0.039203271  fast-true=+3.1e-12 safe-fast=+1.8e-06
  ok b=0.08 [0.0713,0.0744] x=0.0200: fast=0.039174943(0.0s) safe=0.039176925(1.3s) true=0.039174943  fast-true=+6.9e-12 safe-fast=+2.0e-06
  ok b=0.08 [0.0797,0.0800] x=0.0200: fast=0.039644980(0.0s) safe=0.039647088(1.0s) true=0.039644980  fast-true=+1.2e-11 safe-fast=+2.1e-06
  ok b=0.1 [0.0566,0.0648] x=0.0000: fast=0.038851241(0.0s) safe=0.038852949(1.1s) true=0.038851241  fast-true=+1.0e-12 safe-fast=+1.7e-06
  ok b=0.1 [0.0891,0.0931] x=0.0000: fast=0.038814840(0.0s) safe=0.038816612(1.0s) true=0.038814840  fast-true=+1.4e-11 safe-fast=+1.8e-06
  ok b=0.1 [0.0996,0.1000] x=0.0000: fast=0.039795422(0.0s) safe=0.039797590(1.1s) true=0.039795422  fast-true=+1.1e-12 safe-fast=+2.2e-06
  ok b=0.1 [0.0566,0.0648] x=0.0125: fast=0.043815204(0.0s) safe=0.043816964(1.2s) true=0.043815204  fast-true=+1.2e-12 safe-fast=+1.8e-06
  ok b=0.1 [0.0891,0.0931] x=0.0125: fast=0.043772502(0.0s) safe=0.043774410(1.3s) true=0.043772502  fast-true=+1.6e-11 safe-fast=+1.9e-06
  ok b=0.1 [0.0996,0.1000] x=0.0125: fast=0.044695687(0.0s) safe=0.044698088(1.0s) true=0.044695687  fast-true=+1.3e-12 safe-fast=+2.4e-06
  ok b=0.1 [0.0566,0.0648] x=0.0250: fast=0.048772507(0.0s) safe=0.048774317(1.2s) true=0.048772507  fast-true=+1.3e-12 safe-fast=+1.8e-06
  ok b=0.1 [0.0891,0.0931] x=0.0250: fast=0.048722492(0.0s) safe=0.048724539(1.1s) true=0.048722492  fast-true=+2.1e-11 safe-fast=+2.0e-06
  ok b=0.1 [0.0996,0.1000] x=0.0250: fast=0.049455693(0.0s) safe=0.049458330(1.1s) true=0.049455693  fast-true=+1.4e-12 safe-fast=+2.6e-06
  ok b=0.11 [0.0623,0.0713] x=0.0000: fast=0.042618324(0.0s) safe=0.042619839(1.1s) true=0.042618324  fast-true=+2.1e-12 safe-fast=+1.5e-06
  ok b=0.11 [0.0981,0.1024] x=0.0000: fast=0.042577263(0.0s) safe=0.042579060(1.1s) true=0.042577263  fast-true=+5.8e-12 safe-fast=+1.8e-06
  ok b=0.11 [0.1095,0.1100] x=0.0000: fast=0.043752168(0.0s) safe=0.043754350(1.0s) true=0.043752168  fast-true=+1.3e-10 safe-fast=+2.2e-06
  ok b=0.11 [0.0623,0.0713] x=0.0138: fast=0.048073559(0.0s) safe=0.048075119(1.0s) true=0.048073559  fast-true=+2.4e-12 safe-fast=+1.6e-06
  ok b=0.11 [0.0981,0.1024] x=0.0138: fast=0.048023712(0.0s) safe=0.048025616(1.3s) true=0.048023712  fast-true=+6.5e-12 safe-fast=+1.9e-06
  ok b=0.11 [0.1095,0.1100] x=0.0138: fast=0.049131878(0.0s) safe=0.049134303(1.1s) true=0.049131878  fast-true=+1.3e-10 safe-fast=+2.4e-06
  ok b=0.11 [0.0623,0.0713] x=0.0275: fast=0.053519979(0.0s) safe=0.053521555(1.1s) true=0.053519979  fast-true=+2.6e-12 safe-fast=+1.6e-06
  ok b=0.11 [0.0981,0.1024] x=0.0275: fast=0.053459072(0.0s) safe=0.053461030(1.6s) true=0.053459072  fast-true=+8.5e-12 safe-fast=+2.0e-06
  ok b=0.11 [0.1095,0.1100] x=0.0275: fast=0.054342331(0.0s) safe=0.054345021(1.2s) true=0.054342331  fast-true=+1.4e-10 safe-fast=+2.7e-06
  ok b=0.15 [0.1337,0.1396] x=0.0000: fast=0.057457895(0.0s) safe=0.057458939(1.2s) true=0.057457895  fast-true=+8.8e-11 safe-fast=+1.0e-06
  ok b=0.15 [0.1493,0.1500] x=0.0000: fast=0.059508315(0.0s) safe=0.059510836(1.1s) true=0.059508315  fast-true=+7.4e-11 safe-fast=+2.5e-06
  ok b=0.15 [0.1337,0.1396] x=0.0187: fast=0.064835990(0.0s) safe=0.064837127(1.2s) true=0.064835990  fast-true=+1.1e-10 safe-fast=+1.1e-06
  ok b=0.15 [0.1493,0.1500] x=0.0187: fast=0.066784156(0.0s) safe=0.066786896(1.4s) true=0.066784156  fast-true=+9.0e-11 safe-fast=+2.7e-06
  ok b=0.15 [0.0849,0.0973] x=0.0375: fast=0.072253062(0.0s) safe=0.072254117(1.1s) true=0.072253062  fast-true=+5.7e-11 safe-fast=+1.1e-06
  ok b=0.15 [0.1337,0.1396] x=0.0375: fast=0.072174344(0.0s) safe=0.072175582(1.6s) true=0.072174344  fast-true=+1.2e-10 safe-fast=+1.2e-06
  ok b=0.15 [0.1493,0.1500] x=0.0375: fast=0.073749208(0.0s) safe=0.073752173(1.3s) true=0.073749208  fast-true=+1.1e-10 safe-fast=+3.0e-06
  ok b=0.16 [0.1593,0.1600] x=0.0000: fast=0.063426736(0.0s) safe=0.063429310(1.1s) true=0.063426736  fast-true=+5.0e-11 safe-fast=+2.6e-06
  ok b=0.16 [0.1426,0.1489] x=0.0200: fast=0.068995841(0.0s) safe=0.068996892(1.3s) true=0.068995841  fast-true=+5.0e-11 safe-fast=+1.1e-06
  ok b=0.16 [0.1593,0.1600] x=0.0200: fast=0.071170977(0.0s) safe=0.071173753(1.3s) true=0.071170977  fast-true=+6.1e-11 safe-fast=+2.8e-06
  ok b=0.16 [0.1426,0.1489] x=0.0400: fast=0.076798437(0.0s) safe=0.076799582(1.3s) true=0.076798437  fast-true=+6.1e-11 safe-fast=+1.1e-06
  ok b=0.16 [0.1593,0.1600] x=0.0400: fast=0.078562884(0.0s) safe=0.078565870(1.3s) true=0.078562884  fast-true=+7.3e-11 safe-fast=+3.0e-06
  ok b=0.2 [0.1991,0.2000] x=0.0000: fast=0.079000689(0.0s) safe=0.079003243(1.5s) true=0.079000689  fast-true=+2.7e-11 safe-fast=+2.6e-06
  ok b=0.2 [0.1991,0.2000] x=0.0250: fast=0.088594752(0.0s) safe=0.088597434(2.1s) true=0.088594752  fast-true=+3.2e-11 safe-fast=+2.7e-06
  ok b=0.2 [0.1991,0.2000] x=0.0500: fast=0.097647162(0.0s) safe=0.097650023(1.8s) true=0.097647162  fast-true=+3.7e-11 safe-fast=+2.9e-06
  ok b=0.31 [0.3087,0.3100] x=0.0000: fast=0.120760747(0.0s) safe=0.120763029(1.6s) true=0.120760746  fast-true=+6.8e-11 safe-fast=+2.3e-06
  ok b=0.31 [0.2764,0.2885] x=0.0387: fast=0.129525382(0.0s) safe=0.129526432(1.0s) true=0.129525382  fast-true=+8.7e-11 safe-fast=+1.0e-06
  ok b=0.31 [0.3087,0.3100] x=0.0387: fast=0.135229224(0.0s) safe=0.135231146(2.0s) true=0.135229224  fast-true=+7.3e-11 safe-fast=+1.9e-06
  ok b=0.31 [0.3087,0.3100] x=0.0775: fast=0.148470013(0.0s) safe=0.148471675(2.3s) true=0.148470013  fast-true=+7.7e-11 safe-fast=+1.7e-06
  ok b=0.5 [0.4978,0.5000] x=0.0000: fast=0.187569645(0.0s) safe=0.187571136(1.7s) true=0.187569644  fast-true=+4.6e-10 safe-fast=+1.5e-06
  ok b=0.5 [0.4978,0.5000] x=0.0625: fast=0.209624166(0.0s) safe=0.209625869(1.6s) true=0.209624165  fast-true=+4.1e-10 safe-fast=+1.7e-06
  ok b=0.5 [0.4978,0.5000] x=0.1250: fast=0.228898609(0.0s) safe=0.228900544(1.6s) true=0.228898608  fast-true=+3.5e-10 safe-fast=+1.9e-06
  ok b=0.9 [0.8961,0.9000] x=0.0000: fast=0.297792835(0.0s) safe=0.297794937(1.0s) true=0.297792834  fast-true=+6.4e-10 safe-fast=+2.1e-06
  ok b=0.9 [0.8961,0.9000] x=0.1125: fast=0.331985854(0.0s) safe=0.331988189(1.1s) true=0.331985853  fast-true=+7.0e-10 safe-fast=+2.3e-06
  ok b=0.9 [0.8023,0.8375] x=0.2250: fast=0.349521046(0.0s) safe=0.349522138(0.5s) true=0.349521045  fast-true=+9.7e-10 safe-fast=+1.1e-06
  ok b=0.9 [0.8961,0.9000] x=0.2250: fast=0.360005145(0.0s) safe=0.360007308(1.3s) true=0.360005145  fast-true=+6.5e-10 safe-fast=+2.2e-06
done: 90 cases, 0 invalid; min(fast.upper-true)=1.04e-12 (>=0 required for rigor); max(safe.upper-fast.upper)=2.99e-06 (fast is the tighter, independently-confirmed bound)
