pow() liefert falsches Ergebnis
-
Hallo,
pow(0.0, 0.0) liefert mir 1.0..
Wenn ich auf NaN bzw. +/- unendlich checke, lässt mich die Funktion glauben, dass tatsächlich die Zahl 1.0 rauskommt?!
Das müsste doch eigtl. NaN sein, oder?
-
x^0 = 1, da 1 = x/x = 1/x* x = x(-1)*x1 = x^0
-
Danke für die Antwort!
Ich dachte immer 0^x ist immer 0 und x^0 ist immer 1, also widerspricht sich 0^0...
Aber im C99-Standard wurde pow(0.0, 0.0) = 1.0 festgelegt..
Jetz bin ich schlauer
-
Mathematisch ist 0^0 jedoch nicht definiert.
-
ich meinte a^0=1 also auch für a=0 oder liege ich da falsch?
-
Fencer schrieb:
ich meinte a^0=1 also auch für a=0 oder liege ich da falsch?
stimmt schon.
aber 0^a=0 also auch für a=0also haben wie deinen grund, daß 0^0=1, und meinen grund, daß 0^0=1.
was nun?
-
ist das gleiche spiel wie 0/0.
+x/0 = +inf
-x/0 = -inf
0/x = 0was macht man also mit 0/0 -> nicht definiert.
Mich überascht allerdings dass pow(0.0, 0.0) micht auch ein ind zurückgibt, oder ein nan
-
Naja, nicht nur 0/0 ist nicht definiert, sondern irgendwas/0. Die C-Implementierung nimmts wohl nicht so genau, vielleicht damit man das Resultat zu bestimmten Einsatzzwecken missbrauchen kann.
Integer-Division durch 0 führt auf jeden Fall zu einer Betriebssystem-Exception.
-
ja ich habe die .0 weggelassen, ich meinte das generell
speziell umgesetzt wird das nur in der float(double)aritmetikDie exception (bei integer) verursacht doch nicht das OS, sondern die CPU, odeR?
-
um das Dilemma mit 0^x und x^0 aufzulösen kann man sich den Grenzwert von x^x für x->0 anschauen - das ergibt nämlich auch 1
