المتغيرات
فضاءات التسمية
أفعال

pow, powf, powl

من cppreference.com
< c‏ | numeric‏ | math
 
 
 
دوال رياضية شائعة
الدوال
عمليات بسيطة
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
دوال أسية ولوغارتمية ثابتة الأساس
(C99)
(C99)
(C99)
(C99)
دوال أسية وجذور
(C99)
(C99)
pow
دوال حساب المثلثات والدول الزائدية
(C99)
(C99)
(C99)
دالة الخطأ ودالة غاوس
(C99)
(C99)
(C99)
(C99)
إيجاد أقرب عدد صحيح لفاصلة عائمة (float)
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
دوال التعديل على الفاصلة العائمة (float)
(C99)(C99)
(C99)
(C99)
التصنيف والمقارنة
(C99)
(C99)
(C99)
ثوابت ماكرو
 
معرفة في ملف <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‎)
(دالة) [edit]
(C99)(C99)(C99)
تحسب الجذر التكعيبي (‎3x)
(دالة) [edit]
(C99)(C99)(C99)
تحسب الجذر التربيعي لمجمع مربعي عددين معينين ‎ (x2
+y2
)‎
(دالة) [edit]
(C99)(C99)(C99)
computes the complex power function
(دالة) [edit]