Thread Komplexe Algorithmen, Arrays (26 answers)
Opened by Jack2442 at 2011-11-20 20:51

murphy
 2011-11-21 18:26
#154391 #154391
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Es ist schlicht falsch, dass Perl hier automatisch mit Ganzzahlen rechnen würde:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
$ perl -MDevel::Peek -E 'Dump 4 ** 0.5'
SV = NV(0xe245f0) at 0xe07860
REFCNT = 1
FLAGS = (PADTMP,NOK,READONLY,pNOK)
NV = 2
$ perl -MDevel::Peek -E 'Dump sqrt(4)'
SV = NV(0x1e545f0) at 0x1e37860
REFCNT = 1
FLAGS = (PADTMP,NOK,READONLY,pNOK)
NV = 2


Man beachte, da steht NV nicht IV, Perl hat also Ergebnisse produziert, die Fließkommazahlen sind.

Es ist natürlich schön und gut wenn der Prozessor genau genug arbeitet, dass die Fließkommazahl ein exakter Integer ist, aber wirklich darauf verlassen kann man sich nicht. Meines Wissens rechnen die meisten Hardwareimplementationen Wurzeln nicht mit einem iterativen Verfahren aus, bei dem man eventuell leicht feststellen könnte, wann die Approximation die Menge der natürlichen Zahlen verlässt, sondern die gängigste Implementation führt über Lookuptabellen für Exponentialfunktion und Logarithmus.

Im übrigen fiele mir auf Anhieb auch gar kein approximatives Verfahren für das Wurzelziehen aus natürlichen Zahlen ein, bei dem man komplett mit natürlichen Zahlen rechnen kann, sofern die Lösung selbst in dieser Menge liegt. Wenn Du einen solchen Algorithmus kennst, topeg, würde mich der interessieren :-)
When C++ is your hammer, every problem looks like your thumb.

View full thread Komplexe Algorithmen, Arrays