Math.Log Method (Double)

.NET Framework 3.0
Returns the natural (base e) logarithm of a specified number.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

Syntax

```public static double Log (
double d
)
```
```public static double Log (
double d
)
```
```public static function Log (
d : double
) : double
```
```Not applicable.
```

Parameters

d

A number whose logarithm is to be found.

Return Value

Sign of d

Returns

Positive

The natural logarithm of d; that is, ln d, or log ed

Zero

Negative

If d is equal to NaN, returns NaN. If d is equal to PositiveInfinity, returns PositiveInfinity.

Remarks

Parameter d is specified as a base 10 number.

Example

The following example uses Log to evaluate certain logarithmic identities for selected values.

```// Example for the Math.Log( double ) and Math.Log( double, double ) methods.
using System;

class LogDLogDD
{
public static void Main()
{
Console.WriteLine(
"This example of Math.Log( double ) and " +
"Math.Log( double, double )\n" +
"generates the following output.\n" );
Console.WriteLine(
"Evaluate these identities with " +
"selected values for X and B (base):" );
Console.WriteLine( "   log(B)[X] == 1 / log(X)[B]" );
Console.WriteLine( "   log(B)[X] == ln[X] / ln[B]" );
Console.WriteLine( "   log(B)[X] == log(B)[e] * ln[X]" );

UseBaseAndArg(0.1, 1.2);
UseBaseAndArg(1.2, 4.9);
UseBaseAndArg(4.9, 9.9);
UseBaseAndArg(9.9, 0.1);
}

// Evaluate logarithmic identities that are functions of two arguments.
static void UseBaseAndArg(double argB, double argX)
{
// Evaluate log(B)[X] == 1 / log(X)[B].
Console.WriteLine(
"\n                   Math.Log({1}, {0}) == {2:E16}" +
"\n             1.0 / Math.Log({0}, {1}) == {3:E16}",
argB, argX, Math.Log(argX, argB),
1.0 / Math.Log(argB, argX) );

// Evaluate log(B)[X] == ln[X] / ln[B].
Console.WriteLine(
"        Math.Log({1}) / Math.Log({0}) == {2:E16}",
argB, argX, Math.Log(argX) / Math.Log(argB) );

// Evaluate log(B)[X] == log(B)[e] * ln[X].
Console.WriteLine(
"Math.Log(Math.E, {0}) * Math.Log({1}) == {2:E16}",
argB, argX, Math.Log(Math.E, argB) * Math.Log(argX) );
}
}

/*
This example of Math.Log( double ) and Math.Log( double, double )
generates the following output.

Evaluate these identities with selected values for X and B (base):
log(B)[X] == 1 / log(X)[B]
log(B)[X] == ln[X] / ln[B]
log(B)[X] == log(B)[e] * ln[X]

Math.Log(1.2, 0.1) == -7.9181246047624818E-002
1.0 / Math.Log(0.1, 1.2) == -7.9181246047624818E-002
Math.Log(1.2) / Math.Log(0.1) == -7.9181246047624818E-002
Math.Log(Math.E, 0.1) * Math.Log(1.2) == -7.9181246047624804E-002

Math.Log(4.9, 1.2) == 8.7166610085093179E+000
1.0 / Math.Log(1.2, 4.9) == 8.7166610085093161E+000
Math.Log(4.9) / Math.Log(1.2) == 8.7166610085093179E+000
Math.Log(Math.E, 1.2) * Math.Log(4.9) == 8.7166610085093179E+000

Math.Log(9.9, 4.9) == 1.4425396251981288E+000
1.0 / Math.Log(4.9, 9.9) == 1.4425396251981288E+000
Math.Log(9.9) / Math.Log(4.9) == 1.4425396251981288E+000
Math.Log(Math.E, 4.9) * Math.Log(9.9) == 1.4425396251981288E+000

Math.Log(0.1, 9.9) == -1.0043839404494075E+000
1.0 / Math.Log(9.9, 0.1) == -1.0043839404494075E+000
Math.Log(0.1) / Math.Log(9.9) == -1.0043839404494075E+000
Math.Log(Math.E, 9.9) * Math.Log(0.1) == -1.0043839404494077E+000
*/

```
```// Example for the Math.Log( double ) and Math.Log( double, double ) methods.
import System.*;

class LogDLogDD
{

public static void main(String[] args)
{
Console.WriteLine(("This example of Math.Log( double ) and "
+ "Math.Log( double, double )\n"
+ "generates the following output.\n"));
Console.WriteLine(("Evaluate these identities with "
+ "selected values for X and B (base):"));
Console.WriteLine("   log(B)[X] == 1 / log(X)[B]");
Console.WriteLine("   log(B)[X] == ln[X] / ln[B]");
Console.WriteLine("   log(B)[X] == log(B)[e] * ln[X]");
UseBaseAndArg(0.1, 1.2);
UseBaseAndArg(1.2, 4.9);
UseBaseAndArg(4.9, 9.9);
UseBaseAndArg(9.9, 0.1);
} //main

// Evaluate logarithmic identities that are functions of two arguments.
static void UseBaseAndArg(double argB, double argX)
{
// Evaluate log(B)[X] == 1 / log(X)[B].
Console.WriteLine("\n                   Math.Log({1}, {0}) == {2}"
+ "\n             1.0 / Math.Log({0}, {1}) == {3}", new Object[] {
System.Convert.ToString(argB), System.Convert.ToString(argX),
((System.Double)(System.Math.Log(argX, argB))).ToString("E16"),
((System.Double)(1.0 / System.Math.Log(argB, argX))).ToString
("E16")});

// Evaluate log(B)[X] == ln[X] / ln[B].
Console.WriteLine("        Math.Log({1}) / Math.Log({0}) == {2}",
System.Convert.ToString(argB), System.Convert.ToString(argX),
((System.Double)
(System.Math.Log(argX) / System.Math.Log(argB))).ToString("E16"));

// Evaluate log(B)[X] == log(B)[e] * ln[X].
Console.WriteLine("Math.Log(Math.E, {0}) * Math.Log({1}) == {2}",
System.Convert.ToString(argB), System.Convert.ToString(argX),
((System.Double)(System.Math.Log(Math.E, argB)
* System.Math.Log(argX))).ToString("E16"));
} //UseBaseAndArg
} //LogDLogDD

/*
This example of Math.Log( double ) and Math.Log( double, double )
generates the following output.

Evaluate these identities with selected values for X and B (base):
log(B)[X] == 1 / log(X)[B]
log(B)[X] == ln[X] / ln[B]
log(B)[X] == log(B)[e] * ln[X]

Math.Log(1.2, 0.1) == -7.9181246047624818E-002
1.0 / Math.Log(0.1, 1.2) == -7.9181246047624818E-002
Math.Log(1.2) / Math.Log(0.1) == -7.9181246047624818E-002
Math.Log(Math.E, 0.1) * Math.Log(1.2) == -7.9181246047624804E-002

Math.Log(4.9, 1.2) == 8.7166610085093179E+000
1.0 / Math.Log(1.2, 4.9) == 8.7166610085093161E+000
Math.Log(4.9) / Math.Log(1.2) == 8.7166610085093179E+000
Math.Log(Math.E, 1.2) * Math.Log(4.9) == 8.7166610085093179E+000

Math.Log(9.9, 4.9) == 1.4425396251981288E+000
1.0 / Math.Log(4.9, 9.9) == 1.4425396251981288E+000
Math.Log(9.9) / Math.Log(4.9) == 1.4425396251981288E+000
Math.Log(Math.E, 4.9) * Math.Log(9.9) == 1.4425396251981288E+000

Math.Log(0.1, 9.9) == -1.0043839404494075E+000
1.0 / Math.Log(9.9, 0.1) == -1.0043839404494075E+000
Math.Log(0.1) / Math.Log(9.9) == -1.0043839404494075E+000
Math.Log(Math.E, 9.9) * Math.Log(0.1) == -1.0043839404494077E+000
*/

```

Platforms

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

Version Information

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0