rechen operatoren
-
(D)Evil schrieb:
liegen aber alle im Namensraum std und sind im Header <cmath>.
-> es heißt 'std::sqrt()', solange du nicht den kompletten Namensraum importierst.
-
jetzt sagt er mir:
"Ogame Calc.cpp": E2015 Mehrdeutigkeit zwischen 'std::sqrt(double)' und 'std::sqrt(long double)' in Funktion main() in Zeile 27
-
wenn ich sqrtl() nehme klapts
-
Yazoo schrieb:
jetzt sagt er mir:
"Ogame Calc.cpp": E2015 Mehrdeutigkeit zwischen 'std::sqrt(double)' und 'std::sqrt(long double)' in Funktion main() in Zeile 27Was für einen Typ haben denn die beiden Variablen a und b? Wenn das int's sind, ist die Umwandlung nach double und long double gleich gut.
-
das waren floats
-
Du kannst deine floats in double casten um die Mehrdeutigkeit aufzulösen.
float a(2.3); float res = std::sqrt(double(a));
-
Yazoo schrieb:
und diese andere funktion Q_sqrt() funzt au net wenn ich ne wurzel aus 9 will was leicht is sagt er mir 0.332953
Jo, die Funktion heißt ja auch Q_rsqrt(), und berechnet den Kehrwert der Quadratwurzel. Vor lauter Staunen über den genialen Code scheint dieses kleine, unwesentliche Detail ganz gerne übersehen zu werden

-
Interessant ist aber auch, dass mittlerweile (zumindest bei mir) ein direkter sqrt() schneller ist, als die Tweaklösung von J. Carmack. Inwieweit mein Ergebnis transparent ist, weiss ich nicht zu sagen. Ich habe einen Benchmarktest in PureBasic (www.purebasic-lounge.de / www.purebasic.com) laufen lassen. Dort war die native Wurzelberechnung doppelt so schnell.
Trotz allem, Carmack rockt!
-
float a(2.3); float res = std::sqrt(double(a));1. function-style-cast ^^ (ok so nennt es der vc++)
2. http://www.cplusplus.com/reference/clibrary/cmath/sqrt.html=>
#include <cmath> const float x(2.3f); float sqrt_x(std::sqrt(x));
-
Was soll uns das jetzt sagen?

Klar, laut Standard sollte es eine float Variante von sqrt geben (26.5 6). Sein Compiler scheint diese Variante aber nicht zu kennen (mein BCB5 und 6 auch nicht) sondern nur eine double und eine long double Variante und dann muß halt gecastet werden. Ob man jetzt nun einen Function-style-cast oder static_cast nimmt ist hier Geschmacksache.
-
CStoll schrieb:
...quadieren, indem du die Zahl mit sich selber multiplizierst.
(und für sonstige Potenzierungen gibt es noch pow() und exp())
was machen pow() und exp()?
-
powhttp://www.cplusplus.com/reference/clibrary/cmath/pow.html
exphttp://www.cplusplus.com/reference/clibrary/cmath/exp.html
-
@Yazoo: Hmm pow(er) und exp(onential) ... jetzt mal www.leo.org befragen, was das wohl heißt.
@Braunstein: HmmWas soll uns das jetzt sagen?

Compiler wechseln ^^
-
Yazoo schrieb:
was machen pow() und exp()?
Kurzfassung: pow(x,y)=xy und exp(x)=ex.