Fractals/emndl

=Programs= emndl it is the program by Claude Heiland-Allen: exponential strip visualisation of the Mandelbrot set Output options include:
 * tall thin images
 * zoom videos made from the image strips by inverting the coordinate transformation

emndl_autotune
 * attempts to find interesting points in the Mandelbrot Set that might look nice
 * is implemented in Haskell
 * currently requires a GHC built with integer-simple (not the default integer-gmp) so that the MPFR bindings work correctly


 * git repo
 * fractalforums article
 * fractalforums.org : emndl-vs-nanomb-mandelbrot-set-zooms

=instal=

prerequisites
 * for building most programs
 * gcc
 * g++
 * libqd-dev - Double-double and quad double types in C++ and F90
 * for building emndl_autotune
 * ghc
 * cabal
 * for running
 * bash
 * getopt (GNU)
 * bc
 * imagemagick             -- for image output
 * for dvd output
 * y4mscaler is a video scaler which operates on YUV4MPEG2 streams, as used by the tools in the MJPEGtools project.
 * mpeg2enc - encodes raw video into an MPEG-1/2 elementary stream using the mjpegtools library.
 * ffmpeg                  -- for mkv outpout
 * ffmpeg2theora           -- for ogv output
 * ecasound, puredata      -- for video soundtracks

For emndl:

git clone	https://code.mathr.co.uk/emndl.git cd emndl make

For emndl_autotune

cabal update cabal install --lib Vec cabal install --lib hmpfr make emndl_autotune ghc -O3 -Wall -threaded -rtsopts -fspec-constr-count=50 -package Vec -package hmpfr -package parallel -package reflection -package random -package ad --make emndl_autotune.hs

=help=

./emndl.sh --help usage options: --help -h -? show this message and exit --version      show version and exit

input options: --auto bits    find an interesting point with precision 'bits' --re real      choose coordinates --im imag --period p   --maxiters n    --size sz

render options: --quality q    horizontal size, (5 - 12)

image options: --png          generate full size PNG --jpeg         generate thumbnail JPEG

video options: --aspect w:h   output aspect (4:3, 16:9) --speed s      zoom speed (default 1) --dvd          generate PAL DVD (SD) --mkv          generate Matroska (HD) --ogv          generate Theora (LD)

other options: --quiet        less output --verbose      more output =coordinate= Coordinate

coordinate for emndl_2018-08-03T11-23-16.mkv REALCOORD=-1.2502259692930972582217787794367516384674267311920345554701091121819451616288474903375439125840028505381241666e+00 IMAGCOORD=-3.42180858457804363065272789355461346156675050268516641110743928004962993736897391706380916640147746335618768713e-01 PERIOD=396 MAXITERS=100100 SIZE=7.5089502353440369e-38

coordinates for emndl_vs_nanomb_2018-08-03 (on archive.org):

REALCOORD=2.32881715984171619523670105543682540038728554391151374122585121905032044832510538073674973239588027974526386357263542756141209509076915793136483409366732770101220857708891025180202484778852216373074628804662000573668390738172817193728347860445256777791916983537169476478249277392675920481935444775336796e-02 IMAGCOORD=8.15519594089994179859195278340598576447528880907449779065614659131971532215140192176068680822666750642391111578468988890742131839375371458052054010234250333939153906090539688498799065846221616933966400388040076657090140783996781080255541492455790725921287002240432954348425982356238830635005863927114069e-01 PERIOD=26079 MAXSUPERITERS=1000 SIZE=1.9302144566912991e-298

=run =

first example
./emndl.sh --quality 7 --png --jpeg --re -1.241733127596417466318604 --im -0.1698965841028383922879327

Result

AUTO=0 AUTOBITS=128 REAL=1 REALCOORD=-1.241733127596417466318604 IMAG=1 IMAGCOORD=-0.1698965841028383922879327 PER=0 PERIOD=1 MAXITERS=1000 SZ=0 SIZE=1 QUALITY=7 PNG=1 JPEG=1 ASPECT=16:9 SPEED=1 DVD=0 MKV=0 OGV=0 VERBOSE=1

WIDE=1 WIDTH=128 VWIDTH=128 VHEIGHT=72 E=/home/a/emndl OUT=emndl_2022-11-20T19:47:29+01:00 calculating.. Atom domain: period: 1 zmag:     1.2533 HC centre: (1.24173,0.169897)	 (relative to location) Esc R(new):1e+29 Esc R(old):1e+30 Precision: 7 --- __(-1.24173,-0.169897) i: 0	j: 0	val: (-1.24173,-0.169897) i: 0	j: 1	val: (1,0) i: 0	j: 2	val: (0,0) i: 0	j: 3	val: (0,0) i: 0	j: 4	val: (0,0) i: 0	j: 5	val: (0,0) i: 0	j: 6	val: (0,0) i: 0	j: 7	val: (0,0) i: 0	j: 8	val: (0,0) --- ... --- i: 16	j: 0	val: (0,0) i: 16	j: 1	val: (0,0) i: 16	j: 2	val: (0,0) i: 16	j: 3	val: (0,0) i: 16	j: 4	val: (0,0) i: 16	j: 5	val: (0,0) i: 16	j: 6	val: (0,0) i: 16	j: 7	val: (0,0) i: 16	j: 8	val: (0,0) --- R == 1e+30 NOTICE: precision is sufficient: 7 <= 64 finalizing..e scanline 326 / 326 equalizing.. computing depth.. DEPTH=2 downscaling.. colourizing.. making images.. making videos.. making soundtrack.. 2022-11-20T19:47:29+01:00 begin 2022-11-20T19:47:30+01:00 end

second
./emndl.sh --quality 10 --png --jpeg --dvd --ogv    --re -0.5988529658460445113700557999169873572638106766467118517477    --im -0.6627873418981974683919856287279365042423603984338094007074 AUTO=0 AUTOBITS=128 REAL=1 REALCOORD=-0.5988529658460445113700557999169873572638106766467118517477 IMAG=1 IMAGCOORD=-0.6627873418981974683919856287279365042423603984338094007074 PER=0 PERIOD=1 MAXITERS=1000 SZ=0 SIZE=1 QUALITY=10 PNG=1 JPEG=1 ASPECT=16:9 SPEED=1 DVD=1 MKV=0 OGV=1 VERBOSE=1

WIDE=1 WIDTH=1024 VWIDTH=960 VHEIGHT=540 E=/home/a/emndl OUT=emndl_2022-11-20T19:54:31+01:00 calculating.. Atom domain: period: 1 zmag:     0.893259 HC centre: (0.598853,0.662787)	 (relative to location) Esc R(new):1e+29 Esc R(old):1e+30 Precision: 9 --- __(-0.598853,-0.662787) i: 0	j: 0	val: (-0.598853,-0.662787) i: 0	j: 1	val: (1,0) i: 0	j: 2	val: (0,0) i: 0	j: 3	val: (0,0) i: 0	j: 4	val: (0,0) i: 0	j: 5	val: (0,0) i: 0	j: 6	val: (0,0) i: 0	j: 7	val: (0,0) i: 0	j: 8	val: (0,0) --- ... --- i: 16	j: 0	val: (0,0) i: 16	j: 1	val: (0,0) i: 16	j: 2	val: (0,0) i: 16	j: 3	val: (0,0) i: 16	j: 4	val: (0,0) i: 16	j: 5	val: (0,0) i: 16	j: 6	val: (0,0) i: 16	j: 7	val: (0,0) i: 16	j: 8	val: (0,0) --- R == 1e+30 NOTICE: precision is sufficient: 9 <= 64 finalizing..e scanline 2608 / 2608 equalizing.. computing depth.. DEPTH=2 downscaling.. colourizing.. making images.. making videos.. ./emndl.sh: linia 260: y4mscaler: nie znaleziono polecenia ./emndl.sh: linia 261: mpeg2enc: nie znaleziono polecenia making soundtrack.. ./emndl.sh: linia 279: ecasound: nie znaleziono polecenia ./emndl.sh: linia 282: pd: nie znaleziono polecenia ./emndl.sh: linia 292: twolame: nie znaleziono polecenia ./emndl.sh: linia 306: oggenc: nie znaleziono polecenia ./emndl.sh: linia 293: mplex: nie znaleziono polecenia ./emndl.sh: linia 307: oggz-merge: nie znaleziono polecenia 2022-11-20T19:54:31+01:00 begin 2022-11-20T19:54:48+01:00 end

third
export LD_LIBRARY_PATH=${HOME}/opt/lib export PATH=${HOME}/opt/bin:${PATH} ./emndl.sh --auto 96 --png --jpeg 12 1 0.0000e+00 0.0000e+00 7.50000000e-01 20 5 -4.4212341e-02 9.8658085e-01 2.54836585e-03 36 21 -4.08647509785e-02 9.82536914715e-01 4.88178316e-08 62 115 -4.0864860818013505432e-02 9.8253687241578015568e-01 7.76448686e-16 98 596 -4.086486081801155519398814148626e-02 9.825368724157807120516621196188e-01 1.02641550e-26 AUTO=1 AUTOBITS=96 REAL=0 REALCOORD=-4.086486081801155519398814148626e-02 IMAG=0 IMAGCOORD=9.825368724157807120516621196188e-01 PER=0 PERIOD=596 MAXITERS=1000 SZ=0 SIZE=1.3685540417099322e-26 QUALITY=8 PNG=1 JPEG=1 ASPECT=16:9 SPEED=1 DVD=0 MKV=0 OGV=0 VERBOSE=1

WIDE=1 WIDTH=256 VWIDTH=256 VHEIGHT=144 E=/home/a/emndl OUT=emndl_2022-11-23T18:42:44+01:00 calculating.. Atom domain: period: 1 zmag:     0.983386 HC centre: (0.0408649,-0.982537)	 (relative to location) Esc R(new):1e+29 Esc R(old):1e+30 Precision: 7 --- Atom domain: period: 5 zmag:     0.0821434 HC centre: (-0.0033475,0.0040441)	 (relative to location) Esc R(new):0.0129093 Esc R(old):0.129093 Precision: 15 --- Atom domain: period: 21 zmag:     0.000401242 HC centre: (1.0984e-07,4.23041e-08)	 (relative to location) Esc R(new):5.29777e-05 Esc R(old):0.000529777 Precision: 15 --- Atom domain: period: 115 zmag:     4.75912e-08 HC centre: (-1.95024e-15,-5.56367e-16)	 (relative to location) Esc R(new):7.04258e-10 Esc R(old):7.04258e-09 Precision: 16 --- Atom domain: period: 596 zmag:     5.78401e-18 HC centre: (-9.69691e-32,-9.40874e-31)	 (relative to location) Esc R(new):1.34034e-17 Esc R(old):1.34034e-16 Precision: 16 --- __(3.43351e-18,4.65465e-18) i: 0	j: 0	val: (3.43351e-18,4.65465e-18) i: 0	j: 1	val: (5.26731e+12,-3.10641e+12) i: 0	j: 2	val: (2.27498e+28,-3.95469e+28) i: 0	j: 3	val: (8.00832e+41,-2.21767e+44) i: 0	j: 4	val: (-3.90043e+59,-6.85294e+59) i: 0	j: 5	val: (-1.88333e+75,-1.10284e+75) i: 0	j: 6	val: (-4.88467e+90,-2.09717e+88) i: 0	j: 7	val: (-7.86231e+105,4.50434e+105) i: 0	j: 8	val: (-7.22294e+120,1.21745e+121) --- i: 1	j: 0	val: (0,0) i: 1	j: 1	val: (0,0) i: 1	j: 2	val: (0,0) i: 1	j: 3	val: (0,0) i: 1	j: 4	val: (0,0) i: 1	j: 5	val: (0,0) i: 1	j: 6	val: (0,0) i: 1	j: 7	val: (0,0) i: 1	j: 8	val: (0,0) --- i: 2	j: 0	val: (1.16559e+13,-2.63086e+12) i: 2	j: 1	val: (1.32558e+29,-1.18897e+29) i: 2	j: 2	val: (4.17497e+44,-1.22718e+45) i: 2	j: 3	val: (-1.13749e+60,-6.02728e+60) i: 2	j: 4	val: (-1.36998e+76,-1.61469e+76) i: 2	j: 5	val: (-5.33318e+91,-1.93651e+91) i: 2	j: 6	val: (-1.20729e+107,2.06746e+106) i: 2	j: 7	val: (-1.69961e+122,1.36808e+122) i: 2	j: 8	val: (-1.33031e+137,2.97704e+137) --- i: 3	j: 0	val: (0,0) i: 3	j: 1	val: (0,0) i: 3	j: 2	val: (0,0) i: 3	j: 3	val: (0,0) i: 3	j: 4	val: (0,0) i: 3	j: 5	val: (0,0) i: 3	j: 6	val: (0,0) i: 3	j: 7	val: (0,0) i: 3	j: 8	val: (0,0) --- i: 4	j: 0	val: (1.58875e+29,-7.00615e+28) i: 4	j: 1	val: (1.52864e+45,-2.0086e+45) i: 4	j: 2	val: (2.54531e+60,-1.7701e+61) i: 4	j: 3	val: (-2.95186e+76,-7.66605e+76) i: 4	j: 4	val: (-2.11528e+92,-1.74947e+92) i: 4	j: 5	val: (-6.9792e+107,-1.2693e+107) i: 4	j: 6	val: (-1.3956e+123,4.64333e+122) i: 4	j: 7	val: (-1.77273e+138,1.77606e+138) i: 4	j: 8	val: (-1.5096e+153,3.32683e+153) --- i: 5	j: 0	val: (0,0) i: 5	j: 1	val: (0,0) i: 5	j: 2	val: (0,0) i: 5	j: 3	val: (0,0) i: 5	j: 4	val: (0,0) i: 5	j: 5	val: (0,0) i: 5	j: 6	val: (0,0) i: 5	j: 7	val: (0,0) i: 5	j: 8	val: (0,0) --- i: 6	j: 0	val: (1.3519e+45,-9.23641e+44) i: 6	j: 1	val: (1.05008e+61,-2.06423e+61) i: 6	j: 2	val: (-5.24778e+75,-1.59172e+77) i: 6	j: 3	val: (-3.62984e+92,-6.07839e+92) i: 6	j: 4	val: (-1.97052e+108,-1.14993e+108) i: 6	j: 5	val: (-5.66073e+123,-1.94389e+122) i: 6	j: 6	val: (-1.02695e+139,4.62395e+138) i: 6	j: 7	val: (-1.34514e+154,1.31384e+154) i: 6	j: 8	val: (-1.9291e+169,2.43431e+169) --- i: 7	j: 0	val: (0,0) i: 7	j: 1	val: (0,0) i: 7	j: 2	val: (0,0) i: 7	j: 3	val: (0,0) i: 7	j: 4	val: (0,0) i: 7	j: 5	val: (0,0) i: 7	j: 6	val: (0,0) i: 7	j: 7	val: (0,0) i: 7	j: 8	val: (0,0) --- i: 8	j: 0	val: (8.03788e+60,-7.85714e+60) i: 8	j: 1	val: (4.56251e+76,-1.47389e+77) i: 8	j: 2	val: (-2.02153e+92,-1.0065e+93) i: 8	j: 3	val: (-2.81953e+108,-3.37907e+108) i: 8	j: 4	val: (-1.26107e+124,-5.16602e+123) i: 8	j: 5	val: (-3.24269e+139,1.97294e+138) i: 8	j: 6	val: (-5.84003e+154,2.49333e+154) i: 8	j: 7	val: (-1.04573e+170,6.14084e+169) i: 8	j: 8	val: (-2.51583e+185,1.6916e+185) --- i: 9	j: 0	val: (0,0) i: 9	j: 1	val: (0,0) i: 9	j: 2	val: (0,0) i: 9	j: 3	val: (0,0) i: 9	j: 4	val: (0,0) i: 9	j: 5	val: (0,0) i: 9	j: 6	val: (0,0) i: 9	j: 7	val: (0,0) i: 9	j: 8	val: (0,0) --- i: 10	j: 0	val: (3.52949e+76,-4.82147e+76) i: 10	j: 1	val: (1.11202e+92,-7.85671e+92) i: 10	j: 2	val: (-1.74272e+108,-4.78352e+108) i: 10	j: 3	val: (-1.54592e+124,-1.41788e+124) i: 10	j: 4	val: (-5.96547e+139,-1.84904e+139) i: 10	j: 5	val: (-1.46932e+155,5.06642e+153) i: 10	j: 6	val: (-3.26863e+170,5.36225e+169) i: 10	j: 7	val: (-9.21875e+185,2.22567e+185) i: 10	j: 8	val: (-2.62545e+201,1.53132e+201) --- i: 11	j: 0	val: (0,0) i: 11	j: 1	val: (0,0) i: 11	j: 2	val: (0,0) i: 11	j: 3	val: (0,0) i: 11	j: 4	val: (0,0) i: 11	j: 5	val: (0,0) i: 11	j: 6	val: (0,0) i: 11	j: 7	val: (0,0) i: 11	j: 8	val: (0,0) --- i: 12	j: 0	val: (1.17508e+92,-2.26762e+92) i: 12	j: 1	val: (-1.48869e+106,-3.27023e+108) i: 12	j: 2	val: (-9.24682e+123,-1.79275e+124) i: 12	j: 3	val: (-6.31679e+139,-4.91195e+139) i: 12	j: 4	val: (-2.23303e+155,-7.73627e+154) i: 12	j: 5	val: (-6.32356e+170,-1.31143e+170) i: 12	j: 6	val: (-2.14638e+186,-2.53377e+185) i: 12	j: 7	val: (-7.73712e+201,1.39915e+201) i: 12	j: 8	val: (-2.09628e+217,1.50196e+217) --- i: 13	j: 0	val: (0,0) i: 13	j: 1	val: (0,0) i: 13	j: 2	val: (0,0) i: 13	j: 3	val: (0,0) i: 13	j: 4	val: (0,0) i: 13	j: 5	val: (0,0) i: 13	j: 6	val: (0,0) i: 13	j: 7	val: (0,0) i: 13	j: 8	val: (0,0) --- i: 14	j: 0	val: (2.99288e+107,-8.48534e+107) i: 14	j: 1	val: (-1.37995e+123,-1.09929e+124) i: 14	j: 2	val: (-3.4462e+139,-5.61505e+139) i: 14	j: 3	val: (-1.99107e+155,-1.67848e+155) i: 14	j: 4	val: (-7.56544e+170,-4.85276e+170) i: 14	j: 5	val: (-3.22153e+186,-1.64147e+186) i: 14	j: 6	val: (-1.50281e+202,-2.57623e+201) i: 14	j: 7	val: (-5.47944e+217,1.52875e+217) i: 14	j: 8	val: (-1.31202e+233,1.2574e+233) --- i: 15	j: 0	val: (0,0) i: 15	j: 1	val: (0,0) i: 15	j: 2	val: (0,0) i: 15	j: 3	val: (0,0) i: 15	j: 4	val: (0,0) i: 15	j: 5	val: (0,0) i: 15	j: 6	val: (0,0) i: 15	j: 7	val: (0,0) i: 15	j: 8	val: (0,0) --- i: 16	j: 0	val: (5.9467e+122,-2.59355e+123) i: 16	j: 1	val: (-6.03661e+138,-3.10484e+139) i: 16	j: 2	val: (-9.10047e+154,-1.64806e+155) i: 16	j: 3	val: (-5.1965e+170,-7.04042e+170) i: 16	j: 4	val: (-2.99237e+186,-3.23487e+186) i: 16	j: 5	val: (-1.9257e+202,-1.09749e+202) i: 16	j: 6	val: (-9.57639e+217,-7.39729e+216) i: 16	j: 7	val: (-3.20512e+233,1.40031e+233) i: 16	j: 8	val: (-6.68272e+248,8.50103e+248) --- R == 1.34034e-16 NOTICE: precision is sufficient: 16 <= 64 finalizing..e scanline 3078 / 3078 equalizing.. computing depth.. DEPTH=12 downscaling.. colourizing.. making images.. making videos.. making soundtrack.. 2022-11-23T18:42:44+01:00 begin 2022-11-23T18:43:07+01:00 end

autotune
emndl_autotune +RTS -N -RTS 80 P 1 R 0.0 I 0.0 @ 1                               ▄                                                             ▄                                                              ███                                                            ▄███▄ ▄                                                     ███████████▄█▀                                                ███████████████▄                                        ▄▄▄    ▄█████████████████                                      ▄█████▄ █████████████████                          ▄▄▄▄▄▄▄▄▄▄▄█▄███████▄████████████████▀                                     ▀ ███████ █████████████████                                        ███▀▀  █████████████████▄                                               ████████████████▀                                               ▀▀█████████████                                                   ▀▀▀▀█████▀█ ▀▀                                                       ███                                                             ▀█▀                                                                ▄

P 4 R -0.1565201668337550617989867 I -1.032247108922831801671601 @ 8.2966360777899879795193e-3 ▄▄▄     █▄                                                     ████▄███████▄█                                                   ▀█████████████                                                  ███████████████                                              ▄▄███████████████▄▄                                               ██████████████████▄                                            ▀███████████████████▀                                            ███████████████████▄                                          ▄▄ ██████████████████▀                                       ▄▄████████████████████▀▀                                        ████████ ▀███████████▄▄                                         ▄██████▀    ▀▀▀█▀▀  ▀██                                         ▀▀▀▀▀█

P 31 R -0.1534817415674078270901370 I -1.030177111803473792344760 @ 2.261921892899238897e-7 -0.1534817415674078270901370 -1.030177111803473792344760 5

=exponential map=

with scaling by 2pi/width

Here are the relevant parts of the code:

=video=
 * falling into Mandelbrot (360 test) by Claude A fractal zoom with a twist. Projecting  from inside the Riemann sphere, the image expands from below and scrolls past to contract overhead. This is a first test, there are some imperfections like bad mipmap level curves.  Render time 6 hours. Coordinates:
 * Cx = -1.76915100313963348631585617219113282419006284180146489000041
 * cyu = +0.00558166050979690182753149300394271544944337923388479000001i
 * @ 1e-21 ( zoom)
 * Misaligned Butterdonut (Dinkydau) by Claude and original page Misaligned Butterdonut by DinkydauSet
 * video: 360 Mandelbrot fractal zoom to the mini-Mandelbrot-set at the center of Dinkydau's "Misaligned Butterdonut" location. Rendered with 'emndl'  using algorithms from knighty's 'nanomb2'.

=References=