**NanoMB2 failure modes**

1: all ok deep near minibrot it seems

31: but zooming out, seam visible at transition from spirals (outside) into spokes (inside)

62: zooming out, seam again, also precision loss artifacts (the default image-space log-de colouring means edges of equal-iteration-count areas are coloured while the regions themselves are white)

15: noticing that the seams seem to occur at the end of the spirals, i found another seam deeper than the previous two

125: the artifacts seem to get more severe when zooming out

00250_9.48e080.png (not attached) is where the precision loss grid is worst (and axis-aligned) (it's at the transition between zooming "off-center" and starting to go to the final mini)

So there are (at least) two ways NanoMB2 can go wrong:

1. precision loss when zooming too far "off-center" (eg zooming deeply towards a Misiurewicz point before heading down toward the next minibrot)

2. seams when the nested references don't line up properly

3. rendering is much slower during the parts with the echoes of deep Misiurewicz spirals than the other parts.

**Ideas for detecting them**

Problem 1 can be detected before rendering by comparing the super-escape-radius of the inner mini, relative to the distance from the inner mini's to the outer mini's nuclei. Something like "|r| / |c_i -c_o| < 1e-16 * image dimension in pixels" should do the trick. If none of the adjacent pairs of reference minis meet this criterion, it should be ok to render the video. Maybe this criterion could also be adjusted give an estimate of "how much precision is needed in the worst case", something like bits = log2 (image dimension) - ( log2 ( |r| / |c_i - c_o| )

Problem 2 could maybe be detected automatically after rendering by checking distance estimates for seams (neighbouring pixels having DE that differ by too much, using triangle inequalities and 1/4 theorem). Guessing that the seam occurs at the edge of the super-escape-radius and its echoes (r, sqrt(r * size), sqrt(sqrt(r * size) * size), ...) closer towards the mini might mean you might be able to pre-render just two rings of pixels at the expected seam location(s) and check if all is ok before doing the whole video?

Problem 3 could maybe be estimated by rendering a ring of pixels just outside each expected seam location and seeing if their super-iteration-count is large.

**Untested ideas for fixing them**

Problem 1: use more precision (simple, may be slow). alternatively: figure out some kind of super-perturbation (probably super-hard)

Problem 2: use the ring-of-pixels seam detection mechanism above iteratively, to auto-tune the best super-escape-radius adjustment factor for each mini. making the super-escape-radius too much smaller might need more precision (problem 1 again) and also more super-iterations (slower)

Problem 3: Misiurewicz points have repelling dynamics and are pre-periodic, around them the M-set is asymptotically self-similar (i.e. a spiral) and the multiplier (derivative of 1 cycle of the periodic part w.r.t. z) gives the (complex) scale factor (including rotation) for the similarity. So maybe this could be fixed by somehow using Misiurewicz points as additional references, and this *might* also fix 1 if we're lucky?

Recap: near (small z, c) minibrot of period p nanomb2 computes a series for f^p(z, c), do that until it escapes beyond a super-escape-radius (sqrt(size(mini))?) then shift to an outer minibrot and repeat the process. So we want a series for a Misiurewicz point with preperiod q and period p, that computes f^p(z, c) for nearby small z, c. I think that it's just f^p(z, c) = m z where m is the multiplier. If we could find an appropriate super-escape-radius r for the Misiurewicz point, then we could use logs to quickly find the smallest n such that |m^n z| > r : n = ceil((log r - log |z|) / log m).