Algorithmischer Fehler des Rechners (Bowmar MX140 [1974])
Mein älterer Kollege ist kürzlich in den Ruhestand getreten und hat einen Bowmar MX140-Rechner zurückgelassen, den ich reparieren konnte
Nachdem ich damit herumgespielt habe, habe ich festgestellt, dass es bei bestimmten Funktionen einen Fehler gibt.
Als Beispiel \$9*9=81\$. Wo als \$9^{2}=80.9999\dot{9}\$
Die Quadrate der Zahlen 10 bis 19 werden als vollständige Ganzzahlen angezeigt, aber \$20^{2}=399.9999\dot{9}\$
Es ist zu erklären gibt es ein gewisses Maß an Fehlern im Handbuch finden Sie hier auf den Seiten 30-31.
Meine Frage ist: Woher kommt dieser Fehler?
Ich würde Firmware annehmen, aber gibt es andere Möglichkeiten, die \ zu berechnen$Y^{X}\$außerdem \$Y*Y*Y\$usw.?
Als zusätzliche Frage, warum tritt dieser Fehler nur bei bestimmten Zahlen auf? zB 9 & 20
Antworten
\.$Y^X\$wird normalerweise als \ implementiert$e^{X \ln Y}\$so dass X und Y beide nicht ganze Zahlen sein können. Logarithmus und Potenzierung werden mithilfe von Reihenerweiterungen implementiert und es besteht eine gewisse Wahrscheinlichkeit, dass keine genaue Antwort gefunden wird.
Moderne Taschenrechner führen diese Berechnungen mit genügend "Schutzziffern" durch, damit das Ergebnis für die Anzeige korrekt gerundet werden kann. Frühe Taschenrechner hatten manchmal nicht genug Ziffern, um in jedem Fall richtig zu runden, und das sehen Sie hier.
Das Exponential wird wahrscheinlich mit demselben CORDIC- Algorithmus wie die transzendentalen Funktionen berechnet .
Die Hardware in diesen frühen Rechnerchips war extrem einfach - BCD-Ziffernverschiebung und -addition und nicht viel mehr.
Ein Rundungsfehler ist daher zu erwarten, außer wenn es sich um exakte BCD-Ganzzahlen handelt.