Logo by Trifox - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Visit the official fractalforums.com Youtube Channel
 
*
Welcome, Guest. Please login or register. March 29, 2024, 03:41:21 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 ... 4 5 [6] 7 8 ... 17   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: SuperFractalThing: Arbitrary precision mandelbrot set rendering in Java.  (Read 99002 times)
0 Members and 1 Guest are viewing this topic.
Alef
Fractal Supremo
*****
Posts: 1174



WWW
« Reply #75 on: May 30, 2013, 05:14:57 PM »

Quote
My competition movie has my "metal-style" effect, which I hope is unique?
Well it was pink. I think colours of this one were better. Exponent smoothing with some metal gradients can generate metal efect alone.
Logged

fractal catalisator
mrflay
Alien
***
Posts: 36


« Reply #76 on: May 30, 2013, 11:51:11 PM »


I looked briefly at the SFT source code (but not been able to compile it due to missing jnlp.jar or similar) and saw some "parent" fields in some objects.  Am I correct in thinking it has a tree of points, with each level being created using a cubic approximation from the parent?  That kind of algorithm might be harder to implement efficiently for GPU.


SFT does recursively divide up the screen, allowing extra iterations of the ABC coefficients to be calculated for each region. SFT keeps dividing until the regions are 3x3 pixels, however I don't know how close to optimal this is. I would expect an optimised gpu implementation to use the cpu to recursively divide the screen down to about 20x20 to 50x50 pixels, maybe, whilst using the gpu to calculate the leaves.

It should be easier to compile the source now. I've separated the jnlp code to a single file that can be ignored if you are not interested in running it in a browser.
Logged
mrflay
Alien
***
Posts: 36


« Reply #77 on: June 01, 2013, 10:03:57 PM »

I've built a new version of SuperFractalThing It can be accessed via my web page http://www.superfractalthing.co.nf, or downloaded from SourceForge.

Changes for version 0.4:

*   Size is saved correctly for zooms past 1e308
*   If the user changes the iteration limit and then performs a zoom, the users iteration limit is now used
*   The automatic iteration limit increase now works with box zooms as well as double click zooms
*   Issues with commas in the iteration limit might be improved.
*   Now built with Java SE 7

Edit: There was a problem with the web page version, stopping it from saving and loading. It should be fixed now.
« Last Edit: June 02, 2013, 12:34:04 PM by mrflay » Logged
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #78 on: June 02, 2013, 03:04:57 PM »

Mrflay, I am using the name SFT on my creations made by my jet unpublished program based on your pertubation theory. However you may consider SFT being the name of your programs and not the general method?
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #79 on: June 02, 2013, 03:58:42 PM »

Yet another movie based on this pertubation method. This time far beyond e308 smiley

<a href="http://www.youtube.com/v/-zQFN-X0kbA&rel=1&fs=1&hd=1" target="_blank">http://www.youtube.com/v/-zQFN-X0kbA&rel=1&fs=1&hd=1</a>

Rendered in 7 hrs on a 32-bit laptop pc
« Last Edit: June 02, 2013, 04:00:22 PM by asdklfjdf » Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #80 on: June 02, 2013, 05:28:15 PM »

I've built a new version of SuperFractalThing ... Changes for version 0.4: ...

Great work!  I've been hacking a bit on the code, I put my fork online here (the "claude" branch):

https://gitorious.org/maximus/sft
http://code.mathr.co.uk/sft

Significant changes against upstream:
  • smooth colouring with normalized iteration count (0) (the palette is currently hardcoded to one HSV-based formula)
  • position library split into separate data files, loaded at runtime from the jar file
  • build system ("make -C source run", on Debian-based systems you might need to "update-alternatives --config {javac,java}" after installing openjdk-7-jdk)

Planned changes:
  • re-enable original palettes with smooth colouring
  • a "batch mode" for non-interactively rendering lots of images
  • exterior distance estimate colouring (1)

(0) http://en.wikipedia.org/wiki/Mandelbrot_set#Continuous_.28smooth.29_coloring
(1) http://en.wikipedia.org/wiki/Mandelbrot_set#Exterior_distance_estimation
« Last Edit: March 10, 2015, 03:17:33 AM by claude, Reason: gitorious.org is closing » Logged
Tabasco Raremaster
Iterator
*
Posts: 172



WWW
« Reply #81 on: June 02, 2013, 06:41:28 PM »

Sorry about that, I haven't got a 32bit OS to test it on. I've added a link to a low memory version on the launch page, which I think should help. The low memory version is the same except it can't export poster size images.

Thanks but I've got my 64bit machine finally running well now so am going to give it another try smiley

Can you create such an application to make a deeper than deep zoom into flames ? P-p-p-please cheesy
Logged

http://tabasco-raremaster.deviantart.com/

If you dislike it press; Alt+F4
mrflay
Alien
***
Posts: 36


« Reply #82 on: June 22, 2013, 12:00:59 AM »

Btw I had a go at looking at a deep high iteration spot to see if I could break sft, and I succeeded. Attached is a save file of the point just before it goes wrong. I haven't figured out why it goes wrong, it might be a fundamental issue or just a simple bug. What happens is that when you zoom in, you always seem to get the same image, regardless of the depth and position. The saved point is inside the final image of teamfresh's e228 zoom, with a zoom of 1e412, and a minimum of about 500,000 iterations.

Its not very quick to render, so here's an image from a bit earlier in the zoom:
https://www.box.com/s/8u8zi19piactx9wx76yc


* tf_e412_triangle.txt (0.92 KB - downloaded 90 times.)
Logged
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #83 on: June 24, 2013, 12:05:42 PM »

Its not very quick to render, so here's an image from a bit earlier in the zoom:
https://www.box.com/s/8u8zi19piactx9wx76yc
Can you give the location parameters?
I had a similar problem and that was due to the scaling and  the limitation of the double datatype, which should not occur until about e600 if you are scaling the variables.
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #84 on: June 25, 2013, 03:04:45 AM »

The pdf you posted includes:

An+1 = 2XnAn + 1
Bn+1 = 2XnBn + An2
Cn+1 = 2XnCn + AnBn

and that the series approximation becomes poor once C starts to approach B in magnitude.

But this will always happen at C2. Note that A0 = 1 and B0 = C0 = 0. Then:

A1 = 2X0A0 + 1 = 2X0 + 1
B1 = 2X0B0 + A02 = A02 = 1
C1 = 2X0C0 + 2A0B0 = 0

and finally:

B2 = 2X1B1 + A12 = 2X1 + (2X0 + 1)2
C2 = 2X2C1 + A1B1 = A1B1 = A1 = 2X0 + 1.

If X is any trapped or high-iteration point, it's dithering around in a Julia set of diameter approximately 2, so |B2| is generally in the range 0-11 and |C2| is in the range 0-3. I tried calculating the first few terms for the center coordinates of Mandelbrot Safari:

0.275337647746737993588667124824627881566714069895426285916274363067437510130230301309671975356653639860582884204637353 84997362663584446169657773339617717365950286959762265485804783047336923365261060963100721927003791989610861331863571141 0655928412269957977397230123742985898239211816931398241903797459102438729408702005271146241616545 + 0.006759649405327850670181700456194929502189750234614304846357269137106731032582471677573582008294494705826194131450773 10704967071714678595763311924422571027117886784050420240236249129631789483532106497151867377563025274513529470021667381 57907333431349841201085240017993510765776422837516274693151248839624530130938534718983117335557824i

I got these results:

1.0, 0.0, 0.0

1.550675295493476 + 0.013519298810655701i, 1.0, 0.0

2.0886093800617935 + 0.04200174973566416i, 3.1066166509201705 + 0.06289212803423438i, 3.101350590986952 + 0.027038597621311403i

The magnitudes of B2 and C2 are extremely close in this instance.

Is there an error in the math in the PDF, an error in the claim "The approximation should be good as long as the δ3 term has a magnitude signi cantly smaller then[sic] the δ2 term", an error in my implementation, or an error in my assumption that this series approximation would ever shave off more than just the first handful of iterations?
« Last Edit: June 25, 2013, 03:07:30 AM by Pauldelbrot » Logged

Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #85 on: June 25, 2013, 03:14:48 AM »

Actually, I may have answered my own question. It seems it must be the magnitude not of the coefficient but the whole term that matters -- so, in fact, C should be no bigger than Bx10magnification or so, rather than no bigger than B. I got there from thinking "wait, shouldn't the approximation break down sooner for less magnified images, instead of being fixed for any image using a given reference orbit?" Just comparing B and C corresponds to an image magnification showing a quarter of the Set or so, so it makes sense for it to break down after only a couple of iterations in that case.
Logged

Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #86 on: June 25, 2013, 10:26:12 AM »

I don't understand why the coefficients A, B and C where invented at all. I am only using function (1) from the sft_maths.pdf document, and I think the other functions adds unnecessary overhead and complicates the scaling.
Or am I missing something important?
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #87 on: June 25, 2013, 12:32:12 PM »

A substantial further speedup, given that my current data suggests it should be possible to lop about 50,000 iterations off the start of calculation for every pixel of the final Mandelbrot Safari image in one fell swoop.

On the other hand, data for other magnifications centered on the same point indicate that the savings is as much as 1/3 earlier on, but drops to about 1/10 toward the end. Combined with my minibrot-associated speedup, though, it could prove more substantial, saving 1/3 even for deeper images, on top of (multiplied by) that other speedup's savings -- but I'm not, as yet, completely certain of that.

First acid test of my implementation of the perturbative approach (sans other speedups) should likely happen later today.
Logged

Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #88 on: June 25, 2013, 06:35:35 PM »

I've got my own implementation partly working now. There's still some kinks to work out but preliminary tests on isolated points are giving sensible results.

Meanwhile, I managed to break Superfractalthing itself. If you accidentally put, say, 1e10 instead of 1e-10 into "Horizontal size" and "refresh", it hangs with 0% CPU use. The usual case that would trigger this is copying a magnification over from Ultrafractal or other software without flipping the sign.
Logged

Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #89 on: June 26, 2013, 10:30:26 PM »

I have my own implementation generating correct-looking images from just past the limits of double precision. The inner loop seems to be about 2.5 times slower than SuperFractalThing's, but that's within spitting distance. It's also running on a JVM (64-bit server VM to be exact), but it's written in Clojure (a dialect of Lisp for the JVM). No user interface as yet.

So there are now three Mandelbrot renderers using the OP's technology:

NameSpeedSeries approximation included?Other features
SuperFractalThing2.5YesZooming UI
Kalles Fractaler?NoRender animations
Nanoscope1.0YesMultiwave coloring

of which at least one is publicly available and open-sourced. An open-source Nanoscope with a real UI may exist eventually, but my next priority is going to be adding animation capability to it (designed to be combined with VirtualDub or other external images-to-avi converter), now that I've gotten it working, and working at a non-dismal speed. I will also investigate at least one possibility for moderately upping its speed.

Oh: Nanoscope should be able to zoom past e300, with a bit of a slowdown at that point, but I haven't tested that yet. When zoomed deeper than that, it uses a different inner loop that is divided into two parts: an innermost part that works with delta-times-10p for some power p > 300, with the delta-squared term ignored (it's 10300 or more smaller than delta, and delta has 16 bits of precision!) and a copy of delta-nought pre-multiplied by 10p. The innermost part runs for 500 iterations at a time. The outer loop moves some of the growing exponent of delta into p, shrinking delta and growing p (and renormalizing delta-zero), between each run of the inner loop, until the true value of delta is larger than 10-300. At that point, it switches to the other version of the loop, with delta squared term included (as it's now not guaranteed to be negligible) for the rest of the iterations. Only the loop with delta squared checks for bailout, as it can't be anywhere near bailing out yet until delta's way larger than 10-300; I just check delta itself against the bailout, as with any bailout suitable for smoothed iterations (107, say) the difference between delta and the actual orbit point (the reference orbit point!) will be small in comparison (a couple parts per million, if the reference orbit is trapped in a disk of radius 2 centered on the origin).

The 500 above is because if the rescaled delta starts at O(1), being multiplied by 2*reference-point each iteration and added to a (swiftly negligibly smaller) delta-nought, then given a trapped reference point it will grow at most 4* bigger each iteration, and 4500 ~ 10301 is still a bit short of the point of double exponent overflow.

My above E-300 inner loop has 8 adds and 7 multiplies (I *could* make a third, "was smaller than E-300 originally" version with 5 adds by dropping the delta-zero term which will be negligible in these cases; and 2 multiplies and an add are needed to calculate radius for bailout, or I could drop to 5 multiplies and 7 adds) and my below E-300 inner loop has 4 adds and 4 multiplies. If anyone has optimized this loop to remove more multiplies I'd be curious to know how.
« Last Edit: June 26, 2013, 10:41:27 PM by Pauldelbrot » Logged

Pages: 1 ... 4 5 [6] 7 8 ... 17   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
Java applet for exploring the Mandelbrot set Announcements & News Paton 5 6602 Last post March 26, 2007, 06:03:34 PM
by Paton
What range/precision for fractional escape counts for Mandelbrot/Julia sets? Programming Duncan C 7 9936 Last post May 01, 2007, 08:23:13 PM
by Duncan C
Java Mandelbrot segment Help & Support fractalwizz 10 1897 Last post December 29, 2008, 08:01:24 PM
by cKleinhuis
[Java] Double-double library for 128-bit precision. Programming Zom-B 10 16970 Last post December 20, 2010, 04:03:48 AM
by David Makin
*Continued* SuperFractalThing: Arbitrary precision mandelbrot set rendering in Java. Announcements & News « 1 2 ... 23 24 » hapf 347 47005 Last post September 28, 2017, 10:20:19 PM
by claude

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.364 seconds with 28 queries. (Pretty URLs adds 0.025s, 2q)