pow, powf, powl
من cppreference.com
معرفة في ملف <math.h>
|
||
float powf( float base, float exponent ); |
(1) | (منذ C99) |
double pow( double base, double exponent ); |
(2) | |
long double powl( long double base, long double exponent ); |
(3) | (منذ C99) |
معرفة في ملف <tgmath.h>
|
||
#define pow( base, exponent ) |
(4) | (منذ C99) |
1-3) تحسب قيمة رفع العدد
base
للأس exponent
.4) ماكرو عام النوع: إذا كان المعطى من النوع long double يتم استدعاء
powl
. أما إذا كان المعطى عدد صحيح أو من النوع double يتم استدعاء pow
. فيما عدا ذلك يتم استدعاء powf
. إذا كان المعطى عددا مركبا يتم استدعاء الدالة المركبة المناسبة (cpowf أو cpow أو cpowl).محتويات |
[تعديل] المعطيات
base | - | الأساس كعدد ذو فاصلة عائمة |
exponent | - | الأس كعدد ذو فاصلة عائمة |
[تعديل] القيمة المُرجعة
مالم يحدث خطأ ��تم إرجاع base
مرفوعة لأس exponent
.(baseexponent
)
لو كان هناك خطأ في المجال يتم إرجاع قيمة تحددها البيئة (NaN على الأنظمة الداعمة لذلك).
لو كان هناك خطأ قطبي أو في المدى نتيجة الطفح (Overflow) يتم إرجاع ±HUGE_VAL
أو ±HUGE_VALF
, أو ±HUGE_VALL
.
لو كان هناك خطأ في المدى نتيجة الطفح لأسفل يتم إرجاع القيمة الصحيحة بعد التقريب.
[تعديل] التعامل مع الأخطاء
يتم الإبلاغ عن الأخطاء كما هو موضح في math_errhandling.
[تعديل] ملحوظات
بينما لا يمكن حساب الجذر لعدد سالب عن طريق pow
يمكن استخدام cbrt في حالة أن الأس هو 1/3.
[تعديل] مثال
قم بتشغيل هذا الكود:
#include <stdio.h> #include <math.h> #include <errno.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON int main(void) { // الاستخدام المعتاد printf("pow(2, 10) = %f\n", pow(2,10)); printf("pow(2, 0.5) = %f\n", pow(2,0.5)); printf("pow(-2, -3) = %f\n", pow(-2,-3)); // قيم خاصة printf("pow(-1, NAN) = %f\n", pow(-1,NAN)); printf("pow(+1, NAN) = %f\n", pow(+1,NAN)); printf("pow(INFINITY, 2) = %f\n", pow(INFINITY, 2)); printf("pow(INFINITY, -1) = %f\n", pow(INFINITY, -1)); // التعامل مع الأخطاء errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("pow(-1, 1/3) = %f\n", pow(-1, 1.0/3)); if(errno == EDOM) perror(" errno == EDOM"); if(fetestexcept(FE_INVALID)) puts(" FE_INVALID raised"); feclearexcept(FE_ALL_EXCEPT); printf("pow(-0, -3) = %f\n", pow(-0.0, -3)); if(fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
خرج ممكن:
pow(2, 10) = 1024.000000 pow(2, 0.5) = 1.414214 pow(-2, -3) = -0.125000 pow(-1, NAN) = nan pow(+1, NAN) = 1.000000 pow(INFINITY, 2) = inf pow(INFINITY, -1) = 0.000000 pow(-1, 1/3) = -nan errno == EDOM: Numerical argument out of domain FE_INVALID raised pow(-0, -3) = -inf FE_DIVBYZERO raised
[تعديل] أنظر أيضا
(C99)(C99) |
تحسب الجذر التربيعي (√x) (دالة) |
(C99)(C99)(C99) |
تحسب الجذر التكعيبي (3√x) (دالة) |
(C99)(C99)(C99) |
تحسب الجذر التربيعي لمجمع مربعي عددين معينين (√x2 +y2 ) (دالة) |
(C99)(C99)(C99) |
computes the complex power function (دالة) |
مقالة مرجع C++ عن pow
|