| |
|
|
p.specht
| Wilhelm Friedrich Ackermann (* 1896 en Schönebecke (Herscheid); † 1962 en Lüdenscheid) war una deutscher Mathematiker, el con su Función 1926 una These seines Lehrers David Hilbert a Fall brachte, derzufolge todos berechenbaren Características auch rekursiv berechenbar seien. Ackermann's Función wurde 1955 de el Ungarin Rózsa Péter vereinfacht.
Für Benchmark-Timingzwecke se üblicherweise A(3,6) herangezogen.
' (D) Demoware, 2013-03 de C después de XProfan-11 by K. Orkenzieher
' Beweist auch, daß algo Rekursion auch en XProfan funktioniert.
' Quelle (Orig.): https://www.xgc.com/benchmarks/ackermann_c.htm
' Updated May 11, 2005. Copyright (C-Versión): XGC Software
' Begleittext des C-Vorbildes:
' Ackermann's function "is a example of a recursive function which
' is not primitive recursive". It is interesting from the point of
' view of benchmarking because it "grows faster than any primitive
' recursive function" and gives us a lot of nested function calls
' for little effort.
' It is defined as follows:
' A(0, n) = n+1
' A(m, 0) = A(m-1, 1)
' A(m, n) = A(m-1, A(m, n-1))
' We use A(3,6) as the benchmark. This used to take long enough to
' confirm the execution time with a stopwatch. Nowadays that's out
' of the question. The value of A(4,2) has 19729 digits!
' A (3,6) gives us 172233 calls, with a nesting depth of 511.
'
var m&=3
var n&=6
Declarar ans!,t1&,t2&
Windowtitle "Ackermann-Péter A("+str$(m&)+","+str$(n&)+")-Benchmark"
CLS
t1&=&gettickcount
ans! = A(m&,n&)
t2&=&gettickcount
imprimir " Ergebnis: ";format$("%g",ans!)
caso (m&=3) and (n&=6) and (ans!<>509) :imprimir "Resultat ";ans!;" falso, 509 muss rauskommen!"
caso (m&=3) and (n&=7) and (ans!<>1021):imprimir "Resultat ";ans!;" falso, 1021 muss rauskommen!"
imprimir format$(" Benchmark-Tiempo = %g Sekunden",(t2&-t1&)/1000)
waitinput
End
proc A
parámetros m&,n&
if m&=0
volver n&+1
elseif n&=0
volver A(m&-1,1)
más
volver A(m&-1,A(m&,n&-1))
endif
ENDPROC
P.S.: Mein Lappi (Zweikerner 1.86 GHz) liefert: A(2,200)=403: Interpreter 7,305 sec, Compiler 1,264 sec; A(3,6)=509: Interpreter 14.445 sec, Compiler 2.663 sec; nProc: 0.002 sec A(3,7)=1021: Interpreter 61.976 sec, Compiler 11.123 sec; nProc: 0.015 sec A(3,8)=2045: Interpreter 261.45 sec, Compiler 45.864 sec; nProc: 0.062 sec A(3,9)=4093: Interpreter y Compiler brechen wegen a hoher Rekursionstiefe ab; nProc: 0,265 sec A(3,10)=8189: nP: 1,092 sec A(3,11)=16381: nP: 4,212 sec A(3,12)=32765: nP: 17,019 sec A(3,13)=65533: nP: 67,47 sec A(3,n)=2^(n+3)-3 A(4,1)=65533 : nP: 66,737 sec A(4,2)=2^65536−3 ... no ermitelt |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 09.05.2021 ▲ |
|
|
|
|
p.specht
| Ackermann-Función algo flotter ------------------------------------------- Como ellos en Largo-Integers definiert es, se ejecuta el en XProfan-11 bastante rasch en el Überlaufbereich (Kennzeichen: Los números son negativo). Damit letzteres no así rápidamente passiert, hier una Definition en ganzzahllige Float-Variables. Vorsicht: Ackermann(4,2) führt incluso en Supercomputern en el "Nirwana"...
Título de la ventana "Ackermann-Función, en FLoats definiert"
'por el ungar. Mathematikerin Roza Peters beschleunigte Versión
set("decimals",0):CLS:declarar i!,j!
whileloop 0,5:i!=&Loop
whileloop 0,6:j!=&Loop
imprimir " ACKERMANN(";i!;",";j!;") = ";ACK(i!,j!)
endwhile
endwhile
imprimir "---"
waitinput
FIN
Proc ACK :parámetros m!,n!:declarar ans!
if nearly(m!,0,5):ans!=n!+1
elseif nearly(n!,0,5):ans!=ACK(m!-1,1)
más :ans!=ACK(m!-1,ack(m!,n!-1))
endif
volver ans!
ENDPROC
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 30.05.2021 ▲ |
|
|
|