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
|

