log10, log10f, log10l
من cppreference.com
دوال رياضية شائعة
الدوال
عمليات بسيطة
دوال أسية ولوغارتمية ثابتة الأساس
دوال أسية وجذور
دوال حساب المثلثات والدول الزائدية
دالة الخطأ ودالة غاوس
إيجاد أقرب عدد صحيح لفاصلة عائمة (float)
دوال التعديل على الفاصلة العائمة (float)
التصنيف والمقارنة
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
ثوابت ماكرو
(C99)(C99)
(C99)(C99)(C99)(C99)(C99)
معرفة في ملف
<math.h>
float log10f( float arg );
(1)
(منذ C99)
double log10( double arg );
(2)
long double log10l( long double arg );
(3)
(منذ C99)
معرفة في ملف
<tgmath.h>
#define log10( arg )
(4)
(منذ C99)
1-3) تحسب اللوغاريتم الشائع (أساس 10) للعدد
arg
.4) ماكرو عام النوع: إذا كان المعطى
arg
من النوع long double يتم استدعاء log10l
. أما إذا كان arg
عدد صحيح أو من النوع double يتم استدعاء log10
. فيما عدا ذلك يتم استدعاء log10f
.[تعديل] المعطيات
arg
-
عدد ذو فاصلة عائمة
[تعديل] القيمة المُرجعة
في حالة النجاح, تُرجعاللوغاريتم الشائع (أساس 10) للعدد arg
( log
10(arg) أو lg(arg) ).
لو كان هناك خطأ في المجال يتم إرجاع قيمة تحددها البيئة (غالبا NaN على الأنظمة الداعمة لذلك).
في حالة حدوث خطأ قطبي, يتم إرجاع -HUGE_VAL
أو -HUGE_VALF
أو -HUGE_VALL
.
[تعديل] التعامل مع الأخطاء
يتم الإبلاغ عن الأخطاء كما هو موضح في math_errhandling.
في حالة كون arg
أصغر من الصفر يحدث خطأ في المجال.
إذا كانت arg
بصفر, ربما يحدث خطأ قطبي.
- لو كان المعطى ±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("log10(1000) = %f\n", log10(1000)); printf("log10(0.001) = %f\n", log10(0.001)); printf("base-5 logarithm of 125 = %f\n", log10(125)/log10(5)); // special values printf("log10(1) = %f\n", log10(1)); printf("log10(+Inf) = %f\n", log10(INFINITY)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("log10(0) = %f\n", log10(0)); if(errno == ERANGE) perror(" errno == ERANGE"); if(fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
خرج ممكن:
log10(1000) = 3.000000 log10(0.001) = -3.000000 base-5 logarithm of 125 = 3.000000 log10(1) = 0.000000 log10(+Inf) = inf log10(0) = -inf errno == ERANGE: Numerical result out of range FE_DIVBYZERO raised
[تعديل] أنظر أيضا
(C99)(C99)(C99)
(دالة) [edit]
مقالة مرجع C++ عن log10