spin.de · die Community: Diskussions-Forum und Chat - Lern nette Leute kennen!

» Kostenlos anmelden
Sitemap
: was sollte 0 hoch 0 sein?!
MichaelK
User wurde
23. Mai 2012 11:23

Potenz in Hardware

Antwort auf re von wandkeks

> > Bei Division durch Null gibts nen Interrupt.
> > (Ausnahme: FDIV beim Pentium ergibt nen gerundetes
> > Ergebnis *zwinker*)
>
> Pentium 1, stepping irgendwas fruehes. Schreib das doch
> bitte dazu :p

Nö. Ich will ja, dass die alle ihre Pentium und anderen Intel-Chips wegwerfen und in Laden rennen, um sich nen AMD zu kaufen. :-)

> > Potenz ist so direkt in der Form x^y weder bei x87 noch
> > bei SSE direkt verfügbar, wenn mich nicht alles täuscht.
>
> Wenn das stimmt, gibt es also nichtmal den "omg
> performance"- Grund, 0^0 keine exception schmeissen zu
> lassen.

siehe beispielsweise:
AMD64 Architecture Programmer's Manual Volume 5: 64-Bit Media and x87 Floating-Point Instructions:
http://support.amd.com/us/Processor_TechDocs/26569_APM_v5.pdf

Gruß
MichaelK



Möchtest du mitreden?     Kostenlos Anmelden

MichaelK
User wurde
23. Mai 2012 11:28

Auweia

Antwort auf re von wandkeks

> "man" nicht. J schon. APL auch.

Gibts da auch von offizieller Seite ne Begründung?
Ich meine bei solchen Sachen, wie auch bei 0⁰=1 gibts ja meistens ne Begründung a-la man braucht für bestimmte (i.d.R. häufig benutzten) Rechnungen/Algorithmen keine Ausnahmen zu behandeln, weil es in der Praxis so funktioniert wie es soll und daher solche Festlegungen einfach sinnvoll sind.

Gruß
MichaelK



23. Mai 2012 13:36

re

> > "man" nicht. J schon. APL auch.
> >
> Gibts da auch von offizieller Seite ne Begründung?

Symmetrie.
Allerdings natuerlich nur in der arbitraeren wertetabelle, die die da hatten.



23. Mai 2012 21:05

holy sh*t!


    1 >>> float("NaN")**0
    2 1.0

Not even a warning.

Das scheint so spezifiziert zu sein.
Ich hab grad keine Lust, 83 EUR fuer ein PDF zu bezahlen um das zu verifizieren, aber http://packages.python.org/bigfloat/ meint:

Special values are handled as described in the ISO C99 and IEEE 754-2008 standards for the pow function.
[...]
pow(x, ±0) returns 1 for any x, even a NaN.

What is this I don't even



23. Mai 2012 21:13

omg

apparently, die komplexe zahl nan + nanj ist hoch 0...... 1+0j. Sehr logisch, das alles:


    1 >>> 1+1j
    2 (1+1j)
    3 >>> _*nan
    4 (nan+nanj)
    5 >>> _**0
    6 (1+0j)


24. Mai 2012 04:42

falls jemand den WTF nicht direkt sieht

es ist ja durchaus legitim, |C mit |R² zu identifizieren, die 2 Vektorraeume sind isomorph.
Bloederweise gibt (x, y) ^ 0 fuer alle x, y (1,1) nach den IEEE-Regeln. Nur halt nicht, wenn x, y komplex interpretiert wird. dann (1,0). sowas kann man sich doch gar nicht ausdenken... </fefe>



11. Jun 2012 12:57

Möchte ich genauer wissen!

> Eigentlich ist das alles falsch. 0 hoch 0 sollte
> eigentlich ne Exception schmeissen, oder wenigstens NaN
> liefern, das Resultat ist eindeutig undeterminiert.

Wieso?

> Wie denkt ihr darueber?

Ich denke, 0 hoch 0 ist eindeutig 1. Meines Wissens geben Potenzen folgende Rechenanweisung:
"Multipliziere die Eins exponentfach mit der Basis".

Dann ist:
2 hoch 2 = 1x2x2 = 4
2 hoch 1 = 1x2 = 2
2 hoch 0 = 1
0 hoch 2 = 1x0x0 = 0
0 hoch 1 = 1x0 = 0
0 hoch 0 = 1 1
2 hoch -2 = 1 x 1/2 x 1/2 = 1/4 2
2 hoch -1 = 1 x 1/2 = 1/2
0 hoch -1 = 1 x 1/0 [Gnome-Taschenrechner: "Die Potenz von Null ist nicht für einen negativen Exponenten definiert"]

> Bevor ihr antwortet: Macht euch klar, dass eine Antwort
> darauf auch eine Antwort auf die Definition von 0 durch 0
> impliziert.

Und das möchte ich jetzt genauer wissen. Wieso das?



mef
11. Jun 2012 13:22

0 hoch 0 gleich 0 durch 0

0^0 = 0 ^ {(1-1)} = \frac{0^1}{0^1} = \frac{0}{0}



mef
11. Jun 2012 13:31

Zusatz

Ob dieser "Beweis" richtig ist, kann ich nicht sagen, da ich nicht weiss, ob die Regel a^{x-y} = \frac{a^x}{a^y} fuer a=0 gilt.



11. Jun 2012 16:14

Hmm

Wenn der Beweis korrekt wäre, müßten alle Potenzen von Null undefiniert sein.
0^2 = 0 ^ {(3-1)} = \frac{0^3}{0^1} = \frac{0}{0}
aber:
0^2 = 1 \cdot 0 \cdot 0 = 0
Alle Taschenrechner(-programme), die mir zur Verfügung stehen, geben für 0 hoch 0 = 1, für 0 hoch positive Zahl = 0 und für 0 hoch negative Zahl einen Fehler aus.



11. Jun 2012 16:28

hm

definitionsgemäß ist für jede zahl a ungleich null ihre 0te potenz gleich eins (a^0=1) ...
definitionsgemäß ist für jede zahl a größer null die potenz 0^a=0 ...

diese beide definitionen widersprechen sich allerdings wenn man den limes a gegen 0 betrachtet, sodaß 0^0 tatsächlich undefiniert ist.



11. Jun 2012 16:42

Mhm

Hier ein wenig Wiki-Informationen über das nicht so ganz triviale Problem.



11. Jun 2012 16:44

mhm

dass dieses problem alles mögliche, nur nicht trivial ist, ist mir durchaus bewusst. *schmunzel



12. Jun 2012 13:13

re

> > Eigentlich ist das alles falsch. 0 hoch 0 sollte
> > eigentlich ne Exception schmeissen, oder wenigstens NaN
> > liefern, das Resultat ist eindeutig undeterminiert.
>
> Wieso?

Weil: f(x) := x**ε ; g(x) := ε**x

lim_x->0 ||f(x) - g(x)|| != 0.

Aus dem selben Grund ist 0/0 nicht definiert.

> > Bevor ihr antwortet: Macht euch klar, dass eine Antwort
> > darauf auch eine Antwort auf die Definition von 0 durch
> 0
> > impliziert.
>
> Und das möchte ich jetzt genauer wissen. Wieso das?

s.o.