Another possible way to accelerate MB set deep zooming

  • 213 Replies
  • 11997 Views

0 Members and 1 Guest are viewing this topic.

Offline vasyan

  • *
  • Strange Attractor
  • ******
  • Posts: 90
    • stone voices
« Reply #210 on: January 20, 2020, 11:36:22 AM »
After numerous experiments and coding works, he made his own fork of this project, referred to as a Nanobrot;)



Online claude

  • *
  • 3f
  • ******
  • Posts: 1558
    • mathr.co.uk
« Reply #211 on: January 31, 2020, 09:57:15 AM »
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).

Online claude

  • *
  • 3f
  • ******
  • Posts: 1558
    • mathr.co.uk
« Reply #212 on: January 31, 2020, 12:00:41 PM »
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| )

I think so:  in NanoMB2 code, after it prints out the infos for each SSA, this code can calculate the required precision:

Code: [Select]
int bits = int(ceil(-log2(min(2.0L, SSA.getEscRadius()) / (width * abs(HCcentre - HCcentre_old)))));
bits_required = max(bits_required, bits);
HCcentre_old = HCcentre;
cout << "\t Precision: " << bits << endl;

Then compare bits_required with your data type to see if you can render with it safely.

For example, the location above (with R_lo = long double and width = 512px) gives "precision is sufficient: 59 <= 64", and the precision required is too high for double's 53 bits (as used in floatexp in KF's NanoMB2 implementation).  Another location (the same, but zoomed in even further on the spiral before the final minibrot dive) gives "WARNING: insufficient precision:  172 >  64" and trying to render it with long double gives big blank regions in both emndl's NanoMB2 and KF's NanoMB2.

Online claude

  • *
  • 3f
  • ******
  • Posts: 1558
    • mathr.co.uk
« Reply #213 on: January 31, 2020, 02:16:32 PM »
It seems precision loss is not the only problem: increasing precision (I tried 2kbits) stops the grungy top edge of the green area in emndl-fail.png, but the big gap is still there...


xx
Speeding up deep zooming using neural networks / deep learning?

Started by greentexas on Fractal Mathematics And New Theories

27 Replies
2186 Views
Last post December 13, 2017, 10:43:46 PM
by Byte11
xx
a way to accelerate Mandelbrot (etc) deep zoom world record attempts

Started by claude on Fractal Mathematics And New Theories

4 Replies
656 Views
Last post February 19, 2018, 04:46:10 PM
by claude
xx
How to avoid zooming too deep?

Started by noahfence on Mandelbulber

2 Replies
498 Views
Last post June 10, 2018, 02:47:48 AM
by mclarekin
xx
Mandelbrot set deep zooming in the web browser

Started by claude on Other

0 Replies
495 Views
Last post October 29, 2017, 11:00:15 PM
by claude
xx
Deep n brassy

Started by timemit on Fractal Image Gallery

0 Replies
291 Views
Last post November 09, 2017, 07:11:35 PM
by timemit