Share via


log, logf, logl, log10, log10f, log10l

Calcule le logarithme.

Syntaxe

double log(double x);
float logf(float x);
long double logl(double x);
double log10(double x);
float log10f (float x);
long double log10l(double x);
#define log(X) // Requires C11 or higher
#define log10(X) // Requires C11 or higher

float log(float x);  // C++ only
long double log(long double x);  // C++ only
float log10(float x);  // C++ only
long double log10(long double x);  // C++ only

Paramètres

x
Valeur dont le logarithme doit être recherché.

Valeur retournée

Les log fonctions retournent le logarithme naturel (base e) du x cas échéant. Les log10 fonctions retournent le logarithme de base 10. Si x elle est négative, ces fonctions retournent une valeur indéfinie (IND) par défaut. Si x c’est 0, ils retournent l’infini (INF).

Entrée Exception SEH Exception _matherr
± QNaN, IND aucune _DOMAIN
± 0 ZERODIVIDE _SING
x < 0 INVALID _DOMAIN

log et log10 ont une implémentation qui utilise streaming SIMD Extensions 2 (SSE2). Pour _set_SSE2_enable plus d’informations et de restrictions sur l’utilisation de l’implémentation SSE2.

Notes

C++ permet de surcharger, de sorte que vous pouvez appeler des surcharges et loglog10 qui prennent et retournent float ou long double valeurs. Dans un programme C, sauf si vous utilisez la <tgmath.h> macro pour appeler cette fonction, log et log10 toujours prendre et retourner un double.

Si vous utilisez la <tgmath.h> log() macro, le type de l’argument détermine la version de la fonction sélectionnée. Pour plus d’informations, consultez les mathématiques génériques de type.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
log, logf, logl, log10, log10f, log10l <math.h>
Macro log <tgmath.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// crt_log.c
/* This program uses log and log10
* to calculate the natural logarithm and
* the base-10 logarithm of 9,000.
*/

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 9000.0;
   double y;

   y = log( x );
   printf( "log( %.2f ) = %f\n", x, y );
   y = log10( x );
   printf( "log10( %.2f ) = %f\n", x, y );
}
log( 9000.00 ) = 9.104980
log10( 9000.00 ) = 3.954243

Pour générer le logarithme pour d’autres bases, utilisez la relation mathématique : log base b de a == logarithme népérien (a) / logarithme népérien (b).

// logbase.cpp
#include <math.h>
#include <stdio.h>

double logbase(double a, double base)
{
   return log(a) / log(base);
}

int main()
{
   double x = 65536;
   double result;

   result = logbase(x, 2);
   printf("Log base 2 of %lf is %lf\n", x, result);
}
Log base 2 of 65536.000000 is 16.000000

Voir aussi

Prise en charge mathématique et à virgule flottante
exp, expf, expl
_matherr
pow, powf, powl
_CIlog
_CIlog10\