Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Beräknar logaritmer.
Syntax
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 later
#define log10(X) // Requires C11 or later
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
Parametrar
x
Värde vars logaritm ska hittas.
Returvärde
Funktionerna log returnerar den naturliga logaritmen (bas e) för x om den lyckas. Funktionerna log10 returnerar logaritmen base-10. Om x är negativt returnerar dessa funktioner en obestämd (IND) som standard. Om x är 0 returnerar de oändligheten (INF).
| Inmatning | SEH-undantag |
_matherr undantag |
|---|---|---|
| ± QNaN, IND | ingen | _DOMAIN |
| ± 0 | ZERODIVIDE |
_SING |
x < 0 |
INVALID |
_DOMAIN |
log och log10 har en implementering som använder strömnings-SIMD Extensions 2 (SSE2). Mer information och begränsningar om hur du använder SSE2-implementeringen finns i _set_SSE2_enable.
Anmärkningar
C++ tillåter överlagring, så du kan anropa överlagringar av log och log10 som tar och returnerar float eller long double värden. Om du inte använder <tgmath.h> makrot för att anropa den här funktionen i ett C-program log och log10 alltid ta och returnera en double.
Om du använder makrot <tgmath.h> log() avgör typen av argument vilken version av funktionen som väljs. Mer information finns i type-generic math.
Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i global status i CRT-.
Krav
| Rutin | Obligatoriskt huvud |
|---|---|
log, logf, logl, log10, log10f, log10l |
<math.h> |
log makro |
<tgmath.h> |
Mer kompatibilitetsinformation finns i Compatibility.
Exempel
// 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
Om du vill generera logaritmer för andra baser använder du den matematiska relationen: loggbas b av en == naturlig logg (a) /naturlig logg (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
Se även
Stöd för matematik och flyttalsstöd
exp, expf, expl
_matherr
pow, powf, powl
_CIlog
_CIlog10