Archive for the ‘Windows’ Tag

Saturn and Titan 4.2.1   1 comment


There is a bug fix release for Saturn and Titan:

  • Saturn: the filter for saving parameter files referred to .npf files (Neptune parameters) not .spf files.
  • Saturn: changing inner/outer colour selection now affects the picture displayed. The changes were registered but the picture was unchanged, one way to update the picture was to select a different fractal type and return to the original fractal type.
  • Titan: parameter theta was displayed in the summary as zeta.
  • Titan: the Compasses fractal formula displayed in the summary was missing a z from the second term.
  • Versions for both programs upped to 4.2.1.

Three of the bugs are typographical and were missed just by “failing to see”. Failure to see a mistake is all too easy, often when text has been written you know what you thought you wrote and that is what you see even when it has blatant errors in it. Similarly when tackling cryptic crossword anagrams, sometimes, they just will not unjumble themselves and at other times they are solved with the greatest of ease.

The remaining bug was a feature that simply wasn’t tested.

Updated splash screen

Updated splash screen

Posted 23 September 2014 by element90 in Fractal, Linux, Software

Tagged with , , ,

New Release of Fractal Software   Leave a comment


Saturn and Titan 4.2.0 has been released, it has 4 new fractal types. In addition Neptune and Triton 1.1.0 has been released, it has 11 new fractal types.

Here are the new splash screens for Saturn and Neptune.

saturn-splash

neptune-splash

As usual versions for Linux and Windows are available.

Posted 15 September 2014 by element90 in Fractal, Software

Tagged with , , , ,

When is C++ long double not long double?   3 comments


When the compiler is Microsoft’s. The data type long double exists and can be used but there is no difference between long double and double.

Saturn and Titan have been developed on Linux using the g++ and clang++ compilers, long double occupies 128 bits (only 80 bits are used) and double occupies 64 bits. I used the long double datatype because it allowed deeper zooms than double before the generated picture degrades due to lack of precision. I introduced code to check the required precision to correctly generate fractals as the level of zoom increased, the initial shift from long double works most of the time, for some reason when long double is in fact double it doesn’t. Update: the example fractal illustrating the problem doesn’t shift to multi-precision because it is one of those fractals that the automatic mechanism doesn’t work, zooming in further with the Linux version exhibits the same problem it just does it later because of the greater precision of long doubles.

For Windows versions of Saturn and Titan the testing was cursory so I missed this problem which is present in all released versions of Saturn and Titan to date.

The problem is best illustrated using two screen shots of the yet to be released version 4.0.0 of Saturn, one running on Windows and the other on Linux.

Saturn 4.0.0 on Windows 7

Saturn 4.0.0 on Windows 7

Saturn 4.0.0 on Linux

Saturn 4.0.0 on Linux

So I now have to add code to Saturn and Titan to account for Microsoft defining long double as double.

Delay to the release of Saturn & Titan version 2.1   Leave a comment


There is a delay to the release of Saturn & Titan version 2.1, the release package for Linux was completed and Saturn unexpectedly failed to build on Windows. The first issue is that C++ in Visual Studio Express 2010 doesn’t have asin, acos and atan for complex numbers, g++ version 4.6 used on Linux must have these otherwise I would’ve discovered this issue sooner.

Fortunately there is an easy solution and that is to use the definitions available in boost and as they are in the namespace boost::math:: I can use them without the need for conditional compilation.

The software would now build for Windows except for a change relating to the display of the splash window. I noticed that when only the default colour maps exist the splash window is displayed for so short a time that the question, “What was that?” immediately comes to mind. I added a delay of one second after loading the configuration and colour XML files before removing the splash window, the code used to implement the delay was not portable. A portable solution should be found quickly.

Once I’ve a solution for both problems I can prepare new packages. It shouldn’t take long.

Why Porting Software takes Time   2 comments


Saturn and Titan were developed on Linux for my my own use. The software was used to produce fractal images which I started to upload to DeviantArt and then to Red Bubble, after awhile I had periodic inquiries as to whether the software was available, I resisted making the software available for some time eventually relenting and making Saturn and Titan available as source packages for Linux. The toolkit I used to develop Saturn and Titan was the C++ version of GTK+ called Gtkmm, I knew that there were ports of this toolkit for Windows and OS X. This is all very well in theory, the state of the Gtkmm port for OS X seems to be incomplete and one of the libraries Saturn relies on is not available. The situation for Windows is better, I have some other programs written in C# using Gtk# developed on Linux, the executables for these programs could be copied to Windows and run successfully provided that the Windows also had the Gtk# libraries installed, however Saturn and Titan are written in C++ …

In my previous post I showed a picture of Titan running on Windows 7 which was built using Gtkmm, MinGW, MSYS and NetBeans, it successfully loaded and expanded a Saturn seed file. Then I attempted to build Saturn using Microsoft’s compiler and Visual Studio 2010 Express, this took a while to setup to build Saturn mainly due to unfamiliarity with Visual Studio 2010 Express, the last time I used Visual Studio was several years ago on Windows NT. Finally I got a 32-bit version of Saturn to build, I expected it fail to open Saturn’s glade file (an XML file containing the GUI definition) as the code still contained Unix style path delimiters / instead of \ that Windows uses, even though the path to the glade ended up having both Unix and Windows path delimiters the glade file was successfully opened then Saturn crashed. The crash was due to the following line:

Glib::ustring value_str = Glib::ustring::format(std::setprecision(std::numeric_limits<long double>::digits10), value);

When this line is executed an exception is thrown stating that conversion from WCHAR_T to UTF-8 is not supported. This is a problem as the are 128 occurrences of Glib::ustring::format in Saturn. So I tried building Saturn in the same way as did for Titan earlier. This resulted in …

Saturn running on Windows 7

Now that’s more like it, but … Note the the duration in square brackets beneath the Mandelbrot, it took over 56 seconds to generate a 750×500 image with 5000 iterations this is VERY slow, on Linux it takes 17 seconds. The times are for virtual machines running on an iMac with 4 Gigabytes of memory and an Intel Core 2 Duo @ 3.06 GHz processor, each virtual machine had 1280 Megabytes allocated. Note: Saturn is much slower than other fractal programs because of the way it displays the fractal image which is updated every 5 or 10 iterations depending on fractal type.

I then opened the fractal setting window which revealed two more problems:

Saturn's fractal setting window on Windows 7

The tab title Fractal has been truncated to Fracta, however that is a minor problem compared with value displayed for limit, it should be 16 and not minus zero which isn’t even a valid number. The incorrect value is produced by exactly the same line that causes the Visual Studio built version to crash. So clearly I can’t use Glib::ustring::format in Saturn so here’s is a work around:

std::stringstream str;
str << std::setprecision(std::numeric_limits<long double>::digits10) << value;
Glib::ustring value_str(str.str());

This code does produce the string “16” instead of “-0”, going back to the Visual Studio build and implementing the above work around just produces a different exception, this time due to inaccessible memory when calling the destructor for std::stringstream when str goes out of scope.

So far the problems encountered are with 32-bit builds of Saturn, I haven’t yet been able to make much progress with the 64-bit builds, Saturn fails to build with Visual Studio and fails to run with NetBeans. I don’t know why Saturn fails to run in NetBeans as I haven’t been able to get it to work with the 64-bit version of the gdb debugger, yet…

So, it’s going to take time to fix these problems, extensive testing of the Windows versions of Saturn and Titan is required. I don’t really won’t to spend so much time getting Version 1.0 sorted out for Windows so I’m going to start on version 1.1 which will be a minor update and will incorporate the necessary changes to get Saturn to run successfully on Windows. Hopefully Windows users won’t have to wait too long.

Posted 3 January 2012 by element90 in Fractal, Software

Tagged with , , , , , ,

Windows Versions   1 comment


Saturn and Titan are available for Linux and are temporarily held in Sta.sh on DeviantArt, element90 on DeviantArt gets you to my page where you can find links to Saturn and Titan in the deviantID section. If you download the files from DeviantArt you’ll find that the filenames have been mangled and should be renamed to saturn-1.0.tar.gz and titan-1.0.tar.gz respecitively. Once you’ve unpacked the archives just follow the instructions the README files. When I’ve found a better place to host these files I’ll update the My Software page and include links to download the software from there.

I now have a copy of Windows 7 which I’m running in a virtual machine on OS X, I tried building Titan on Windows expecting a number of things to fix. Initially I installed MinGW, MSYS along with NetBeans and the Gtkmm Windows port as this is the quickest way to try things out as Titan is developed using NetBeans. The result was a surprise to say the least: Titan built an ran successfully:

Titan running on Windows 7

This is good indication that I’ll be able to release Saturn and Titan for Windows 7 soon. The release versions will be built using Visual Studio, I’ve come across a few problems building Saturn using Visual Studio there is a disparity between Microsoft’s C++ and GNU’s C++ compilers some feature’s accepted by GNU’s C++ aren’t accepted by Microsoft’s compiler. Once I’ve got the programs to build and they’ve been sufficiently tested I’ll need to find out how to package them for release in 32-bit and 64-bit versions.

Posted 2 January 2012 by element90 in Fractal, Software

Tagged with , , , , ,