السلام عليكم
هذه أول مشاركة لي بهذا المنتدى الرائع
وسأطرح عليكم هذه المشكلة الموجودة في المكتبة math.h لأنه من الواجب التعقيب عليها.
المشكلة بسيطة وهي لماذا لا تعمل الدالة pow() من أجل الأعداد السالبة.
ولتوضيح أكثر، لنعتبر المثال التالي:
نحن نعلم أن الجذر التكعيبي لـ -8 هو -2 وعندما نجرب على الدالة بـ pow(-8,1/3) فإنه ينتج لي NaN .
مثال آخر: نحن نعلم أن -32 أس 1/5 يساوي -2 لكن عندما نستخدم الدالة pow(-32,1/5) فإن الإجابة هي NaN أي أنه لا يمكن حساب -32 أس 0.2 .
والكود هو:
#include <iostream>
#include <math.h>
int main()
{
double x, y;
std::cout<<"Enter first number:\n";
std::cin>>x;
std::cout<<"Enter second number:\n";
std::cin>>y;
std::cout<<"Thereford ("<<x<<")^("<<y<<") = "<<pow(x,y)<<std::endl;
char rep;
std::cin>>rep;
return 0;
}لقد بحثت في مناطق أخرى لكني لم أجد إجابة مقنعة، فهناك من يقول لي أن الدالة pow تعمل من أجل الأعداد الموجبة وأما بالنسبة للأعداد السالبة فإنه يأخذ فقط الأعداد الصحيحة.
ومنهم من إستدل أن الجذر التكعيبي لـ -8 هو عدد مركب !!
أرجو أن أجد من يدلني، هل الدالة pow مخطئة في هذا التقدير أو محقة.



