QB64 Phoenix Edition
Ackermann Function - Printable Version

+- QB64 Phoenix Edition (https://qb64phoenix.com/forum)
+-- Forum: QB64 Rising (https://qb64phoenix.com/forum/forumdisplay.php?fid=1)
+--- Forum: Code and Stuff (https://qb64phoenix.com/forum/forumdisplay.php?fid=3)
+---- Forum: Works in Progress (https://qb64phoenix.com/forum/forumdisplay.php?fid=9)
+---- Thread: Ackermann Function (/showthread.php?tid=617)

Pages: 1 2 3 4


RE: Ackermann Function - Jack - 07-16-2022

try a larger stack size, in my case 10MB worked, try with 16MB


RE: Ackermann Function - Kernelpanic - 07-19-2022

(07-16-2022, 11:47 PM)Jack Wrote: try a larger stack size, in my case 10MB worked, try with 16MB

I changed the stack to 26 MB but it just doesn't work with A(4,1).  Huh
Code: (Select All)
c_compiler\bin\g++ -s -Wfatal-errors -w -Wall qbx.cpp -lws2_32 -lwinspool parts\core\os\win\src.a -lopengl32 -lglu32 -lwinmm -lgdi32 -mwindows -static-libgcc -static-libstdc++ -D GLEW_STATIC -D FREEGLUT_STATIC -lksguid -lole32 -lwinmm -ldxguid -o ..\..\ -Wl, --stack, 26485760

It works up to A(3, 11), at A(3, 12) it's over again. There is now a time measurement for this.
Code: (Select All)
'Ackermann Funktion - 15. Juli 2022
'Absturz schon bei 4, 1 = 65533 (?)
'Na endlich funktioniert jetzt die Zeitmessung - 19. Juli 2022

Option _Explicit

Declare Function ackermann(m as Integer, n as Integer) as Long

Dim m, n As Long
Dim i, j As Integer
Dim t_start, t_end As Single

Print
Print "Ackermann Funktion - Geben Sie zwei Zahlen ein"
Print
Input "Zahl 1: ", m
Input "Zahl 2: ", n
Print

t_start = Timer
i = 0: j = 0
For i = 0 To m
  For j = 0 To n
    Print Using "Ackermann (#, ###) = ######"; i, j, ackermann(i, j)
  Next j
Next i

Print
t_end = Timer
Print Using "Verstrichene Zeit: ###.### Sekunden"; t_end - t_start;

End 'Hauptprogramm

Function ackermann (m As _Unsigned Integer, n As _Unsigned Integer)

  If m = 0 Then ackermann = n + 1

  If m > 0 And n = 0 Then
    ackermann = ackermann(m - 1, 1)
  End If
  If m > 0 And n > 0 Then
    ackermann = ackermann(m - 1, ackermann(m, n - 1))
  End If
End Function



RE: Ackermann Function - Jack - 07-19-2022

here's what my makeline_win.txt looks like
Code: (Select All)
c_compiler\bin\g++ -O2 -Wl,--stack,16777216 -s -Wfatal-errors -w -Wall qbx.cpp -lws2_32 -lwinspool parts\core\os\win\src.a -lopengl32 -lglu32 -lwinmm -lgdi32 -mwindows -static-libgcc -static-libstdc++ -D GLEW_STATIC -D FREEGLUT_STATIC -lksguid -lole32 -lwinmm -ldxguid -o ..\..\



RE: Ackermann Function - Kernelpanic - 07-19-2022

It just want not work! Not even with 26 MB. I suppose it's an attitude on my part, . . . but which?

Your "makeline":
Code: (Select All)
c_compiler\bin\g++ -O2 -Wl,--stack,26777216 -s -Wfatal-errors -w -Wall qbx.cpp -lws2_32 -lwinspool parts\core\os\win\src.a -lopengl32 -lglu32 -lwinmm -lgdi32 -mwindows -static-libgcc -static-libstdc++ -D GLEW_STATIC -D FREEGLUT_STATIC -lksguid -lole32 -lwinmm -ldxguid -o ..\..\

[Image: Ackermann-Jack2022-07-19-223757.jpg]


RE: Ackermann Function - Jack - 07-19-2022

the only thing I can think of is that the compiler is not rebuilding your program, try making some minor change to the code and see if it works
or perhaps you are editing the wrong makeline_win.txt in case that you have more than one version of QB64 installed


RE: Ackermann Function - Kernelpanic - 07-19-2022

Quote:the only thing I can think of is that the compiler is not rebuilding your program, try making some minor change to the code and see if it works
Well, but what?  Huh



Quote:or perhaps you are editing the wrong makeline_win.txt in case that you have more than one version of QB64 installed
No, it's the makeline of QB64 0.82. -- I just renamed the original "makeline" to "xmakeline..." - no change. Game over!


[Image: makeline2022-07-20-005245.jpg]


RE: Ackermann Function - Jack - 07-19-2022

I usually add a space then delete it right after, just as long the editor notices a change the compiler should rebuild your program


RE: Ackermann Function - Jack - 07-19-2022

@Kernelpanic
the problem is that in version .82 compiler options were added and it seems to ignore makeline_win.txt
click on C++ Compiler Settings and then in the C++ Linker Flags paste -Wl,--stack,16777216


RE: Ackermann Function - Kernelpanic - 07-20-2022

(07-19-2022, 11:40 PM)Jack Wrote: @Kernelpanic
the problem is that in version .82 compiler options were added and it seems to ignore makeline_win.txt
click on C++ Compiler Settings and then in the C++ Linker Flags paste  -Wl,--stack,16777216

I don't have that. But I can think of something: gcc 8.1 is obviously being used, but I already have GCC 11.2.0 installed. Maybe that has an impact. . .  Huh
And now: Thanks for your help, and Good Night. See you later . . .

[Image: GCC-11-2-0-2022-07-20-024206.jpg]


RE: Ackermann Function - Jack - 07-20-2022

I really don't understand, are you using version .82 or some other version?
[Image: image.png]