none
3. Wurzel berechnen

Answers

  • 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

    • Marked as answer by 256 Hoch 3 Monday, January 21, 2013 7:40 PM
    Tuesday, January 01, 2013 3:38 PM
  • 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.
    Entsprechendes gilt auch für andere Math Methoden.

    Die POW Methode ist zwar einfach aber nicht unbedingt schnell,

    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

    Gruß Elmar

    • Marked as answer by 256 Hoch 3 Monday, January 21, 2013 7:41 PM
    Thursday, January 03, 2013 9:57 PM

All replies

  • 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

    • Marked as answer by 256 Hoch 3 Monday, January 21, 2013 7:40 PM
    Tuesday, January 01, 2013 3:38 PM
  • Danke für die Antwort, kannst du mir vielleicht noch sagen warum keine Funktion direkt in der Math-Klasse implementiert ist?
    Thursday, January 03, 2013 8:16 PM
  • 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

    Thursday, January 03, 2013 9:10 PM
  • 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.
    Entsprechendes gilt auch für andere Math Methoden.

    Die POW Methode ist zwar einfach aber nicht unbedingt schnell,

    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

    Gruß Elmar

    • Marked as answer by 256 Hoch 3 Monday, January 21, 2013 7:41 PM
    Thursday, January 03, 2013 9:57 PM