C ++ pow (0, 0) sonucu sonucu matematiksel bir çelişkili durum var çünkü davranışını tanımlanan uygulama temelde N^0
her zaman olmalı 1
ama 0^N
her zaman olması gerektiği 0
için N > 0
ya bu sonucu olarak matematiksel olarak beklentim yok bu yüzden. Bu Wolfram Alpha forum gönderileri biraz daha ayrıntıya giriyor.
IEC 60559 kayan noktalı aritmetik desteğini kapsayan bölümde Uluslararası Standart - Programlama Dilleri - C'nin gerekçesinde belirtildiği gibi birçok uygulama için pow(0,0)
sonuca sahip 1
olmak yararlı olsa da :
Genel olarak, C99, sayısal bir değerin yararlı olduğu bir NaN sonucundan kaçınır. [...] pow (∞, 0) ve pow (0,0) sonuçlarının her ikisi de 1'dir, çünkü bu tanımdan yararlanabilecek uygulamalar vardır. Örneğin, x (p) ve y (p), p = a'da sıfır olan herhangi bir analitik fonksiyonsa, exp (y * log (x)) 'e eşit olan pow (x, y), p yaklaştıkça 1'e yaklaşır. a.
C ++ güncelleyin
Leemes doğru işaret edildiği gibi başlangıçta referans ile bağlantılı kompleks sürümüne POW ise , karmaşık olmayan o versiyon istemlerden alan hata taslak C ++ standart geri döner taslak Cı standart ve her iki C99 ve C11 bölümünde 7.12.7.4
pow fonksiyonları paragraf 2 diyor ( vurgu benim ):
[...] x sıfır ve y sıfırsa bir alan hatası oluşabilir . [...]
Anlayabildiğim kadarıyla bu davranışın tanımlanmamış bir davranış olduğu anlamına gelir Biraz geri sarma Bölüm 7.12.1
Hata durumlarının tedavisi şöyle der:
[...] bir girdi bağımsız değişkeni matematiksel işlevin tanımlandığı etki alanının dışındaysa bir etki alanı hatası oluşur. [...] Etki alanı hatasında işlev, uygulama tanımlı bir değer döndürür; math_errhandling & MATH_ERRNO tamsayı ifadesi sıfır değilse, errno tamsayı ifadesi EDOM değerini alır; [...]
Bir varsa Yani alanı hatası o zaman bu olurdu uygulama tanımlı davranış ama son sürümlerinde hem de gcc
ve clang
değeri errno
olan 0
bir değil bu yüzden alanı hatası bu derleyiciler için.
Javascript'i güncelle
İçin JavaScript ECMAScript® Dil Şartname bölümünde 15.8
Matematik Nesne altında 15.8.2.13
pow (x, y) diğer koşullara o aralarında diyor ki:
Y +0 ise, x NaN olsa bile sonuç 1'dir.