I did a while ago this little proggie to explore the lyapunov space (and was also my first attempt with FPU and threads), and I'd like you to have a look at it

I'll just attach the exe at the moment, because I don't have the source handy, but if any1 is interested, I'll upload the source code as soon as I can access my machine at home


ps: it should be pretty easy to use, but
The higher "warmup" and "cycles" the more accurate is the calculation (and ofcourse it takes longer)
"Set B" affects only the sinusoidal lyapunov exponent, not the linear (selected by default)
"string" is the sequence of X and Y that creates the strange figures ... try "aaaaaabbbbbb" resetting the coordinates (press RESET) and zooming in the top right corner (use the mouse to draw a rectangle - there is a bug here, when dragging the rect don't exit the window with the mouse)
You can SAVE and LOAD the settings or just save the BMP
Width and Height .. well just guess ;)
Posted on 2001-10-25 11:04:57 by random
Neat example.... It would be a good topic for an ASM tutorial...

    [*]Multiple windows..
    [*]Floating point math...
    [*]GDI work..
    [*]Multi threading (start/stop etc)

    Just a thought.... good work..

Posted on 2001-10-25 11:56:45 by NaN
Hello random

NaN can tell you that part of your subject is what I been trying to learn about for a while now. Could you post the source so that I can study it. Thanks

Hey NaN I have not figured it out yet (Child or Seperate Window), but I am on a roll because of this great Board.... Other things have been kicking in for me very fast now. Give me 6 more Months and I will be an Real Assembler Too.

See Ya
Posted on 2001-10-25 14:28:25 by cmax

I've only been at it myself since roughly january (Coding windows that is)... keep it up..

Posted on 2001-10-25 16:13:10 by NaN

Neat example.... It would be a good topic for an ASM tutorial...

Definately, i agree. I would love to study your use of the FPU.

I ran you exe on my machine (twin Celeron 500, not overclocked), it kept one processor at about 90% for roughly 15 seconds, that was using 300 for the warmup and 500 for the cycles. Just thought you might be interested in this little benchmark :)
Posted on 2001-10-26 05:33:46 by sluggy
tried lyap.exe, but it does not start ...

I use Win95c, Directx8.
Posted on 2001-10-26 07:03:28 by beaster
I will post the source next Tue, when I'll be back home and maybe have some time to clean it up a little

if you want to know a bit more about this strange fractals you can check

I tried various implementations available on the net, but they are all several times slower than mine.
I will certainly welcome any advise on how to improve the efficiency of the algorithm (maybe with MMX extensions or whatever)
As I said this was my first (and for the moment only), experiment with the FPU. Right now I'm more interested in winsocks.

I wouldn't mind a port in DX either.

AS for the problem on win95 I have no idea. I tested it on Win98 and Win2k, on 166MMX up to PIII 850Mhz

have a nice weekend everybody
Posted on 2001-10-26 07:40:02 by random

it also don't start on my PI 233Mhz, Win98SE,
DirectX 8.

It seems to start and exit, because it is not in the Tasklist.

Good Luck

Posted on 2001-10-26 09:01:13 by Test Department
I used a image from your program to make this desktop wallpaper, I think it turned out pretty well :cool:
Posted on 2001-10-26 12:47:07 by Qweerdy
Thats odd.. cause im running Windows 98SE as well... IE explorer 5.0... The only extra i can think of is my G-Force 2 card..

Posted on 2001-10-26 14:32:40 by NaN
As promised, I'm attaching the source code below.
I wanted to clean it up a bit and add some more comments, but I really don't have time, so ... here it is, better than nothing ;)

Any feedback would be very appreciated!
And if you are ever to use some of this code ... well, go ahead and have fun
Posted on 2001-10-30 06:02:50 by random
it seems, that you dont return TRUE in response to WM_INITDIALOG - possibly the reason for dont start on my system.
Posted on 2001-10-30 07:15:46 by beaster
it does return TRUE (inc eax)

Posted on 2001-10-30 08:03:59 by random
Hey random,
could you do me the biggest favor, and post a sort of pseudo-code flow chart of your algorithm? I had a brief look at the link you posted, there was too much boring math there :) And i haven't checked out your source code yet, maybe on the weekend (unless i feel like drinking beer instead :))
Posted on 2001-10-31 04:37:18 by sluggy
No problem

the pseudo code to calculate the Lyap exponent with the polynomial function is:

(1) Initialisation:
x = x0
For i=1 to INIT: { x = rx(1-x) }

(2) Derivation of the exponent:
total = 0
For i=1 to NLYAP:
x = rx(1-x)
total = total + Log|r-2rx|/Log 2
exponent = total / NLYAP

Where x0 is arbitrary (between 0 and 1); INIT and NLYAP are arbitrary integers, which must be as high as possible to get precise evaluations.
The fecundity (r) is forced to alternate between two values X and Y, following a periodic pattern (set in the "string" field in my program, say AAB means r will change between X and Y like this XXYXXYXXYXXY... during the calculation loops).
The whole thing is run for every single pixel (X,Y)!!

easy :)

Posted on 2001-10-31 09:07:33 by random
mmh, I did a little debugging on my win95 problem with your code,
and think now the problem is the "msctls_progress32" control,
which must be enabled first by a call of "InitCommonControls".

Otherwise the control class is unknown and the dialog does
not start.
Posted on 2001-11-01 10:44:18 by beaster

now ... does it work on your PC with the InitCommonControls call?

let me know

Posted on 2001-11-04 04:24:20 by random
I'm not able to assemble MASM codes, maybe you can send me
a private email with a new exe.
Posted on 2001-11-05 04:05:38 by beaster

here's the new exe

what I did was simply to add a call to InitCommonControls before creating the dialog box

invoke GetModuleHandleA,0 ; get hmod (in eax)
mov ,eax
invoke InitCommonControls
invoke DialogBoxParamA,eax,IDD_MAIN,0,ADDR DlgProc,0
invoke ExitProcess,eax

Let me know :)
Posted on 2001-11-07 04:11:54 by random
works fine now!
Posted on 2001-11-08 12:47:38 by beaster