Share via


log, logf, logl, log10, log10f, log10l

Menghitung logaritma.

Sintaks

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

Parameter

x
Nilai yang logaritmanya akan ditemukan.

Nilai hasil

Fungsi log mengembalikan logaritma alami (dasar e) jika x berhasil. Fungsi log10 mengembalikan logaritma base-10. Jika x negatif, fungsi-fungsi ini mengembalikan tidak terbatas (IND), secara default. Jika x adalah 0, mereka mengembalikan infinity (INF).

Input Pengecualian SEH Pengecualian _matherr
± QNaN, IND tidak ada _DOMAIN
± 0 ZERODIVIDE _SING
x < 0 INVALID _DOMAIN

log dan log10 memiliki implementasi yang menggunakan Streaming SIMD Extensions 2 (SSE2). Lihat _set_SSE2_enable untuk informasi dan batasan penggunaan implementasi SSE2.

Keterangan

C++ memungkinkan kelebihan beban, sehingga Anda dapat memanggil kelebihan beban log dan log10 yang mengambil dan mengembalikan float atau long double nilai. Dalam program C, kecuali Anda menggunakan <tgmath.h> makro untuk memanggil fungsi ini, log dan log10 selalu mengambil dan mengembalikan double.

Jika Anda menggunakan <tgmath.h> log() makro, jenis argumen menentukan versi fungsi mana yang dipilih. Lihat Matematika generik jenis untuk detailnya.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
log, logf, logl, log10, log10f, log10l <math.h>
log makro <tgmath.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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

Untuk menghasilkan logaritma untuk basis lain, gunakan relasi matematika: log base b dari log alami == (a) / log alami (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

Baca juga

Dukungan matematika dan titik mengambang
exp, expf, expl
_matherr
pow, powf, powl
_CIlog
_CIlog10\