This documentation is archived and is not being maintained.

# Math.Log Method

.NET Framework 1.1

Returns the logarithm of a specified number.

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

Supported by the .NET Compact Framework.

[Visual Basic] Overloads Public Shared Function Log(Double) As Double
[C#] public static double Log(double);
[C++] public: static double Log(double);
[JScript] public static function Log(double) : double;

Returns the logarithm of a specified number in a specified base.

[Visual Basic] Overloads Public Shared Function Log(Double, Double) As Double
[C#] public static double Log(double, double);
[C++] public: static double Log(double, double);
[JScript] public static function Log(double, double) : double;

#### Example

[Visual Basic, C#, C++] The following example uses Log to evaluate certain logarithmic identities for selected values.

[Visual Basic, C#, C++] Note   This example shows how to use one of the overloaded versions of Log. For other examples that might be available, see the individual overload topics.
```[Visual Basic]
' Example for the Math.Log( Double ) and Math.Log( Double, Double ) methods.
Imports System
Imports Microsoft.VisualBasic

Module LogDLogDD

Sub Main()
Console.WriteLine( _
"This example of Math.Log( Double ) and " + _
"Math.Log( Double, Double )" & vbCrLf & _
"generates the following output." & vbCrLf)
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)
End Sub 'Main

' Evaluate logarithmic identities that are functions of two arguments.
Sub UseBaseAndArg(argB As Double, argX As Double)

' Evaluate log(B)[X] = 1 / log(X)[B].
Console.WriteLine( _
vbCrLf & "                   Math.Log({1}, {0}) = {2:E16}" + _
vbCrLf & "             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))

End Sub 'UseBaseAndArg
End Module '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

[C#]
// 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
*/

[C++]
// Example for the Math::Log( double ) and Math::Log( double, double ) methods.
#using <mscorlib.dll>
using namespace System;

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

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

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

void main()
{
Console::WriteLine(
S"This example of Math::Log( double ) and "
S"Math::Log( double, double )\n"
S"generates the following output.\n" );
Console::WriteLine(
S"Evaluate these identities with "
S"selected values for X and B (base):" );
Console::WriteLine( S"   log(B)[X] == 1 / log(X)[B]" );
Console::WriteLine( S"   log(B)[X] == ln[X] / ln[B]" );
Console::WriteLine( S"   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);
}

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

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button in the upper-left corner of the page.