import 8.7 s
   cell transpose-symmetric: True True

=== K) C4 symmetry violation of rcwa_jones_2d vs truncation ===
   square  laurent : M=4:|dJ|=4.07e-15  M=6:|dJ|=1.07e-14  M=8:|dJ|=1.26e-14  M=10:|dJ|=1.43e-13  M=12:|dJ|=1.05e-13
            Jxx: -0.08522259-0.02232249j  -0.08800757-0.02378976j  -0.08945967-0.02468887j  -0.09035846-0.02527533j  -0.09097465-0.02568564j
   square  li      : M=4:|dJ|=4.19e-15  M=6:|dJ|=2.31e-15  M=8:|dJ|=1.54e-14  M=10:|dJ|=1.61e-14  M=12:|dJ|=2.19e-14
            Jxx: -0.09389361-0.02971701j  -0.09388070-0.02849449j  -0.09387123-0.02807314j  -0.09386675-0.02788502j  -0.09386464-0.02778627j
   square  fff_nv  : M=4:|dJ|=3.09e-04  M=6:|dJ|=1.42e-04  M=8:|dJ|=8.02e-05  M=10:|dJ|=5.06e-05  M=12:|dJ|=3.42e-05
            Jxx: -0.09388091-0.02979451j  -0.09387322-0.02853475j  -0.09386673-0.02809760j  -0.09386387-0.02790126j  -0.09386273-0.02779768j
   disk    laurent : M=4:|dJ|=1.86e-15  M=6:|dJ|=6.02e-15  M=8:|dJ|=4.07e-14  M=10:|dJ|=1.00e-13  M=12:|dJ|=3.03e-13
            Jxx: -0.17645840-0.12364340j  -0.17907834-0.12122884j  -0.18053718-0.11997719j  -0.18152649-0.11914997j  -0.18230813-0.11852349j
   disk    li      : M=4:|dJ|=1.94e-15  M=6:|dJ|=2.76e-15  M=8:|dJ|=1.04e-15  M=10:|dJ|=2.97e-15  M=12:|dJ|=1.36e-13
            Jxx: -0.19071626-0.11642859j  -0.18855744-0.11599861j  -0.18766633-0.11586290j  -0.18716250-0.11580985j  -0.18684495-0.11577149j
   disk    fff_nv  : M=4:|dJ|=8.00e-03  M=6:|dJ|=5.22e-03  M=8:|dJ|=3.70e-03  M=10:|dJ|=2.70e-03  M=12:|dJ|=2.05e-03
            Jxx: -0.19074823-0.11680793j  -0.18856859-0.11628699j  -0.18766909-0.11608946j  -0.18716311-0.11598979j  -0.18684458-0.11591788j

=== L) 2-D separable limit vs 1-D, GRID-EXACT duty ===
   pol=te ang= 0.0 laurent : max|dR|=6.499e-05 max|dT|=2.295e-04
   pol=te ang= 0.0 li      : max|dR|=6.499e-05 max|dT|=2.295e-04
   pol=te ang=30.0 laurent : max|dR|=1.970e-05 max|dT|=3.486e-05
   pol=te ang=30.0 li      : max|dR|=1.970e-05 max|dT|=3.486e-05
   pol=tm ang= 0.0 laurent : max|dR|=3.574e-03 max|dT|=9.064e-03
   pol=tm ang= 0.0 li      : max|dR|=8.175e-06 max|dT|=5.327e-05
   pol=tm ang=30.0 laurent : max|dR|=1.088e-03 max|dT|=9.205e-03
   pol=tm ang=30.0 li      : max|dR|=1.450e-05 max|dT|=1.396e-04

=== M) Li vs Laurent metallic-TM convergence (1-D) ===
     N             R0(li)        R0(laurent)         A(li)    A(laurent)
    11     0.506618832039     0.778438490004   6.87733e-02   1.69555e-01
    23     0.519123141574     0.579124894947   4.48825e-02   1.08342e-01
    43     0.520007755866     0.543236195310   4.37447e-02   7.98863e-02
    83     0.521073181162     0.530994716549   4.26411e-02   5.68399e-02
   123     0.521327614658     0.526066859906   4.26377e-02   4.92432e-02
   163     0.521559414598     0.521461823162   4.28012e-02   4.76797e-02
   203     0.521840595051     0.517855206135   4.27330e-02   4.88194e-02
   303     0.522258111318     0.511455337574   4.24904e-02   5.84194e-02
   403     0.522460855093     0.519943169634   4.23318e-02   5.56153e-02

=== N) ASR (Granet matched coordinates) accuracy claim ===
   reference R0 at N=603 (li, uniform) = 0.522648273763
   M=  6: uniform err=5.172e-02  ASR best eta=0.5 err=2.404e-03
   M= 12: uniform err=6.126e-03  ASR best eta=0.7 err=3.938e-04
   M= 24: uniform err=4.189e-03  ASR best eta=0.5 err=4.393e-05
   M= 48: uniform err=1.378e-03  ASR best eta=0.5 err=1.146e-04

=== P) rcwa_convergence / rcwa_extrapolate sanity ===
   seq=[np.float64(0.5177108653674224), np.float64(0.5207347851690266), np.float64(0.5220932107170626)]  extrapolated=0.5232011820988932  ref=0.522648273763  err_extrap=0.0005529083358892795
