ใน C ++ ผลมาจากธาร (0, 0)ผลที่ได้คือโดยทั่วไปการดำเนินการกำหนดพฤติกรรมตั้งแต่ทางคณิตศาสตร์เรามีสถานการณ์ขัดแย้งที่N^0
ควรจะเป็น1
แต่0^N
ควรจะเป็น0
สำหรับN > 0
ดังนั้นคุณควรจะมีความคาดหวังทางคณิตศาสตร์เพื่อผลจากการนี้อย่างใดอย่างหนึ่ง โพสต์ในฟอรัมWolfram Alphaนี้มีรายละเอียดเพิ่มเติมเล็กน้อย
แม้ว่าการมีpow(0,0)
ผลลัพธ์1
จะมีประโยชน์สำหรับแอปพลิเคชันต่างๆเนื่องจากเหตุผลสำหรับมาตรฐานสากล - ภาษาการเขียนโปรแกรม -สถานะCในส่วนที่ครอบคลุมการสนับสนุนเลขคณิตลอยตัวของ IEC 60559 :
โดยทั่วไป C99 จะหลีกเลี่ยงผลลัพธ์ NaN ซึ่งค่าตัวเลขมีประโยชน์ [... ] ผลลัพธ์ของพาว (∞, 0) และพาว (0,0) เป็น 1 ทั้งคู่เนื่องจากมีแอพพลิเคชั่นที่สามารถใช้ประโยชน์จากความหมายนี้ได้ ตัวอย่างเช่นถ้า x (p) และ y (p) เป็นฟังก์ชันการวิเคราะห์ใด ๆ ที่กลายเป็นศูนย์ที่ p = a แล้วก็พาว (x, y) ซึ่งเท่ากับ exp (y * log (x)) เข้าใกล้ 1 เป็น p เข้าใกล้ ก.
อัปเดต C ++
ในฐานะที่เป็น leemes ชี้ได้อย่างถูกต้องจากฉันเดิมที่เชื่อมโยงกับการอ้างอิงสำหรับซับซ้อนรุ่นของธารในขณะที่ที่ไม่ซับซ้อนเรียกร้องรุ่นมันเป็นข้อผิดพลาดโดเมนร่าง c ++ มาตรฐานตกกลับไปที่ร่างมาตรฐาน Cและทั้งสองC99และC11ในส่วน7.12.7.4
ฟังก์ชั่นธารวรรค2พูดว่า ( เน้นของฉัน ):
[... ] ข้อผิดพลาดของโดเมนอาจเกิดขึ้นถ้า x เป็นศูนย์และ y เป็นศูนย์ [... ]
ซึ่งเท่าที่ฉันสามารถบอกได้หมายความว่าพฤติกรรมนี้เป็นพฤติกรรมที่ไม่ได้ระบุการย้อนกลับส่วนบิต7.12.1
การรักษาเงื่อนไขข้อผิดพลาดกล่าวว่า:
[... ] ข้อผิดพลาดของโดเมนเกิดขึ้นหากอาร์กิวเมนต์อินพุตอยู่นอกโดเมนซึ่งฟังก์ชันทางคณิตศาสตร์ถูกกำหนดไว้ [... ] ในข้อผิดพลาดของโดเมนฟังก์ชันจะส่งคืนค่าที่กำหนดโดยการนำไปใช้งาน ถ้านิพจน์จำนวนเต็ม math_errhandling & MATH_ERRNO ไม่ใช่ศูนย์นิพจน์จำนวนเต็มจะไม่ได้รับค่า EDOM [... ]
ดังนั้นหากมีข้อผิดพลาดของโดเมนสิ่งนี้จะเป็นพฤติกรรมที่กำหนดการนำไปใช้แต่ในทั้งเวอร์ชันล่าสุดgcc
และclang
ค่าของerrno
คือ0
ดังนั้นจึงไม่ใช่ข้อผิดพลาดของโดเมนสำหรับคอมไพเลอร์เหล่านั้น
อัปเดต Javascript
สำหรับJavascriptข้อกำหนดภาษาECMAScript®ในส่วน15.8
The Math Objectภายใต้15.8.2.13
pow (x, y)กล่าวในเงื่อนไขอื่น ๆ ที่:
ถ้า y คือ +0 ผลลัพธ์คือ 1 แม้ว่า x จะเป็น NaN