double hoch rechnen (double^int)
-
guten Abend
ich wollte mir eine Funktion schreiben, die die x-te Wurzel einer beliebigen Zahl ausrechnet:
double wurzel(int i, double zahl) { double x = 2; double y = 0; int z = i-1; int e = 0; while (e < 20 && x != y) { y = zahl/(x^z); // error C2296: '^': Ungültig, da der linke Operand vom Typ 'double' ist x = (z*x+y)/i; e++; } return x; }der Error ist recht eindeutig, nun die frage, wie kriege ich das hin?
Ist es überhaupt möglich, ohne einbindung einer extra library eine Zahl vom typ double hoch zu rechnen??
-
a) pow
b) x^y = x*x*...*x (das ganze y mal)
-
zu a) ich will die funktion selber schreibe
ich weiss von pow und co.
b) wieso ist es nicht möglich eine doublezahl "direkt" hochzurechnen, ist doch recht umständlich so...
-
Argus Magnus schrieb:
zu a) ich will die funktion selber schreibe
ich weiss von pow und co.
b) wieso ist es nicht möglich eine doublezahl "direkt" hochzurechnen, ist doch recht umständlich so...a) Dann benutz eine For-Schleife.
pow(...)ist jedoch sowieso schneller als deine eigene Funktion, und du kannst auch nicht-ganzzahlige Exponenten verwenden.
b) Weil ^ nicht der Operator für die Potenz, sondern für eine bitweise XOR-Verknüpfung ist.
-
Weil das eben nicht zum C++Standard gehört.
Du kannst übrigens auch kein int "direkt hochrechnen"
^ ist übrigens das bitweise xor.
http://de.wikipedia.org/wiki/Babylonisches_Wurzelziehen
hf
-
ach so xD
man lernt doch nie aus
und zu deinem wikipedia artikel: meine funktion beinhaltet nichts anderes als das Heronverfahren...
-
b) x^y = x*x*...*x (das ganze y mal)
Falsch! Zeig mir mal wie du auf die Weise 20.5 rechnest.
-
Tyrdal schrieb:
b) x^y = x*x*...*x (das ganze y mal)
Falsch! Zeig mir mal wie du auf die Weise 20.5 rechnest.
betreffzeile nochmal lesen

-
ihoernchen schrieb:
b) x^y = x*x*...*x (das ganze y mal)
Trick 17:
Solange y ohne Rest durch 2 teilbar ist tue das und multipliziere x mit sich selbst.