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

log, logf, logl

من cppreference.com
< c‏ | numeric‏ | math
 
 
 
دوال رياضية شائعة
الدوال
عمليات بسيطة
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
دوال أسية ولوغارتمية ثابتة الأساس
(C99)
(C99)
log
(C99)
(C99)
دوال أسية وجذور
دوال حساب المثلثات والدول الزائدية
دالة الخطأ ودالة غاوس
(C99)
(C99)
(C99)
(C99)
إيجاد أقرب عدد صحيح لفاصلة عائمة (float)
(C99)
(C99)(C99)(C99)
دوال التعديل على الفاصلة العائمة (float)
(C99)(C99)
(C99)
(C99)
التصنيف والمقارنة
(C99)
(C99)
(C99)
ثوابت ماكرو
 
معرفة في ملف <math.h>
float       logf(float arg );
(1) (منذ C99)
double      log(double arg );
(2)
longdouble logl(longdouble arg );
(3) (منذ C99)
معرفة في ملف <tgmath.h>
#define log( arg )
(4) (منذ C99)
1-3) تحسب اللوغاريتم الطبيعي (أساس e) للعدد ‎arg‎.
4) ماكرو عام النوع: إذا كان المعطى ‎arg‎ من النوع longdouble يتم استدعاء ‎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 ONint 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 handlingerrno=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

[تعديل]أنظر أيضا

تحسب اللوغاريتم المعتاد (الأساس 10) ‎ (log10(x))‎
(دالة)[edit]
(C99)(C99)(C99)
تحسب اللوغاريتم للأساس 2 ‏‎(log2(x))‎
(دالة)[edit]
(C99)(C99)(C99)
تحسب اللوغاريتم الطبيعي (أساس e) لمجموع العدد المعطى مع الواحد‎ (ln(1+x)) ‎
(دالة)[edit]
(C99)(C99)
تحسب ناتج رفع e لأس معطى (ex)
(دالة)[edit]
(C99)(C99)(C99)
تحسب اللوغاريتم الطبيعي المركب
(دالة)[edit]
close