Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Gnom

Frischling

  • »Gnom« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Walpersbach

Beruf: Schüler

  • Private Nachricht senden

1

01.03.2005, 10:38

Wurzel berechnen in C++

Ich möchte einen kleinen Rechner proggen, der auch Wurzel berechnen kann. Nun habe ich das Problem, wie berechne ich Wurzeln (vorrangig Quadratwurzeln!)
Es gibt nichts schöneres, als dem Schweigen eines Dummkopfes zuzuhören!

Goergi

Frischling

Beiträge: 85

Wohnort: NÖ

  • Private Nachricht senden

2

01.03.2005, 11:38

wenn du die quadratwurzel willst dann:
x ^ 1/2

bei kubikwurzel:
x ^ 1/3

bei n-ter wurzel:
x ^ 1/n
Get Firefox!!!
http://www.mozilla.com

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

3

01.03.2005, 11:40

Eine Möglichkeit ist es Google zu benutzen. Damit findest du meistens schnell eine Antwort.
Zum Beispiel diese:
http://msdn.microsoft.com/library/defaul…l/_crt_sqrt.asp
Ich hoffe, dass hilft dir weiter.

4

05.04.2005, 14:04

Also es gibt eine Funktion, die in der Header-Datei math.h deklariert ist. Sie heißt sqrt (Squareroot) für double-Werte und sqrtf für float-Werte. Beide erfordern einen Parameter, von dem die Wurzel gezogen wird und gibt einen float-, bzw. double-Wert zurück.
z.B.:
x=sqrt(6);
y=sqrtf(6.23f);

Hoffe, das hilft dir weiter.

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

05.04.2005, 14:15

Leider sind diese "Standard-Funktionen" aus der math-Bibliothek o.ä. meistens nicht sehr schnell. Vielleicht schreibst Du Dir Deine eigene Wurzel-Funktion unter Zuhilfenahme einer CPU-Extension (SSE, 3DNow!).
Ein einfacher Weg zur "manuellen" Wurzel-Berechnung (Quadratwurzel) ist der folgende:

Quellcode

1
2
3
4
5
function sqrt( x )
    z := 1.0
    while | z² - x | >= µ
        z := z - ( z² - x ) / 2z
    return z

Wobei µ den Toleranzbereich der Ungenauigkeit darstellt, also klein sein sollte.
Ich habe keine Ahnung, ob dieses Pseudo-Code-Beispiel schneller ist, als die sqrt-Funktion der math-Bibliothek (wahrscheinlich nämlich nicht), aber mit SSE oder 3DNow! "bist Du auf jeden Fall high-speed".

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

6

05.04.2005, 22:11

Wenn's ums Selberlernen geht, würde ich mich mal mit dem Heron-Verfahren auseinandersetzen - eine einfache Iterationsvorschrift für Quadratwurzelberechnung. Meine kleine (hochbegabte!) Schwester hat auch schon mal eine Art "allgemeines Heron-Verfahren für die n-te Wurzel" erfunden (Mathelehrer war begeistert :-D ), aber so was wie das Heron-Verfahren ist für Programmier-Anfänger nebenbei eine nette Übung. Außerdem glaube ich nicht, dass SSE oder so gebraucht wird - es geht schließlich nur um einen kleinen Rechner oder nicht?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Werbeanzeige