[Casio fx-3600P] Fakultät n! für n>69

  • Große Fakultäten mit dem Casio fx-3600P


    Ab 1981 bis Mitte der 80er gehörte der Casio fx-3600P dank seines günstigen Preises, seiner handlichen Größe und v.a. wegen seiner Programmierbarkeit zu den beliebtesten Schulrechnern. Freilich ist sein Programmierschema recht einfach:


    • 38 Programmschritte (in 2 Programmbereichen P1 und P2)
    • 6 Register K1 bis K6 mit Registerarithmetik
    • Ein/Ausgabe mit HLT und ENT
    • Unbedingter Sprung zum Programmanfang mit RTN
    • Bedingter Sprung zum Programmanfang mit x>0 oder x<=M


    Für dieses Modell hatte ich gerne kleine Routinen auf ebenso kleinen Zetteln zum Einlegen in das Etui geschrieben, doch sie gingen zusammen mit dem Rechner kurz vor Schulabschluss verloren. Ersatz war später dank Ebay kein Problem. Heute ist mir freilich rätselhaft, wie mir damals mit dem fx-3600P z.B. eine Primfaktorzerlegung gelingen konnte. Deshalb begnüge ich mich mit dem viel einfacheren Beispiel einer Fakultätsberechnung.


    Natürlich verfügt das Gerät über eine eingebaute Fakultätsfunktion n!, und zwar für natürliche Zahlen n<=69. Für 69! wird das Ergebnis 1.711224523E98 ausgegeben, darüber wird der zulässige Zahlenbereich (<1E100) überschritten.


    Das folgende Programm berechnet die Fakultät nicht direkt. Statt eines schnell wachsenden Produkts wird nur eine langsam wachsende Summe berechnet:


    n!= 1*2*3* ... *n (Produkt)


    log(n!)= log(1*2*3* ... *n)=log(1)+log(2)+log(3)+ ... +log(n) (Summe)


    Aus dieser Summe läßt sich schließlich die Fakultät bestimmen, getrennt nach Mantisse M und Exponent E:


    n!= M * 10^E


    n!= 10^FRAC(log(n!)) * 10^INT(log(n!))



    Code:


    (Mode 0, INV PCL P1)



    Eingabe:


    INV K AC n P1

    oder: 0 Kin 1 n P1



    Ausgabe:


    Mantisse M,

    INV X<>Y

    Exponent E



    Rechenbeispiele

    (diegleichen wie im Fakultätsprogramm für den TI-57)


    69!


    0 Kin 1 69 P1

    1.711224384 (Rechenzeit 27 s)

    INV X<>Y

    98

    (= 1.711224384E98)

    rel. Fehler: -8,1E-10



    100!


    9.3326165 (nach 48 s)

    INV X<>Y

    157

    rel. Fehler -5,5E-7



    253!


    5.173448259 (nach 1 min 42 s)

    INV X<>Y

    499

    rel. Fehler: -2,5E-6



    449!


    3.851914246 (nach 3 min)

    INV X<>Y

    997

    rel. Fehler: -4,2E-6



    1000!


    4.023534226 (nach knapp 7 min)

    INV X<>Y

    2567

    rel. Fehler: 0,0084%



    5000!


    4.215644692 (nach 33 min)

    INV X<>Y

    16325

    rel. Fehler: -0,31%


    Das Ergebnis ist eine Zahl mit 16326 Dezimalstellen, wovon nur die beiden ersten korrekt ermittelt wurden. Für noch größere Fakultäten sollte man parallel die Kaffeemaschine laufen lassen oder besser gleich auf eine Näherungsformel umsteigen. ;)


    Grüße, Thorsten



    Wer keinen Casio fx-3600P zur Hand hat, kann einen Emulator ausprobieren.

    : RPN ."Register-Postfix-Notation" ;