Explore the Details on the Mandelbrot Set

Because of the increase in the computational speed, computations that take a long time can now be computed in real time.
Explore details of the Mandelbrot set.
Because the computation is fast, visualizing the result is interactive.
Since Mathematica syntax is used, the turnaround speed is fast.
 In[1]:= XmandelComp = Compile[{{c, _Complex}}, Module[{num = 1}, FixedPoint[(num++; #^2 + c) &, 0, 800, SameTest -> (Re[#]^2 + Im[#]^2 >= 4 &)]; num], CompilationTarget -> "C", RuntimeAttributes -> {Listable}, Parallelization -> True]; With[{x = 0, y = 1, draghold = {0.0524687, 0.749809}}, Panel[ Module[{dragstart = {0, 0}, dragval = {0, 0}, xrange, yrange, m = 10.2, scale = 0.000850147}, {xshift, yshift} = (dragstart - dragval + draghold) {1, -1}; {ylo, yhi} = yshift + scale*{-1, 1}; {xlo, xhi} = xshift + scale*{-1, 1}; xrange = {b, xlo, xhi, .0025 scale}; yrange = {a, ylo, yhi, .0025*scale}; data = Table[a + I b, Evaluate[yrange], Evaluate[xrange]]; ArrayPlot[mandelComp[data], ImageSize -> 300] ] ] ]
 Out[1]=
 In[2]:= XmandelComp = Compile[{{c, _Complex}}, Module[{num = 1}, FixedPoint[(num++; #^2 + c) &, 0, 30, SameTest -> (Re[#]^2 + Im[#]^2 >= 4 &)]; num], CompilationTarget -> "C", RuntimeAttributes -> {Listable}, Parallelization -> True]; doPlotDrag[{x_, y_}] := Panel[ DynamicModule[{dragstart = {0, 0}, dragval = {0, 0}, draghold = {x, y}, xrange, yrange, m = -Log[2, 1.5], scale = 1.5}, Column[{ Row[{"Zoom ", Slider[Dynamic[m, Function[scale = 2.^-#; m = #]], {-1, 50}], Dynamic[m]}], EventHandler[ Dynamic[{xshift, yshift} = (dragstart - dragval + draghold) {1, -1}; {ylo, yhi} = yshift + scale*{-1, 1}; {xlo, xhi} = xshift + scale*{-1, 1}; xrange = {b, xlo, xhi, .01 scale}; yrange = {a, ylo, yhi, .01*scale}; data = Table[a + I b, Evaluate[yrange], Evaluate[xrange]]; ArrayPlot[mandelComp[data], ImageSize -> 300]], "MouseDown" :> (dragval = dragstart = scale*MousePosition["GraphicsScaled"]), "MouseDragged" :> (dragval = scale*MousePosition["GraphicsScaled"]), "MouseUp" :> (draghold = draghold + dragstart - dragval; dragstart = dragval = {0, 0})]}]] ] doPlotDrag[{0, 1}]
 Out[2]=
 In[3]:= XmandelComp = Compile[{{c, _Complex}, {ii, _Real}}, Module[{num = 1}, FixedPoint[(num++; #^ii + c) &, 0, 30, SameTest -> (Re[#]^2 + Im[#]^2 >= 4 &)]; num], CompilationTarget -> "C", RuntimeAttributes -> {Listable}, Parallelization -> True]; doPlotDrag[{x_, y_}] := Panel[ DynamicModule[{dragstart = {0, 0}, dragval = {0, 0}, draghold = {x, y}, xrange, yrange, m = -Log[2, 1.5], scale = 2.0, ii = 2.0}, Column[{ Row[{"Power ", Slider[Dynamic[ii], {1.0, 10.0, 0.001}], Dynamic[ii]}], Row[{"Zoom ", Slider[Dynamic[m, Function[scale = 2.^-#; m = #]], {-1, 50}], Dynamic[m]}], EventHandler[ Dynamic[{xshift, yshift} = (dragstart - dragval + draghold) {1, -1}; {ylo, yhi} = yshift + scale*{-1, 1}; {xlo, xhi} = xshift + scale*{-1, 1}; xrange = {b, xlo, xhi, .01 scale}; yrange = {a, ylo, yhi, .01*scale}; data = Table[a + I b, Evaluate[yrange], Evaluate[xrange]]; ArrayPlot[mandelComp[data, ii], ImageSize -> 300]], "MouseDown" :> (dragval = dragstart = scale*MousePosition["GraphicsScaled"]), "MouseDragged" :> (dragval = scale*MousePosition["GraphicsScaled"]), "MouseUp" :> (draghold = draghold + dragstart - dragval; dragstart = dragval = {0, 0})]}]] ] doPlotDrag[{0, 1}]
 Out[3]=