3. Wurzel berechnen
-
Dienstag, 1. Januar 2013 15:32Wie kann man eine 3. Wurzel in C# berechnen?
Alle Antworten
-
Dienstag, 1. Januar 2013 15:38
Hallo, laut definition ist die n-te Wurzel aus a das selbe wie a hoch 1/n. Daraus folgt:
double a = 8, n = 3; double d = Math.Pow(a, 1/n);
Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets
- Als Antwort markiert 256 Hoch 3 Montag, 21. Januar 2013 19:40
-
Donnerstag, 3. Januar 2013 20:16Danke für die Antwort, kannst du mir vielleicht noch sagen warum keine Funktion direkt in der Math-Klasse implementiert ist?
-
Donnerstag, 3. Januar 2013 21:10
Ich kann auch nur Vermutungen anstellen, aber ich denke das es an der Art liegt, wie die CPU das rechnet. Wie die Werte in den Registern Bitweise verändert werden usw.
Da gibt es bestimmt eine exaktere Erklärung für, aber die interessiert heute wohl weniger jemanden...PS: Eine richtige Erklärung würde mich auch interessieren.
Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets
-
Donnerstag, 3. Januar 2013 21:57Beantworter
Hallo zusammen,
das dürfte wohl daran liegen, dass auf den FPUs bereits sehr früh eine Quadratwurzel implementiert wurde - bereits der 8087 kannte sie als FSQRT.
Für höherwertige Wurzeln besteht seltener Bedarf und auf den frühen Prozessoren bzw. FPUs war nur relativ wenig Platz, so dass nur das notwendigste implementiert wurde. (Man kann das an den später hinzugefügten Befehlen sehen).
Die Math-Klasse setzt sie wiederum in den entsprechenden Aufruf um.
Die POW Methode ist zwar einfach aber nicht unbedingt schnell,
Entsprechendes gilt auch für andere Math Methoden.
siehe z. B.: In Search of a Fast Cube Root
Wobei man im Integer Fall ggf. weiter optimieren kann:
http://stackoverflow.com/questions/4331820/integer-cube-root- Als Antwort markiert 256 Hoch 3 Montag, 21. Januar 2013 19:41

