exp, expf, expl
من cppreference.com
معرفة في ملف <math.h>
|
||
float expf( float arg ); |
(1) | (منذ C99) |
double exp( double arg ); |
(2) | |
long double expl( long double arg ); |
(3) | (منذ C99) |
معرفة في ملف <tgmath.h>
|
||
#define exp( arg ) |
(4) | (منذ C99) |
4) ماكرو عام النوع: إذا كان المعطى
arg
من النوع long double يتم استدعاء expl
. أما إذا كان arg
عدد صحيح أو من النوع double يتم استدعاء exp
. فيما عدا ذلك يتم استدعاء expf
. إذا كان arg
عددا مركبا يتم استدعاء الدالة المركبة المناسبة (cexpf أو cexp أو cexpl.)محتويات |
[تعديل] المعطيات
arg | - | عدد ذو فاصلة عائمة |
[تعديل] القيمة المُرجعة
في حالة النجاح, تُرجع ناتج رفع e لللأس arg
( earg
).
لو كان هناك خطأ قطبي أو في المدى نتيجة الطفح (Overflow) يتم إرجاع ±HUGE_VAL أو ±HUGE_VALF, أو ±HUGE_VALL.
لو كان هناك خطأ في المدى نتيجة الطفح لأسفل (Underflow) يتم إرجاع القيمة الصحيحة بعد التقريب.
[تعديل] التعامل مع الأخطاء
يتم الإبلاغ عن الأخطاء كما هو موضح في math_errhandling.
إذا كانت البيئة تدعم حسابات الفاصلة العائمة طبقا للـ IEEE (المعيار IEC 60559 تحديدا):
- لو كان المعطى ±0, يتم إرجاع 1
- لو كان المعطى -∞, يتم إرجاع +0
- لو كان المعطى +∞, يتم إرجاع +∞
- لو كان المعطى NaN, يتم إرجاع NaN
[تعديل] ملحوظات
لأنواع الـ double المتوافقة مع الـ ,IEEE يحدث Overflow عند 709.8 < arg و Underflow عند arg < -708.4.
[تعديل] مثال
قم بتشغيل هذا الكود:
#include <stdio.h> #include <math.h> #include <float.h> #include <errno.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON int main(void) { printf("exp(1) = %f\n", exp(1)); printf("FV of $100, continuously compounded at 3%% for 1 year = %f\n", 100*exp(0.03)); // special values printf("exp(-0) = %f\n", exp(-0.0)); printf("exp(-Inf) = %f\n", exp(-INFINITY)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("exp(710) = %f\n", exp(710)); if(errno == ERANGE) perror(" errno == ERANGE"); if(fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised"); }
خرج ممكن:
exp(1) = 2.718282 FV of $100, continuously compounded at 3% for 1 year = 103.045453 exp(-0) = 1.000000 exp(-Inf) = 0.000000 exp(710) = inf errno == ERANGE: Numerical result out of range FE_OVERFLOW raised
[تعديل] أنظر أيضا
(C99)(C99)(C99) |
تحسب 2 مرفوعة لأس معين (2x) (دالة) |
(C99)(C99)(C99) |
تحسب e مرفوعة لأس معين ثم يطرح منها واحد (ex-1) (دالة) |
(C99)(C99) |
تحسب اللوغاريتم الطبيعي (الأساس e) (ln(x)) (دالة) |
(C99)(C99)(C99) |
تحسب ناتج رفع e لأس مركب معطى (دالة) |
مقالة مرجع C++ عن exp
|