log, logf, logl
من cppreference.com
<tbody>
</tbody>
| معرفة في ملف <math.h>
|
||
float logf( float arg ); |
(1) | (منذ C99) |
double log( double arg ); |
(2) | |
long double logl( long double arg ); |
(3) | (منذ C99) |
| معرفة في ملف <tgmath.h>
|
||
#define log( arg ) |
(4) | (منذ C99) |
1-3) تحسب اللوغاريتم الطبيعي (أساس e) للعدد
arg.4) ماكرو عام النوع: إذا كان المعطى
arg من النوع long double يتم استدعاء logl. أما إذا كان arg عدد صحيح أو من النوع double يتم استدعاء log. فيما عدا ذلك يتم استدعاء logf. إذا كان arg عددا مركبا يتم استدعاء الدالة المركبة المناسبة (clogf أو clog أو clogl.)المعطيات
| arg | - | عدد ذو فاصلة عائمة |
القيمة المُرجعة
في حالة النجاح, تُرجع اللوغاريتم الطبيعي (أساس e) للعدد arg ( ln(arg) أوlog
e(arg) ) .
لو كان هناك خطأ في المجال يتم إرجاع قيمة تحددها البيئة (غالبا NaN على الأنظمة الداعمة لذلك).
في حالة حدوث خطأ قطبي, يتم إرجاع -HUGE_VAL أو -HUGE_VALF أو -HUGE_VALL.
التعامل مع الأخطاء
يتم الإبلاغ عن الأخطاء كما هو موضح في math_errhandling.
في حالة كون arg أصغر من الصفر يحدث خطأ في المجال.
إذا كانت arg بصفر, ربما يحدث خطأ قطبي.
إذا كانت البيئة تدعم حسابات الفاصلة العائمة طبقا للـ IEEE (المعيار IEC 60559 تحديدا):
- لو كان المعطى ±0, يتم إرجاع -∞ ويتم رفع الإشارة FE_DIVBYZERO.
- لو كان المعطى 1, يتم إرجاع +0
- لو كان المعطى سالبا, يتم إرجاع NaN ويتم رفع الإشارة FE_INVALID.
- لو كان المعطى +∞, يتم إرجاع +∞
- لو كان المعطى NaN, يتم إرجاع NaN
مثال
قم بتشغيل هذا الكود:
#include <stdio.h>
#include <math.h>
#include <float.h>
#include <errno.h>
#include <fenv.h>
#pragma STDC FENV_ACCESS ON
int main(void)
{
printf("log(1) = %f\n", log(1));
printf("base-5 logarithm of 125 = %f\n", log(125)/log(5));
// special values
printf("log(1) = %f\n", log(1));
printf("log(+Inf) = %f\n", log(INFINITY));
//error handling
errno = 0; feclearexcept(FE_ALL_EXCEPT);
printf("log(0) = %f\n", log(0));
if(errno == ERANGE) perror(" errno == ERANGE");
if(fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised");
}
الخرج:
log(1) = 0.000000
base-5 logarithm of 125 = 3.000000
log(1) = 0.000000
log(+Inf) = inf
log(0) = -inf
errno == ERANGE: Numerical result out of range
FE_DIVBYZERO raised
أنظر أيضا
(C99)(C99) |
تحسب اللوغاريتم المعتاد (الأساس 10) (log10(x)) (دالة) |
(C99)(C99)(C99) |
تحسب اللوغاريتم للأساس 2 (log2(x)) (دالة) |
(C99)(C99)(C99) |
تحسب اللوغاريتم الطبيعي (أساس e) لمجموع العدد المعطى مع الواحد (ln(1+x)) (دالة) |
(C99)(C99) |
تحسب ناتج رفع e لأس معطى (ex) (دالة) |
(C99)(C99)(C99) |
تحسب اللوغاريتم الطبيعي المركب (دالة) |
مقالة مرجع C++ عن log
| |